in src/zip.ts [15:46]
export async function readZip(packagePath: string, filter: (name: string) => boolean): Promise<Map<string, Buffer>> {
const zipfile = await new Promise<ZipFile>((c, e) =>
open(packagePath, { lazyEntries: true }, (err, zipfile) => (err ? e(err) : c(zipfile!)))
);
return await new Promise((c, e) => {
const result = new Map<string, Buffer>();
zipfile.once('close', () => c(result));
zipfile.readEntry();
zipfile.on('entry', (entry: Entry) => {
const name = entry.fileName.toLowerCase();
if (filter(name)) {
zipfile.openReadStream(entry, (err, stream) => {
if (err) {
zipfile.close();
return e(err);
}
bufferStream(stream!).then(buffer => {
result.set(name, buffer);
zipfile.readEntry();
});
});
} else {
zipfile.readEntry();
}
});
});
}