Update to NPM version
This commit is contained in:
123
ProjectSourceCode/node_modules/spex/lib/index.js
generated
vendored
Normal file
123
ProjectSourceCode/node_modules/spex/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,123 @@
|
||||
const npm = {
|
||||
utils: require('./utils'),
|
||||
batch: require('./ext/batch'),
|
||||
page: require('./ext/page'),
|
||||
sequence: require('./ext/sequence'),
|
||||
stream: require('./ext/stream'),
|
||||
errors: require('./errors')
|
||||
};
|
||||
|
||||
/**
|
||||
* @module spex
|
||||
* @summary Specialized Promise Extensions
|
||||
* @author Vitaly Tomilov
|
||||
*
|
||||
* @description
|
||||
* Attaches to an external promise library and provides additional methods built solely
|
||||
* on the basic promise operations:
|
||||
* - construct a new promise with a callback function
|
||||
* - resolve a promise with some result data
|
||||
* - reject a promise with a reason
|
||||
*
|
||||
* ### usage
|
||||
* For any third-party promise library:
|
||||
* ```js
|
||||
* const promise = require('bluebird');
|
||||
* const spex = require('spex')(promise);
|
||||
* ```
|
||||
* For ES6 promises:
|
||||
* ```js
|
||||
* const spex = require('spex')(Promise);
|
||||
* ```
|
||||
*
|
||||
* @param {Object|Function} promiseLib
|
||||
* Instance of a promise library to be used by this module.
|
||||
*
|
||||
* Some implementations use `Promise` constructor to create a new promise, while
|
||||
* others use the module's function for it. Both types are supported the same.
|
||||
*
|
||||
* Alternatively, an object of type {@link PromiseAdapter} can be passed in, which provides
|
||||
* compatibility with any promise library outside of the standard.
|
||||
*
|
||||
* Passing in a promise library that cannot be recognized will throw
|
||||
* `Invalid promise library specified.`
|
||||
*
|
||||
* @returns {Object}
|
||||
* Namespace with all supported methods.
|
||||
*
|
||||
* @see {@link PromiseAdapter}, {@link batch}, {@link page}, {@link sequence}, {@link stream}
|
||||
*/
|
||||
function main(promiseLib) {
|
||||
|
||||
const spex = {}, // library instance;
|
||||
promise = parsePromiseLib(promiseLib); // promise library parsing;
|
||||
|
||||
const config = {
|
||||
spex: spex,
|
||||
promise: 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;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// Parses and validates a promise library;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @external Error
|
||||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
|
||||
*/
|
||||
|
||||
/**
|
||||
* @external TypeError
|
||||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError
|
||||
*/
|
||||
|
||||
/**
|
||||
* @external Promise
|
||||
* @see https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise
|
||||
*/
|
||||
Reference in New Issue
Block a user