123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- const npm = {
- utils: require('./utils'),
- batch: require('./ext/batch'),
- page: require('./ext/page'),
- sequence: require('./ext/sequence'),
- stream: require('./ext/stream'),
- errors: require('./errors')
- };
- function main(promiseLib) {
- const spex = {},
- promise = parsePromiseLib(promiseLib);
- const config = {
- spex,
- promise,
- utils: npm.utils(promise)
- };
- spex.errors = npm.errors;
- spex.batch = npm.batch(config);
- spex.page = npm.page(config);
- spex.sequence = npm.sequence(config);
- spex.stream = npm.stream(config);
- config.utils.extend(spex, '$p', promise);
- Object.freeze(spex);
- return spex;
- }
- function parsePromiseLib(lib) {
- if (lib) {
- let promise;
- if (lib instanceof main.PromiseAdapter) {
- promise = function (func) {
- return lib.create(func);
- };
- promise.resolve = lib.resolve;
- promise.reject = lib.reject;
- return promise;
- }
- const t = typeof lib;
- if (t === 'function' || t === 'object') {
- const Root = typeof lib.Promise === 'function' ? lib.Promise : lib;
- promise = function (func) {
- return new Root(func);
- };
- promise.resolve = Root.resolve;
- promise.reject = Root.reject;
- if (typeof promise.resolve === 'function' && typeof promise.reject === 'function') {
- return promise;
- }
- }
- }
- throw new TypeError('Invalid promise library specified.');
- }
- main.PromiseAdapter = require('./adapter');
- main.errors = npm.errors;
- Object.freeze(main);
- module.exports = main;
|