@nlozgachev/pipelined 0.41.0 → 0.43.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
  };
@@ -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);
@@ -1603,9 +1759,7 @@ var Task;
1603
1759
  (signal) => new Promise((res) => {
1604
1760
  let timerId;
1605
1761
  const onAbort = () => {
1606
- if (timerId !== void 0) {
1607
- clearTimeout(timerId);
1608
- }
1762
+ clearTimeout(timerId);
1609
1763
  res(toPromise(data, signal));
1610
1764
  };
1611
1765
  if (signal) {
@@ -1626,27 +1780,20 @@ var Task;
1626
1780
  return Promise.resolve([]);
1627
1781
  }
1628
1782
  const results = [];
1629
- const wait = () => {
1630
- if (signal?.aborted) {
1631
- return Promise.resolve();
1783
+ const wait = () => new Promise((r) => {
1784
+ let timerId;
1785
+ const onAbort = () => {
1786
+ clearTimeout(timerId);
1787
+ r();
1788
+ };
1789
+ if (signal) {
1790
+ signal.addEventListener("abort", onAbort, { once: true });
1632
1791
  }
1633
- return new Promise((r) => {
1634
- let timerId;
1635
- const onAbort = () => {
1636
- if (timerId !== void 0) {
1637
- clearTimeout(timerId);
1638
- }
1639
- r();
1640
- };
1641
- if (signal) {
1642
- signal.addEventListener("abort", onAbort, { once: true });
1643
- }
1644
- timerId = setTimeout(() => {
1645
- signal?.removeEventListener("abort", onAbort);
1646
- r();
1647
- }, delayDuration ? getMs2(delayDuration) : 0);
1648
- });
1649
- };
1792
+ timerId = setTimeout(() => {
1793
+ signal?.removeEventListener("abort", onAbort);
1794
+ r();
1795
+ }, delayDuration ? getMs2(delayDuration) : 0);
1796
+ });
1650
1797
  const run2 = (left) => {
1651
1798
  if (signal?.aborted) {
1652
1799
  return Promise.resolve(results);
@@ -1663,27 +1810,20 @@ var Task;
1663
1810
  });
1664
1811
  Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
1665
1812
  const { when: predicate, delay: delayDuration, maxAttempts } = options;
1666
- const wait = () => {
1667
- if (signal?.aborted) {
1668
- return Promise.resolve();
1813
+ const wait = () => new Promise((r) => {
1814
+ let timerId;
1815
+ const onAbort = () => {
1816
+ clearTimeout(timerId);
1817
+ r();
1818
+ };
1819
+ if (signal) {
1820
+ signal.addEventListener("abort", onAbort, { once: true });
1669
1821
  }
1670
- return new Promise((r) => {
1671
- let timerId;
1672
- const onAbort = () => {
1673
- if (timerId !== void 0) {
1674
- clearTimeout(timerId);
1675
- }
1676
- r();
1677
- };
1678
- if (signal) {
1679
- signal.addEventListener("abort", onAbort, { once: true });
1680
- }
1681
- timerId = setTimeout(() => {
1682
- signal?.removeEventListener("abort", onAbort);
1683
- r();
1684
- }, delayDuration ? getMs2(delayDuration) : 0);
1685
- });
1686
- };
1822
+ timerId = setTimeout(() => {
1823
+ signal?.removeEventListener("abort", onAbort);
1824
+ r();
1825
+ }, delayDuration ? getMs2(delayDuration) : 0);
1826
+ });
1687
1827
  const run2 = (attempt, lastValue) => {
1688
1828
  if (signal?.aborted && lastValue !== void 0) {
1689
1829
  return Promise.resolve(lastValue);
@@ -1751,16 +1891,16 @@ var Task;
1751
1891
  Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
1752
1892
  const controller = new AbortController();
1753
1893
  let timerId;
1754
- function cleanUp() {
1755
- if (timerId !== void 0) {
1756
- clearTimeout(timerId);
1757
- }
1758
- outerSignal?.removeEventListener("abort", onOuterAbort);
1759
- }
1760
- function onOuterAbort() {
1894
+ let cleanUp = () => {
1895
+ };
1896
+ const onOuterAbort = () => {
1761
1897
  cleanUp();
1762
1898
  controller.abort();
1763
- }
1899
+ };
1900
+ cleanUp = () => {
1901
+ clearTimeout(timerId);
1902
+ outerSignal?.removeEventListener("abort", onOuterAbort);
1903
+ };
1764
1904
  if (outerSignal) {
1765
1905
  if (outerSignal.aborted) {
1766
1906
  controller.abort();
@@ -1805,123 +1945,11 @@ var Task;
1805
1945
  Task2.bind = (key, f) => (data) => (0, Task2.chain)(
1806
1946
  (a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
1807
1947
  )(data);
1948
+ Task2.Maybe = TaskMaybe;
1949
+ Task2.Result = TaskResult;
1950
+ Task2.Validation = TaskValidation;
1808
1951
  })(Task || (Task = {}));
1809
1952
 
1810
- // src/Core/TaskMaybe.ts
1811
- var TaskMaybe;
1812
- ((TaskMaybe2) => {
1813
- TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
1814
- TaskMaybe2.none = () => Task.resolve(Maybe.none());
1815
- TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
1816
- TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
1817
- TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
1818
- TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
1819
- TaskMaybe2.tryCatch = (f) => Task.from((signal) => f(signal).then(Maybe.some).catch(() => Maybe.none()));
1820
- TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
1821
- TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
1822
- TaskMaybe2.ap = (arg) => (data) => Task.from(
1823
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1824
- ([of_, oa]) => Maybe.ap(oa)(of_)
1825
- )
1826
- );
1827
- TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
1828
- TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
1829
- TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
1830
- TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
1831
- TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
1832
- TaskMaybe2.toTaskResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
1833
- TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
1834
- TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
1835
- (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
1836
- )(data);
1837
- })(TaskMaybe || (TaskMaybe = {}));
1838
-
1839
- // src/Core/TaskResult.ts
1840
- var TaskResult3;
1841
- ((TaskResult4) => {
1842
- TaskResult4.ok = (value) => Task.resolve(Result.ok(value));
1843
- TaskResult4.err = (error) => Task.resolve(Result.err(error));
1844
- TaskResult4.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
1845
- TaskResult4.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
1846
- TaskResult4.fromResult = (result) => Task.resolve(result);
1847
- TaskResult4.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
1848
- TaskResult4.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Result.ok).catch((error) => Result.err(onError(error))));
1849
- TaskResult4.map = (f) => (data) => Task.map(Result.map(f))(data);
1850
- TaskResult4.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
1851
- TaskResult4.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
1852
- data
1853
- );
1854
- TaskResult4.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
1855
- TaskResult4.match = (cases) => (data) => Task.map(Result.match(cases))(data);
1856
- TaskResult4.recover = (fallback) => (data) => Task.chain(
1857
- (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
1858
- )(data);
1859
- TaskResult4.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
1860
- TaskResult4.tap = (f) => (data) => Task.map(Result.tap(f))(data);
1861
- TaskResult4.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
1862
- TaskResult4.ap = (arg) => (data) => Task.from(
1863
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1864
- ([of_, oa]) => Result.ap(oa)(of_)
1865
- )
1866
- );
1867
- TaskResult4.run = (signal) => (task) => task(signal);
1868
- TaskResult4.bindTo = (key) => (data) => (0, TaskResult4.map)((a) => ({ [key]: a }))(data);
1869
- TaskResult4.bind = (key, f) => (data) => (0, TaskResult4.chain)(
1870
- (a) => (0, TaskResult4.map)((b) => ({ ...a, [key]: b }))(f(a))
1871
- )(data);
1872
- TaskResult4.struct = (fields) => Task.from((signal) => {
1873
- const keys = Object.keys(fields);
1874
- const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
1875
- return Promise.all(promises).then((results) => {
1876
- const record = {};
1877
- for (let i = 0; i < keys.length; i++) {
1878
- const res = results[i];
1879
- if (Result.isErr(res)) {
1880
- return res;
1881
- }
1882
- record[keys[i]] = res.value;
1883
- }
1884
- return Result.ok(record);
1885
- });
1886
- });
1887
- })(TaskResult3 || (TaskResult3 = {}));
1888
-
1889
- // src/Core/TaskValidation.ts
1890
- var TaskValidation;
1891
- ((TaskValidation2) => {
1892
- TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
1893
- TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
1894
- TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
1895
- TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
1896
- TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
1897
- TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
1898
- TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
1899
- TaskValidation2.tryCatch = (f, onError) => Task.from((signal) => f(signal).then(Validation.passed).catch((error) => Validation.failed(onError(error))));
1900
- TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
1901
- TaskValidation2.ap = (arg) => (data) => Task.from(
1902
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1903
- ([vf, va]) => Validation.ap(va)(vf)
1904
- )
1905
- );
1906
- TaskValidation2.fold = (onFailed, onPassed) => (data) => Task.map(Validation.fold(onFailed, onPassed))(data);
1907
- TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
1908
- TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
1909
- TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
1910
- TaskValidation2.recover = (fallback) => (data) => Task.chain(
1911
- (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
1912
- )(data);
1913
- TaskValidation2.product = (first, second) => Task.from(
1914
- (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
1915
- ([va, vb]) => Validation.product(va, vb)
1916
- )
1917
- );
1918
- TaskValidation2.productAll = (data) => Task.from(
1919
- (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then(
1920
- (results) => Validation.productAll(results)
1921
- )
1922
- );
1923
- })(TaskValidation || (TaskValidation = {}));
1924
-
1925
1953
  // src/Core/These.ts
1926
1954
  var These;
1927
1955
  ((These2) => {
@@ -2044,11 +2072,10 @@ var Validation;
2044
2072
  Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
2045
2073
  Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
2046
2074
  Validation2.ap = (arg) => (data) => {
2047
- if ((0, Validation2.isPassed)(data) && (0, Validation2.isPassed)(arg)) {
2048
- 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);
2049
2077
  }
2050
- const errors = [...(0, Validation2.isFailed)(data) ? data.errors : [], ...(0, Validation2.isFailed)(arg) ? arg.errors : []];
2051
- return (0, Validation2.failedAll)(errors);
2078
+ return (0, Validation2.isPassed)(arg) ? (0, Validation2.failedAll)(data.errors) : (0, Validation2.failedAll)([...data.errors, ...arg.errors]);
2052
2079
  };
2053
2080
  Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
2054
2081
  Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
@@ -2071,11 +2098,10 @@ var Validation;
2071
2098
  Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
2072
2099
  Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
2073
2100
  Validation2.product = (first, second) => {
2074
- if ((0, Validation2.isPassed)(first) && (0, Validation2.isPassed)(second)) {
2075
- 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);
2076
2103
  }
2077
- const errors = [...(0, Validation2.isFailed)(first) ? first.errors : [], ...(0, Validation2.isFailed)(second) ? second.errors : []];
2078
- return (0, Validation2.failedAll)(errors);
2104
+ return (0, Validation2.isPassed)(second) ? (0, Validation2.failedAll)(first.errors) : (0, Validation2.failedAll)([...first.errors, ...second.errors]);
2079
2105
  };
2080
2106
  Validation2.productAll = (data) => {
2081
2107
  const values = [];
@@ -2087,7 +2113,7 @@ var Validation;
2087
2113
  errors.push(...v.errors);
2088
2114
  }
2089
2115
  }
2090
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2116
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2091
2117
  };
2092
2118
  Validation2.struct = (fields) => {
2093
2119
  const record = {};
@@ -2102,7 +2128,7 @@ var Validation;
2102
2128
  }
2103
2129
  }
2104
2130
  }
2105
- return errors.length > 0 ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2131
+ return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2106
2132
  };
2107
2133
  })(Validation || (Validation = {}));
2108
2134
 
@@ -2124,10 +2150,8 @@ export {
2124
2150
  Resource,
2125
2151
  Result,
2126
2152
  State,
2153
+ isNonEmptyArr,
2127
2154
  Task,
2128
- TaskMaybe,
2129
- TaskResult3 as TaskResult,
2130
- TaskValidation,
2131
2155
  These,
2132
2156
  Tuple,
2133
2157
  Validation