@nlozgachev/pipelined 0.46.0 → 0.48.0
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/Duration-B8joKzro.d.mts +181 -0
- package/dist/Duration-B8joKzro.d.ts +181 -0
- package/dist/{InternalTypes-Mssktd7z.d.ts → InternalTypes-CDiDBAY4.d.mts} +20 -1
- package/dist/{InternalTypes-CLE7qlOc.d.mts → InternalTypes-LdhLQx3N.d.ts} +20 -1
- package/dist/{Validation-BMsvixWH.d.ts → Validation-1OgJJdeA.d.ts} +507 -37
- package/dist/{Validation-v38R0qH-.d.mts → Validation-D-aARYlP.d.mts} +507 -37
- package/dist/{chunk-KOYYDQH4.mjs → chunk-5OFVS5UZ.mjs} +7 -2
- package/dist/{chunk-XTVF5R6R.mjs → chunk-DENXUTKL.mjs} +24 -0
- package/dist/{chunk-VSU36S2K.mjs → chunk-LR63GW6J.mjs} +223 -18
- package/dist/{chunk-W2L244AS.mjs → chunk-UGVU2RTM.mjs} +279 -1
- package/dist/composition.d.mts +226 -18
- package/dist/composition.d.ts +226 -18
- package/dist/composition.js +10 -3
- package/dist/composition.mjs +8 -4
- package/dist/core.d.mts +151 -8
- package/dist/core.d.ts +151 -8
- package/dist/core.js +222 -17
- package/dist/core.mjs +2 -2
- package/dist/{utils.d.mts → data.d.mts} +619 -41
- package/dist/{utils.d.ts → data.d.ts} +619 -41
- package/dist/{utils.js → data.js} +424 -17
- package/dist/data.mjs +22 -0
- package/dist/index.d.mts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +550 -33
- package/dist/index.mjs +17 -7
- package/dist/types.d.mts +37 -108
- package/dist/types.d.ts +37 -108
- package/dist/types.js +27 -2
- package/dist/types.mjs +5 -3
- package/package.json +6 -6
- package/dist/utils.mjs +0 -18
package/dist/index.js
CHANGED
|
@@ -21,12 +21,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
23
|
Arr: () => Arr,
|
|
24
|
+
BigNum: () => BigNum,
|
|
24
25
|
Brand: () => Brand,
|
|
25
26
|
Combinable: () => Combinable,
|
|
26
27
|
Deferred: () => Deferred,
|
|
27
28
|
Dict: () => Dict,
|
|
28
29
|
Duration: () => Duration,
|
|
29
30
|
Equality: () => Equality,
|
|
31
|
+
Json: () => Json,
|
|
30
32
|
Lazy: () => Lazy,
|
|
31
33
|
Lens: () => Lens,
|
|
32
34
|
Logged: () => Logged,
|
|
@@ -42,6 +44,7 @@ __export(src_exports, {
|
|
|
42
44
|
RemoteData: () => RemoteData,
|
|
43
45
|
Resource: () => Resource,
|
|
44
46
|
Result: () => Result,
|
|
47
|
+
RetryPolicy: () => RetryPolicy,
|
|
45
48
|
State: () => State,
|
|
46
49
|
Str: () => Str,
|
|
47
50
|
Task: () => Task,
|
|
@@ -77,9 +80,11 @@ __export(src_exports, {
|
|
|
77
80
|
or: () => or,
|
|
78
81
|
pipe: () => pipe,
|
|
79
82
|
tap: () => tap,
|
|
83
|
+
tuple: () => tuple,
|
|
80
84
|
uncurry: () => uncurry,
|
|
81
85
|
uncurry3: () => uncurry3,
|
|
82
|
-
uncurry4: () => uncurry4
|
|
86
|
+
uncurry4: () => uncurry4,
|
|
87
|
+
untuple: () => untuple
|
|
83
88
|
});
|
|
84
89
|
module.exports = __toCommonJS(src_exports);
|
|
85
90
|
|
|
@@ -281,6 +286,8 @@ var once = (f) => {
|
|
|
281
286
|
};
|
|
282
287
|
};
|
|
283
288
|
var defaultTo = (fallback) => (a) => a === null || a === void 0 ? fallback : a;
|
|
289
|
+
var tuple = (f) => (args) => f(...args);
|
|
290
|
+
var untuple = (f) => (...args) => f(args);
|
|
284
291
|
|
|
285
292
|
// src/Composition/juxt.ts
|
|
286
293
|
function juxt(fns) {
|
|
@@ -288,8 +295,9 @@ function juxt(fns) {
|
|
|
288
295
|
}
|
|
289
296
|
|
|
290
297
|
// src/Composition/memoize.ts
|
|
291
|
-
var memoize = (f,
|
|
298
|
+
var memoize = (f, options) => {
|
|
292
299
|
const cache = /* @__PURE__ */ new Map();
|
|
300
|
+
const keyFn = options?.key ?? ((a) => a);
|
|
293
301
|
return (a) => {
|
|
294
302
|
const key = keyFn(a);
|
|
295
303
|
if (cache.has(key)) {
|
|
@@ -410,6 +418,29 @@ var Brand;
|
|
|
410
418
|
Brand2.unwrap = (branded) => branded;
|
|
411
419
|
})(Brand || (Brand = {}));
|
|
412
420
|
|
|
421
|
+
// src/Types/RetryPolicy.ts
|
|
422
|
+
var RetryPolicy;
|
|
423
|
+
((RetryPolicy2) => {
|
|
424
|
+
RetryPolicy2.constant = (options) => ({
|
|
425
|
+
attempts: Math.max(1, options.attempts),
|
|
426
|
+
getDelay: () => options.delay
|
|
427
|
+
});
|
|
428
|
+
RetryPolicy2.exponential = (options) => {
|
|
429
|
+
const attempts = Math.max(1, options.attempts);
|
|
430
|
+
const initialMs = Duration.to.milliseconds(options.initial);
|
|
431
|
+
const factor = options.factor ?? 2;
|
|
432
|
+
const jitter = options.jitter ?? false;
|
|
433
|
+
return {
|
|
434
|
+
attempts,
|
|
435
|
+
getDelay: (attempt) => {
|
|
436
|
+
const rawMs = initialMs * factor ** Math.max(0, attempt - 1);
|
|
437
|
+
const finalMs = jitter ? Math.random() * rawMs : rawMs;
|
|
438
|
+
return Duration.milliseconds(finalMs);
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
};
|
|
442
|
+
})(RetryPolicy || (RetryPolicy = {}));
|
|
443
|
+
|
|
413
444
|
// src/Types/Duration.ts
|
|
414
445
|
var Duration;
|
|
415
446
|
((Duration2) => {
|
|
@@ -540,6 +571,26 @@ var Combinable;
|
|
|
540
571
|
combine: (b) => (a) => Maybe.is.none(a) ? b : Maybe.is.none(b) ? a : Maybe.make.some(inner.combine(b.value)(a.value))
|
|
541
572
|
});
|
|
542
573
|
Combinable2.fold = (c) => (data) => data.reduce((acc, x) => c.combine(x)(acc), c.empty);
|
|
574
|
+
Combinable2.struct = (fields) => {
|
|
575
|
+
const empty = {};
|
|
576
|
+
for (const key in fields) {
|
|
577
|
+
if (Object.hasOwn(fields, key)) {
|
|
578
|
+
empty[key] = fields[key].empty;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
return {
|
|
582
|
+
empty,
|
|
583
|
+
combine: (b) => (a) => {
|
|
584
|
+
const result = {};
|
|
585
|
+
for (const key in fields) {
|
|
586
|
+
if (Object.hasOwn(fields, key)) {
|
|
587
|
+
result[key] = fields[key].combine(b[key])(a[key]);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
return result;
|
|
591
|
+
}
|
|
592
|
+
};
|
|
593
|
+
};
|
|
543
594
|
})(Combinable || (Combinable = {}));
|
|
544
595
|
|
|
545
596
|
// src/Core/Deferred.ts
|
|
@@ -556,6 +607,8 @@ var Deferred;
|
|
|
556
607
|
((to2) => {
|
|
557
608
|
to2.Promise = (d) => new globalThis.Promise((resolve) => d.then(resolve));
|
|
558
609
|
})(to = Deferred2.to || (Deferred2.to = {}));
|
|
610
|
+
Deferred2.all = (deferreds) => from.Promise(globalThis.Promise.all(deferreds.map((d) => to.Promise(d))));
|
|
611
|
+
Deferred2.race = (deferreds) => from.Promise(globalThis.Promise.race(deferreds.map((d) => to.Promise(d))));
|
|
559
612
|
})(Deferred || (Deferred = {}));
|
|
560
613
|
|
|
561
614
|
// src/Core/Equality.ts
|
|
@@ -568,6 +621,27 @@ var Equality;
|
|
|
568
621
|
Equality3.array = (eq) => (a, b) => a.length === b.length && a.every((x, i) => eq(x, b[i]));
|
|
569
622
|
Equality3.by = (f) => (eq) => (a, b) => eq(f(a), f(b));
|
|
570
623
|
Equality3.and = (eq2) => (eq1) => (a, b) => eq1(a, b) && eq2(a, b);
|
|
624
|
+
Equality3.struct = (fields) => (a, b) => {
|
|
625
|
+
for (const key in fields) {
|
|
626
|
+
if (Object.hasOwn(fields, key)) {
|
|
627
|
+
if (!fields[key](a[key], b[key])) {
|
|
628
|
+
return false;
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
return true;
|
|
633
|
+
};
|
|
634
|
+
Equality3.tuple = (...equalities) => (a, b) => {
|
|
635
|
+
if (a.length !== b.length) {
|
|
636
|
+
return false;
|
|
637
|
+
}
|
|
638
|
+
for (let i = 0; i < equalities.length; i++) {
|
|
639
|
+
if (!equalities[i](a[i], b[i])) {
|
|
640
|
+
return false;
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
return true;
|
|
644
|
+
};
|
|
571
645
|
})(Equality || (Equality = {}));
|
|
572
646
|
|
|
573
647
|
// src/Core/Lazy.ts
|
|
@@ -647,6 +721,10 @@ var Logged;
|
|
|
647
721
|
Logged2.bind = (key, f) => (data) => (0, Logged2.chain)(
|
|
648
722
|
(a) => (0, Logged2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
649
723
|
)(data);
|
|
724
|
+
Logged2.focus = (lens) => (f) => (data) => ({
|
|
725
|
+
value: lens.set(f(lens.get(data.value)))(data.value),
|
|
726
|
+
log: data.log
|
|
727
|
+
});
|
|
650
728
|
})(Logged || (Logged = {}));
|
|
651
729
|
|
|
652
730
|
// src/Core/Maybe.ts
|
|
@@ -706,6 +784,7 @@ var Maybe;
|
|
|
706
784
|
}
|
|
707
785
|
return make.some(result);
|
|
708
786
|
};
|
|
787
|
+
Maybe3.transposeResult = (data) => is.none(data) ? Result.make.ok(make.none()) : Result.is.ok(data.value) ? Result.make.ok(make.some(data.value.value)) : Result.make.err(data.value.error);
|
|
709
788
|
})(Maybe || (Maybe = {}));
|
|
710
789
|
|
|
711
790
|
// src/internal/Op.util.ts
|
|
@@ -1857,6 +1936,25 @@ var Ordering;
|
|
|
1857
1936
|
return r !== 0 ? r : ord2(a, b);
|
|
1858
1937
|
};
|
|
1859
1938
|
Ordering3.by = (f) => (ord) => (a, b) => ord(f(a), f(b));
|
|
1939
|
+
Ordering3.byFields = (orderings) => (a, b) => {
|
|
1940
|
+
for (let i = 0; i < orderings.length; i++) {
|
|
1941
|
+
const res = orderings[i](a, b);
|
|
1942
|
+
if (res !== 0) {
|
|
1943
|
+
return res;
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1946
|
+
return 0;
|
|
1947
|
+
};
|
|
1948
|
+
Ordering3.tuple = (...orderings) => (a, b) => {
|
|
1949
|
+
const len = Math.min(a.length, b.length);
|
|
1950
|
+
for (let i = 0; i < len; i++) {
|
|
1951
|
+
const res = orderings[i](a[i], b[i]);
|
|
1952
|
+
if (res !== 0) {
|
|
1953
|
+
return res;
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
return a.length - b.length;
|
|
1957
|
+
};
|
|
1860
1958
|
})(Ordering || (Ordering = {}));
|
|
1861
1959
|
|
|
1862
1960
|
// src/Core/Predicate.ts
|
|
@@ -1872,6 +1970,15 @@ var Predicate;
|
|
|
1872
1970
|
((from2) => {
|
|
1873
1971
|
from2.Refinement = (r) => r;
|
|
1874
1972
|
})(from = Predicate2.from || (Predicate2.from = {}));
|
|
1973
|
+
Predicate2.match = (branches, fallback) => (a) => {
|
|
1974
|
+
for (let i = 0; i < branches.length; i++) {
|
|
1975
|
+
const [p, h] = branches[i];
|
|
1976
|
+
if (p(a)) {
|
|
1977
|
+
return h(a);
|
|
1978
|
+
}
|
|
1979
|
+
}
|
|
1980
|
+
return fallback(a);
|
|
1981
|
+
};
|
|
1875
1982
|
})(Predicate || (Predicate = {}));
|
|
1876
1983
|
|
|
1877
1984
|
// src/Core/Reader.ts
|
|
@@ -2071,11 +2178,11 @@ var Result;
|
|
|
2071
2178
|
is2.ok = (data) => data.kind === "Ok";
|
|
2072
2179
|
is2.err = (data) => data.kind === "Err";
|
|
2073
2180
|
})(is = Result4.is || (Result4.is = {}));
|
|
2074
|
-
Result4.tryCatch = (f,
|
|
2181
|
+
Result4.tryCatch = (f, options) => {
|
|
2075
2182
|
try {
|
|
2076
2183
|
return make.ok(f());
|
|
2077
2184
|
} catch (error) {
|
|
2078
|
-
return make.err(onError(error));
|
|
2185
|
+
return make.err(options.onError(error));
|
|
2079
2186
|
}
|
|
2080
2187
|
};
|
|
2081
2188
|
Result4.map = (f) => (data) => is.ok(data) ? make.ok(f(data.value)) : data;
|
|
@@ -2101,20 +2208,23 @@ var Result;
|
|
|
2101
2208
|
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.ok(a) : make.err(onFalse(a));
|
|
2102
2209
|
from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.err(onNull()) : make.ok(value);
|
|
2103
2210
|
from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.err(onNone()) : make.ok(maybe.value);
|
|
2104
|
-
from2.throwable = (f,
|
|
2211
|
+
from2.throwable = (f, options) => (...args) => {
|
|
2105
2212
|
try {
|
|
2106
2213
|
return make.ok(f(...args));
|
|
2107
2214
|
} catch (error) {
|
|
2108
|
-
return make.err(onError(error));
|
|
2215
|
+
return make.err(options.onError(error));
|
|
2109
2216
|
}
|
|
2110
2217
|
};
|
|
2218
|
+
from2.Validation = (combineErrors) => (val) => Validation.is.passed(val) ? make.ok(val.value) : make.err(combineErrors(val.errors));
|
|
2111
2219
|
})(from = Result4.from || (Result4.from = {}));
|
|
2112
2220
|
Result4.recover = (fallback) => (data) => is.ok(data) ? data : fallback(data.error);
|
|
2113
2221
|
Result4.recoverUnless = (isBlocked, fallback) => (data) => is.err(data) && !isBlocked(data.error) ? fallback() : data;
|
|
2114
2222
|
let to;
|
|
2115
2223
|
((to2) => {
|
|
2116
2224
|
to2.Maybe = (data) => is.ok(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
2225
|
+
to2.Validation = (data) => Validation.from.Result(data);
|
|
2117
2226
|
})(to = Result4.to || (Result4.to = {}));
|
|
2227
|
+
Result4.transposeMaybe = (data) => is.err(data) ? Maybe.make.some(data) : Maybe.is.some(data.value) ? Maybe.make.some(make.ok(data.value.value)) : Maybe.make.none();
|
|
2118
2228
|
Result4.ap = (arg) => (data) => is.ok(data) && is.ok(arg) ? make.ok(data.value(arg.value)) : is.err(data) ? data : arg;
|
|
2119
2229
|
Result4.bindTo = (key) => (data) => (0, Result4.map)((a) => ({ [key]: a }))(data);
|
|
2120
2230
|
Result4.bind = (key, f) => (data) => (0, Result4.chain)(
|
|
@@ -2133,6 +2243,8 @@ var Result;
|
|
|
2133
2243
|
}
|
|
2134
2244
|
return make.ok(result);
|
|
2135
2245
|
};
|
|
2246
|
+
Result4.ensure = (predicate, onFail) => (data) => is.err(data) ? data : predicate(data.value) ? data : make.err(onFail(data.value));
|
|
2247
|
+
Result4.bimap = (onErr, onOk) => (data) => is.ok(data) ? make.ok(onOk(data.value)) : make.err(onErr(data.error));
|
|
2136
2248
|
})(Result || (Result = {}));
|
|
2137
2249
|
|
|
2138
2250
|
// src/Core/State.ts
|
|
@@ -2168,13 +2280,23 @@ var State;
|
|
|
2168
2280
|
State2.bind = (key, f) => (data) => (0, State2.chain)(
|
|
2169
2281
|
(a) => (0, State2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2170
2282
|
)(data);
|
|
2283
|
+
State2.focus = (lens) => (stateOp) => (s) => {
|
|
2284
|
+
const subState = lens.get(s);
|
|
2285
|
+
const [b, newSubState] = stateOp(subState);
|
|
2286
|
+
return [b, lens.set(newSubState)(s)];
|
|
2287
|
+
};
|
|
2171
2288
|
})(State || (State = {}));
|
|
2172
2289
|
|
|
2173
2290
|
// src/Core/TaskMaybe.ts
|
|
2174
2291
|
var TaskMaybe;
|
|
2175
2292
|
((TaskMaybe2) => {
|
|
2176
|
-
|
|
2177
|
-
|
|
2293
|
+
let make;
|
|
2294
|
+
((make2) => {
|
|
2295
|
+
make2.some = (value) => Task.resolve(Maybe.make.some(value));
|
|
2296
|
+
make2.none = () => Task.resolve(Maybe.make.none());
|
|
2297
|
+
})(make = TaskMaybe2.make || (TaskMaybe2.make = {}));
|
|
2298
|
+
({ some: TaskMaybe2.some } = make);
|
|
2299
|
+
({ none: TaskMaybe2.none } = make);
|
|
2178
2300
|
let from;
|
|
2179
2301
|
((from2) => {
|
|
2180
2302
|
from2.Maybe = (option) => Task.resolve(option);
|
|
@@ -2230,19 +2352,28 @@ var TaskMaybe;
|
|
|
2230
2352
|
// src/Core/TaskResult.ts
|
|
2231
2353
|
var TaskResult;
|
|
2232
2354
|
((TaskResult2) => {
|
|
2233
|
-
|
|
2234
|
-
|
|
2355
|
+
let make;
|
|
2356
|
+
((make2) => {
|
|
2357
|
+
make2.ok = (value) => Task.resolve(Result.make.ok(value));
|
|
2358
|
+
make2.err = (error) => Task.resolve(Result.make.err(error));
|
|
2359
|
+
})(make = TaskResult2.make || (TaskResult2.make = {}));
|
|
2360
|
+
({ ok: TaskResult2.ok } = make);
|
|
2361
|
+
({ err: TaskResult2.err } = make);
|
|
2235
2362
|
let from;
|
|
2236
2363
|
((from2) => {
|
|
2237
2364
|
from2.nullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.make.err(onNull()) : Result.make.ok(value));
|
|
2238
2365
|
from2.Maybe = (onNone) => (maybe) => Task.resolve(Maybe.is.none(maybe) ? Result.make.err(onNone()) : Result.make.ok(maybe.value));
|
|
2239
2366
|
from2.Result = (result) => Task.resolve(result);
|
|
2240
|
-
from2.throwable = (f,
|
|
2241
|
-
() => f(...args).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
|
|
2367
|
+
from2.throwable = (f, options) => (...args) => Task.from.Promise(
|
|
2368
|
+
() => f(...args).then(Result.make.ok).catch((error) => Result.make.err(options.onError(error)))
|
|
2242
2369
|
);
|
|
2243
2370
|
})(from = TaskResult2.from || (TaskResult2.from = {}));
|
|
2244
|
-
|
|
2245
|
-
|
|
2371
|
+
let to;
|
|
2372
|
+
((to2) => {
|
|
2373
|
+
to2.Maybe = (data) => Task.map(Result.to.Maybe)(data);
|
|
2374
|
+
})(to = TaskResult2.to || (TaskResult2.to = {}));
|
|
2375
|
+
TaskResult2.tryCatch = (f, options) => Task.from.Promise(
|
|
2376
|
+
(signal) => Promise.resolve(f(signal)).then(Result.make.ok).catch((error) => Result.make.err(options.onError(error)))
|
|
2246
2377
|
);
|
|
2247
2378
|
TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
|
|
2248
2379
|
TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
|
|
@@ -2282,6 +2413,60 @@ var TaskResult;
|
|
|
2282
2413
|
return Result.make.ok(record);
|
|
2283
2414
|
});
|
|
2284
2415
|
});
|
|
2416
|
+
TaskResult2.retry = (policy) => (task) => Task.from.Promise((signal) => {
|
|
2417
|
+
const { attempts } = policy;
|
|
2418
|
+
const wait = (duration) => new Promise((res) => {
|
|
2419
|
+
let timerId;
|
|
2420
|
+
const onAbort = () => {
|
|
2421
|
+
clearTimeout(timerId);
|
|
2422
|
+
res();
|
|
2423
|
+
};
|
|
2424
|
+
if (signal) {
|
|
2425
|
+
if (signal.aborted) {
|
|
2426
|
+
return res();
|
|
2427
|
+
}
|
|
2428
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
2429
|
+
}
|
|
2430
|
+
timerId = setTimeout(() => {
|
|
2431
|
+
signal?.removeEventListener("abort", onAbort);
|
|
2432
|
+
res();
|
|
2433
|
+
}, Duration.to.milliseconds(duration));
|
|
2434
|
+
});
|
|
2435
|
+
const executeAttempt = (attempt) => Deferred.to.Promise(task(signal)).then((res) => {
|
|
2436
|
+
if (Result.is.ok(res) || attempt >= attempts || signal?.aborted) {
|
|
2437
|
+
return res;
|
|
2438
|
+
}
|
|
2439
|
+
const delay = policy.getDelay(attempt);
|
|
2440
|
+
return wait(delay).then(() => executeAttempt(attempt + 1));
|
|
2441
|
+
});
|
|
2442
|
+
return executeAttempt(1);
|
|
2443
|
+
});
|
|
2444
|
+
TaskResult2.memoize = (task) => Task.memoize(task);
|
|
2445
|
+
TaskResult2.timeout = (options) => (task) => Task.from.Promise((signal) => {
|
|
2446
|
+
const ms = Duration.to.milliseconds(options.duration);
|
|
2447
|
+
return new Promise((resolve) => {
|
|
2448
|
+
let timerId;
|
|
2449
|
+
const onAbort = () => {
|
|
2450
|
+
clearTimeout(timerId);
|
|
2451
|
+
};
|
|
2452
|
+
if (signal) {
|
|
2453
|
+
if (signal.aborted) {
|
|
2454
|
+
return Deferred.to.Promise(task(signal)).then(resolve);
|
|
2455
|
+
}
|
|
2456
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
2457
|
+
}
|
|
2458
|
+
timerId = setTimeout(() => {
|
|
2459
|
+
signal?.removeEventListener("abort", onAbort);
|
|
2460
|
+
resolve(Result.make.err(options.onTimeout()));
|
|
2461
|
+
}, ms);
|
|
2462
|
+
Deferred.to.Promise(task(signal)).then((res) => {
|
|
2463
|
+
clearTimeout(timerId);
|
|
2464
|
+
signal?.removeEventListener("abort", onAbort);
|
|
2465
|
+
resolve(res);
|
|
2466
|
+
});
|
|
2467
|
+
});
|
|
2468
|
+
});
|
|
2469
|
+
TaskResult2.allSettled = (tasks) => Task.from.Promise((signal) => Promise.all(tasks.map((task) => Deferred.to.Promise(task(signal)))));
|
|
2285
2470
|
})(TaskResult || (TaskResult = {}));
|
|
2286
2471
|
|
|
2287
2472
|
// src/internal/InternalTypes.ts
|
|
@@ -2290,9 +2475,15 @@ var isNonEmptyArr = (list) => list.length > 0;
|
|
|
2290
2475
|
// src/Core/TaskValidation.ts
|
|
2291
2476
|
var TaskValidation;
|
|
2292
2477
|
((TaskValidation2) => {
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2478
|
+
let make;
|
|
2479
|
+
((make2) => {
|
|
2480
|
+
make2.passed = (value) => Task.resolve(Validation.make.passed(value));
|
|
2481
|
+
make2.failed = (error) => Task.resolve(Validation.make.failed(error));
|
|
2482
|
+
make2.failedAll = (errors) => Task.resolve(Validation.make.failedAll(errors));
|
|
2483
|
+
})(make = TaskValidation2.make || (TaskValidation2.make = {}));
|
|
2484
|
+
({ passed: TaskValidation2.passed } = make);
|
|
2485
|
+
({ failed: TaskValidation2.failed } = make);
|
|
2486
|
+
({ failedAll: TaskValidation2.failedAll } = make);
|
|
2296
2487
|
let from;
|
|
2297
2488
|
((from2) => {
|
|
2298
2489
|
from2.Validation = (validation) => Task.resolve(validation);
|
|
@@ -2510,7 +2701,8 @@ var Task;
|
|
|
2510
2701
|
}
|
|
2511
2702
|
return results;
|
|
2512
2703
|
});
|
|
2513
|
-
Task2.timeout = (
|
|
2704
|
+
Task2.timeout = (options) => (task) => from.Promise((outerSignal) => {
|
|
2705
|
+
const { duration, onTimeout } = options;
|
|
2514
2706
|
const controller = new AbortController();
|
|
2515
2707
|
let timerId;
|
|
2516
2708
|
let cleanUp = () => {
|
|
@@ -2567,6 +2759,30 @@ var Task;
|
|
|
2567
2759
|
Task2.bind = (key, f) => (data) => (0, Task2.chain)(
|
|
2568
2760
|
(a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2569
2761
|
)(data);
|
|
2762
|
+
Task2.memoize = (task) => {
|
|
2763
|
+
let cached = null;
|
|
2764
|
+
return (signal) => {
|
|
2765
|
+
if (cached === null) {
|
|
2766
|
+
cached = task(signal);
|
|
2767
|
+
}
|
|
2768
|
+
return cached;
|
|
2769
|
+
};
|
|
2770
|
+
};
|
|
2771
|
+
Task2.withProgress = (onProgress) => (task) => (signal) => {
|
|
2772
|
+
onProgress(0);
|
|
2773
|
+
const d = task(signal);
|
|
2774
|
+
return Deferred.from.Promise(
|
|
2775
|
+
Deferred.to.Promise(d).then((res) => {
|
|
2776
|
+
onProgress(1);
|
|
2777
|
+
return res;
|
|
2778
|
+
})
|
|
2779
|
+
);
|
|
2780
|
+
};
|
|
2781
|
+
Task2.withLabel = (label) => (task) => {
|
|
2782
|
+
const fn = ((signal) => task(signal));
|
|
2783
|
+
Object.defineProperty(fn, "label", { value: label, writable: false, enumerable: true, configurable: true });
|
|
2784
|
+
return fn;
|
|
2785
|
+
};
|
|
2570
2786
|
Task2.Maybe = TaskMaybe;
|
|
2571
2787
|
Task2.Result = TaskResult;
|
|
2572
2788
|
Task2.Validation = TaskValidation;
|
|
@@ -2673,23 +2889,23 @@ var Tuple;
|
|
|
2673
2889
|
from2.pair = (first2, second2) => [first2, second2];
|
|
2674
2890
|
from2.array = (arr) => arr;
|
|
2675
2891
|
})(from = Tuple2.from || (Tuple2.from = {}));
|
|
2676
|
-
Tuple2.first = (
|
|
2677
|
-
Tuple2.second = (
|
|
2678
|
-
Tuple2.mapFirst = (f) => (
|
|
2679
|
-
Tuple2.mapSecond = (f) => (
|
|
2680
|
-
Tuple2.mapBoth = (onFirst, onSecond) => (
|
|
2681
|
-
onFirst(
|
|
2682
|
-
onSecond(
|
|
2892
|
+
Tuple2.first = (tuple2) => tuple2[0];
|
|
2893
|
+
Tuple2.second = (tuple2) => tuple2[1];
|
|
2894
|
+
Tuple2.mapFirst = (f) => (tuple2) => [f(tuple2[0]), tuple2[1]];
|
|
2895
|
+
Tuple2.mapSecond = (f) => (tuple2) => [tuple2[0], f(tuple2[1])];
|
|
2896
|
+
Tuple2.mapBoth = (onFirst, onSecond) => (tuple2) => [
|
|
2897
|
+
onFirst(tuple2[0]),
|
|
2898
|
+
onSecond(tuple2[1])
|
|
2683
2899
|
];
|
|
2684
|
-
Tuple2.fold = (f) => (
|
|
2685
|
-
Tuple2.swap = (
|
|
2900
|
+
Tuple2.fold = (f) => (tuple2) => f(tuple2[0], tuple2[1]);
|
|
2901
|
+
Tuple2.swap = (tuple2) => [tuple2[1], tuple2[0]];
|
|
2686
2902
|
let to;
|
|
2687
2903
|
((to2) => {
|
|
2688
|
-
to2.Array = (
|
|
2904
|
+
to2.Array = (tuple2) => [...tuple2];
|
|
2689
2905
|
})(to = Tuple2.to || (Tuple2.to = {}));
|
|
2690
|
-
Tuple2.tap = (f) => (
|
|
2691
|
-
f(
|
|
2692
|
-
return
|
|
2906
|
+
Tuple2.tap = (f) => (tuple2) => {
|
|
2907
|
+
f(tuple2[0], tuple2[1]);
|
|
2908
|
+
return tuple2;
|
|
2693
2909
|
};
|
|
2694
2910
|
})(Tuple || (Tuple = {}));
|
|
2695
2911
|
|
|
@@ -2707,6 +2923,13 @@ var Validation;
|
|
|
2707
2923
|
is2.passed = (data) => data.kind === "Passed";
|
|
2708
2924
|
is2.failed = (data) => data.kind === "Failed";
|
|
2709
2925
|
})(is = Validation2.is || (Validation2.is = {}));
|
|
2926
|
+
Validation2.tryCatch = (f, options) => {
|
|
2927
|
+
try {
|
|
2928
|
+
return make.passed(f());
|
|
2929
|
+
} catch (error) {
|
|
2930
|
+
return make.failed(options.onError(error));
|
|
2931
|
+
}
|
|
2932
|
+
};
|
|
2710
2933
|
let from;
|
|
2711
2934
|
((from2) => {
|
|
2712
2935
|
from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.passed(a) : make.failed(onFalse(a));
|
|
@@ -2722,6 +2945,12 @@ var Validation;
|
|
|
2722
2945
|
}
|
|
2723
2946
|
return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll([...data.errors, ...arg.errors]);
|
|
2724
2947
|
};
|
|
2948
|
+
Validation2.apCustom = (concat) => (arg) => (data) => {
|
|
2949
|
+
if (is.passed(data)) {
|
|
2950
|
+
return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
|
|
2951
|
+
}
|
|
2952
|
+
return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll(concat(data.errors, arg.errors));
|
|
2953
|
+
};
|
|
2725
2954
|
Validation2.fold = (onFailed, onPassed) => (data) => is.passed(data) ? onPassed(data.value) : onFailed(data.errors);
|
|
2726
2955
|
Validation2.match = (cases) => (data) => is.passed(data) ? cases.passed(data.value) : cases.failed(data.errors);
|
|
2727
2956
|
Validation2.getOrElse = (defaultValue) => (data) => is.passed(data) ? data.value : defaultValue();
|
|
@@ -2741,7 +2970,14 @@ var Validation;
|
|
|
2741
2970
|
Validation2.recoverUnless = (isBlocked, fallback) => (data) => is.failed(data) && !data.errors.some(isBlocked) ? fallback() : data;
|
|
2742
2971
|
let to;
|
|
2743
2972
|
((to2) => {
|
|
2744
|
-
|
|
2973
|
+
function Result4(arg) {
|
|
2974
|
+
if (typeof arg === "function") {
|
|
2975
|
+
const combine = arg;
|
|
2976
|
+
return (val) => is.passed(val) ? Result.make.ok(val.value) : Result.make.err(combine(val.errors));
|
|
2977
|
+
}
|
|
2978
|
+
return is.passed(arg) ? Result.make.ok(arg.value) : Result.make.err(arg.errors);
|
|
2979
|
+
}
|
|
2980
|
+
to2.Result = Result4;
|
|
2745
2981
|
to2.Maybe = (data) => is.passed(data) ? Maybe.make.some(data.value) : Maybe.make.none();
|
|
2746
2982
|
})(to = Validation2.to || (Validation2.to = {}));
|
|
2747
2983
|
Validation2.product = (first, second) => {
|
|
@@ -3164,9 +3400,154 @@ var Arr;
|
|
|
3164
3400
|
const i = Math.max(0, index);
|
|
3165
3401
|
return [data.slice(0, i), data.slice(i)];
|
|
3166
3402
|
};
|
|
3403
|
+
Arr2.partitionMaybe = (f) => (data) => {
|
|
3404
|
+
const failures = [];
|
|
3405
|
+
const successes = [];
|
|
3406
|
+
for (let i = 0; i < data.length; i++) {
|
|
3407
|
+
const res = f(data[i]);
|
|
3408
|
+
if (res.kind === "Some") {
|
|
3409
|
+
successes.push(res.value);
|
|
3410
|
+
} else {
|
|
3411
|
+
failures.push(data[i]);
|
|
3412
|
+
}
|
|
3413
|
+
}
|
|
3414
|
+
return [failures, successes];
|
|
3415
|
+
};
|
|
3416
|
+
Arr2.at = (index) => (data) => {
|
|
3417
|
+
const targetIndex = index < 0 ? data.length + index : index;
|
|
3418
|
+
if (targetIndex < 0 || targetIndex >= data.length) {
|
|
3419
|
+
return Maybe.make.none();
|
|
3420
|
+
}
|
|
3421
|
+
return Maybe.make.some(data[targetIndex]);
|
|
3422
|
+
};
|
|
3423
|
+
Arr2.findMap = (f) => (data) => {
|
|
3424
|
+
for (let i = 0; i < data.length; i++) {
|
|
3425
|
+
const res = f(data[i]);
|
|
3426
|
+
if (res.kind === "Some") {
|
|
3427
|
+
return res;
|
|
3428
|
+
}
|
|
3429
|
+
}
|
|
3430
|
+
return Maybe.make.none();
|
|
3431
|
+
};
|
|
3432
|
+
Arr2.indexBy = (keyFn) => (data) => {
|
|
3433
|
+
const map2 = new globalThis.Map();
|
|
3434
|
+
for (let i = 0; i < data.length; i++) {
|
|
3435
|
+
map2.set(keyFn(data[i]), data[i]);
|
|
3436
|
+
}
|
|
3437
|
+
return map2;
|
|
3438
|
+
};
|
|
3439
|
+
Arr2.frequencies = (data) => {
|
|
3440
|
+
const map2 = new globalThis.Map();
|
|
3441
|
+
for (let i = 0; i < data.length; i++) {
|
|
3442
|
+
const item = data[i];
|
|
3443
|
+
map2.set(item, (map2.get(item) ?? 0) + 1);
|
|
3444
|
+
}
|
|
3445
|
+
return map2;
|
|
3446
|
+
};
|
|
3447
|
+
Arr2.chunkBy = (keyFn) => (data) => {
|
|
3448
|
+
if (data.length === 0) {
|
|
3449
|
+
return [];
|
|
3450
|
+
}
|
|
3451
|
+
const result = [];
|
|
3452
|
+
let currentChunk = [data[0]];
|
|
3453
|
+
let currentKey = keyFn(data[0]);
|
|
3454
|
+
for (let i = 1; i < data.length; i++) {
|
|
3455
|
+
const item = data[i];
|
|
3456
|
+
const key = keyFn(item);
|
|
3457
|
+
if (Object.is(key, currentKey)) {
|
|
3458
|
+
currentChunk.push(item);
|
|
3459
|
+
} else {
|
|
3460
|
+
result.push(currentChunk);
|
|
3461
|
+
currentChunk = [item];
|
|
3462
|
+
currentKey = key;
|
|
3463
|
+
}
|
|
3464
|
+
}
|
|
3465
|
+
result.push(currentChunk);
|
|
3466
|
+
return result;
|
|
3467
|
+
};
|
|
3468
|
+
Arr2.dedupeAdjacent = (eq = (a, b) => Object.is(a, b)) => (data) => {
|
|
3469
|
+
if (data.length === 0) {
|
|
3470
|
+
return [];
|
|
3471
|
+
}
|
|
3472
|
+
const result = [data[0]];
|
|
3473
|
+
for (let i = 1; i < data.length; i++) {
|
|
3474
|
+
if (!eq(data[i], result[result.length - 1])) {
|
|
3475
|
+
result.push(data[i]);
|
|
3476
|
+
}
|
|
3477
|
+
}
|
|
3478
|
+
return result;
|
|
3479
|
+
};
|
|
3480
|
+
Arr2.windowed = (size2, options) => (data) => {
|
|
3481
|
+
const step = options?.step ?? 1;
|
|
3482
|
+
if (size2 <= 0 || step <= 0 || data.length < size2) {
|
|
3483
|
+
return [];
|
|
3484
|
+
}
|
|
3485
|
+
const result = [];
|
|
3486
|
+
for (let i = 0; i <= data.length - size2; i += step) {
|
|
3487
|
+
result.push(data.slice(i, i + size2));
|
|
3488
|
+
}
|
|
3489
|
+
return result;
|
|
3490
|
+
};
|
|
3491
|
+
Arr2.unfold = (initial, f) => {
|
|
3492
|
+
const result = [];
|
|
3493
|
+
let currentState = initial;
|
|
3494
|
+
while (true) {
|
|
3495
|
+
const next = f(currentState);
|
|
3496
|
+
if (next.kind === "None") {
|
|
3497
|
+
break;
|
|
3498
|
+
}
|
|
3499
|
+
const [item, nextState] = next.value;
|
|
3500
|
+
result.push(item);
|
|
3501
|
+
currentState = nextState;
|
|
3502
|
+
}
|
|
3503
|
+
return result;
|
|
3504
|
+
};
|
|
3167
3505
|
Arr2.NonEmpty = ArrNonEmpty;
|
|
3168
3506
|
})(Arr || (Arr = {}));
|
|
3169
3507
|
|
|
3508
|
+
// src/Data/BigNum.ts
|
|
3509
|
+
var BigNum;
|
|
3510
|
+
((BigNum2) => {
|
|
3511
|
+
let from;
|
|
3512
|
+
((from2) => {
|
|
3513
|
+
from2.string = (s) => {
|
|
3514
|
+
try {
|
|
3515
|
+
if (s.trim() === "") {
|
|
3516
|
+
return Maybe.make.none();
|
|
3517
|
+
}
|
|
3518
|
+
return Maybe.make.some(BigInt(s));
|
|
3519
|
+
} catch {
|
|
3520
|
+
return Maybe.make.none();
|
|
3521
|
+
}
|
|
3522
|
+
};
|
|
3523
|
+
from2.number = (n) => {
|
|
3524
|
+
if (!Number.isInteger(n) || n < Number.MIN_SAFE_INTEGER || n > Number.MAX_SAFE_INTEGER) {
|
|
3525
|
+
return Maybe.make.none();
|
|
3526
|
+
}
|
|
3527
|
+
return Maybe.make.some(BigInt(n));
|
|
3528
|
+
};
|
|
3529
|
+
})(from = BigNum2.from || (BigNum2.from = {}));
|
|
3530
|
+
let to;
|
|
3531
|
+
((to2) => {
|
|
3532
|
+
to2.number = (b) => {
|
|
3533
|
+
if (b < BigInt(Number.MIN_SAFE_INTEGER) || b > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
3534
|
+
return Maybe.make.none();
|
|
3535
|
+
}
|
|
3536
|
+
return Maybe.make.some(Number(b));
|
|
3537
|
+
};
|
|
3538
|
+
})(to = BigNum2.to || (BigNum2.to = {}));
|
|
3539
|
+
BigNum2.add = (b) => (a) => a + b;
|
|
3540
|
+
BigNum2.sub = (b) => (a) => a - b;
|
|
3541
|
+
BigNum2.mul = (b) => (a) => a * b;
|
|
3542
|
+
BigNum2.div = (b) => (a) => b === 0n ? Maybe.make.none() : Maybe.make.some(a / b);
|
|
3543
|
+
BigNum2.mod = (b) => (a) => b === 0n ? Maybe.make.none() : Maybe.make.some(a % b);
|
|
3544
|
+
BigNum2.clamp = (min2, max2) => (a) => a < min2 ? min2 : a > max2 ? max2 : a;
|
|
3545
|
+
BigNum2.inRange = (start, end) => (a) => a >= start && a < end;
|
|
3546
|
+
BigNum2.abs = (a) => a < 0n ? -a : a;
|
|
3547
|
+
BigNum2.min = (b) => (a) => a < b ? a : b;
|
|
3548
|
+
BigNum2.max = (b) => (a) => a > b ? a : b;
|
|
3549
|
+
})(BigNum || (BigNum = {}));
|
|
3550
|
+
|
|
3170
3551
|
// src/Data/Dict.ts
|
|
3171
3552
|
var DictNonEmpty;
|
|
3172
3553
|
((DictNonEmpty2) => {
|
|
@@ -3323,16 +3704,86 @@ var Dict;
|
|
|
3323
3704
|
}
|
|
3324
3705
|
return acc;
|
|
3325
3706
|
};
|
|
3707
|
+
function mergeWith(combine) {
|
|
3708
|
+
return (arg1, arg2) => {
|
|
3709
|
+
if (arg2 !== void 0) {
|
|
3710
|
+
const first = arg1;
|
|
3711
|
+
const second2 = arg2;
|
|
3712
|
+
const res = new globalThis.Map(first);
|
|
3713
|
+
for (const [k, v] of second2) {
|
|
3714
|
+
if (res.has(k)) {
|
|
3715
|
+
res.set(k, combine(res.get(k), v));
|
|
3716
|
+
} else {
|
|
3717
|
+
res.set(k, v);
|
|
3718
|
+
}
|
|
3719
|
+
}
|
|
3720
|
+
return res;
|
|
3721
|
+
}
|
|
3722
|
+
const second = arg1;
|
|
3723
|
+
return (first) => {
|
|
3724
|
+
const res = new globalThis.Map(first);
|
|
3725
|
+
for (const [k, v] of second) {
|
|
3726
|
+
if (res.has(k)) {
|
|
3727
|
+
res.set(k, combine(res.get(k), v));
|
|
3728
|
+
} else {
|
|
3729
|
+
res.set(k, v);
|
|
3730
|
+
}
|
|
3731
|
+
}
|
|
3732
|
+
return res;
|
|
3733
|
+
};
|
|
3734
|
+
};
|
|
3735
|
+
}
|
|
3736
|
+
Dict2.mergeWith = mergeWith;
|
|
3326
3737
|
let to;
|
|
3327
3738
|
((to2) => {
|
|
3328
3739
|
to2.Record = (m) => Object.fromEntries(m);
|
|
3329
3740
|
})(to = Dict2.to || (Dict2.to = {}));
|
|
3741
|
+
Dict2.mapEntries = (f) => (data) => {
|
|
3742
|
+
const res = new globalThis.Map();
|
|
3743
|
+
for (const [k, v] of data) {
|
|
3744
|
+
const [nk, nv] = f(k, v);
|
|
3745
|
+
res.set(nk, nv);
|
|
3746
|
+
}
|
|
3747
|
+
return res;
|
|
3748
|
+
};
|
|
3749
|
+
Dict2.mapKeys = (f) => (data) => {
|
|
3750
|
+
const res = new globalThis.Map();
|
|
3751
|
+
for (const [k, v] of data) {
|
|
3752
|
+
res.set(f(k), v);
|
|
3753
|
+
}
|
|
3754
|
+
return res;
|
|
3755
|
+
};
|
|
3330
3756
|
Dict2.NonEmpty = DictNonEmpty;
|
|
3331
3757
|
})(Dict || (Dict = {}));
|
|
3332
3758
|
|
|
3759
|
+
// src/Data/Json.ts
|
|
3760
|
+
var isSyntaxError = (err2) => typeof err2 === "object" && err2 !== null && "name" in err2 && err2.name === "SyntaxError";
|
|
3761
|
+
var isTypeError = (err2) => typeof err2 === "object" && err2 !== null && "name" in err2 && err2.name === "TypeError";
|
|
3762
|
+
var Json;
|
|
3763
|
+
((Json2) => {
|
|
3764
|
+
Json2.parse = (text) => Result.tryCatch(() => JSON.parse(text), {
|
|
3765
|
+
onError: (err2) => isSyntaxError(err2) ? err2 : new SyntaxError(String(err2))
|
|
3766
|
+
});
|
|
3767
|
+
Json2.stringify = (value, replacer, space) => Result.tryCatch(() => JSON.stringify(value, replacer, space), {
|
|
3768
|
+
onError: (err2) => isTypeError(err2) ? err2 : new TypeError(String(err2))
|
|
3769
|
+
});
|
|
3770
|
+
})(Json || (Json = {}));
|
|
3771
|
+
|
|
3333
3772
|
// src/Data/Num.ts
|
|
3334
3773
|
var Num;
|
|
3335
3774
|
((Num2) => {
|
|
3775
|
+
let is;
|
|
3776
|
+
((is2) => {
|
|
3777
|
+
is2.zero = (n) => n === 0;
|
|
3778
|
+
is2.integer = (n) => Number.isInteger(n);
|
|
3779
|
+
is2.float = (n) => Number.isFinite(n) && !Number.isInteger(n);
|
|
3780
|
+
is2.finite = (n) => Number.isFinite(n);
|
|
3781
|
+
is2.nan = (n) => Number.isNaN(n);
|
|
3782
|
+
is2.even = (n) => Number.isInteger(n) && n % 2 === 0;
|
|
3783
|
+
is2.odd = (n) => Number.isInteger(n) && n % 2 !== 0;
|
|
3784
|
+
is2.positive = (n) => n > 0;
|
|
3785
|
+
is2.negative = (n) => n < 0;
|
|
3786
|
+
})(is = Num2.is || (Num2.is = {}));
|
|
3336
3787
|
Num2.range = (from, to, step = 1) => {
|
|
3337
3788
|
if (step <= 0 || from > to) {
|
|
3338
3789
|
return [];
|
|
@@ -3396,6 +3847,7 @@ var Num;
|
|
|
3396
3847
|
}
|
|
3397
3848
|
return Maybe.make.some(result);
|
|
3398
3849
|
};
|
|
3850
|
+
Num2.format = (options, locales) => (n) => !Number.isFinite(n) ? Maybe.make.none() : Maybe.make.some(new Intl.NumberFormat(locales, options).format(n));
|
|
3399
3851
|
})(Num || (Num = {}));
|
|
3400
3852
|
|
|
3401
3853
|
// src/Data/Rec.ts
|
|
@@ -3583,6 +4035,36 @@ var Rec;
|
|
|
3583
4035
|
...data,
|
|
3584
4036
|
...other
|
|
3585
4037
|
});
|
|
4038
|
+
function mergeWith(combine) {
|
|
4039
|
+
return (arg1, arg2) => {
|
|
4040
|
+
if (arg2 !== void 0) {
|
|
4041
|
+
const first = arg1;
|
|
4042
|
+
const second2 = arg2;
|
|
4043
|
+
const result = { ...first };
|
|
4044
|
+
for (const [k, v] of Object.entries(second2)) {
|
|
4045
|
+
if (Object.hasOwn(result, k)) {
|
|
4046
|
+
result[k] = combine(result[k], v);
|
|
4047
|
+
} else {
|
|
4048
|
+
result[k] = v;
|
|
4049
|
+
}
|
|
4050
|
+
}
|
|
4051
|
+
return result;
|
|
4052
|
+
}
|
|
4053
|
+
const second = arg1;
|
|
4054
|
+
return (first) => {
|
|
4055
|
+
const result = { ...first };
|
|
4056
|
+
for (const [k, v] of Object.entries(second)) {
|
|
4057
|
+
if (Object.hasOwn(result, k)) {
|
|
4058
|
+
result[k] = combine(result[k], v);
|
|
4059
|
+
} else {
|
|
4060
|
+
result[k] = v;
|
|
4061
|
+
}
|
|
4062
|
+
}
|
|
4063
|
+
return result;
|
|
4064
|
+
};
|
|
4065
|
+
};
|
|
4066
|
+
}
|
|
4067
|
+
Rec2.mergeWith = mergeWith;
|
|
3586
4068
|
Rec2.size = (data) => Object.keys(data).length;
|
|
3587
4069
|
Rec2.mapKeys = (f) => (data) => {
|
|
3588
4070
|
const result = {};
|
|
@@ -3600,6 +4082,25 @@ var Rec;
|
|
|
3600
4082
|
}
|
|
3601
4083
|
return result;
|
|
3602
4084
|
};
|
|
4085
|
+
Rec2.mapEntries = (f) => (data) => {
|
|
4086
|
+
const result = {};
|
|
4087
|
+
for (const [k, v] of Object.entries(data)) {
|
|
4088
|
+
const [newKey, newVal] = f(k, v);
|
|
4089
|
+
Object.defineProperty(result, newKey, { value: newVal, writable: true, enumerable: true, configurable: true });
|
|
4090
|
+
}
|
|
4091
|
+
return result;
|
|
4092
|
+
};
|
|
4093
|
+
Rec2.updateIn = (path, f) => (data) => {
|
|
4094
|
+
const updateNode = (obj, keys2) => {
|
|
4095
|
+
const [head, ...tail] = keys2;
|
|
4096
|
+
if (tail.length === 0) {
|
|
4097
|
+
return { ...obj, [head]: f(obj?.[head]) };
|
|
4098
|
+
}
|
|
4099
|
+
const child = obj && typeof obj === "object" && head in obj ? obj[head] : {};
|
|
4100
|
+
return { ...obj, [head]: updateNode(child, tail) };
|
|
4101
|
+
};
|
|
4102
|
+
return updateNode(data, path);
|
|
4103
|
+
};
|
|
3603
4104
|
let traverse;
|
|
3604
4105
|
((traverse2) => {
|
|
3605
4106
|
traverse2.Maybe = RecMaybe.traverse;
|
|
@@ -3682,6 +4183,17 @@ var Str;
|
|
|
3682
4183
|
return Result.make.err(error);
|
|
3683
4184
|
}
|
|
3684
4185
|
};
|
|
4186
|
+
Str2.uncapitalize = (s) => s.length === 0 ? "" : s.charAt(0).toLowerCase() + s.slice(1);
|
|
4187
|
+
Str2.truncate = (options) => (s) => {
|
|
4188
|
+
const { length: targetLength, suffix = "..." } = options;
|
|
4189
|
+
if (s.length <= targetLength) {
|
|
4190
|
+
return s;
|
|
4191
|
+
}
|
|
4192
|
+
if (targetLength <= suffix.length) {
|
|
4193
|
+
return suffix.slice(0, targetLength);
|
|
4194
|
+
}
|
|
4195
|
+
return s.slice(0, targetLength - suffix.length) + suffix;
|
|
4196
|
+
};
|
|
3685
4197
|
Str2.NonEmpty = StrNonEmpty;
|
|
3686
4198
|
})(Str || (Str = {}));
|
|
3687
4199
|
|
|
@@ -3812,12 +4324,14 @@ var Uniq;
|
|
|
3812
4324
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3813
4325
|
0 && (module.exports = {
|
|
3814
4326
|
Arr,
|
|
4327
|
+
BigNum,
|
|
3815
4328
|
Brand,
|
|
3816
4329
|
Combinable,
|
|
3817
4330
|
Deferred,
|
|
3818
4331
|
Dict,
|
|
3819
4332
|
Duration,
|
|
3820
4333
|
Equality,
|
|
4334
|
+
Json,
|
|
3821
4335
|
Lazy,
|
|
3822
4336
|
Lens,
|
|
3823
4337
|
Logged,
|
|
@@ -3833,6 +4347,7 @@ var Uniq;
|
|
|
3833
4347
|
RemoteData,
|
|
3834
4348
|
Resource,
|
|
3835
4349
|
Result,
|
|
4350
|
+
RetryPolicy,
|
|
3836
4351
|
State,
|
|
3837
4352
|
Str,
|
|
3838
4353
|
Task,
|
|
@@ -3868,7 +4383,9 @@ var Uniq;
|
|
|
3868
4383
|
or,
|
|
3869
4384
|
pipe,
|
|
3870
4385
|
tap,
|
|
4386
|
+
tuple,
|
|
3871
4387
|
uncurry,
|
|
3872
4388
|
uncurry3,
|
|
3873
|
-
uncurry4
|
|
4389
|
+
uncurry4,
|
|
4390
|
+
untuple
|
|
3874
4391
|
});
|