basant307/AI_Governance_Project
048
1"use strict";2Object.defineProperty(exports, "__esModule", { value: true });3exports.readZip = readZip;4exports.readVSIXPackage = readVSIXPackage;5const yauzl_1 = require("yauzl");6const xml_1 = require("./xml");7const util_1 = require("./util");8const package_1 = require("./package");9async function bufferStream(stream) {10 return await new Promise((c, e) => {11 const buffers = [];12 stream.on('data', buffer => buffers.push(buffer));13 stream.once('error', e);14 stream.once('end', () => c(Buffer.concat(buffers)));15 });16}17async function readZip(packagePath, filter) {18 const zipfile = await new Promise((c, e) => (0, yauzl_1.open)(packagePath, { lazyEntries: true }, (err, zipfile) => (err ? e(err) : c(zipfile))));19 return await new Promise((c, e) => {20 const result = new Map();21 zipfile.once('close', () => c(result));22 zipfile.readEntry();23 zipfile.on('entry', (entry) => {24 const name = entry.fileName.toLowerCase();25 if (filter(name)) {26 zipfile.openReadStream(entry, (err, stream) => {27 if (err) {28 zipfile.close();29 return e(err);30 }31 bufferStream(stream).then(buffer => {32 result.set(name, buffer);33 zipfile.readEntry();34 });35 });36 }37 else {38 zipfile.readEntry();39 }40 });41 });42}43async function readVSIXPackage(packagePath) {44 const map = await readZip(packagePath, name => /^extension\/package\.json$|^extension\.vsixmanifest$/i.test(name));45 const rawManifest = map.get((0, util_1.filePathToVsixPath)('package.json'));46 if (!rawManifest) {47 throw new Error('Manifest not found');48 }49 const rawXmlManifest = map.get('extension.vsixmanifest');50 if (!rawXmlManifest) {51 throw new Error('VSIX manifest not found');52 }53 const manifest = JSON.parse(rawManifest.toString('utf8'));54 let manifestValidated;55 try {56 manifestValidated = (0, package_1.validateManifestForPackaging)(manifest);57 }58 catch (error) {59 throw new Error(`Invalid extension VSIX manifest: ${error}`);60 }61 return {62 manifest: manifestValidated,63 xmlManifest: await (0, xml_1.parseXmlManifest)(rawXmlManifest.toString('utf8')),64 };65}66//# sourceMappingURL=zip.js.map