@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.
- package/dist/main/async-reducer.js +559 -0
- package/dist/main/async-reducer.js.map +1 -1
- package/dist/main/reducer.js +32 -16
- package/dist/main/reducer.js.map +1 -1
- package/dist/module/async-reducer.js +445 -0
- package/dist/module/async-reducer.js.map +1 -1
- package/dist/module/reducer.js +31 -16
- package/dist/module/reducer.js.map +1 -1
- package/dist/types/async-reducer.d.ts +310 -1
- package/dist/types/reducer.d.ts +33 -17
- package/package.json +2 -2
- package/src/async-reducer.ts +663 -0
- package/src/reducer.ts +46 -26
package/dist/main/reducer.js
CHANGED
|
@@ -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:
|
|
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:
|
|
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.
|
|
391
|
-
* // =>
|
|
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:
|
|
603
|
+
state: (0, internal_1.OptLazy)(reducer.init),
|
|
588
604
|
};
|
|
589
605
|
return result;
|
|
590
606
|
});
|
package/dist/main/reducer.js.map
CHANGED
|
@@ -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
|