@nlozgachev/pipelined 0.42.0 → 0.44.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.
@@ -23,11 +23,7 @@ var Duration;
23
23
  Duration2.subtract = (other) => (self) => wrap(Brand.unwrap(self) - Brand.unwrap(other));
24
24
  })(Duration || (Duration = {}));
25
25
 
26
- // src/Types/NonEmptyList.ts
27
- var isNonEmptyList = (list) => list.length > 0;
28
-
29
26
  export {
30
27
  Brand,
31
- isNonEmptyList,
32
28
  Duration
33
29
  };
@@ -2,13 +2,73 @@ import {
2
2
  Deferred,
3
3
  Maybe,
4
4
  Result,
5
- Task
6
- } from "./chunk-OAP765G3.mjs";
7
- import {
8
- isNonEmptyList
9
- } from "./chunk-GBB6LVLI.mjs";
5
+ Task,
6
+ isNonEmptyArr
7
+ } from "./chunk-ND476266.mjs";
10
8
 
11
9
  // src/Data/Arr.ts
10
+ var ArrMaybe;
11
+ ((ArrMaybe2) => {
12
+ ArrMaybe2.traverse = (f) => (data) => {
13
+ const n = data.length;
14
+ const result = new Array(n);
15
+ for (let i = 0; i < n; i++) {
16
+ const mapped = f(data[i]);
17
+ if (mapped.kind === "None") {
18
+ return Maybe.none();
19
+ }
20
+ result[i] = mapped.value;
21
+ }
22
+ return Maybe.some(result);
23
+ };
24
+ ArrMaybe2.sequence = (data) => (0, ArrMaybe2.traverse)((a) => a)(data);
25
+ })(ArrMaybe || (ArrMaybe = {}));
26
+ var ArrResult;
27
+ ((ArrResult2) => {
28
+ ArrResult2.traverse = (f) => (data) => {
29
+ const n = data.length;
30
+ const result = new Array(n);
31
+ for (let i = 0; i < n; i++) {
32
+ const mapped = f(data[i]);
33
+ if (mapped.kind === "Err") {
34
+ return mapped;
35
+ }
36
+ result[i] = mapped.value;
37
+ }
38
+ return Result.ok(result);
39
+ };
40
+ ArrResult2.sequence = (data) => (0, ArrResult2.traverse)((a) => a)(data);
41
+ })(ArrResult || (ArrResult = {}));
42
+ var ArrTaskResult;
43
+ ((ArrTaskResult2) => {
44
+ ArrTaskResult2.traverse = (f) => (data) => Task.from(async () => {
45
+ const result = [];
46
+ for (const a of data) {
47
+ const r = await Deferred.toPromise(f(a)());
48
+ if (Result.isErr(r)) {
49
+ return r;
50
+ }
51
+ result.push(r.value);
52
+ }
53
+ return Result.ok(result);
54
+ });
55
+ ArrTaskResult2.sequence = (data) => (0, ArrTaskResult2.traverse)((a) => a)(data);
56
+ })(ArrTaskResult || (ArrTaskResult = {}));
57
+ var ArrTask;
58
+ ((ArrTask2) => {
59
+ ArrTask2.traverse = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.toPromise(f(a)()))));
60
+ ArrTask2.sequence = (data) => (0, ArrTask2.traverse)((a) => a)(data);
61
+ ArrTask2.Result = ArrTaskResult;
62
+ })(ArrTask || (ArrTask = {}));
63
+ var ArrNonEmpty;
64
+ ((ArrNonEmpty2) => {
65
+ ArrNonEmpty2.singleton = (value) => [value];
66
+ ArrNonEmpty2.fromArray = (data) => isNonEmptyArr(data) ? Maybe.some(data) : Maybe.none();
67
+ ArrNonEmpty2.head = (data) => data[0];
68
+ ArrNonEmpty2.last = (data) => data[data.length - 1];
69
+ ArrNonEmpty2.tail = (data) => data.slice(1);
70
+ ArrNonEmpty2.reduce = (f) => (data) => data.reduce(f);
71
+ })(ArrNonEmpty || (ArrNonEmpty = {}));
12
72
  var Arr;
13
73
  ((Arr2) => {
14
74
  Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
@@ -182,6 +242,7 @@ var Arr;
182
242
  }
183
243
  return result;
184
244
  };
