diff options
Diffstat (limited to 'alarm/node_modules/graphql/jsutils/promiseReduce.js')
-rw-r--r-- | alarm/node_modules/graphql/jsutils/promiseReduce.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/alarm/node_modules/graphql/jsutils/promiseReduce.js b/alarm/node_modules/graphql/jsutils/promiseReduce.js new file mode 100644 index 0000000..6606926 --- /dev/null +++ b/alarm/node_modules/graphql/jsutils/promiseReduce.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = promiseReduce; + +var _isPromise = _interopRequireDefault(require("./isPromise.js")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Similar to Array.prototype.reduce(), however the reducing callback may return + * a Promise, in which case reduction will continue after each promise resolves. + * + * If the callback does not return a Promise, then this function will also not + * return a Promise. + */ +function promiseReduce(values, callback, initialValue) { + return values.reduce(function (previous, value) { + return (0, _isPromise.default)(previous) ? previous.then(function (resolved) { + return callback(resolved, value); + }) : callback(previous, value); + }, initialValue); +} |