pg-promise
Version:
PostgreSQL interface for Node.js
57 lines (50 loc) • 1.61 kB
JavaScript
/*
* Copyright (c) 2015-present, Vitaly Tomilov
*
* See the LICENSE file at the top-level directory of this distribution
* for licensing information.
*
* Removal or modification of this copyright notice is prohibited.
*/
const {PromiseAdapter} = require('./promise-adapter');
//////////////////////////////////////////
// Parses and validates a promise library;
function parse(pl) {
let promise;
if (pl instanceof PromiseAdapter) {
promise = function (func) {
return pl.create(func);
};
promise.resolve = pl.resolve;
promise.reject = pl.reject;
promise.all = pl.all;
return promise;
}
const t = typeof pl;
if (t === 'function' || t === 'object') {
const Root = typeof pl.Promise === 'function' ? pl.Promise : pl;
promise = function (func) {
return new Root(func);
};
promise.resolve = Root.resolve;
promise.reject = Root.reject;
promise.all = Root.all;
if (typeof promise.resolve === 'function' &&
typeof promise.reject === 'function' &&
typeof promise.all === 'function') {
return promise;
}
}
throw new TypeError('Invalid promise library specified.');
}
function parsePromise(promiseLib) {
const result = {promiseLib};
if (promiseLib) {
result.promise = parse(promiseLib);
} else {
result.promise = parse(Promise);
result.promiseLib = Promise;
}
return result;
}
module.exports = {parsePromise};