245
+ Arr2.concat = (other) => (data) => [...data, ...other];
185
246
  Arr2.chunksOf = (n) => (data) => {
186
247
  if (n <= 0) {
187
248
  return [];
@@ -222,47 +283,12 @@ var Arr;
222
283
  return result;
223
284
  };
224
285
  Arr2.reduce = (initial, f) => (data) => data.reduce(f, initial);
225
- Arr2.traverse = (f) => (data) => {
226
- const n = data.length;
227
- const result = new Array(n);
228
- for (let i = 0; i < n; i++) {
229
- const mapped = f(data[i]);
230
- if (mapped.kind === "None") {
231
- return Maybe.none();
232
- }
233
- result[i] = mapped.value;
234
- }
235
- return Maybe.some(result);
236
- };
237
- Arr2.traverseResult = (f) => (data) => {
238
- const n = data.length;
239
- const result = new Array(n);
240
- for (let i = 0; i < n; i++) {
241
- const mapped = f(data[i]);
242
- if (mapped.kind === "Err") {
243
- return mapped;
244
- }
245
- result[i] = mapped.value;
246
- }
247
- return Result.ok(result);
248
- };
249
- Arr2.traverseTask = (f) => (data) => Task.from(() => Promise.all(data.map((a) => Deferred.toPromise(f(a)()))));
250
- Arr2.sequence = (data) => (0, Arr2.traverse)((a) => a)(data);
251
- Arr2.sequenceResult = (data) => (0, Arr2.traverseResult)((a) => a)(data);
252
- Arr2.sequenceTask = (data) => (0, Arr2.traverseTask)((a) => a)(data);
253
- Arr2.traverseTaskResult = (f) => (data) => Task.from(async () => {
254
- const result = [];
255
- for (const a of data) {
256
- const r = await Deferred.toPromise(f(a)());
257
- if (Result.isErr(r)) {
258
- return r;
259
- }
260
- result.push(r.value);
261
- }
262
- return Result.ok(result);
263
- });
264
- Arr2.sequenceTaskResult = (data) => (0, Arr2.traverseTaskResult)((a) => a)(data);
265
- Arr2.isNonEmpty = (data) => isNonEmptyList(data);
286
+ Arr2.Maybe = ArrMaybe;
287
+ Arr2.Result = ArrResult;
288
+ Arr2.Task = ArrTask;
289
+ Arr2.isNonEmpty = (data) => isNonEmptyArr(data);
290
+ Arr2.prepend = (value) => (data) => [value, ...data];
291
+ Arr2.append = (value) => (data) => [...data, value];
266
292
  Arr2.size = (data) => data.length;
267
293
  Arr2.some = (predicate) => (data) => {
268
294
  const n = data.length;
@@ -338,6 +364,7 @@ var Arr;
338
364
  const i = Math.max(0, index);
339
365
  return [data.slice(0, i), data.slice(i)];
340
366
  };
367
+ Arr2.NonEmpty = ArrNonEmpty;
341
368
  })(Arr || (Arr = {}));
342
369
 
343
370
  // src/Data/Dict.ts
@@ -547,25 +574,78 @@ var Num;
547
574
  })(Num || (Num = {}));
548
575
 
549
576
  // src/Data/Rec.ts
