@rimbu/common 1.1.0 → 2.0.1
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/bun/async-optlazy.mts +18 -5
- package/dist/bun/internal.mts +0 -2
- package/dist/bun/optlazy.mts +12 -3
- package/dist/cjs/async-optlazy.cjs +60 -42
- package/dist/cjs/async-optlazy.cjs.map +1 -0
- package/dist/cjs/async-optlazy.d.cts +46 -0
- package/dist/cjs/collect.cjs +9 -31
- package/dist/cjs/collect.cjs.map +1 -0
- package/dist/cjs/collect.d.cts +29 -0
- package/dist/cjs/comp.cjs +519 -1598
- package/dist/cjs/comp.cjs.map +1 -0
- package/dist/cjs/comp.d.cts +239 -0
- package/dist/cjs/eq.cjs +375 -203
- package/dist/cjs/eq.cjs.map +1 -0
- package/dist/cjs/err.cjs +57 -50
- package/dist/cjs/err.cjs.map +1 -0
- package/dist/cjs/index-range.cjs +105 -109
- package/dist/cjs/index-range.cjs.map +1 -0
- package/dist/cjs/index-range.d.cts +42 -0
- package/dist/cjs/index.cjs +9 -1684
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +6 -0
- package/dist/cjs/internal.cjs +14 -1684
- package/dist/cjs/internal.cjs.map +1 -0
- package/dist/cjs/internal.d.cts +11 -0
- package/dist/cjs/optlazy.cjs +43 -36
- package/dist/cjs/optlazy.cjs.map +1 -0
- package/dist/cjs/optlazy.d.cts +42 -0
- package/dist/cjs/range.cjs +35 -49
- package/dist/cjs/range.cjs.map +1 -0
- package/dist/cjs/traverse-state.cjs +30 -46
- package/dist/cjs/traverse-state.cjs.map +1 -0
- package/dist/cjs/types.cjs +2 -17
- package/dist/cjs/types.cjs.map +1 -0
- package/dist/cjs/update.cjs +21 -32
- package/dist/cjs/update.cjs.map +1 -0
- package/dist/{types → esm}/async-optlazy.d.mts +10 -3
- package/dist/esm/async-optlazy.mjs +10 -4
- package/dist/esm/async-optlazy.mjs.map +1 -1
- package/dist/esm/comp.mjs.map +1 -1
- package/dist/esm/eq.d.mts +196 -0
- package/dist/esm/eq.mjs.map +1 -1
- package/dist/esm/err.d.mts +33 -0
- package/dist/esm/index-range.mjs.map +1 -1
- package/dist/{types → esm}/internal.d.mts +0 -2
- package/dist/esm/internal.mjs +0 -2
- package/dist/esm/internal.mjs.map +1 -1
- package/dist/{types → esm}/optlazy.d.mts +8 -2
- package/dist/esm/optlazy.mjs +7 -2
- package/dist/esm/optlazy.mjs.map +1 -1
- package/dist/esm/range.d.mts +35 -0
- package/dist/esm/range.mjs.map +1 -1
- package/dist/esm/traverse-state.d.mts +33 -0
- package/dist/esm/types.d.mts +31 -0
- package/dist/esm/update.d.mts +18 -0
- package/dist/esm/update.mjs.map +1 -1
- package/package.json +21 -14
- package/src/async-optlazy.mts +18 -5
- package/src/internal.mts +0 -2
- package/src/optlazy.mts +12 -3
- package/dist/bun/async-reducer.mts +0 -1157
- package/dist/bun/reducer.mts +0 -1025
- package/dist/cjs/async-reducer.cjs +0 -1621
- package/dist/cjs/reducer.cjs +0 -1621
- package/dist/esm/async-reducer.mjs +0 -638
- package/dist/esm/async-reducer.mjs.map +0 -1
- package/dist/esm/reducer.mjs +0 -669
- package/dist/esm/reducer.mjs.map +0 -1
- package/dist/types/async-reducer.d.mts +0 -542
- package/dist/types/reducer.d.mts +0 -542
- package/src/async-reducer.mts +0 -1157
- package/src/reducer.mts +0 -1025
- /package/dist/{types/eq.d.mts → cjs/eq.d.cts} +0 -0
- /package/dist/{types/err.d.mts → cjs/err.d.cts} +0 -0
- /package/dist/{types/range.d.mts → cjs/range.d.cts} +0 -0
- /package/dist/{types/traverse-state.d.mts → cjs/traverse-state.d.cts} +0 -0
- /package/dist/{types/types.d.mts → cjs/types.d.cts} +0 -0
- /package/dist/{types/update.d.mts → cjs/update.d.cts} +0 -0
- /package/dist/{types → esm}/collect.d.mts +0 -0
- /package/dist/{types → esm}/comp.d.mts +0 -0
- /package/dist/{types → esm}/index-range.d.mts +0 -0
- /package/dist/{types → esm}/index.d.mts +0 -0
package/dist/cjs/reducer.cjs
DELETED
|
@@ -1,1621 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/reducer.mts
|
|
21
|
-
var reducer_exports = {};
|
|
22
|
-
__export(reducer_exports, {
|
|
23
|
-
Reducer: () => Reducer2
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(reducer_exports);
|
|
26
|
-
|
|
27
|
-
// src/collect.mts
|
|
28
|
-
var CollectFun;
|
|
29
|
-
((CollectFun2) => {
|
|
30
|
-
CollectFun2.Skip = Symbol("Skip");
|
|
31
|
-
})(CollectFun || (CollectFun = {}));
|
|
32
|
-
|
|
33
|
-
// src/comp.mts
|
|
34
|
-
var Comp;
|
|
35
|
-
((Comp2) => {
|
|
36
|
-
const _anyFlatComp = createAnyComp("FLAT");
|
|
37
|
-
const _anyShallowComp = createAnyComp("SHALLOW");
|
|
38
|
-
const _anyDeepComp = createAnyComp("DEEP");
|
|
39
|
-
function defaultComp() {
|
|
40
|
-
return _anyDeepComp;
|
|
41
|
-
}
|
|
42
|
-
Comp2.defaultComp = defaultComp;
|
|
43
|
-
const _numberComp = {
|
|
44
|
-
isComparable(obj) {
|
|
45
|
-
return typeof obj === "number";
|
|
46
|
-
},
|
|
47
|
-
compare(v1, v2) {
|
|
48
|
-
if (Number.isFinite(v1) && Number.isFinite(v2)) {
|
|
49
|
-
return v1 - v2;
|
|
50
|
-
}
|
|
51
|
-
if (Number.isNaN(v1)) {
|
|
52
|
-
if (Number.isNaN(v2))
|
|
53
|
-
return 0;
|
|
54
|
-
if (v2 === Number.POSITIVE_INFINITY)
|
|
55
|
-
return 1;
|
|
56
|
-
if (v2 === Number.NEGATIVE_INFINITY)
|
|
57
|
-
return -1;
|
|
58
|
-
return -1;
|
|
59
|
-
}
|
|
60
|
-
if (v1 === Number.POSITIVE_INFINITY) {
|
|
61
|
-
return v2 === Number.POSITIVE_INFINITY ? 0 : 1;
|
|
62
|
-
}
|
|
63
|
-
return v2 === Number.NEGATIVE_INFINITY ? 0 : -1;
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
function numberComp() {
|
|
67
|
-
return _numberComp;
|
|
68
|
-
}
|
|
69
|
-
Comp2.numberComp = numberComp;
|
|
70
|
-
const _booleanComp = {
|
|
71
|
-
isComparable(obj) {
|
|
72
|
-
return typeof obj === "boolean";
|
|
73
|
-
},
|
|
74
|
-
compare(v1, v2) {
|
|
75
|
-
return v1 === v2 ? 0 : v1 ? 1 : -1;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
function booleanComp() {
|
|
79
|
-
return _booleanComp;
|
|
80
|
-
}
|
|
81
|
-
Comp2.booleanComp = booleanComp;
|
|
82
|
-
const _bigIntComp = {
|
|
83
|
-
isComparable(obj) {
|
|
84
|
-
return typeof obj === "bigint";
|
|
85
|
-
},
|
|
86
|
-
compare(v1, v2) {
|
|
87
|
-
const res = v1 - v2;
|
|
88
|
-
if (res > 0)
|
|
89
|
-
return 1;
|
|
90
|
-
if (res < 0)
|
|
91
|
-
return -1;
|
|
92
|
-
return 0;
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
function bigIntComp() {
|
|
96
|
-
return _bigIntComp;
|
|
97
|
-
}
|
|
98
|
-
Comp2.bigIntComp = bigIntComp;
|
|
99
|
-
const _defaultCollator = Intl.Collator("und");
|
|
100
|
-
const _stringComp = {
|
|
101
|
-
isComparable(obj) {
|
|
102
|
-
return typeof obj === "string";
|
|
103
|
-
},
|
|
104
|
-
compare: _defaultCollator.compare
|
|
105
|
-
};
|
|
106
|
-
const _anyStringJSONComp = {
|
|
107
|
-
isComparable(obj) {
|
|
108
|
-
return true;
|
|
109
|
-
},
|
|
110
|
-
compare(v1, v2) {
|
|
111
|
-
return _defaultCollator.compare(JSON.stringify(v1), JSON.stringify(v2));
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
function anyStringJSONComp() {
|
|
115
|
-
return _anyStringJSONComp;
|
|
116
|
-
}
|
|
117
|
-
Comp2.anyStringJSONComp = anyStringJSONComp;
|
|
118
|
-
function stringComp(...args) {
|
|
119
|
-
if (args.length === 0)
|
|
120
|
-
return _stringComp;
|
|
121
|
-
const collator = Intl.Collator(...args);
|
|
122
|
-
return {
|
|
123
|
-
isComparable(obj) {
|
|
124
|
-
return typeof obj === "string";
|
|
125
|
-
},
|
|
126
|
-
compare: collator.compare
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
Comp2.stringComp = stringComp;
|
|
130
|
-
function stringCaseInsensitiveComp() {
|
|
131
|
-
return stringComp("und", { sensitivity: "accent" });
|
|
132
|
-
}
|
|
133
|
-
Comp2.stringCaseInsensitiveComp = stringCaseInsensitiveComp;
|
|
134
|
-
const _stringCharCodeComp = {
|
|
135
|
-
isComparable(obj) {
|
|
136
|
-
return typeof obj === "string";
|
|
137
|
-
},
|
|
138
|
-
compare(v1, v2) {
|
|
139
|
-
const len = Math.min(v1.length, v2.length);
|
|
140
|
-
let i = -1;
|
|
141
|
-
while (++i < len) {
|
|
142
|
-
const diff = v1.charCodeAt(i) - v2.charCodeAt(i);
|
|
143
|
-
if (diff !== 0)
|
|
144
|
-
return diff;
|
|
145
|
-
}
|
|
146
|
-
return v1.length - v2.length;
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
function stringCharCodeComp() {
|
|
150
|
-
return _stringCharCodeComp;
|
|
151
|
-
}
|
|
152
|
-
Comp2.stringCharCodeComp = stringCharCodeComp;
|
|
153
|
-
const _anyToStringComp = {
|
|
154
|
-
isComparable(obj) {
|
|
155
|
-
return true;
|
|
156
|
-
},
|
|
157
|
-
compare(v1, v2) {
|
|
158
|
-
return _defaultCollator.compare(
|
|
159
|
-
Eq.convertAnyToString(v1),
|
|
160
|
-
Eq.convertAnyToString(v2)
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
function anyToStringComp() {
|
|
165
|
-
return _anyToStringComp;
|
|
166
|
-
}
|
|
167
|
-
Comp2.anyToStringComp = anyToStringComp;
|
|
168
|
-
function createValueOfComp(cls, valueComp = anyShallowComp()) {
|
|
169
|
-
return {
|
|
170
|
-
isComparable(obj) {
|
|
171
|
-
return obj instanceof cls;
|
|
172
|
-
},
|
|
173
|
-
compare(v1, v2) {
|
|
174
|
-
return valueComp.compare(v1.valueOf(), v2.valueOf());
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
Comp2.createValueOfComp = createValueOfComp;
|
|
179
|
-
const _DateComp = createValueOfComp(Date, _numberComp);
|
|
180
|
-
function dateComp() {
|
|
181
|
-
return _DateComp;
|
|
182
|
-
}
|
|
183
|
-
Comp2.dateComp = dateComp;
|
|
184
|
-
function createIterableComp(itemComp) {
|
|
185
|
-
return {
|
|
186
|
-
isComparable(obj) {
|
|
187
|
-
return typeof obj === "object" && obj !== null && Symbol.iterator in obj;
|
|
188
|
-
},
|
|
189
|
-
compare(v1, v2) {
|
|
190
|
-
const iter1 = v1[Symbol.iterator]();
|
|
191
|
-
const iter2 = v2[Symbol.iterator]();
|
|
192
|
-
while (true) {
|
|
193
|
-
const value1 = iter1.next();
|
|
194
|
-
const value2 = iter2.next();
|
|
195
|
-
if (value1.done)
|
|
196
|
-
return value2.done ? 0 : -1;
|
|
197
|
-
if (value2.done)
|
|
198
|
-
return 1;
|
|
199
|
-
const result = itemComp.compare(value1.value, value2.value);
|
|
200
|
-
if (result !== 0)
|
|
201
|
-
return result;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
const _iterableAnyComp = createIterableComp(
|
|
207
|
-
Comp2.defaultComp()
|
|
208
|
-
);
|
|
209
|
-
function iterableComp(itemComp) {
|
|
210
|
-
if (void 0 === itemComp)
|
|
211
|
-
return _iterableAnyComp;
|
|
212
|
-
return createIterableComp(itemComp);
|
|
213
|
-
}
|
|
214
|
-
Comp2.iterableComp = iterableComp;
|
|
215
|
-
const _BooleanComp = createValueOfComp(Boolean, _booleanComp);
|
|
216
|
-
const _NumberComp = createValueOfComp(Number, _numberComp);
|
|
217
|
-
const _StringComp = createValueOfComp(String, _stringComp);
|
|
218
|
-
const _wrappedComps = [
|
|
219
|
-
_BooleanComp,
|
|
220
|
-
_DateComp,
|
|
221
|
-
_NumberComp,
|
|
222
|
-
_StringComp
|
|
223
|
-
];
|
|
224
|
-
function tryWrappedComp(v1, v2) {
|
|
225
|
-
let i = -1;
|
|
226
|
-
const len = _wrappedComps.length;
|
|
227
|
-
while (++i < len) {
|
|
228
|
-
const comp = _wrappedComps[i];
|
|
229
|
-
if (comp.isComparable(v1) && comp.isComparable(v2)) {
|
|
230
|
-
return comp.compare(v1, v2);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
return void 0;
|
|
234
|
-
}
|
|
235
|
-
function createObjectComp(keyComp = anyFlatComp(), valueComp = defaultComp()) {
|
|
236
|
-
return {
|
|
237
|
-
isComparable(obj) {
|
|
238
|
-
return true;
|
|
239
|
-
},
|
|
240
|
-
compare(v1, v2) {
|
|
241
|
-
const keys1 = Object.keys(v1);
|
|
242
|
-
const keys2 = Object.keys(v2);
|
|
243
|
-
if (keys1.length === 0) {
|
|
244
|
-
return keys2.length === 0 ? 0 : -1;
|
|
245
|
-
}
|
|
246
|
-
if (keys2.length === 0) {
|
|
247
|
-
return keys1.length === 0 ? 0 : 1;
|
|
248
|
-
}
|
|
249
|
-
keys1.sort(keyComp.compare);
|
|
250
|
-
keys2.sort(keyComp.compare);
|
|
251
|
-
const length = Math.min(keys1.length, keys2.length);
|
|
252
|
-
for (let index = 0; index < length; index++) {
|
|
253
|
-
const key1 = keys1[index];
|
|
254
|
-
const key2 = keys2[index];
|
|
255
|
-
const keyResult = keyComp.compare(key1, key2);
|
|
256
|
-
if (keyResult !== 0)
|
|
257
|
-
return keyResult;
|
|
258
|
-
const value1 = v1[key1];
|
|
259
|
-
const value2 = v2[key2];
|
|
260
|
-
const valueResult = valueComp.compare(value1, value2);
|
|
261
|
-
if (valueResult !== 0)
|
|
262
|
-
return valueResult;
|
|
263
|
-
}
|
|
264
|
-
const keyDiff = keys1.length - keys2.length;
|
|
265
|
-
return keyDiff;
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
const _objectAnyComp = createObjectComp();
|
|
270
|
-
function objectComp(options) {
|
|
271
|
-
if (void 0 === options)
|
|
272
|
-
return _objectAnyComp;
|
|
273
|
-
return createObjectComp(options.keyComp, options.valueComp);
|
|
274
|
-
}
|
|
275
|
-
Comp2.objectComp = objectComp;
|
|
276
|
-
function createAnyComp(mode) {
|
|
277
|
-
return {
|
|
278
|
-
isComparable(obj) {
|
|
279
|
-
return true;
|
|
280
|
-
},
|
|
281
|
-
compare(v1, v2) {
|
|
282
|
-
if (Object.is(v1, v2))
|
|
283
|
-
return 0;
|
|
284
|
-
const type1 = typeof v1;
|
|
285
|
-
const type2 = typeof v2;
|
|
286
|
-
if (type1 !== type2) {
|
|
287
|
-
return _anyToStringComp.compare(v1, v2);
|
|
288
|
-
}
|
|
289
|
-
switch (type1) {
|
|
290
|
-
case "bigint":
|
|
291
|
-
return _bigIntComp.compare(v1, v2);
|
|
292
|
-
case "boolean":
|
|
293
|
-
return _booleanComp.compare(v1, v2);
|
|
294
|
-
case "number":
|
|
295
|
-
return _numberComp.compare(v1, v2);
|
|
296
|
-
case "string":
|
|
297
|
-
return _stringComp.compare(v1, v2);
|
|
298
|
-
case "object": {
|
|
299
|
-
if (null === v1) {
|
|
300
|
-
if (null === v2)
|
|
301
|
-
return 0;
|
|
302
|
-
return -1;
|
|
303
|
-
}
|
|
304
|
-
if (null === v2) {
|
|
305
|
-
return 1;
|
|
306
|
-
}
|
|
307
|
-
const wrappedComp = tryWrappedComp(v1, v2);
|
|
308
|
-
if (void 0 !== wrappedComp)
|
|
309
|
-
return wrappedComp;
|
|
310
|
-
if (mode !== "FLAT") {
|
|
311
|
-
if (_iterableAnyComp.isComparable(v1) && _iterableAnyComp.isComparable(v2)) {
|
|
312
|
-
if (mode === "SHALLOW") {
|
|
313
|
-
return iterableComp(_anyFlatComp).compare(v1, v2);
|
|
314
|
-
}
|
|
315
|
-
return iterableComp(this).compare(v1, v2);
|
|
316
|
-
}
|
|
317
|
-
if (mode === "SHALLOW") {
|
|
318
|
-
return createObjectComp(_anyFlatComp, _anyFlatComp).compare(
|
|
319
|
-
v1,
|
|
320
|
-
v2
|
|
321
|
-
);
|
|
322
|
-
}
|
|
323
|
-
return _objectAnyComp.compare(v1, v2);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
return _anyToStringComp.compare(v1, v2);
|
|
328
|
-
}
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
function anyFlatComp() {
|
|
332
|
-
return _anyFlatComp;
|
|
333
|
-
}
|
|
334
|
-
Comp2.anyFlatComp = anyFlatComp;
|
|
335
|
-
function anyShallowComp() {
|
|
336
|
-
return _anyShallowComp;
|
|
337
|
-
}
|
|
338
|
-
Comp2.anyShallowComp = anyShallowComp;
|
|
339
|
-
function anyDeepComp() {
|
|
340
|
-
return _anyDeepComp;
|
|
341
|
-
}
|
|
342
|
-
Comp2.anyDeepComp = anyDeepComp;
|
|
343
|
-
function withUndefined(comp) {
|
|
344
|
-
return {
|
|
345
|
-
isComparable(obj) {
|
|
346
|
-
return void 0 === obj || comp.isComparable(obj);
|
|
347
|
-
},
|
|
348
|
-
compare(v1, v2) {
|
|
349
|
-
if (void 0 === v1) {
|
|
350
|
-
if (void 0 === v2)
|
|
351
|
-
return 0;
|
|
352
|
-
return -1;
|
|
353
|
-
}
|
|
354
|
-
if (void 0 === v2)
|
|
355
|
-
return 1;
|
|
356
|
-
return comp.compare(v1, v2);
|
|
357
|
-
}
|
|
358
|
-
};
|
|
359
|
-
}
|
|
360
|
-
Comp2.withUndefined = withUndefined;
|
|
361
|
-
function withNull(comp) {
|
|
362
|
-
return {
|
|
363
|
-
isComparable(obj) {
|
|
364
|
-
return null === obj || comp.isComparable(obj);
|
|
365
|
-
},
|
|
366
|
-
compare(v1, v2) {
|
|
367
|
-
if (null === v1) {
|
|
368
|
-
if (null === v2)
|
|
369
|
-
return 0;
|
|
370
|
-
return -1;
|
|
371
|
-
}
|
|
372
|
-
if (null === v2)
|
|
373
|
-
return 1;
|
|
374
|
-
return comp.compare(v1, v2);
|
|
375
|
-
}
|
|
376
|
-
};
|
|
377
|
-
}
|
|
378
|
-
Comp2.withNull = withNull;
|
|
379
|
-
function invert(comp) {
|
|
380
|
-
return {
|
|
381
|
-
compare(v1, v2) {
|
|
382
|
-
return comp.compare(v2, v1);
|
|
383
|
-
},
|
|
384
|
-
isComparable: comp.isComparable
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
Comp2.invert = invert;
|
|
388
|
-
function toEq(comp) {
|
|
389
|
-
return (v1, v2) => comp.compare(v1, v2) === 0;
|
|
390
|
-
}
|
|
391
|
-
Comp2.toEq = toEq;
|
|
392
|
-
})(Comp || (Comp = {}));
|
|
393
|
-
|
|
394
|
-
// src/eq.mts
|
|
395
|
-
var Eq;
|
|
396
|
-
((Eq4) => {
|
|
397
|
-
function convertAnyToString(value) {
|
|
398
|
-
if (typeof value !== "object" || null === value || !("toString" in value) || typeof value.toString !== "function" || value.toString !== Object.prototype.toString) {
|
|
399
|
-
return String(value);
|
|
400
|
-
}
|
|
401
|
-
return JSON.stringify(value);
|
|
402
|
-
}
|
|
403
|
-
Eq4.convertAnyToString = convertAnyToString;
|
|
404
|
-
const _anyFlatEq = createAnyEq("FLAT");
|
|
405
|
-
const _anyShallowEq = createAnyEq("SHALLOW");
|
|
406
|
-
const _anyDeepEq = createAnyEq("DEEP");
|
|
407
|
-
function defaultEq() {
|
|
408
|
-
return _anyDeepEq;
|
|
409
|
-
}
|
|
410
|
-
Eq4.defaultEq = defaultEq;
|
|
411
|
-
Eq4.objectIs = Object.is;
|
|
412
|
-
const _valueOfEq = (v1, v2) => Object.is(v1.valueOf(), v2.valueOf());
|
|
413
|
-
function valueOfEq() {
|
|
414
|
-
return _valueOfEq;
|
|
415
|
-
}
|
|
416
|
-
Eq4.valueOfEq = valueOfEq;
|
|
417
|
-
function dateEq() {
|
|
418
|
-
return _valueOfEq;
|
|
419
|
-
}
|
|
420
|
-
Eq4.dateEq = dateEq;
|
|
421
|
-
function createIterableEq(itemEq) {
|
|
422
|
-
return (v1, v2) => {
|
|
423
|
-
if (Object.is(v1, v2))
|
|
424
|
-
return true;
|
|
425
|
-
const iter1 = v1[Symbol.iterator]();
|
|
426
|
-
const iter2 = v2[Symbol.iterator]();
|
|
427
|
-
while (true) {
|
|
428
|
-
const value1 = iter1.next();
|
|
429
|
-
const value2 = iter2.next();
|
|
430
|
-
if (value1.done || value2.done)
|
|
431
|
-
return value1.done === value2.done;
|
|
432
|
-
if (!itemEq(value1.value, value2.value))
|
|
433
|
-
return false;
|
|
434
|
-
}
|
|
435
|
-
};
|
|
436
|
-
}
|
|
437
|
-
const _iterableAnyEq = createIterableEq(defaultEq());
|
|
438
|
-
function iterableEq(itemEq) {
|
|
439
|
-
if (void 0 === itemEq)
|
|
440
|
-
return _iterableAnyEq;
|
|
441
|
-
return createIterableEq(itemEq);
|
|
442
|
-
}
|
|
443
|
-
Eq4.iterableEq = iterableEq;
|
|
444
|
-
function createObjectEq(valueEq) {
|
|
445
|
-
return (v1, v2) => {
|
|
446
|
-
if (Object.is(v1, v2))
|
|
447
|
-
return true;
|
|
448
|
-
if (v1.constructor !== v2.constructor)
|
|
449
|
-
return false;
|
|
450
|
-
for (const key in v1) {
|
|
451
|
-
if (!(key in v2))
|
|
452
|
-
return false;
|
|
453
|
-
}
|
|
454
|
-
for (const key in v2) {
|
|
455
|
-
if (!(key in v1))
|
|
456
|
-
return false;
|
|
457
|
-
}
|
|
458
|
-
for (const key in v1) {
|
|
459
|
-
const value1 = v1[key];
|
|
460
|
-
const value2 = v2[key];
|
|
461
|
-
if (!valueEq(value1, value2))
|
|
462
|
-
return false;
|
|
463
|
-
}
|
|
464
|
-
return true;
|
|
465
|
-
};
|
|
466
|
-
}
|
|
467
|
-
const _objectEq = createObjectEq(defaultEq());
|
|
468
|
-
function objectEq(valueEq) {
|
|
469
|
-
if (void 0 === valueEq)
|
|
470
|
-
return _objectEq;
|
|
471
|
-
return createObjectEq(valueEq);
|
|
472
|
-
}
|
|
473
|
-
Eq4.objectEq = objectEq;
|
|
474
|
-
function createAnyEq(mode) {
|
|
475
|
-
const result = (v1, v2) => {
|
|
476
|
-
if (Object.is(v1, v2))
|
|
477
|
-
return true;
|
|
478
|
-
const type1 = typeof v1;
|
|
479
|
-
const type2 = typeof v2;
|
|
480
|
-
if (type1 !== type2)
|
|
481
|
-
return false;
|
|
482
|
-
switch (type1) {
|
|
483
|
-
case "undefined":
|
|
484
|
-
case "bigint":
|
|
485
|
-
case "boolean":
|
|
486
|
-
case "number":
|
|
487
|
-
case "string":
|
|
488
|
-
case "symbol":
|
|
489
|
-
case "function":
|
|
490
|
-
return Object.is(v1, v2);
|
|
491
|
-
case "object": {
|
|
492
|
-
if (v1 === null || v2 === null)
|
|
493
|
-
return false;
|
|
494
|
-
if (v1.constructor !== v2.constructor) {
|
|
495
|
-
return false;
|
|
496
|
-
}
|
|
497
|
-
if (v1 instanceof Boolean || v1 instanceof Date || v1 instanceof Number || v1 instanceof String) {
|
|
498
|
-
return _valueOfEq(v1, v2);
|
|
499
|
-
}
|
|
500
|
-
if (mode !== "FLAT") {
|
|
501
|
-
if (Symbol.iterator in v1 && Symbol.iterator in v2) {
|
|
502
|
-
if (mode === "SHALLOW") {
|
|
503
|
-
return createIterableEq(_anyFlatEq)(v1, v2);
|
|
504
|
-
}
|
|
505
|
-
return createIterableEq(result)(v1, v2);
|
|
506
|
-
}
|
|
507
|
-
if (mode === "SHALLOW") {
|
|
508
|
-
return createObjectEq(_anyFlatEq)(v1, v2);
|
|
509
|
-
}
|
|
510
|
-
return _objectEq(v1, v2);
|
|
511
|
-
}
|
|
512
|
-
return false;
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
};
|
|
516
|
-
return result;
|
|
517
|
-
}
|
|
518
|
-
function anyFlatEq() {
|
|
519
|
-
return _anyFlatEq;
|
|
520
|
-
}
|
|
521
|
-
Eq4.anyFlatEq = anyFlatEq;
|
|
522
|
-
function anyShallowEq() {
|
|
523
|
-
return _anyShallowEq;
|
|
524
|
-
}
|
|
525
|
-
Eq4.anyShallowEq = anyShallowEq;
|
|
526
|
-
function anyDeepEq() {
|
|
527
|
-
return _anyDeepEq;
|
|
528
|
-
}
|
|
529
|
-
Eq4.anyDeepEq = anyDeepEq;
|
|
530
|
-
const _defaultCollator = Intl.Collator("und");
|
|
531
|
-
const _defaultStringCollatorEq = (v1, v2) => _defaultCollator.compare(v1, v2) === 0;
|
|
532
|
-
function createStringCollatorEq(...args) {
|
|
533
|
-
if (args.length === 0)
|
|
534
|
-
return _defaultStringCollatorEq;
|
|
535
|
-
const collator = Intl.Collator(...args);
|
|
536
|
-
return (v1, v2) => collator.compare(v1, v2) === 0;
|
|
537
|
-
}
|
|
538
|
-
Eq4.createStringCollatorEq = createStringCollatorEq;
|
|
539
|
-
const _stringCaseInsensitiveEq = createStringCollatorEq("und", {
|
|
540
|
-
sensitivity: "accent"
|
|
541
|
-
});
|
|
542
|
-
function stringCaseInsentitiveEq() {
|
|
543
|
-
return _stringCaseInsensitiveEq;
|
|
544
|
-
}
|
|
545
|
-
Eq4.stringCaseInsentitiveEq = stringCaseInsentitiveEq;
|
|
546
|
-
const _stringCharCodeEq = (v1, v2) => {
|
|
547
|
-
const len = v1.length;
|
|
548
|
-
if (len !== v2.length)
|
|
549
|
-
return false;
|
|
550
|
-
let i = -1;
|
|
551
|
-
while (++i < len) {
|
|
552
|
-
if (v1.charCodeAt(i) !== v2.charCodeAt(i))
|
|
553
|
-
return false;
|
|
554
|
-
}
|
|
555
|
-
return true;
|
|
556
|
-
};
|
|
557
|
-
function stringCharCodeEq() {
|
|
558
|
-
return _stringCharCodeEq;
|
|
559
|
-
}
|
|
560
|
-
Eq4.stringCharCodeEq = stringCharCodeEq;
|
|
561
|
-
const _anyToStringEq = (v1, v2) => convertAnyToString(v1) === convertAnyToString(v2);
|
|
562
|
-
function anyToStringEq() {
|
|
563
|
-
return _anyToStringEq;
|
|
564
|
-
}
|
|
565
|
-
Eq4.anyToStringEq = anyToStringEq;
|
|
566
|
-
const _anyJsonEq = (v1, v2) => JSON.stringify(v1) === JSON.stringify(v2);
|
|
567
|
-
function anyJsonEq() {
|
|
568
|
-
return _anyJsonEq;
|
|
569
|
-
}
|
|
570
|
-
Eq4.anyJsonEq = anyJsonEq;
|
|
571
|
-
function tupleSymmetric(eq = defaultEq()) {
|
|
572
|
-
return (tup1, tup2) => eq(tup1[0], tup2[0]) && eq(tup1[1], tup2[1]) || eq(tup1[0], tup2[1]) && eq(tup1[1], tup2[0]);
|
|
573
|
-
}
|
|
574
|
-
Eq4.tupleSymmetric = tupleSymmetric;
|
|
575
|
-
})(Eq || (Eq = {}));
|
|
576
|
-
|
|
577
|
-
// src/err.mts
|
|
578
|
-
var ErrBase;
|
|
579
|
-
((ErrBase2) => {
|
|
580
|
-
class CustomError {
|
|
581
|
-
constructor(message) {
|
|
582
|
-
this.message = message;
|
|
583
|
-
}
|
|
584
|
-
get name() {
|
|
585
|
-
return this.constructor.name;
|
|
586
|
-
}
|
|
587
|
-
}
|
|
588
|
-
ErrBase2.CustomError = CustomError;
|
|
589
|
-
class ForcedError extends CustomError {
|
|
590
|
-
}
|
|
591
|
-
ErrBase2.ForcedError = ForcedError;
|
|
592
|
-
function msg(message) {
|
|
593
|
-
return function() {
|
|
594
|
-
throw new ErrBase2.ForcedError(message);
|
|
595
|
-
};
|
|
596
|
-
}
|
|
597
|
-
ErrBase2.msg = msg;
|
|
598
|
-
})(ErrBase || (ErrBase = {}));
|
|
599
|
-
|
|
600
|
-
// src/index-range.mts
|
|
601
|
-
var IndexRange;
|
|
602
|
-
((IndexRange2) => {
|
|
603
|
-
function getIndexRangeIndices(range) {
|
|
604
|
-
if (void 0 !== range.amount) {
|
|
605
|
-
if (void 0 === range.start)
|
|
606
|
-
return [0, range.amount - 1];
|
|
607
|
-
if (Array.isArray(range.start)) {
|
|
608
|
-
const [start2, includeStart] = range.start;
|
|
609
|
-
if (includeStart)
|
|
610
|
-
return [start2, start2 + range.amount - 1];
|
|
611
|
-
return [start2 + 1, start2 + 1 + range.amount - 1];
|
|
612
|
-
}
|
|
613
|
-
return [range.start, range.start + range.amount - 1];
|
|
614
|
-
}
|
|
615
|
-
let start = 0;
|
|
616
|
-
let end = void 0;
|
|
617
|
-
if (`start` in range) {
|
|
618
|
-
if (Array.isArray(range.start)) {
|
|
619
|
-
if (range.start[1])
|
|
620
|
-
start = range.start[0];
|
|
621
|
-
else
|
|
622
|
-
start = range.start[0] + 1;
|
|
623
|
-
} else
|
|
624
|
-
start = range.start ?? 0;
|
|
625
|
-
}
|
|
626
|
-
if (`end` in range) {
|
|
627
|
-
if (Array.isArray(range.end)) {
|
|
628
|
-
if (range.end[1])
|
|
629
|
-
end = range.end[0];
|
|
630
|
-
else
|
|
631
|
-
end = range.end[0] - 1;
|
|
632
|
-
} else
|
|
633
|
-
end = range.end;
|
|
634
|
-
}
|
|
635
|
-
return [start, end];
|
|
636
|
-
}
|
|
637
|
-
IndexRange2.getIndexRangeIndices = getIndexRangeIndices;
|
|
638
|
-
function getIndicesFor(range, length) {
|
|
639
|
-
if (length <= 0)
|
|
640
|
-
return "empty";
|
|
641
|
-
let start = 0;
|
|
642
|
-
let end = length - 1;
|
|
643
|
-
if (void 0 !== range.start) {
|
|
644
|
-
if (Array.isArray(range.start)) {
|
|
645
|
-
start = range.start[0];
|
|
646
|
-
if (!range.start[1])
|
|
647
|
-
start++;
|
|
648
|
-
} else
|
|
649
|
-
start = range.start;
|
|
650
|
-
if (start >= length || -start > length)
|
|
651
|
-
return "empty";
|
|
652
|
-
if (start < 0)
|
|
653
|
-
start = length + start;
|
|
654
|
-
}
|
|
655
|
-
if (void 0 !== range.amount) {
|
|
656
|
-
if (range.amount <= 0)
|
|
657
|
-
return "empty";
|
|
658
|
-
if (void 0 === range.start) {
|
|
659
|
-
if (range.amount >= length)
|
|
660
|
-
return "all";
|
|
661
|
-
return [0, Math.min(end, range.amount - 1)];
|
|
662
|
-
}
|
|
663
|
-
end = start + range.amount - 1;
|
|
664
|
-
} else if (void 0 !== range.end) {
|
|
665
|
-
if (Array.isArray(range.end)) {
|
|
666
|
-
end = range.end[0];
|
|
667
|
-
if (!range.end[1]) {
|
|
668
|
-
if (end === 0)
|
|
669
|
-
return "empty";
|
|
670
|
-
end--;
|
|
671
|
-
}
|
|
672
|
-
} else
|
|
673
|
-
end = range.end;
|
|
674
|
-
if (end < 0)
|
|
675
|
-
end = length + end;
|
|
676
|
-
}
|
|
677
|
-
if (end < start)
|
|
678
|
-
return "empty";
|
|
679
|
-
end = Math.min(length - 1, end);
|
|
680
|
-
if (start === 0 && end === length - 1)
|
|
681
|
-
return "all";
|
|
682
|
-
return [start, end];
|
|
683
|
-
}
|
|
684
|
-
IndexRange2.getIndicesFor = getIndicesFor;
|
|
685
|
-
})(IndexRange || (IndexRange = {}));
|
|
686
|
-
|
|
687
|
-
// src/optlazy.mts
|
|
688
|
-
function OptLazy(optLazy) {
|
|
689
|
-
if (optLazy instanceof Function)
|
|
690
|
-
return optLazy();
|
|
691
|
-
return optLazy;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
// src/range.mts
|
|
695
|
-
var Range;
|
|
696
|
-
((Range2) => {
|
|
697
|
-
function getNormalizedRange(range) {
|
|
698
|
-
let start = void 0;
|
|
699
|
-
let end = void 0;
|
|
700
|
-
if (`start` in range && void 0 !== range.start) {
|
|
701
|
-
if (Array.isArray(range.start) && range.start.length === 2 && typeof range.start[1] === "boolean") {
|
|
702
|
-
start = range.start;
|
|
703
|
-
} else {
|
|
704
|
-
start = [range.start, true];
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
if (`end` in range && void 0 !== range.end) {
|
|
708
|
-
if (Array.isArray(range.end) && range.end.length === 2 && typeof range.end[1] === "boolean") {
|
|
709
|
-
end = range.end;
|
|
710
|
-
} else {
|
|
711
|
-
end = [range.end, true];
|
|
712
|
-
}
|
|
713
|
-
}
|
|
714
|
-
return { start, end };
|
|
715
|
-
}
|
|
716
|
-
Range2.getNormalizedRange = getNormalizedRange;
|
|
717
|
-
})(Range || (Range = {}));
|
|
718
|
-
|
|
719
|
-
// src/async-optlazy.mts
|
|
720
|
-
var AsyncOptLazy;
|
|
721
|
-
((AsyncOptLazy2) => {
|
|
722
|
-
function toMaybePromise(optLazy) {
|
|
723
|
-
if (optLazy instanceof Function)
|
|
724
|
-
return optLazy();
|
|
725
|
-
return optLazy;
|
|
726
|
-
}
|
|
727
|
-
AsyncOptLazy2.toMaybePromise = toMaybePromise;
|
|
728
|
-
async function toPromise(optLazy) {
|
|
729
|
-
if (optLazy instanceof Function)
|
|
730
|
-
return optLazy();
|
|
731
|
-
return optLazy;
|
|
732
|
-
}
|
|
733
|
-
AsyncOptLazy2.toPromise = toPromise;
|
|
734
|
-
})(AsyncOptLazy || (AsyncOptLazy = {}));
|
|
735
|
-
|
|
736
|
-
// src/async-reducer.mts
|
|
737
|
-
function identity(value) {
|
|
738
|
-
return value;
|
|
739
|
-
}
|
|
740
|
-
var AsyncReducer;
|
|
741
|
-
((AsyncReducer2) => {
|
|
742
|
-
class Base {
|
|
743
|
-
constructor(init, next, stateToResult, onClose) {
|
|
744
|
-
this.init = init;
|
|
745
|
-
this.next = next;
|
|
746
|
-
this.stateToResult = stateToResult;
|
|
747
|
-
this.onClose = onClose;
|
|
748
|
-
}
|
|
749
|
-
filterInput(pred) {
|
|
750
|
-
return create(
|
|
751
|
-
async () => ({
|
|
752
|
-
nextIndex: 0,
|
|
753
|
-
state: await AsyncOptLazy.toMaybePromise(this.init)
|
|
754
|
-
}),
|
|
755
|
-
async (state, elem, index, halt) => {
|
|
756
|
-
if (pred(elem, index, halt)) {
|
|
757
|
-
state.state = await this.next(
|
|
758
|
-
state.state,
|
|
759
|
-
elem,
|
|
760
|
-
state.nextIndex++,
|
|
761
|
-
halt
|
|
762
|
-
);
|
|
763
|
-
}
|
|
764
|
-
return state;
|
|
765
|
-
},
|
|
766
|
-
(state) => this.stateToResult(state.state),
|
|
767
|
-
(state, error) => this.onClose?.(state.state, error)
|
|
768
|
-
);
|
|
769
|
-
}
|
|
770
|
-
mapInput(mapFun) {
|
|
771
|
-
return create(
|
|
772
|
-
this.init,
|
|
773
|
-
async (state, elem, index, halt) => this.next(state, await mapFun(elem, index), index, halt),
|
|
774
|
-
this.stateToResult,
|
|
775
|
-
this.onClose
|
|
776
|
-
);
|
|
777
|
-
}
|
|
778
|
-
collectInput(collectFun) {
|
|
779
|
-
return create(
|
|
780
|
-
async () => ({
|
|
781
|
-
nextIndex: 0,
|
|
782
|
-
state: await AsyncOptLazy.toMaybePromise(this.init)
|
|
783
|
-
}),
|
|
784
|
-
async (state, elem, index, halt) => {
|
|
785
|
-
const nextElem = await collectFun(elem, index, CollectFun.Skip, halt);
|
|
786
|
-
if (CollectFun.Skip !== nextElem) {
|
|
787
|
-
state.state = await this.next(
|
|
788
|
-
state.state,
|
|
789
|
-
nextElem,
|
|
790
|
-
state.nextIndex++,
|
|
791
|
-
halt
|
|
792
|
-
);
|
|
793
|
-
}
|
|
794
|
-
return state;
|
|
795
|
-
},
|
|
796
|
-
(state) => this.stateToResult(state.state),
|
|
797
|
-
(state, error) => this.onClose?.(state.state, error)
|
|
798
|
-
);
|
|
799
|
-
}
|
|
800
|
-
mapOutput(mapFun) {
|
|
801
|
-
return create(
|
|
802
|
-
this.init,
|
|
803
|
-
this.next,
|
|
804
|
-
async (state) => mapFun(await this.stateToResult(state)),
|
|
805
|
-
this.onClose
|
|
806
|
-
);
|
|
807
|
-
}
|
|
808
|
-
takeInput(amount) {
|
|
809
|
-
if (amount <= 0) {
|
|
810
|
-
return create(this.init, identity, this.stateToResult);
|
|
811
|
-
}
|
|
812
|
-
return this.filterInput((_, i, halt) => {
|
|
813
|
-
const more = i < amount;
|
|
814
|
-
if (!more)
|
|
815
|
-
halt();
|
|
816
|
-
return more;
|
|
817
|
-
});
|
|
818
|
-
}
|
|
819
|
-
dropInput(amount) {
|
|
820
|
-
if (amount <= 0) {
|
|
821
|
-
return this;
|
|
822
|
-
}
|
|
823
|
-
return this.filterInput((_, i) => i >= amount);
|
|
824
|
-
}
|
|
825
|
-
sliceInput(from2 = 0, amount) {
|
|
826
|
-
if (void 0 === amount)
|
|
827
|
-
return this.dropInput(from2);
|
|
828
|
-
if (amount <= 0)
|
|
829
|
-
return create(this.init, identity, this.stateToResult);
|
|
830
|
-
if (from2 <= 0)
|
|
831
|
-
return this.takeInput(amount);
|
|
832
|
-
return this.takeInput(amount).dropInput(from2);
|
|
833
|
-
}
|
|
834
|
-
}
|
|
835
|
-
AsyncReducer2.Base = Base;
|
|
836
|
-
function create(init, next, stateToResult, onClose) {
|
|
837
|
-
return new AsyncReducer2.Base(
|
|
838
|
-
init,
|
|
839
|
-
next,
|
|
840
|
-
stateToResult,
|
|
841
|
-
onClose
|
|
842
|
-
);
|
|
843
|
-
}
|
|
844
|
-
AsyncReducer2.create = create;
|
|
845
|
-
function createMono(init, next, stateToResult, onClose) {
|
|
846
|
-
return create(init, next, stateToResult ?? identity, onClose);
|
|
847
|
-
}
|
|
848
|
-
AsyncReducer2.createMono = createMono;
|
|
849
|
-
function createOutput(init, next, stateToResult, onClose) {
|
|
850
|
-
return create(init, next, stateToResult ?? identity, onClose);
|
|
851
|
-
}
|
|
852
|
-
AsyncReducer2.createOutput = createOutput;
|
|
853
|
-
function from(reducer) {
|
|
854
|
-
return AsyncReducer2.create(
|
|
855
|
-
reducer.init,
|
|
856
|
-
reducer.next,
|
|
857
|
-
reducer.stateToResult
|
|
858
|
-
);
|
|
859
|
-
}
|
|
860
|
-
AsyncReducer2.from = from;
|
|
861
|
-
AsyncReducer2.sum = createMono(0, (state, next) => state + next);
|
|
862
|
-
AsyncReducer2.product = createMono(1, (state, next, _, halt) => {
|
|
863
|
-
if (0 === next)
|
|
864
|
-
halt();
|
|
865
|
-
return state * next;
|
|
866
|
-
});
|
|
867
|
-
AsyncReducer2.average = createMono(
|
|
868
|
-
0,
|
|
869
|
-
(avg, value, index) => avg + (value - avg) / (index + 1)
|
|
870
|
-
);
|
|
871
|
-
AsyncReducer2.minBy = (compFun, otherwise) => {
|
|
872
|
-
const token = Symbol();
|
|
873
|
-
return create(
|
|
874
|
-
token,
|
|
875
|
-
async (state, next) => {
|
|
876
|
-
if (token === state)
|
|
877
|
-
return next;
|
|
878
|
-
return await compFun(state, next) < 0 ? state : next;
|
|
879
|
-
},
|
|
880
|
-
(state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state
|
|
881
|
-
);
|
|
882
|
-
};
|
|
883
|
-
AsyncReducer2.min = (otherwise) => {
|
|
884
|
-
return create(
|
|
885
|
-
void 0,
|
|
886
|
-
(state, next) => void 0 !== state && state < next ? state : next,
|
|
887
|
-
(state) => state ?? AsyncOptLazy.toMaybePromise(otherwise)
|
|
888
|
-
);
|
|
889
|
-
};
|
|
890
|
-
AsyncReducer2.maxBy = (compFun, otherwise) => {
|
|
891
|
-
const token = Symbol();
|
|
892
|
-
return create(
|
|
893
|
-
token,
|
|
894
|
-
async (state, next) => {
|
|
895
|
-
if (token === state)
|
|
896
|
-
return next;
|
|
897
|
-
return await compFun(state, next) > 0 ? state : next;
|
|
898
|
-
},
|
|
899
|
-
(state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state
|
|
900
|
-
);
|
|
901
|
-
};
|
|
902
|
-
AsyncReducer2.max = (otherwise) => {
|
|
903
|
-
return create(
|
|
904
|
-
void 0,
|
|
905
|
-
(state, next) => void 0 !== state && state > next ? state : next,
|
|
906
|
-
(state) => state ?? AsyncOptLazy.toMaybePromise(otherwise)
|
|
907
|
-
);
|
|
908
|
-
};
|
|
909
|
-
function join({
|
|
910
|
-
sep = "",
|
|
911
|
-
start = "",
|
|
912
|
-
end = "",
|
|
913
|
-
valueToString = String
|
|
914
|
-
} = {}) {
|
|
915
|
-
let curSep = "";
|
|
916
|
-
let curStart = start;
|
|
917
|
-
return create(
|
|
918
|
-
"",
|
|
919
|
-
(state, next) => {
|
|
920
|
-
const result = curStart.concat(state, curSep, valueToString(next));
|
|
921
|
-
curSep = sep;
|
|
922
|
-
curStart = "";
|
|
923
|
-
return result;
|
|
924
|
-
},
|
|
925
|
-
(state) => state.concat(end)
|
|
926
|
-
);
|
|
927
|
-
}
|
|
928
|
-
AsyncReducer2.join = join;
|
|
929
|
-
AsyncReducer2.count = (pred) => {
|
|
930
|
-
if (void 0 === pred)
|
|
931
|
-
return createOutput(0, (_, __, i) => i + 1);
|
|
932
|
-
return createOutput(0, async (state, next, i) => {
|
|
933
|
-
if (await pred?.(next, i))
|
|
934
|
-
return state + 1;
|
|
935
|
-
return state;
|
|
936
|
-
});
|
|
937
|
-
};
|
|
938
|
-
AsyncReducer2.firstWhere = (pred, otherwise) => {
|
|
939
|
-
const token = Symbol();
|
|
940
|
-
return create(
|
|
941
|
-
token,
|
|
942
|
-
async (state, next, i, halt) => {
|
|
943
|
-
if (token === state && await pred(next, i)) {
|
|
944
|
-
halt();
|
|
945
|
-
return next;
|
|
946
|
-
}
|
|
947
|
-
return state;
|
|
948
|
-
},
|
|
949
|
-
(state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state
|
|
950
|
-
);
|
|
951
|
-
};
|
|
952
|
-
AsyncReducer2.first = (otherwise) => {
|
|
953
|
-
const token = Symbol();
|
|
954
|
-
return create(
|
|
955
|
-
token,
|
|
956
|
-
(state, next, _, halt) => {
|
|
957
|
-
halt();
|
|
958
|
-
if (token === state)
|
|
959
|
-
return next;
|
|
960
|
-
return state;
|
|
961
|
-
},
|
|
962
|
-
(state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state
|
|
963
|
-
);
|
|
964
|
-
};
|
|
965
|
-
AsyncReducer2.lastWhere = (pred, otherwise) => {
|
|
966
|
-
const token = Symbol();
|
|
967
|
-
return create(
|
|
968
|
-
token,
|
|
969
|
-
async (state, next, i) => {
|
|
970
|
-
if (await pred(next, i))
|
|
971
|
-
return next;
|
|
972
|
-
return state;
|
|
973
|
-
},
|
|
974
|
-
(state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state
|
|
975
|
-
);
|
|
976
|
-
};
|
|
977
|
-
AsyncReducer2.last = (otherwise) => {
|
|
978
|
-
const token = Symbol();
|
|
979
|
-
return create(
|
|
980
|
-
() => token,
|
|
981
|
-
(_, next) => next,
|
|
982
|
-
(state) => token === state ? AsyncOptLazy.toMaybePromise(otherwise) : state
|
|
983
|
-
);
|
|
984
|
-
};
|
|
985
|
-
function some(pred) {
|
|
986
|
-
return createOutput(
|
|
987
|
-
false,
|
|
988
|
-
async (state, next, i, halt) => {
|
|
989
|
-
if (state)
|
|
990
|
-
return state;
|
|
991
|
-
const satisfies = await pred(next, i);
|
|
992
|
-
if (satisfies) {
|
|
993
|
-
halt();
|
|
994
|
-
}
|
|
995
|
-
return satisfies;
|
|
996
|
-
}
|
|
997
|
-
);
|
|
998
|
-
}
|
|
999
|
-
AsyncReducer2.some = some;
|
|
1000
|
-
function every(pred) {
|
|
1001
|
-
return createOutput(
|
|
1002
|
-
true,
|
|
1003
|
-
async (state, next, i, halt) => {
|
|
1004
|
-
if (!state)
|
|
1005
|
-
return state;
|
|
1006
|
-
const satisfies = await pred(next, i);
|
|
1007
|
-
if (!satisfies) {
|
|
1008
|
-
halt();
|
|
1009
|
-
}
|
|
1010
|
-
return satisfies;
|
|
1011
|
-
}
|
|
1012
|
-
);
|
|
1013
|
-
}
|
|
1014
|
-
AsyncReducer2.every = every;
|
|
1015
|
-
function contains(elem, eq = Object.is) {
|
|
1016
|
-
return createOutput(false, (state, next, _, halt) => {
|
|
1017
|
-
if (state)
|
|
1018
|
-
return state;
|
|
1019
|
-
const satisfies = eq(next, elem);
|
|
1020
|
-
if (satisfies) {
|
|
1021
|
-
halt();
|
|
1022
|
-
}
|
|
1023
|
-
return satisfies;
|
|
1024
|
-
});
|
|
1025
|
-
}
|
|
1026
|
-
AsyncReducer2.contains = contains;
|
|
1027
|
-
AsyncReducer2.and = createMono(true, (state, next, _, halt) => {
|
|
1028
|
-
if (!state)
|
|
1029
|
-
return state;
|
|
1030
|
-
if (!next)
|
|
1031
|
-
halt();
|
|
1032
|
-
return next;
|
|
1033
|
-
});
|
|
1034
|
-
AsyncReducer2.or = createMono(false, (state, next, _, halt) => {
|
|
1035
|
-
if (state)
|
|
1036
|
-
return state;
|
|
1037
|
-
if (next)
|
|
1038
|
-
halt();
|
|
1039
|
-
return next;
|
|
1040
|
-
});
|
|
1041
|
-
AsyncReducer2.isEmpty = createOutput(
|
|
1042
|
-
true,
|
|
1043
|
-
(_, __, ___, halt) => {
|
|
1044
|
-
halt();
|
|
1045
|
-
return false;
|
|
1046
|
-
}
|
|
1047
|
-
);
|
|
1048
|
-
AsyncReducer2.nonEmpty = createOutput(
|
|
1049
|
-
false,
|
|
1050
|
-
(_, __, ___, halt) => {
|
|
1051
|
-
halt();
|
|
1052
|
-
return true;
|
|
1053
|
-
}
|
|
1054
|
-
);
|
|
1055
|
-
function toArray() {
|
|
1056
|
-
return create(
|
|
1057
|
-
() => [],
|
|
1058
|
-
(state, next) => {
|
|
1059
|
-
state.push(next);
|
|
1060
|
-
return state;
|
|
1061
|
-
},
|
|
1062
|
-
(state) => state.slice()
|
|
1063
|
-
);
|
|
1064
|
-
}
|
|
1065
|
-
AsyncReducer2.toArray = toArray;
|
|
1066
|
-
function toJSMap() {
|
|
1067
|
-
return create(
|
|
1068
|
-
() => /* @__PURE__ */ new Map(),
|
|
1069
|
-
(state, next) => {
|
|
1070
|
-
state.set(next[0], next[1]);
|
|
1071
|
-
return state;
|
|
1072
|
-
},
|
|
1073
|
-
(s) => new Map(s)
|
|
1074
|
-
);
|
|
1075
|
-
}
|
|
1076
|
-
AsyncReducer2.toJSMap = toJSMap;
|
|
1077
|
-
function toJSSet() {
|
|
1078
|
-
return create(
|
|
1079
|
-
() => /* @__PURE__ */ new Set(),
|
|
1080
|
-
(state, next) => {
|
|
1081
|
-
state.add(next);
|
|
1082
|
-
return state;
|
|
1083
|
-
},
|
|
1084
|
-
(s) => new Set(s)
|
|
1085
|
-
);
|
|
1086
|
-
}
|
|
1087
|
-
AsyncReducer2.toJSSet = toJSSet;
|
|
1088
|
-
function toJSObject() {
|
|
1089
|
-
return create(
|
|
1090
|
-
() => ({}),
|
|
1091
|
-
(state, entry) => {
|
|
1092
|
-
state[entry[0]] = entry[1];
|
|
1093
|
-
return state;
|
|
1094
|
-
},
|
|
1095
|
-
(s) => ({ ...s })
|
|
1096
|
-
);
|
|
1097
|
-
}
|
|
1098
|
-
AsyncReducer2.toJSObject = toJSObject;
|
|
1099
|
-
function combineArr(...reducers) {
|
|
1100
|
-
const createState = () => {
|
|
1101
|
-
return Promise.all(
|
|
1102
|
-
reducers.map(async (reducer) => {
|
|
1103
|
-
const result = {
|
|
1104
|
-
reducer,
|
|
1105
|
-
halted: false,
|
|
1106
|
-
halt() {
|
|
1107
|
-
result.halted = true;
|
|
1108
|
-
},
|
|
1109
|
-
state: await AsyncOptLazy.toMaybePromise(reducer.init)
|
|
1110
|
-
};
|
|
1111
|
-
return result;
|
|
1112
|
-
})
|
|
1113
|
-
);
|
|
1114
|
-
};
|
|
1115
|
-
return create(
|
|
1116
|
-
createState,
|
|
1117
|
-
async (allState, next, index, halt) => {
|
|
1118
|
-
let anyNotHalted = false;
|
|
1119
|
-
await Promise.all(
|
|
1120
|
-
allState.map(async (red) => {
|
|
1121
|
-
if (red.halted)
|
|
1122
|
-
return;
|
|
1123
|
-
red.state = await red.reducer.next(
|
|
1124
|
-
red.state,
|
|
1125
|
-
next,
|
|
1126
|
-
index,
|
|
1127
|
-
red.halt
|
|
1128
|
-
);
|
|
1129
|
-
if (!red.halted)
|
|
1130
|
-
anyNotHalted = true;
|
|
1131
|
-
})
|
|
1132
|
-
);
|
|
1133
|
-
if (!anyNotHalted)
|
|
1134
|
-
halt();
|
|
1135
|
-
return allState;
|
|
1136
|
-
},
|
|
1137
|
-
(allState) => Promise.all(
|
|
1138
|
-
allState.map((st) => st.reducer.stateToResult(st.state))
|
|
1139
|
-
)
|
|
1140
|
-
);
|
|
1141
|
-
}
|
|
1142
|
-
AsyncReducer2.combineArr = combineArr;
|
|
1143
|
-
function combineObj(reducerObj) {
|
|
1144
|
-
const createState = async () => {
|
|
1145
|
-
const entries = await Promise.all(
|
|
1146
|
-
Object.entries(reducerObj).map(async ([key, reducer]) => {
|
|
1147
|
-
const result = {
|
|
1148
|
-
reducer,
|
|
1149
|
-
halted: false,
|
|
1150
|
-
halt() {
|
|
1151
|
-
result.halted = true;
|
|
1152
|
-
},
|
|
1153
|
-
state: await AsyncOptLazy.toMaybePromise(reducer.init)
|
|
1154
|
-
};
|
|
1155
|
-
return [key, result];
|
|
1156
|
-
})
|
|
1157
|
-
);
|
|
1158
|
-
return Object.fromEntries(entries);
|
|
1159
|
-
};
|
|
1160
|
-
return create(
|
|
1161
|
-
createState,
|
|
1162
|
-
async (allState, next, index, halt) => {
|
|
1163
|
-
let anyNotHalted = false;
|
|
1164
|
-
await Promise.all(
|
|
1165
|
-
Object.values(allState).map(async (red) => {
|
|
1166
|
-
if (red.halted) {
|
|
1167
|
-
return;
|
|
1168
|
-
}
|
|
1169
|
-
red.state = await red.reducer.next(
|
|
1170
|
-
red.state,
|
|
1171
|
-
next,
|
|
1172
|
-
index,
|
|
1173
|
-
red.halt
|
|
1174
|
-
);
|
|
1175
|
-
if (!red.halted) {
|
|
1176
|
-
anyNotHalted = true;
|
|
1177
|
-
}
|
|
1178
|
-
})
|
|
1179
|
-
);
|
|
1180
|
-
if (!anyNotHalted) {
|
|
1181
|
-
halt();
|
|
1182
|
-
}
|
|
1183
|
-
return allState;
|
|
1184
|
-
},
|
|
1185
|
-
async (allState) => {
|
|
1186
|
-
const entries = await Promise.all(
|
|
1187
|
-
Object.entries(allState).map(
|
|
1188
|
-
async ([key, st]) => [key, await st.reducer.stateToResult(st.state)]
|
|
1189
|
-
)
|
|
1190
|
-
);
|
|
1191
|
-
return Object.fromEntries(entries);
|
|
1192
|
-
}
|
|
1193
|
-
);
|
|
1194
|
-
}
|
|
1195
|
-
AsyncReducer2.combineObj = combineObj;
|
|
1196
|
-
})(AsyncReducer || (AsyncReducer = {}));
|
|
1197
|
-
|
|
1198
|
-
// src/reducer.mts
|
|
1199
|
-
function identity2(value) {
|
|
1200
|
-
return value;
|
|
1201
|
-
}
|
|
1202
|
-
var Reducer2;
|
|
1203
|
-
((Reducer3) => {
|
|
1204
|
-
class Base {
|
|
1205
|
-
constructor(init, next, stateToResult) {
|
|
1206
|
-
this.init = init;
|
|
1207
|
-
this.next = next;
|
|
1208
|
-
this.stateToResult = stateToResult;
|
|
1209
|
-
}
|
|
1210
|
-
filterInput(pred) {
|
|
1211
|
-
return create(
|
|
1212
|
-
() => ({
|
|
1213
|
-
nextIndex: 0,
|
|
1214
|
-
state: OptLazy(this.init)
|
|
1215
|
-
}),
|
|
1216
|
-
(state, elem, index, halt) => {
|
|
1217
|
-
if (pred(elem, index, halt)) {
|
|
1218
|
-
state.state = this.next(state.state, elem, state.nextIndex++, halt);
|
|
1219
|
-
}
|
|
1220
|
-
return state;
|
|
1221
|
-
},
|
|
1222
|
-
(state) => this.stateToResult(state.state)
|
|
1223
|
-
);
|
|
1224
|
-
}
|
|
1225
|
-
mapInput(mapFun) {
|
|
1226
|
-
return create(
|
|
1227
|
-
this.init,
|
|
1228
|
-
(state, elem, index, halt) => this.next(state, mapFun(elem, index), index, halt),
|
|
1229
|
-
this.stateToResult
|
|
1230
|
-
);
|
|
1231
|
-
}
|
|
1232
|
-
collectInput(collectFun) {
|
|
1233
|
-
return create(
|
|
1234
|
-
() => ({
|
|
1235
|
-
nextIndex: 0,
|
|
1236
|
-
state: OptLazy(this.init)
|
|
1237
|
-
}),
|
|
1238
|
-
(state, elem, index, halt) => {
|
|
1239
|
-
const nextElem = collectFun(elem, index, CollectFun.Skip, halt);
|
|
1240
|
-
if (CollectFun.Skip !== nextElem) {
|
|
1241
|
-
state.state = this.next(
|
|
1242
|
-
state.state,
|
|
1243
|
-
nextElem,
|
|
1244
|
-
state.nextIndex++,
|
|
1245
|
-
halt
|
|
1246
|
-
);
|
|
1247
|
-
}
|
|
1248
|
-
return state;
|
|
1249
|
-
},
|
|
1250
|
-
(state) => this.stateToResult(state.state)
|
|
1251
|
-
);
|
|
1252
|
-
}
|
|
1253
|
-
mapOutput(mapFun) {
|
|
1254
|
-
return create(
|
|
1255
|
-
this.init,
|
|
1256
|
-
this.next,
|
|
1257
|
-
(state) => mapFun(this.stateToResult(state))
|
|
1258
|
-
);
|
|
1259
|
-
}
|
|
1260
|
-
takeInput(amount) {
|
|
1261
|
-
if (amount <= 0) {
|
|
1262
|
-
return create(this.init, identity2, this.stateToResult);
|
|
1263
|
-
}
|
|
1264
|
-
return this.filterInput((_, i, halt) => {
|
|
1265
|
-
const more = i < amount;
|
|
1266
|
-
if (!more)
|
|
1267
|
-
halt();
|
|
1268
|
-
return more;
|
|
1269
|
-
});
|
|
1270
|
-
}
|
|
1271
|
-
dropInput(amount) {
|
|
1272
|
-
if (amount <= 0)
|
|
1273
|
-
return this;
|
|
1274
|
-
return this.filterInput((_, i) => i >= amount);
|
|
1275
|
-
}
|
|
1276
|
-
sliceInput(from = 0, amount) {
|
|
1277
|
-
if (void 0 === amount)
|
|
1278
|
-
return this.dropInput(from);
|
|
1279
|
-
if (amount <= 0)
|
|
1280
|
-
return create(this.init, identity2, this.stateToResult);
|
|
1281
|
-
if (from <= 0)
|
|
1282
|
-
return this.takeInput(amount);
|
|
1283
|
-
return this.takeInput(amount).dropInput(from);
|
|
1284
|
-
}
|
|
1285
|
-
}
|
|
1286
|
-
Reducer3.Base = Base;
|
|
1287
|
-
function create(init, next, stateToResult) {
|
|
1288
|
-
return new Reducer3.Base(init, next, stateToResult);
|
|
1289
|
-
}
|
|
1290
|
-
Reducer3.create = create;
|
|
1291
|
-
function createMono(init, next, stateToResult) {
|
|
1292
|
-
return create(init, next, stateToResult ?? identity2);
|
|
1293
|
-
}
|
|
1294
|
-
Reducer3.createMono = createMono;
|
|
1295
|
-
function createOutput(init, next, stateToResult) {
|
|
1296
|
-
return create(init, next, stateToResult ?? identity2);
|
|
1297
|
-
}
|
|
1298
|
-
Reducer3.createOutput = createOutput;
|
|
1299
|
-
Reducer3.sum = createMono(0, (state, next) => state + next);
|
|
1300
|
-
Reducer3.product = createMono(1, (state, next, _, halt) => {
|
|
1301
|
-
if (0 === next)
|
|
1302
|
-
halt();
|
|
1303
|
-
return state * next;
|
|
1304
|
-
});
|
|
1305
|
-
Reducer3.average = createMono(
|
|
1306
|
-
0,
|
|
1307
|
-
(avg, value, index) => avg + (value - avg) / (index + 1)
|
|
1308
|
-
);
|
|
1309
|
-
Reducer3.minBy = (compFun, otherwise) => {
|
|
1310
|
-
const token = Symbol();
|
|
1311
|
-
return create(
|
|
1312
|
-
token,
|
|
1313
|
-
(state, next) => {
|
|
1314
|
-
if (token === state)
|
|
1315
|
-
return next;
|
|
1316
|
-
return compFun(state, next) < 0 ? state : next;
|
|
1317
|
-
},
|
|
1318
|
-
(state) => token === state ? OptLazy(otherwise) : state
|
|
1319
|
-
);
|
|
1320
|
-
};
|
|
1321
|
-
Reducer3.min = (otherwise) => {
|
|
1322
|
-
return create(
|
|
1323
|
-
void 0,
|
|
1324
|
-
(state, next) => void 0 !== state && state < next ? state : next,
|
|
1325
|
-
(state) => state ?? OptLazy(otherwise)
|
|
1326
|
-
);
|
|
1327
|
-
};
|
|
1328
|
-
Reducer3.maxBy = (compFun, otherwise) => {
|
|
1329
|
-
const token = Symbol();
|
|
1330
|
-
return create(
|
|
1331
|
-
token,
|
|
1332
|
-
(state, next) => {
|
|
1333
|
-
if (token === state)
|
|
1334
|
-
return next;
|
|
1335
|
-
return compFun(state, next) > 0 ? state : next;
|
|
1336
|
-
},
|
|
1337
|
-
(state) => token === state ? OptLazy(otherwise) : state
|
|
1338
|
-
);
|
|
1339
|
-
};
|
|
1340
|
-
Reducer3.max = (otherwise) => {
|
|
1341
|
-
return create(
|
|
1342
|
-
void 0,
|
|
1343
|
-
(state, next) => void 0 !== state && state > next ? state : next,
|
|
1344
|
-
(state) => state ?? OptLazy(otherwise)
|
|
1345
|
-
);
|
|
1346
|
-
};
|
|
1347
|
-
function join({
|
|
1348
|
-
sep = "",
|
|
1349
|
-
start = "",
|
|
1350
|
-
end = "",
|
|
1351
|
-
valueToString = String
|
|
1352
|
-
} = {}) {
|
|
1353
|
-
let curSep = "";
|
|
1354
|
-
let curStart = start;
|
|
1355
|
-
return create(
|
|
1356
|
-
"",
|
|
1357
|
-
(state, next) => {
|
|
1358
|
-
const result = curStart.concat(state, curSep, valueToString(next));
|
|
1359
|
-
curSep = sep;
|
|
1360
|
-
curStart = "";
|
|
1361
|
-
return result;
|
|
1362
|
-
},
|
|
1363
|
-
(state) => state.concat(end)
|
|
1364
|
-
);
|
|
1365
|
-
}
|
|
1366
|
-
Reducer3.join = join;
|
|
1367
|
-
Reducer3.count = (pred) => {
|
|
1368
|
-
if (void 0 === pred)
|
|
1369
|
-
return createOutput(0, (_, __, i) => i + 1);
|
|
1370
|
-
return createOutput(0, (state, next, i) => {
|
|
1371
|
-
if (pred?.(next, i))
|
|
1372
|
-
return state + 1;
|
|
1373
|
-
return state;
|
|
1374
|
-
});
|
|
1375
|
-
};
|
|
1376
|
-
Reducer3.firstWhere = (pred, otherwise) => {
|
|
1377
|
-
const token = Symbol();
|
|
1378
|
-
return create(
|
|
1379
|
-
token,
|
|
1380
|
-
(state, next, i, halt) => {
|
|
1381
|
-
if (token === state && pred(next, i)) {
|
|
1382
|
-
halt();
|
|
1383
|
-
return next;
|
|
1384
|
-
}
|
|
1385
|
-
return state;
|
|
1386
|
-
},
|
|
1387
|
-
(state) => token === state ? OptLazy(otherwise) : state
|
|
1388
|
-
);
|
|
1389
|
-
};
|
|
1390
|
-
Reducer3.first = (otherwise) => {
|
|
1391
|
-
const token = Symbol();
|
|
1392
|
-
return create(
|
|
1393
|
-
token,
|
|
1394
|
-
(state, next, _, halt) => {
|
|
1395
|
-
halt();
|
|
1396
|
-
if (token === state)
|
|
1397
|
-
return next;
|
|
1398
|
-
return state;
|
|
1399
|
-
},
|
|
1400
|
-
(state) => token === state ? OptLazy(otherwise) : state
|
|
1401
|
-
);
|
|
1402
|
-
};
|
|
1403
|
-
Reducer3.lastWhere = (pred, otherwise) => {
|
|
1404
|
-
const token = Symbol();
|
|
1405
|
-
return create(
|
|
1406
|
-
token,
|
|
1407
|
-
(state, next, i) => {
|
|
1408
|
-
if (pred(next, i))
|
|
1409
|
-
return next;
|
|
1410
|
-
return state;
|
|
1411
|
-
},
|
|
1412
|
-
(state) => token === state ? OptLazy(otherwise) : state
|
|
1413
|
-
);
|
|
1414
|
-
};
|
|
1415
|
-
Reducer3.last = (otherwise) => {
|
|
1416
|
-
const token = Symbol();
|
|
1417
|
-
return create(
|
|
1418
|
-
() => token,
|
|
1419
|
-
(_, next) => next,
|
|
1420
|
-
(state) => token === state ? OptLazy(otherwise) : state
|
|
1421
|
-
);
|
|
1422
|
-
};
|
|
1423
|
-
function some(pred) {
|
|
1424
|
-
return createOutput(false, (state, next, i, halt) => {
|
|
1425
|
-
if (state)
|
|
1426
|
-
return state;
|
|
1427
|
-
const satisfies = pred(next, i);
|
|
1428
|
-
if (satisfies) {
|
|
1429
|
-
halt();
|
|
1430
|
-
}
|
|
1431
|
-
return satisfies;
|
|
1432
|
-
});
|
|
1433
|
-
}
|
|
1434
|
-
Reducer3.some = some;
|
|
1435
|
-
function every(pred) {
|
|
1436
|
-
return createOutput(true, (state, next, i, halt) => {
|
|
1437
|
-
if (!state)
|
|
1438
|
-
return state;
|
|
1439
|
-
const satisfies = pred(next, i);
|
|
1440
|
-
if (!satisfies) {
|
|
1441
|
-
halt();
|
|
1442
|
-
}
|
|
1443
|
-
return satisfies;
|
|
1444
|
-
});
|
|
1445
|
-
}
|
|
1446
|
-
Reducer3.every = every;
|
|
1447
|
-
function contains(elem, eq = Object.is) {
|
|
1448
|
-
return createOutput(false, (state, next, _, halt) => {
|
|
1449
|
-
if (state)
|
|
1450
|
-
return state;
|
|
1451
|
-
const satisfies = eq(next, elem);
|
|
1452
|
-
if (satisfies) {
|
|
1453
|
-
halt();
|
|
1454
|
-
}
|
|
1455
|
-
return satisfies;
|
|
1456
|
-
});
|
|
1457
|
-
}
|
|
1458
|
-
Reducer3.contains = contains;
|
|
1459
|
-
Reducer3.and = createMono(true, (state, next, _, halt) => {
|
|
1460
|
-
if (!state)
|
|
1461
|
-
return state;
|
|
1462
|
-
if (!next)
|
|
1463
|
-
halt();
|
|
1464
|
-
return next;
|
|
1465
|
-
});
|
|
1466
|
-
Reducer3.or = createMono(false, (state, next, _, halt) => {
|
|
1467
|
-
if (state)
|
|
1468
|
-
return state;
|
|
1469
|
-
if (next)
|
|
1470
|
-
halt();
|
|
1471
|
-
return next;
|
|
1472
|
-
});
|
|
1473
|
-
Reducer3.isEmpty = createOutput(
|
|
1474
|
-
true,
|
|
1475
|
-
(_, __, ___, halt) => {
|
|
1476
|
-
halt();
|
|
1477
|
-
return false;
|
|
1478
|
-
}
|
|
1479
|
-
);
|
|
1480
|
-
Reducer3.nonEmpty = createOutput(
|
|
1481
|
-
false,
|
|
1482
|
-
(_, __, ___, halt) => {
|
|
1483
|
-
halt();
|
|
1484
|
-
return true;
|
|
1485
|
-
}
|
|
1486
|
-
);
|
|
1487
|
-
function toArray() {
|
|
1488
|
-
return create(
|
|
1489
|
-
() => [],
|
|
1490
|
-
(state, next) => {
|
|
1491
|
-
state.push(next);
|
|
1492
|
-
return state;
|
|
1493
|
-
},
|
|
1494
|
-
(state) => state.slice()
|
|
1495
|
-
);
|
|
1496
|
-
}
|
|
1497
|
-
Reducer3.toArray = toArray;
|
|
1498
|
-
function toJSMap() {
|
|
1499
|
-
return create(
|
|
1500
|
-
() => /* @__PURE__ */ new Map(),
|
|
1501
|
-
(state, next) => {
|
|
1502
|
-
state.set(next[0], next[1]);
|
|
1503
|
-
return state;
|
|
1504
|
-
},
|
|
1505
|
-
(s) => new Map(s)
|
|
1506
|
-
);
|
|
1507
|
-
}
|
|
1508
|
-
Reducer3.toJSMap = toJSMap;
|
|
1509
|
-
function toJSSet() {
|
|
1510
|
-
return create(
|
|
1511
|
-
() => /* @__PURE__ */ new Set(),
|
|
1512
|
-
(state, next) => {
|
|
1513
|
-
state.add(next);
|
|
1514
|
-
return state;
|
|
1515
|
-
},
|
|
1516
|
-
(s) => new Set(s)
|
|
1517
|
-
);
|
|
1518
|
-
}
|
|
1519
|
-
Reducer3.toJSSet = toJSSet;
|
|
1520
|
-
function toJSObject() {
|
|
1521
|
-
return create(
|
|
1522
|
-
() => ({}),
|
|
1523
|
-
(state, entry) => {
|
|
1524
|
-
state[entry[0]] = entry[1];
|
|
1525
|
-
return state;
|
|
1526
|
-
},
|
|
1527
|
-
(s) => ({ ...s })
|
|
1528
|
-
);
|
|
1529
|
-
}
|
|
1530
|
-
Reducer3.toJSObject = toJSObject;
|
|
1531
|
-
function combineArr(...reducers) {
|
|
1532
|
-
const createState = () => {
|
|
1533
|
-
return reducers.map((reducer) => {
|
|
1534
|
-
const result = {
|
|
1535
|
-
reducer,
|
|
1536
|
-
halted: false,
|
|
1537
|
-
halt() {
|
|
1538
|
-
result.halted = true;
|
|
1539
|
-
},
|
|
1540
|
-
state: OptLazy(reducer.init)
|
|
1541
|
-
};
|
|
1542
|
-
return result;
|
|
1543
|
-
});
|
|
1544
|
-
};
|
|
1545
|
-
return create(
|
|
1546
|
-
createState,
|
|
1547
|
-
(allState, next, index, halt) => {
|
|
1548
|
-
let anyNotHalted = false;
|
|
1549
|
-
let i = -1;
|
|
1550
|
-
const len = allState.length;
|
|
1551
|
-
while (++i < len) {
|
|
1552
|
-
const red = allState[i];
|
|
1553
|
-
if (red.halted) {
|
|
1554
|
-
continue;
|
|
1555
|
-
}
|
|
1556
|
-
red.state = red.reducer.next(red.state, next, index, red.halt);
|
|
1557
|
-
if (!red.halted) {
|
|
1558
|
-
anyNotHalted = true;
|
|
1559
|
-
}
|
|
1560
|
-
}
|
|
1561
|
-
if (!anyNotHalted) {
|
|
1562
|
-
halt();
|
|
1563
|
-
}
|
|
1564
|
-
return allState;
|
|
1565
|
-
},
|
|
1566
|
-
(allState) => allState.map((st) => st.reducer.stateToResult(st.state))
|
|
1567
|
-
);
|
|
1568
|
-
}
|
|
1569
|
-
Reducer3.combineArr = combineArr;
|
|
1570
|
-
function combineObj(reducerObj) {
|
|
1571
|
-
const createState = () => {
|
|
1572
|
-
const allState = {};
|
|
1573
|
-
for (const key in reducerObj) {
|
|
1574
|
-
const reducer = reducerObj[key];
|
|
1575
|
-
const result = {
|
|
1576
|
-
reducer,
|
|
1577
|
-
halted: false,
|
|
1578
|
-
halt() {
|
|
1579
|
-
result.halted = true;
|
|
1580
|
-
},
|
|
1581
|
-
state: OptLazy(reducer.init)
|
|
1582
|
-
};
|
|
1583
|
-
allState[key] = result;
|
|
1584
|
-
}
|
|
1585
|
-
return allState;
|
|
1586
|
-
};
|
|
1587
|
-
return create(
|
|
1588
|
-
createState,
|
|
1589
|
-
(allState, next, index, halt) => {
|
|
1590
|
-
let anyNotHalted = false;
|
|
1591
|
-
for (const key in allState) {
|
|
1592
|
-
const red = allState[key];
|
|
1593
|
-
if (red.halted) {
|
|
1594
|
-
continue;
|
|
1595
|
-
}
|
|
1596
|
-
red.state = red.reducer.next(red.state, next, index, red.halt);
|
|
1597
|
-
if (!red.halted) {
|
|
1598
|
-
anyNotHalted = true;
|
|
1599
|
-
}
|
|
1600
|
-
}
|
|
1601
|
-
if (!anyNotHalted) {
|
|
1602
|
-
halt();
|
|
1603
|
-
}
|
|
1604
|
-
return allState;
|
|
1605
|
-
},
|
|
1606
|
-
(allState) => {
|
|
1607
|
-
const result = {};
|
|
1608
|
-
for (const key in allState) {
|
|
1609
|
-
const st = allState[key];
|
|
1610
|
-
result[key] = st.reducer.stateToResult(st.state);
|
|
1611
|
-
}
|
|
1612
|
-
return result;
|
|
1613
|
-
}
|
|
1614
|
-
);
|
|
1615
|
-
}
|
|
1616
|
-
Reducer3.combineObj = combineObj;
|
|
1617
|
-
})(Reducer2 || (Reducer2 = {}));
|
|
1618
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
1619
|
-
0 && (module.exports = {
|
|
1620
|
-
Reducer
|
|
1621
|
-
});
|