From e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d Mon Sep 17 00:00:00 2001 From: Piotr Russ Date: Mon, 16 Nov 2020 00:10:28 +0100 Subject: api, login, auth --- .../mongoose/lib/helpers/promiseOrCallback.js | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 node_modules/mongoose/lib/helpers/promiseOrCallback.js (limited to 'node_modules/mongoose/lib/helpers/promiseOrCallback.js') diff --git a/node_modules/mongoose/lib/helpers/promiseOrCallback.js b/node_modules/mongoose/lib/helpers/promiseOrCallback.js new file mode 100644 index 0000000..a1aff55 --- /dev/null +++ b/node_modules/mongoose/lib/helpers/promiseOrCallback.js @@ -0,0 +1,45 @@ +'use strict'; + +const PromiseProvider = require('../promise_provider'); + +const emittedSymbol = Symbol.for('mongoose:emitted'); + +module.exports = function promiseOrCallback(callback, fn, ee) { + if (typeof callback === 'function') { + return fn(function(error) { + if (error != null) { + if (ee != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) { + error[emittedSymbol] = true; + ee.emit('error', error); + } + try { + callback(error); + } catch (error) { + return process.nextTick(() => { + throw error; + }); + } + return; + } + callback.apply(this, arguments); + }); + } + + const Promise = PromiseProvider.get(); + + return new Promise((resolve, reject) => { + fn(function(error, res) { + if (error != null) { + if (ee != null && ee.listeners('error').length > 0 && !error[emittedSymbol]) { + error[emittedSymbol] = true; + ee.emit('error', error); + } + return reject(error); + } + if (arguments.length > 2) { + return resolve(Array.prototype.slice.call(arguments, 1)); + } + resolve(res); + }); + }); +}; \ No newline at end of file -- cgit v1.2.3