UNPKG

apr-engine-run

Version:
52 lines (39 loc) 4.3 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('apr-engine-iterator')) : typeof define === 'function' && define.amd ? define('apr-engine-run', ['apr-engine-iterator'], factory) : (global['apr-engine-run'] = factory(global.aprEngineIterator)); }(this, (function (aprEngineIterator) { 'use strict'; aprEngineIterator = aprEngineIterator && aprEngineIterator.hasOwnProperty('default') ? aprEngineIterator['default'] : aprEngineIterator; var engineRun = function (input, fn, opts) { var ittr = aprEngineIterator(input); var done = false; var brk = false; var i = 0; var after = function after(items, end) { return function (v) { brk = brk || items.some(function (item, y) { return opts.after && opts.after(v[y], item, i++); }); done = done || brk; return done ? end() : next(end); }; }; var next = function next(end) { var items = ittr.next(opts.limit).filter(function (item) { done = done || item.done; return !item.done; }); var call = opts.call || function (item) { return fn(item.value, item.key, input); }; Promise.all(items.map(call)).then(after(items, end), end); }; return new Promise(function (resolve, reject) { return next(function (err, res) { return err ? reject(err) : resolve(res); }); }); }; return engineRun; }))); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbIi9Vc2Vycy9yYW1pdG9zL2Rldi9hcHIvcGFja2FnZXMvZW5naW5lLXJ1bi9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBJdGVyYXRvciA9IHJlcXVpcmUoJ2Fwci1lbmdpbmUtaXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoaW5wdXQsIGZuLCBvcHRzKSA9PiB7XG4gIGNvbnN0IGl0dHIgPSBJdGVyYXRvcihpbnB1dCk7XG5cbiAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgbGV0IGJyayA9IGZhbHNlO1xuICBsZXQgaSA9IDA7XG5cbiAgY29uc3QgYWZ0ZXIgPSAoaXRlbXMsIGVuZCkgPT4gdiA9PiB7XG4gICAgYnJrID1cbiAgICAgIGJyayB8fCBpdGVtcy5zb21lKChpdGVtLCB5KSA9PiBvcHRzLmFmdGVyICYmIG9wdHMuYWZ0ZXIodlt5XSwgaXRlbSwgaSsrKSk7XG5cbiAgICBkb25lID0gZG9uZSB8fCBicms7XG5cbiAgICByZXR1cm4gZG9uZSA/IGVuZCgpIDogbmV4dChlbmQpO1xuICB9O1xuXG4gIGNvbnN0IG5leHQgPSBlbmQgPT4ge1xuICAgIGNvbnN0IGl0ZW1zID0gaXR0ci5uZXh0KG9wdHMubGltaXQpLmZpbHRlcihpdGVtID0+IHtcbiAgICAgIGRvbmUgPSBkb25lIHx8IGl0ZW0uZG9uZTtcbiAgICAgIHJldHVybiAhaXRlbS5kb25lO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2FsbCA9IG9wdHMuY2FsbCB8fCAoaXRlbSA9PiBmbihpdGVtLnZhbHVlLCBpdGVtLmtleSwgaW5wdXQpKTtcblxuICAgIFByb21pc2UuYWxsKGl0ZW1zLm1hcChjYWxsKSkudGhlbihhZnRlcihpdGVtcywgZW5kKSwgZW5kKTtcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICBuZXh0KChlcnIsIHJlcykgPT4gKGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShyZXMpKSlcbiAgKTtcbn07XG4iXSwibmFtZXMiOlsibW9kdWxlIiwiaW5wdXQiLCJmbiIsIm9wdHMiLCJpdHRyIiwiSXRlcmF0b3IiLCJkb25lIiwiYnJrIiwiaSIsImFmdGVyIiwiaXRlbXMiLCJlbmQiLCJzb21lIiwiaXRlbSIsInkiLCJ2IiwibmV4dCIsImxpbWl0IiwiZmlsdGVyIiwiY2FsbCIsInZhbHVlIiwia2V5IiwiYWxsIiwibWFwIiwidGhlbiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXJyIiwicmVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBQSxhQUFBLEdBQWlCLFVBQUNDLEtBQUQsRUFBUUMsRUFBUixFQUFZQyxJQUFaLEVBQXFCO01BQzlCQyxPQUFPQyxrQkFBU0osS0FBVCxDQUFiOztNQUVJSyxPQUFPLEtBQVg7TUFDSUMsTUFBTSxLQUFWO01BQ0lDLElBQUksQ0FBUjs7TUFFTUMsUUFBUSxTQUFSQSxLQUFRLENBQUNDLEtBQUQsRUFBUUMsR0FBUjtXQUFnQixhQUFLO1lBRS9CSixPQUFPRyxNQUFNRSxJQUFOLENBQVcsVUFBQ0MsSUFBRCxFQUFPQyxDQUFQO2VBQWFYLEtBQUtNLEtBQUwsSUFBY04sS0FBS00sS0FBTCxDQUFXTSxFQUFFRCxDQUFGLENBQVgsRUFBaUJELElBQWpCLEVBQXVCTCxHQUF2QixDQUEzQjtPQUFYLENBRFQ7O2FBR09GLFFBQVFDLEdBQWY7O2FBRU9ELE9BQU9LLEtBQVAsR0FBZUssS0FBS0wsR0FBTCxDQUF0QjtLQU5ZO0dBQWQ7O01BU01LLE9BQU8sU0FBUEEsSUFBTyxNQUFPO1FBQ1pOLFFBQVFOLEtBQUtZLElBQUwsQ0FBVWIsS0FBS2MsS0FBZixFQUFzQkMsTUFBdEIsQ0FBNkIsZ0JBQVE7YUFDMUNaLFFBQVFPLEtBQUtQLElBQXBCO2FBQ08sQ0FBQ08sS0FBS1AsSUFBYjtLQUZZLENBQWQ7O1FBS01hLE9BQU9oQixLQUFLZ0IsSUFBTCxJQUFjO2FBQVFqQixHQUFHVyxLQUFLTyxLQUFSLEVBQWVQLEtBQUtRLEdBQXBCLEVBQXlCcEIsS0FBekIsQ0FBUjtLQUEzQjs7WUFFUXFCLEdBQVIsQ0FBWVosTUFBTWEsR0FBTixDQUFVSixJQUFWLENBQVosRUFBNkJLLElBQTdCLENBQWtDZixNQUFNQyxLQUFOLEVBQWFDLEdBQWIsQ0FBbEMsRUFBcURBLEdBQXJEO0dBUkY7O1NBV08sSUFBSWMsT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVUMsTUFBVjtXQUNqQlgsS0FBSyxVQUFDWSxHQUFELEVBQU1DLEdBQU47YUFBZUQsTUFBTUQsT0FBT0MsR0FBUCxDQUFOLEdBQW9CRixRQUFRRyxHQUFSLENBQW5DO0tBQUwsQ0FEaUI7R0FBWixDQUFQO0NBM0JGOzs7Ozs7OzsifQ==