577
+ var _isNonEmpty = (data) => Object.keys(data).length > 0;
578
+ var RecMaybe;
579
+ ((RecMaybe2) => {
580
+ RecMaybe2.traverse = (f) => (data) => {
581
+ const recordKeys = Object.keys(data);
582
+ const result = {};
583
+ for (let i = 0; i < recordKeys.length; i++) {
584
+ const key = recordKeys[i];
585
+ const maybeVal = f(data[key]);
586
+ if (maybeVal.kind === "None") {
587
+ return maybeVal;
588
+ }
589
+ Object.defineProperty(result, key, { value: maybeVal.value, writable: true, enumerable: true, configurable: true });
590
+ }
591
+ return { kind: "Some", value: result };
592
+ };
593
+ RecMaybe2.sequence = (data) => (0, RecMaybe2.traverse)((a) => a)(data);
594
+ })(RecMaybe || (RecMaybe = {}));
595
+ var RecResult;
596
+ ((RecResult2) => {
597
+ RecResult2.traverse = (f) => (data) => {
598
+ const recordKeys = Object.keys(data);
599
+ const result = {};
600
+ for (let i = 0; i < recordKeys.length; i++) {
601
+ const key = recordKeys[i];
602
+ const res = f(data[key]);
603
+ if (res.kind === "Err") {
604
+ return res;
605
+ }
606
+ Object.defineProperty(result, key, { value: res.value, writable: true, enumerable: true, configurable: true });
607
+ }
608
+ return { kind: "Ok", value: result };
609
+ };
610
+ RecResult2.sequence = (data) => (0, RecResult2.traverse)((a) => a)(data);
611
+ })(RecResult || (RecResult = {}));
612
+ var RecNonEmpty;
613
+ ((RecNonEmpty2) => {
614
+ RecNonEmpty2.singleton = (key, value) => ({ [key]: value });
615
+ RecNonEmpty2.fromRecord = (data) => _isNonEmpty(data) ? Maybe.some(data) : Maybe.none();
616
+ RecNonEmpty2.keys = (data) => Object.keys(data);
617
+ RecNonEmpty2.values = (data) => Object.values(data);
618
+ RecNonEmpty2.entries = (data) => Object.entries(data);
619
+ RecNonEmpty2.reduce = (f) => (data) => {
620
+ const recordVals = Object.values(data);
621
+ return recordVals.reduce(f);
622
+ };
623
+ })(RecNonEmpty || (RecNonEmpty = {}));
550
624
  var Rec;
