cmux/node_modules/yauzl-promise/lib/index.js
2026-01-29 17:36:26 -08:00

52 lines
1.1 KiB
JavaScript

/* --------------------
* yauzl-promise module
* ------------------*/
'use strict';
// Modules
const yauzlOriginal = require('yauzl'),
cloner = require('yauzl-clone');
// Imports
const NativePromise = require('./promise'),
promisify = require('./promisify');
// Exports
function use(Promise, yauzl, options) {
// Conform options
options = Object.assign({clone: true}, options);
// Use defaults if not provided
if (!Promise) Promise = NativePromise;
if (!yauzl) yauzl = yauzlOriginal;
// Clone yauzl unless `options.clone` false
if (options.clone) {
yauzl = cloner.clone(yauzl, {subclassZipFile: true, subclassEntry: true});
} else {
// Patch ZipFile prototype with events-intercept methods
cloner.clone(yauzl, {clone: false, eventsIntercept: true});
}
// Add promisfied methods
if (Promise) {
promisify(yauzl, Promise);
} else {
yauzl = {};
}
// Add `use` methods
yauzl.use = use;
yauzl.usePromise = function(Promise) {
return use(Promise, null);
};
yauzl.useYauzl = function(yauzl, options) {
return use(null, yauzl, options);
};
// Return yauzl object
return yauzl;
}
module.exports = use();