@rimbu/common 0.9.4 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,22 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Reducer = void 0;
4
+ var tslib_1 = require("tslib");
4
5
  var internal_1 = require("./internal");
5
6
  function identity(value) {
6
7
  return value;
7
8
  }
8
9
  var Reducer;
9
10
  (function (Reducer) {
10
- /**
11
- * Returns the contained value for an `Init` instance.
12
- * @param init - the `Init` value container
13
- */
14
- function Init(init) {
15
- if (init instanceof Function)
16
- return init();
17
- return init;
18
- }
19
- Reducer.Init = Init;
20
11
  /**
21
12
  * A base class that can be used to easily create `Reducer` instances.
22
13
  * @typeparam I - the input value type
@@ -33,7 +24,7 @@ var Reducer;
33
24
  var _this = this;
34
25
  return create(function () { return ({
35
26
  nextIndex: 0,
36
- state: Init(_this.init),
27
+ state: (0, internal_1.OptLazy)(_this.init),
37
28
  }); }, function (state, elem, index, halt) {
38
29
  if (pred(elem, index, halt)) {
39
30
  state.state = _this.next(state.state, elem, state.nextIndex++, halt);
@@ -51,7 +42,7 @@ var Reducer;
51
42
  var _this = this;
52
43
  return create(function () { return ({
53
44
  nextIndex: 0,
54
- state: Init(_this.init),
45
+ state: (0, internal_1.OptLazy)(_this.init),
55
46
  }); }, function (state, elem, index, halt) {
56
47
  var nextElem = collectFun(elem, index, internal_1.CollectFun.Skip, halt);
57
48
  if (internal_1.CollectFun.Skip !== nextElem) {
@@ -387,16 +378,17 @@ var Reducer;
387
378
  * @typeparam O - the fallback value type
388
379
  * @example
389
380
  * ```ts
390
- * console.log(Stream.range{ amount: 10 }).reduce(Reducer.first())
391
- * // => 0
381
+ * console.log(Stream.range{ amount: 10 }).reduce(Reducer.last())
382
+ * // => 9
392
383
  * ```
393
384
  */
394
385
  Reducer.last = function (otherwise) {
395
386
  var token = Symbol();
396
- return create(token, function (_, next) { return next; }, function (state) { return (token === state ? (0, internal_1.OptLazy)(otherwise) : state); });
387
+ return create(function () { return token; }, function (_, next) { return next; }, function (state) { return (token === state ? (0, internal_1.OptLazy)(otherwise) : state); });
397
388
  };
398
389
  /**
399
390
  * Returns a `Reducer` that ouputs false as long as no input value satisfies given `pred`, true otherwise.
391
+ * @typeparam T - the element type
400
392
  * @param pred - a function taking an input value and its index, and returning true if the value satisfies the predicate
401
393
  * @example
402
394
  * ```ts
@@ -418,6 +410,7 @@ var Reducer;
418
410
  Reducer.some = some;
419
411
  /**
420
412
  * Returns a `Reducer` that ouputs true as long as all input values satisfy the given `pred`, false otherwise.
413
+ * @typeparam T - the element type
421
414
  * @param pred - a function taking an input value and its index, and returning true if the value satisfies the predicate
422
415
  * @example
423
416
  * ```ts
@@ -439,6 +432,7 @@ var Reducer;
439
432
  Reducer.every = every;
440
433
  /**
441
434
  * Returns a `Reducer` that outputs false as long as the given `elem` has not been encountered in the input values, true otherwise.
435
+ * @typeparam T - the element type
442
436
  * @param elem - the element to search for
443
437
  * @param eq - (optional) a comparison function that returns true if te two given input values are considered equal
444
438
  * @example
@@ -516,6 +510,7 @@ var Reducer;
516
510
  });
517
511
  /**
518
512
  * Returns a `Reducer` that collects received input values in an array, and returns a copy of that array as an output value when requested.
513
+ * @typeparam T - the element type
519
514
  * @example
520
515
  * ```ts
521
516
  * console.log(Stream.of(1, 2, 3).reduce(Reducer.toArray()))
@@ -532,6 +527,8 @@ var Reducer;
532
527
  /**
533
528
  * Returns a `Reducer` that collects received input tuples into a mutable JS Map, and returns
534
529
  * a copy of that map when output is requested.
530
+ * @typeparam K - the map key type
531
+ * @typeparam V - the map value type
535
532
  * @example
536
533
  * ```ts
537
534
  * console.log(Stream.of([1, 'a'], [2, 'b']).reduce(Reducer.toJSMap()))
@@ -548,6 +545,7 @@ var Reducer;
548
545
  /**
549
546
  * Returns a `Reducer` that collects received input values into a mutable JS Set, and returns
550
547
  * a copy of that map when output is requested.
548
+ * @typeparam T - the element type
551
549
  * @example
552
550
  * ```ts
553
551
  * console.log(Stream.of(1, 2, 3).reduce(Reducer.toJSSet()))
@@ -561,6 +559,24 @@ var Reducer;
561
559
  }, function (s) { return new Set(s); });
562
560
  }
563
561
  Reducer.toJSSet = toJSSet;
562
+ /**
563
+ * Returns a `Reducer` that collects 2-tuples containing keys and values into a plain JS object, and
564
+ * returns a copy of that object when output is requested.
565
+ * @typeparam K - the result object key type
566
+ * @typeparam V - the result object value type
567
+ * @example
568
+ * ```ts
569
+ * console.log(Stream.of(['a', 1], ['b', true]).reduce(Reducer.toJSObject()))
570
+ * // { a: 1, b: true }
571
+ * ```
572
+ */
573
+ function toJSObject() {
574
+ return create(function () { return ({}); }, function (state, entry) {
575
+ state[entry[0]] = entry[1];
576
+ return state;
577
+ }, function (s) { return (tslib_1.__assign({}, s)); });
578
+ }
579
+ Reducer.toJSObject = toJSObject;
564
580
  /**
565
581
  * Returns a `Reducer` that combines multiple input `reducers` by providing input values to all of them and collecting the outputs in an array.
566
582
  * @param reducers - 2 or more reducers to combine
@@ -584,7 +600,7 @@ var Reducer;
584
600
  halt: function () {
585
601
  result.halted = true;
586
602
  },
587
- state: Init(reducer.init),
603
+ state: (0, internal_1.OptLazy)(reducer.init),
588
604
  };
589
605
  return result;
590
606
  });
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../src/reducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../src/reducer.ts"],"names":[],"mappings":"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"}
@@ -136,5 +136,450 @@ export var AsyncReducer;
136
136
  return AsyncReducer.create(reducer.init, reducer.next, reducer.stateToResult);
137
137
  }
138
138
  AsyncReducer.from = from;
139
+ /**
140
+ * A `Reducer` that sums all given numeric input values.
141
+ * @example
142
+ * ```ts
143
+ * console.log(Stream.range({ amount: 5 }).reduce(Reducer.sum))
144
+ * // => 10
145
+ * ```
146
+ */
147
+ AsyncReducer.sum = createMono(0, (state, next) => state + next);
148
+ /**
149
+ * A `Reducer` that calculates the product of all given numeric input values.
150
+ * @example
151
+ * ```ts
152
+ * console.log(Stream.range({ start: 1, amount: 5 }).reduce(product))
153
+ * // => 120
154
+ * ```
155
+ */
156
+ AsyncReducer.product = createMono(1, (state, next, _, halt) => {
157
+ if (0 === next)
158
+ halt();
159
+ return state * next;
160
+ });
161
+ /**
162
+ * A `Reducer` that calculates the average of all given numberic input values.
163
+ * @example
164
+ * ```ts
165
+ * console.log(Stream.range({ amount: 5 }).reduce(Reducer.average));
166
+ * // => 2
167
+ * ```
168
+ */
169
+ AsyncReducer.average = createMono(0, (avg, value, index) => avg + (value - avg) / (index + 1));
170
+ /**
171
+ * Returns a `Reducer` that remembers the minimum value of the inputs using the given `compFun` to compare input values
172
+ * @param compFun - a comparison function for two input values, returning 0 when equal, positive when greater, negetive when smaller
173
+ * @param otherwise - (default: undefineds) a fallback value when there were no input values given
174
+ * @example
175
+ * ```ts
176
+ * const stream = Stream.of('abc', 'a', 'abcde', 'ab')
177
+ * console.log(stream.minBy((s1, s2) => s1.length - s2.length))
178
+ * // 'a'
179
+ * ```
180
+ */
181
+ AsyncReducer.minBy = (compFun, otherwise) => {
182
+ const token = Symbol();
183
+ return create(token, (state, next) => __awaiter(this, void 0, void 0, function* () {
184
+ if (token === state)
185
+ return next;
186
+ return (yield compFun(state, next)) < 0 ? state : next;
187
+ }), (state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state);
188
+ };
189
+ /**
190
+ * Returns a `Reducer` that remembers the minimum value of the numberic inputs.
191
+ * @param otherwise - (default: undefined) a fallback value when there were no input values given
192
+ * @example
193
+ * ```ts
194
+ * console.log(Stream.of(5, 3, 7, 4).reduce(Reducer.min()))
195
+ * // => 3
196
+ * ```
197
+ */
198
+ AsyncReducer.min = (otherwise) => {
199
+ return create(undefined, (state, next) => undefined !== state && state < next ? state : next, (state) => state !== null && state !== void 0 ? state : AsyncOptLazy.toMaybePromise(otherwise));
200
+ };
201
+ /**
202
+ * Returns a `Reducer` that remembers the maximum value of the inputs using the given `compFun` to compare input values
203
+ * @param compFun - a comparison function for two input values, returning 0 when equal, positive when greater, negetive when smaller
204
+ * @param otherwise - (default: undefined) a fallback value when there were no input values given
205
+ * @example
206
+ * ```ts
207
+ * const stream = Stream.of('abc', 'a', 'abcde', 'ab')
208
+ * console.log(stream.maxBy((s1, s2) => s1.length - s2.length))
209
+ * // 'abcde'
210
+ * ```
211
+ */
212
+ AsyncReducer.maxBy = (compFun, otherwise) => {
213
+ const token = Symbol();
214
+ return create(token, (state, next) => __awaiter(this, void 0, void 0, function* () {
215
+ if (token === state)
216
+ return next;
217
+ return (yield compFun(state, next)) > 0 ? state : next;
218
+ }), (state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state);
219
+ };
220
+ /**
221
+ * Returns a `Reducer` that remembers the maximum value of the numberic inputs.
222
+ * @param otherwise - (default: undefined) a fallback value when there were no input values given
223
+ * @example
224
+ * ```ts
225
+ * console.log(Stream.of(5, 3, 7, 4).reduce(Reducer.max()))
226
+ * // => 7
227
+ * ```
228
+ */
229
+ AsyncReducer.max = (otherwise) => {
230
+ return create(undefined, (state, next) => undefined !== state && state > next ? state : next, (state) => state !== null && state !== void 0 ? state : AsyncOptLazy.toMaybePromise(otherwise));
231
+ };
232
+ /**
233
+ * Returns a `Reducer` that joins the given input values into a string using the given options.
234
+ * @param options - an object containing:<br/>
235
+ * - sep: (optional) a seperator string value between values in the output<br/>
236
+ * - start: (optional) a start string to prepend to the output<br/>
237
+ * - end: (optional) an end string to append to the output<br/>
238
+ * @example
239
+ * ```ts
240
+ * console.log(Stream.of(1, 2, 3).reduce(Reducer.join({ sep: '-' })))
241
+ * // => '1-2-3'
242
+ * ```
243
+ */
244
+ function join({ sep = '', start = '', end = '', valueToString = String, } = {}) {
245
+ let curSep = '';
246
+ let curStart = start;
247
+ return create('', (state, next) => {
248
+ const result = curStart.concat(state, curSep, valueToString(next));
249
+ curSep = sep;
250
+ curStart = '';
251
+ return result;
252
+ }, (state) => state.concat(end));
253
+ }
254
+ AsyncReducer.join = join;
255
+ /**
256
+ * Returns an `AsyncReducer` that remembers the amount of input items provided.
257
+ * @param pred - (optional) a predicate that returns false if the item should not be counted given:<br/>
258
+ * - value: the current input value<br/>
259
+ * - index: the input value index
260
+ * @example
261
+ * ```ts
262
+ * const stream = AsyncStream.from(Stream.range({ amount: 10 }))
263
+ * console.log(await stream.reduce(AsyncReducer.count()))
264
+ * // => 10
265
+ * console.log(await stream.reduce(AsyncReducer.count(async v => v < 5)))
266
+ * // => 5
267
+ * ```
268
+ */
269
+ AsyncReducer.count = (pred) => {
270
+ if (undefined === pred)
271
+ return createMono(0, (_, __, i) => i + 1);
272
+ return createOutput(0, (state, next, i) => __awaiter(this, void 0, void 0, function* () {
273
+ if (yield (pred === null || pred === void 0 ? void 0 : pred(next, i)))
274
+ return state + 1;
275
+ return state;
276
+ }));
277
+ };
278
+ /**
279
+ * Returns an `AsyncReducer` that remembers the first input value for which the given `pred` function returns true.
280
+ * @param pred - a function taking an input value and its index, and returning true if the value should be remembered
281
+ * @param otherwise - (default: undefined) a fallback value to output if no input value yet has satisfied the given predicate
282
+ * @typeparam T - the input value type
283
+ * @typeparam O - the fallback value type
284
+ * @example
285
+ * ```ts
286
+ * await AsyncStream.from(Stream.range({ amount: 10 })).reduce(AsyncReducer.firstWhere(async v => v > 5)))
287
+ * // => 6
288
+ * ```
289
+ */
290
+ AsyncReducer.firstWhere = (pred, otherwise) => {
291
+ const token = Symbol();
292
+ return create(token, (state, next, i, halt) => __awaiter(this, void 0, void 0, function* () {
293
+ if (token === state && (yield pred(next, i))) {
294
+ halt();
295
+ return next;
296
+ }
297
+ return state;
298
+ }), (state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state);
299
+ };
300
+ /**
301
+ * Returns an `AsyncReducer` that remembers the first input value.
302
+ * @param otherwise - (default: undefined) a fallback value to output if no input value has been provided
303
+ * @typeparam T - the input value type
304
+ * @typeparam O - the fallback value type
305
+ * @example
306
+ * ```ts
307
+ * await AsyncStream.from(Stream.range{ amount: 10 })).reduce(AsyncReducer.first())
308
+ * // => 0
309
+ * ```
310
+ */
311
+ AsyncReducer.first = (otherwise) => {
312
+ const token = Symbol();
313
+ return create(token, (state, next, _, halt) => {
314
+ halt();
315
+ if (token === state)
316
+ return next;
317
+ return state;
318
+ }, (state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state);
319
+ };
320
+ /**
321
+ * Returns an `AsyncReducer` that remembers the last input value for which the given `pred` function returns true.
322
+ * @param pred - a function taking an input value and its index, and returning true if the value should be remembered
323
+ * @param otherwise - (default: undefined) a fallback value to output if no input value yet has satisfied the given predicate
324
+ * @typeparam T - the input value type
325
+ * @typeparam O - the fallback value type
326
+ * @example
327
+ * ```ts
328
+ * await AsyncStream.from(Stream.range({ amount: 10 })).reduce(AsyncReducer.lastWhere(async v => v > 5)))
329
+ * // => 9
330
+ * ```
331
+ */
332
+ AsyncReducer.lastWhere = (pred, otherwise) => {
333
+ const token = Symbol();
334
+ return create(token, (state, next, i) => __awaiter(this, void 0, void 0, function* () {
335
+ if (yield pred(next, i))
336
+ return next;
337
+ return state;
338
+ }), (state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state);
339
+ };
340
+ /**
341
+ * Returns an `AsyncReducer` that remembers the last input value.
342
+ * @param otherwise - (default: undefined) a fallback value to output if no input value has been provided
343
+ * @typeparam T - the input value type
344
+ * @typeparam O - the fallback value type
345
+ * @example
346
+ * ```ts
347
+ * await AsyncStream.from(Stream.range{ amount: 10 })).reduce(AsyncReducer.last())
348
+ * // => 9
349
+ * ```
350
+ */
351
+ AsyncReducer.last = (otherwise) => {
352
+ const token = Symbol();
353
+ return create(() => token, (_, next) => next, (state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state);
354
+ };
355
+ /**
356
+ * Returns a `Reducer` that ouputs false as long as no input value satisfies given `pred`, true otherwise.
357
+ * @typeparam T - the element type
358
+ * @param pred - a function taking an input value and its index, and returning true if the value satisfies the predicate
359
+ * @example
360
+ * ```ts
361
+ * await AsyncStream.from(Stream.range{ amount: 10 })).reduce(AsyncReducer.some(async v => v > 5))
362
+ * // => true
363
+ * ```
364
+ */
365
+ function some(pred) {
366
+ return createOutput(false, (state, next, i, halt) => __awaiter(this, void 0, void 0, function* () {
367
+ if (state)
368
+ return state;
369
+ const satisfies = yield pred(next, i);
370
+ if (satisfies) {
371
+ halt();
372
+ }
373
+ return satisfies;
374
+ }));
375
+ }
376
+ AsyncReducer.some = some;
377
+ /**
378
+ * Returns an `AsyncReducer` that ouputs true as long as all input values satisfy the given `pred`, false otherwise.
379
+ * @typeparam T - the element type
380
+ * @param pred - a function taking an input value and its index, and returning true if the value satisfies the predicate
381
+ * @example
382
+ * ```ts
383
+ * await AsyncStream.from(Stream.range{ amount: 10 })).reduce(AsyncReducer.every(async v => v < 5))
384
+ * // => false
385
+ * ```
386
+ */
387
+ function every(pred) {
388
+ return createOutput(true, (state, next, i, halt) => __awaiter(this, void 0, void 0, function* () {
389
+ if (!state)
390
+ return state;
391
+ const satisfies = yield pred(next, i);
392
+ if (!satisfies) {
393
+ halt();
394
+ }
395
+ return satisfies;
396
+ }));
397
+ }
398
+ AsyncReducer.every = every;
399
+ /**
400
+ * Returns an `AsyncReducer` that outputs false as long as the given `elem` has not been encountered in the input values, true otherwise.
401
+ * @typeparam T - the element type
402
+ * @param elem - the element to search for
403
+ * @param eq - (optional) a comparison function that returns true if te two given input values are considered equal
404
+ * @example
405
+ * ```ts
406
+ * await AsyncStream.from(Stream.range({ amount: 10 })).reduce(AsyncReducer.contains(5)))
407
+ * // => true
408
+ * ```
409
+ */
410
+ function contains(elem, eq = Object.is) {
411
+ return createOutput(false, (state, next, _, halt) => {
412
+ if (state)
413
+ return state;
414
+ const satisfies = eq(next, elem);
415
+ if (satisfies) {
416
+ halt();
417
+ }
418
+ return satisfies;
419
+ });
420
+ }
421
+ AsyncReducer.contains = contains;
422
+ /**
423
+ * Returns an `AsyncReducer` that takes boolean values and outputs true if all input values are true, and false otherwise.
424
+ * @example
425
+ * ```ts
426
+ * await AsyncStream.of(true, false, true)).reduce(AsyncReducer.and))
427
+ * // => false
428
+ * ```
429
+ */
430
+ AsyncReducer.and = createMono(true, (state, next, _, halt) => {
431
+ if (!state)
432
+ return state;
433
+ if (!next)
434
+ halt();
435
+ return next;
436
+ });
437
+ /**
438
+ * Returns an `AsyncReducer` that takes boolean values and outputs true if one or more input values are true, and false otherwise.
439
+ * @example
440
+ * ```ts
441
+ * await AsyncStream.of(true, false, true)).reduce(AsyncReducer.or))
442
+ * // => true
443
+ * ```
444
+ */
445
+ AsyncReducer.or = createMono(false, (state, next, _, halt) => {
446
+ if (state)
447
+ return state;
448
+ if (next)
449
+ halt();
450
+ return next;
451
+ });
452
+ /**
453
+ * Returns an `AsyncReducer` that outputs true if no input values are received, false otherwise.
454
+ * @example
455
+ * ```ts
456
+ * await AsyncStream.of(1, 2, 3).reduce(AsyncReducer.isEmpty))
457
+ * // => false
458
+ * ```
459
+ */
460
+ AsyncReducer.isEmpty = createOutput(true, (_, __, ___, halt) => {
461
+ halt();
462
+ return false;
463
+ });
464
+ /**
465
+ * Returns an `AsyncReducer` that outputs true if one or more input values are received, false otherwise.
466
+ * @example
467
+ * ```ts
468
+ * await AsyncStream.of(1, 2, 3).reduce(AsyncReducer.nonEmpty))
469
+ * // => true
470
+ * ```
471
+ */
472
+ AsyncReducer.nonEmpty = createOutput(false, (_, __, ___, halt) => {
473
+ halt();
474
+ return true;
475
+ });
476
+ /**
477
+ * Returns an `AsyncReducer` that collects received input values in an array, and returns a copy of that array as an output value when requested.
478
+ * @typeparam T - the element type
479
+ * @example
480
+ * ```ts
481
+ * await AsyncStream.of(1, 2, 3).reduce(AsyncReducer.toArray()))
482
+ * // => [1, 2, 3]
483
+ * ```
484
+ */
485
+ function toArray() {
486
+ return create(() => [], (state, next) => {
487
+ state.push(next);
488
+ return state;
489
+ }, (state) => state.slice());
490
+ }
491
+ AsyncReducer.toArray = toArray;
492
+ /**
493
+ * Returns a `AsyncReducer` that collects received input tuples into a mutable JS Map, and returns
494
+ * a copy of that map when output is requested.
495
+ * @typeparam K - the map key type
496
+ * @typeparam V - the map value type
497
+ * @example
498
+ * ```ts
499
+ * await AsyncStream.of([1, 'a'], [2, 'b']).reduce(AsyncReducer.toJSMap()))
500
+ * // Map { 1 => 'a', 2 => 'b' }
501
+ * ```
502
+ */
503
+ function toJSMap() {
504
+ return create(() => new Map(), (state, next) => {
505
+ state.set(next[0], next[1]);
506
+ return state;
507
+ }, (s) => new Map(s));
508
+ }
509
+ AsyncReducer.toJSMap = toJSMap;
510
+ /**
511
+ * Returns an `AsyncReducer` that collects received input values into a mutable JS Set, and returns
512
+ * a copy of that map when output is requested.
513
+ * @typeparam T - the element type
514
+ * @example
515
+ * ```ts
516
+ * await AsyncStream.of(1, 2, 3).reduce(AsyncReducer.toJSSet()))
517
+ * // Set {1, 2, 3}
518
+ * ```
519
+ */
520
+ function toJSSet() {
521
+ return create(() => new Set(), (state, next) => {
522
+ state.add(next);
523
+ return state;
524
+ }, (s) => new Set(s));
525
+ }
526
+ AsyncReducer.toJSSet = toJSSet;
527
+ /**
528
+ * Returns an `AsyncReducer` that collects 2-tuples containing keys and values into a plain JS object, and
529
+ * returns a copy of that object when output is requested.
530
+ * @typeparam K - the result object key type
531
+ * @typeparam V - the result object value type
532
+ * @example
533
+ * ```ts
534
+ * await AsyncStream.of(['a', 1], ['b', true]).reduce(AsyncReducer.toJSObject()))
535
+ * // { a: 1, b: true }
536
+ * ```
537
+ */
538
+ function toJSObject() {
539
+ return create(() => ({}), (state, entry) => {
540
+ state[entry[0]] = entry[1];
541
+ return state;
542
+ }, (s) => (Object.assign({}, s)));
543
+ }
544
+ AsyncReducer.toJSObject = toJSObject;
545
+ /**
546
+ * Returns a `Reducer` that combines multiple input `reducers` by providing input values to all of them and collecting the outputs in an array.
547
+ * @param reducers - 2 or more reducers to combine
548
+ * @example
549
+ * ```ts
550
+ * const red = Reducer.combine(Reducer.sum, Reducer.average)
551
+ * console.log(Stream.range({amount: 9 }).reduce(red))
552
+ * // => [36, 4]
553
+ * ```
554
+ */
555
+ function combine(...reducers) {
556
+ const createState = () => {
557
+ return Promise.all(reducers.map((reducer) => __awaiter(this, void 0, void 0, function* () {
558
+ const result = {
559
+ reducer,
560
+ halted: false,
561
+ halt() {
562
+ result.halted = true;
563
+ },
564
+ state: yield AsyncOptLazy.toMaybePromise(reducer.init),
565
+ };
566
+ return result;
567
+ })));
568
+ };
569
+ return create(createState, (allState, next, index, halt) => __awaiter(this, void 0, void 0, function* () {
570
+ let anyNotHalted = false;
571
+ yield Promise.all(allState.map((red) => __awaiter(this, void 0, void 0, function* () {
572
+ if (red.halted)
573
+ return;
574
+ red.state = yield red.reducer.next(red.state, next, index, red.halt);
575
+ if (!red.halted)
576
+ anyNotHalted = true;
577
+ })));
578
+ if (!anyNotHalted)
579
+ halt();
580
+ return allState;
581
+ }), (allState) => Promise.all(allState.map((st) => st.reducer.stateToResult(st.state))));
582
+ }
583
+ AsyncReducer.combine = combine;
139
584
  })(AsyncReducer || (AsyncReducer = {}));
140
585
  //# sourceMappingURL=async-reducer.js.map