551
625
  ((Rec2) => {
552
- Rec2.map = (f) => (data) => {
553
- const keys2 = Object.keys(data);
554
- const vals = Object.values(data);
626
+ Rec2.isNonEmpty = _isNonEmpty;
627
+ Rec2.map = (f) => ((data) => {
628
+ const recordKeys = Object.keys(data);
629
+ const recordValues = Object.values(data);
555
630
  const result = Object.create(Object.getPrototypeOf(data));
556
- for (let i = 0; i < keys2.length; i++) {
557
- Object.defineProperty(result, keys2[i], { value: f(vals[i]), writable: true, enumerable: true, configurable: true });
631
+ for (let i = 0; i < recordKeys.length; i++) {
632
+ Object.defineProperty(result, recordKeys[i], {
633
+ value: f(recordValues[i]),
634
+ writable: true,
635
+ enumerable: true,
636
+ configurable: true
637
+ });
558
638
  }
559
639
  return result;
560
- };
640
+ });
561
641
  Rec2.filterMap = (f) => (data) => {
562
- const keys2 = Object.keys(data);
563
- const vals = Object.values(data);
642
+ const recordKeys = Object.keys(data);
643
+ const recordValues = Object.values(data);
564
644
  const result = Object.create(Object.getPrototypeOf(data));
565
- for (let i = 0; i < keys2.length; i++) {
566
- const maybeVal = f(vals[i]);
645
+ for (let i = 0; i < recordKeys.length; i++) {
646
+ const maybeVal = f(recordValues[i]);
567
647
  if (maybeVal.kind === "Some") {
568
- Object.defineProperty(result, keys2[i], {
648
+ Object.defineProperty(result, recordKeys[i], {
569
649
  value: maybeVal.value,
570
650
  writable: true,
571
651
  enumerable: true,
@@ -575,27 +655,32 @@ var Rec;
575
655
  }
576
656
  return result;
577
657
  };
578
- Rec2.mapWithKey = (f) => (data) => {
579
- const keys2 = Object.keys(data);
580
- const vals = Object.values(data);
658
+ Rec2.mapWithKey = (f) => ((data) => {
659
+ const recordKeys = Object.keys(data);
660
+ const recordValues = Object.values(data);
581
661
  const result = Object.create(Object.getPrototypeOf(data));
582
- for (let i = 0; i < keys2.length; i++) {
583
- Object.defineProperty(result, keys2[i], {
584
- value: f(keys2[i], vals[i]),
662
+ for (let i = 0; i < recordKeys.length; i++) {
663
+ Object.defineProperty(result, recordKeys[i], {
664
+ value: f(recordKeys[i], recordValues[i]),
585
665
  writable: true,
586
666
  enumerable: true,
587
667
  configurable: true
588
668
  });
589
669
  }
590
670
  return result;
591
- };
671
+ });
592
672
  Rec2.filter = (predicate) => (data) => {
593
- const keys2 = Object.keys(data);
594
- const vals = Object.values(data);
673
+ const recordKeys = Object.keys(data);
674
+ const recordValues = Object.values(data);
595
675
  const result = Object.create(Object.getPrototypeOf(data));
596
- for (let i = 0; i < keys2.length; i++) {
597
- if (predicate(vals[i])) {
598
- Object.defineProperty(result, keys2[i], { value: vals[i], writable: true, enumerable: true, configurable: true });
676
+ for (let i = 0; i < recordKeys.length; i++) {
677
+ if (predicate(recordValues[i])) {
678
+ Object.defineProperty(result, recordKeys[i], {
679
+ value: recordValues[i],
680
+ writable: true,
681
+ enumerable: true,
682
+ configurable: true
683
+ });
599
684
  }
600
685
  }
601
686
  return result;
@@ -672,6 +757,9 @@ var Rec;
672
757
  }
673
758
  return result;
674
759
  };
760
+ Rec2.Maybe = RecMaybe;
761
+ Rec2.Result = RecResult;
762
+ Rec2.NonEmpty = RecNonEmpty;
675
763
  })(Rec || (Rec = {}));
676
764
 
677
765
  // src/Data/Str.ts
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Duration
3
- } from "./chunk-GBB6LVLI.mjs";
3
+ } from "./chunk-74JKKJ4R.mjs";
4
4
 
5
5
  // src/Core/Combinable.ts
6
6
  var Combinable;
@@ -1579,6 +1579,162 @@ var State;
1579
1579
  )(data);
1580
1580
  })(State || (State = {}));
1581
1581
 
1582
+ // src/Core/TaskMaybe.ts
1583
+ var TaskMaybe;
1584
+ ((TaskMaybe2) => {
1585
+ TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
1586
+ TaskMaybe2.none = () => Task.resolve(Maybe.none());
1587
+ TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
1588
+ TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
1589
+ TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
1590
+ TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
1591
+ TaskMaybe2.tryCatch = (f) => Task.from((signal) => Promise.resolve(f(signal)).then(Maybe.some).catch(() => Maybe.none()));
1592
+ TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
1593
+ TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
1594
+ TaskMaybe2.ap = (arg) => (data) => Task.from(
1595
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1596
+ ([of_, oa]) => Maybe.ap(oa)(of_)
1597
+ )
1598
+ );
1599
+ TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
1600
+ TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
1601
+ TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
1602
+ TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
1603
+ TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
1604
+ TaskMaybe2.toResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
1605
+ TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
1606
+ TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
1607
+ (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
1608
+ )(data);
1609
+ TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.isNone(maybe) ? fallback() : Task.resolve(maybe))(data);
1610
+ TaskMaybe2.struct = (fields) => Task.from((signal) => {
1611
+ const keys = Object.keys(fields);
1612
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
1613
+ return Promise.all(promises).then((results) => {
1614
+ const record = {};
1615
+ for (let i = 0; i < keys.length; i++) {
1616
+ const res = results[i];
1617
+ if (Maybe.isNone(res)) {
1618
+ return res;
1619
+ }
1620
+ record[keys[i]] = res.value;
1621
+ }
1622
+ return Maybe.some(record);
1623
+ });
1624
+ });
1625
+ })(TaskMaybe || (TaskMaybe = {}));
1626
+
1627
+ // src/Core/TaskResult.ts
1628
+ var TaskResult;
1629
+ ((TaskResult2) => {
1630
+ TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
1631
+ TaskResult2.err = (error) => Task.resolve(Result.err(error));
1632
+ TaskResult2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
1633
+ TaskResult2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
1634
+ TaskResult2.fromResult = (result) => Task.resolve(result);
1635
+ TaskResult2.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
1636
+ TaskResult2.tryCatch = (f, onError) => Task.from((signal) => Promise.resolve(f(signal)).then(Result.ok).catch((error) => Result.err(onError(error))));
1637
+ TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
1638
+ TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
1639
+ TaskResult2.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
1640
+ data
1641
+ );
1642
+ TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
1643
+ TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
1644
+ TaskResult2.recover = (fallback) => (data) => Task.chain(
1645
+ (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
1646
+ )(data);
1647
+ TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
1648
+ TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
1649
+ TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
1650
+ TaskResult2.ap = (arg) => (data) => Task.from(
1651
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1652
+ ([of_, oa]) => Result.ap(oa)(of_)
1653
+ )
1654
+ );
1655
+ TaskResult2.run = (signal) => (task) => task(signal);
1656
+ TaskResult2.bindTo = (key) => (data) => (0, TaskResult2.map)((a) => ({ [key]: a }))(data);
1657
+ TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
1658
+ (a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
1659
+ )(data);
1660
+ TaskResult2.struct = (fields) => Task.from((signal) => {
1661
+ const keys = Object.keys(fields);
1662
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
1663
+ return Promise.all(promises).then((results) => {
1664
+ const record = {};
1665
+ for (let i = 0; i < keys.length; i++) {
1666
+ const res = results[i];
1667
+ if (Result.isErr(res)) {
1668
+ return res;
1669
+ }
1670
+ record[keys[i]] = res.value;
1671
+ }
1672
+ return Result.ok(record);
1673
+ });
1674
+ });
1675
+ })(TaskResult || (TaskResult = {}));
1676
+
1677
+ // src/internal/InternalTypes.ts
1678
+ var isNonEmptyArr = (list) => list.length > 0;
1679
+
1680
+ // src/Core/TaskValidation.ts
1681
+ var TaskValidation;
1682
+ ((TaskValidation2) => {
1683
+ TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
1684
+ TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
1685
+ TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
1686
+ TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
1687
+ TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
1688
+ TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
1689
+ TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
1690
+ TaskValidation2.tryCatch = (f, onError) => Task.from(
1691
+ (signal) => Promise.resolve(f(signal)).then(Validation.passed).catch((error) => Validation.failed(onError(error)))
1692
+ );
1693
+ TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
1694
+ TaskValidation2.ap = (arg) => (data) => Task.from(
1695
+ (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1696
+ ([vf, va]) => Validation.ap(va)(vf)
1697
+ )
1698
+ );
1699
+ TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
1700
+ TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
1701
+ TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
1702
+ TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
1703
+ TaskValidation2.recover = (fallback) => (data) => Task.chain(
1704
+ (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
1705
+ )(data);
1706
+ TaskValidation2.product = (first, second) => Task.from(
1707
+ (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
1708
+ ([va, vb]) => Validation.product(va, vb)
1709
+ )
1710
+ );
1711
+ TaskValidation2.productAll = (data) => Task.from(
1712
+ (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then((results) => {
1713
+ const [first, ...rest] = results;
1714
+ return Validation.productAll([first, ...rest]);
1715
+ })
1716
+ );
1717
+ TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
1718
+ TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
1719
+ TaskValidation2.struct = (fields) => Task.from((signal) => {
1720
+ const keys = Object.keys(fields);
1721
+ const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
1722
+ return Promise.all(promises).then((results) => {
1723
+ const record = {};
1724
+ const errors = [];
1725
+ for (let i = 0; i < keys.length; i++) {
1726
+ const res = results[i];
1727
+ if (Validation.isPassed(res)) {
1728
+ record[keys[i]] = res.value;
1729
+ } else {
1730
+ errors.push(...res.errors);
1731
+ }
1732
+ }
1733
+ return isNonEmptyArr(errors) ? Validation.failedAll(errors) : Validation.passed(record);
1734
+ });
1735
+ });
1736
+ })(TaskValidation || (TaskValidation = {}));
1737
+
1582
1738
  // src/Core/Task.ts
1583
1739
  var toPromise = (task, signal) => Deferred.toPromise(task(signal));
1584
1740
  var getMs2 = (duration) => Duration.toMilliseconds(duration);
@@ -1735,14 +1891,16 @@ var Task;
1735
1891
  Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
1736
1892
  const controller = new AbortController();
1737
1893
  let timerId;
1738
- function cleanUp() {
1739
- clearTimeout(timerId);
1740
- outerSignal?.removeEventListener("abort", onOuterAbort);
1741
- }
1742
- function onOuterAbort() {
1894
+ let cleanUp = () => {
1895
+ };
1896
+ const onOuterAbort = () => {
1743
1897
  cleanUp();
1744
1898
  controller.abort();
1745
- }
1899
+ };
1900
+ cleanUp = () => {
1901
+ clearTimeout(timerId);
1902
+ outerSignal?.removeEventListener("abort", onOuterAbort);
1903
+ };
1746
1904
  if (outerSignal) {
1747
1905
  if (outerSignal.aborted) {
1748
1906
  controller.abort();
@@ -1787,123 +1945,11 @@ var Task;
1787
1945
  Task2.bind = (key, f) => (data) => (0, Task2.chain)(
1788
1946
  (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
1789
1947
  )(data);
1948
+ Task2.Maybe = TaskMaybe;
1949
+ Task2.Result = TaskResult;
1950
+ Task2.Validation = TaskValidation;
1790
1951
  })(Task || (Task = {}));
1791
1952
 
1792
- // src/Core/TaskMaybe.ts
1793
- var TaskMaybe;
1794
- ((TaskMaybe2) => {
1795
- TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
1796
- TaskMaybe2.none = () => Task.resolve(Maybe.none());
1797
- TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
1798
- TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
1799
- TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
1800
- TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
1801
- TaskMaybe2.tryCatch = (f) => Task.from((signal) => f(signal).then(Maybe.some).catch(() => Maybe.none()));
1802
- TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
1803
- TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
1804
- TaskMaybe2.ap = (arg) => (data) => Task.from(
1805
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1806
- ([of_, oa]) => Maybe.ap(oa)(of_)
1807
- )
1808
- );
1809
- TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
1810
- TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
1811
- TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
1812
- TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
1813
- TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
1814
- TaskMaybe2.toTaskResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
1815
- TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
1816
- TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
1817
- (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
1818
- )(data);
1819
- })(TaskMaybe || (TaskMaybe = {}));
1820
-
1821
- // src/Core/TaskResult.ts
1822
- var TaskResult3;
1823
- ((TaskResult4) => {
1824
- TaskResult4.ok = (value) => Task.resolve(Result.ok(value));
1825
- TaskResult4.err = (error) => Task.resolve(Result.err(error));
1826
- TaskResult4.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
1827
- TaskResult4.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
1828
- TaskResult4.fromResult = (result) => Task.resolve(result);
1829
- TaskResult4.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
1830
- TaskResult4.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Result.ok).catch((error) => Result.err(onError(error))));
1831
- TaskResult4.map = (f) => (data) => Task.map(Result.map(f))(data);
1832
- TaskResult4.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
1833
- TaskResult4.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
1834
- data
1835
- );
1836
- TaskResult4.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
1837
- TaskResult4.match = (cases) => (data) => Task.map(Result.match(cases))(data);
1838
- TaskResult4.recover = (fallback) => (data) => Task.chain(
1839
- (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
1840
- )(data);
1841
- TaskResult4.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
1842
- TaskResult4.tap = (f) => (data) => Task.map(Result.tap(f))(data);
1843
- TaskResult4.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
1844
- TaskResult4.ap = (arg) => (data) => Task.from(
1845
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1846
- ([of_, oa]) => Result.ap(oa)(of_)
1847
- )
1848
- );
1849
- TaskResult4.run = (signal) => (task) => task(signal);
1850
- TaskResult4.bindTo = (key) => (data) => (0, TaskResult4.map)((a) => ({ [key]: a }))(data);
1851
- TaskResult4.bind = (key, f) => (data) => (0, TaskResult4.chain)(
1852
- (a) => (0, TaskResult4.map)((b) => ({ ...a, [key]: b }))(f(a))
1853
- )(data);
1854
- TaskResult4.struct = (fields) => Task.from((signal) => {
1855
- const keys = Object.keys(fields);
1856
- const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
1857
- return Promise.all(promises).then((results) => {
1858
- const record = {};
1859
- for (let i = 0; i < keys.length; i++) {
1860
- const res = results[i];
1861
- if (Result.isErr(res)) {
1862
- return res;
1863
- }
1864
- record[keys[i]] = res.value;
1865
- }
1866
- return Result.ok(record);
1867
- });
1868
- });
1869
- })(TaskResult3 || (TaskResult3 = {}));
1870
-
1871
- // src/Core/TaskValidation.ts
1872
- var TaskValidation;
1873
- ((TaskValidation2) => {
1874
- TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
1875
- TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
1876
- TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
1877
- TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
1878
- TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
1879
- TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
1880
- TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
1881
- TaskValidation2.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Validation.passed).catch((error) => Validation.failed(onError(error))));
1882
- TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
1883
- TaskValidation2.ap = (arg) => (data) => Task.from(
1884
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1885
- ([vf, va]) => Validation.ap(va)(vf)
1886
- )
1887
- );
1888
- TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
1889
- TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
1890
- TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
1891
- TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
1892
- TaskValidation2.recover = (fallback) => (data) => Task.chain(
1893
- (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
1894
- )(data);
1895
- TaskValidation2.product = (first, second) => Task.from(
1896
- (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
1897
- ([va, vb]) => Validation.product(va, vb)
1898
- )
1899
- );
1900
- TaskValidation2.productAll = (data) => Task.from(
1901
- (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then(
1902
- (results) => Validation.productAll(results)
1903
- )
1904
- );
1905
- })(TaskValidation || (TaskValidation = {}));
1906
-
1907
1953
  // src/Core/These.ts
1908
1954
  var These;
1909
1955
  ((These2) => {
@@ -2026,11 +2072,10 @@ var Validation;
2026
2072
  Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
2027
2073
  Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
2028
2074
  Validation2.ap = (arg) => (data) => {
2029
- if ((0, Validation2.isPassed)(data) && (0, Validation2.isPassed)(arg)) {
2030
- return (0, Validation2.passed)(data.value(arg.value));
2075
+ if ((0, Validation2.isPassed)(data)) {
2076
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.passed)(data.value(arg.value)) : (0, Validation2.failedAll)(arg.errors);
2031
2077
  }
2032
- const errors = [...(0, Validation2.isFailed)(data) ? data.errors : [], ...(0, Validation2.isFailed)(arg) ? arg.errors : []];
2033
- return (0, Validation2.failedAll)(errors);
2078
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.failedAll)(data.errors) : (0, Validation2.failedAll)([...data.errors, ...arg.errors]);
2034
2079
  };
2035
2080
  Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
2036
2081
  Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
@@ -2053,11 +2098,10 @@ var Validation;
2053
2098
  Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
2054
2099
  Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
2055
2100
  Validation2.product = (first, second) => {
2056
- if ((0, Validation2.isPassed)(first) && (0, Validation2.isPassed)(second)) {
2057
- return (0, Validation2.passed)([first.value, second.value]);
2101
+ if ((0, Validation2.isPassed)(first)) {
2102
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.passed)([first.value, second.value]) : (0, Validation2.failedAll)(second.errors);
2058
2103
  }
2059
- const errors = [...(0, Validation2.isFailed)(first) ? first.errors : [], ...(0, Validation2.isFailed)(second) ? second.errors : []];
2060
- return (0, Validation2.failedAll)(errors);
2104
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.failedAll)(first.errors) : (0, Validation2.failedAll)([...first.errors, ...second.errors]);
2061
2105
  };
2062
2106
  Validation2.productAll = (data) => {
2063
2107
  const values = [];
@@ -2069,7 +2113,7 @@ var Validation;
2069
2113
  errors.push(...v.errors);
2070
2114
  }
2071
2115
  }
2072
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2116
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2073
2117
  };
2074
2118
  Validation2.struct = (fields) => {
2075
2119
  const record = {};
@@ -2084,7 +2128,7 @@ var Validation;
2084
2128
  }
2085
2129
  }
2086
2130
  }
2087
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2131
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2088
2132
  };
2089
2133
  })(Validation || (Validation = {}));
2090
2134
 
@@ -2106,10 +2150,11 @@ export {
2106
2150
  Resource,
2107
2151
  Result,
2108
2152
  State,
2109
- Task,
2110
2153
  TaskMaybe,
2111
- TaskResult3 as TaskResult,
2154
+ TaskResult,
2155
+ isNonEmptyArr,
2112
2156
  TaskValidation,
2157
+ Task,
2113
2158
  These,
2114
2159
  Tuple,
2115
2160
  Validation