@nwpr/pass-js
Version:
Apple Wallet Pass generating and pushing updates from Node.js
37 lines • 1.26 kB
JavaScript
import { promisify } from 'util';
import { EventIterator } from 'event-iterator';
import { ZipFile, fromBuffer as ZipFromBuffer } from 'yauzl';
import { streamToBuffer } from './stream-to-buffer.js';
// Promisifying yauzl
Object.defineProperties(ZipFile.prototype, {
[Symbol.asyncIterator]: {
enumerable: true,
writable: false,
configurable: false,
value() {
return new EventIterator(queue => {
this.addListener('entry', queue.push);
this.addListener('end', queue.stop);
this.addListener('error', queue.fail);
})[Symbol.asyncIterator]();
},
},
openReadStreamAsync: {
enumerable: true,
writable: false,
configurable: false,
// eslint-disable-next-line @typescript-eslint/unbound-method
value: promisify(ZipFile.prototype.openReadStream),
},
getBuffer: {
enumerable: true,
writable: false,
configurable: false,
async value(entry) {
const stream = await this.openReadStreamAsync(entry);
return streamToBuffer(stream);
},
},
});
export const unzipBuffer = promisify(ZipFromBuffer);
//# sourceMappingURL=yazul-promisified.js.map