1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports["default"] = void 0;
|
7 |
|
8 |
|
9 | var head = function head(iter) {
|
10 | return iter.next().value;
|
11 | };
|
12 |
|
13 | var empty =
|
14 |
|
15 | regeneratorRuntime.mark(function __empty() {
|
16 | return regeneratorRuntime.wrap(function __empty$(_context) {
|
17 | while (1) {
|
18 | switch (_context.prev = _context.next) {
|
19 | case 0:
|
20 | case "end":
|
21 | return _context.stop();
|
22 | }
|
23 | }
|
24 | }, __empty);
|
25 | })();
|
26 |
|
27 | var ensure = function ensure(iter) {
|
28 | return iter && iter[Symbol.iterator] ? iter[Symbol.iterator]() : empty;
|
29 | };
|
30 |
|
31 | var branchBy = function branchBy(value, f) {
|
32 | return value instanceof Promise ? value.then(f) : f(value);
|
33 | };
|
34 |
|
35 | var accumulate = function accumulate(acc, el, f) {
|
36 | return el instanceof Promise ? el.then(function (v) {
|
37 | return f(acc, v);
|
38 | }, function (e) {
|
39 | return Promise.reject(e);
|
40 | }) : f(acc, el);
|
41 | };
|
42 |
|
43 | var Reduce = function __reduce(f, acc, iter) {
|
44 | if (arguments.length === 1) return function () {
|
45 | for (var _len = arguments.length, iter = new Array(_len), _key = 0; _key < _len; _key++) {
|
46 | iter[_key] = arguments[_key];
|
47 | }
|
48 |
|
49 | return Reduce.apply(void 0, [f].concat(iter));
|
50 | };
|
51 | if (arguments.length === 2) return Reduce(f, head(iter = ensure(acc)), iter);
|
52 | iter = ensure(iter);
|
53 | var el;
|
54 | return branchBy(acc, function recursively(acc) {
|
55 | while (!(el = iter.next()).done) {
|
56 | acc = accumulate(acc, el.value, f);
|
57 |
|
58 | if (acc instanceof Promise) {
|
59 | return acc.then(recursively);
|
60 | }
|
61 | }
|
62 |
|
63 | return acc;
|
64 | });
|
65 | };
|
66 |
|
67 | var _default = Reduce;
|
68 | exports["default"] = _default; |
\ | No newline at end of file |