@nlozgachev/pipelined 0.17.0 → 0.18.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/index.js CHANGED
@@ -26,8 +26,8 @@ __export(src_exports, {
26
26
  Dict: () => Dict,
27
27
  Lens: () => Lens,
28
28
  Logged: () => Logged,
29
+ Maybe: () => Maybe,
29
30
  Num: () => Num,
30
- Option: () => Option,
31
31
  Optional: () => Optional,
32
32
  Predicate: () => Predicate,
33
33
  Reader: () => Reader,
@@ -39,7 +39,7 @@ __export(src_exports, {
39
39
  State: () => State,
40
40
  Str: () => Str,
41
41
  Task: () => Task,
42
- TaskOption: () => TaskOption,
42
+ TaskMaybe: () => TaskMaybe,
43
43
  TaskResult: () => TaskResult,
44
44
  TaskValidation: () => TaskValidation,
45
45
  These: () => These,
@@ -375,37 +375,37 @@ var Result;
375
375
  };
376
376
  Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
377
377
  Result2.recoverUnless = (blockedErr, fallback) => (data) => (0, Result2.isErr)(data) && data.error !== blockedErr ? fallback() : data;
378
- Result2.toOption = (data) => (0, Result2.isOk)(data) ? Option.some(data.value) : Option.none();
378
+ Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
379
379
  Result2.ap = (arg) => (data) => (0, Result2.isOk)(data) && (0, Result2.isOk)(arg) ? (0, Result2.ok)(data.value(arg.value)) : (0, Result2.isErr)(data) ? data : arg;
380
380
  })(Result || (Result = {}));
381
381
 
382
- // src/Core/Option.ts
382
+ // src/Core/Maybe.ts
383
383
  var _none = { kind: "None" };
384
- var Option;
385
- ((Option2) => {
386
- Option2.some = (value) => ({ kind: "Some", value });
387
- Option2.isSome = (data) => data.kind === "Some";
388
- Option2.none = () => _none;
389
- Option2.isNone = (data) => data.kind === "None";
390
- Option2.fromNullable = (value) => value === null || value === void 0 ? (0, Option2.none)() : (0, Option2.some)(value);
391
- Option2.toNullable = (data) => (0, Option2.isSome)(data) ? data.value : null;
392
- Option2.toUndefined = (data) => (0, Option2.isSome)(data) ? data.value : void 0;
393
- Option2.fromUndefined = (value) => value === void 0 ? (0, Option2.none)() : (0, Option2.some)(value);
394
- Option2.toResult = (onNone) => (data) => (0, Option2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
395
- Option2.fromResult = (data) => Result.isOk(data) ? (0, Option2.some)(data.value) : (0, Option2.none)();
396
- Option2.map = (f) => (data) => (0, Option2.isSome)(data) ? (0, Option2.some)(f(data.value)) : data;
397
- Option2.chain = (f) => (data) => (0, Option2.isSome)(data) ? f(data.value) : data;
398
- Option2.fold = (onNone, onSome) => (data) => (0, Option2.isSome)(data) ? onSome(data.value) : onNone();
399
- Option2.match = (cases) => (data) => (0, Option2.isSome)(data) ? cases.some(data.value) : cases.none();
400
- Option2.getOrElse = (defaultValue) => (data) => (0, Option2.isSome)(data) ? data.value : defaultValue();
401
- Option2.tap = (f) => (data) => {
402
- if ((0, Option2.isSome)(data)) f(data.value);
384
+ var Maybe;
385
+ ((Maybe2) => {
386
+ Maybe2.some = (value) => ({ kind: "Some", value });
387
+ Maybe2.isSome = (data) => data.kind === "Some";
388
+ Maybe2.none = () => _none;
389
+ Maybe2.isNone = (data) => data.kind === "None";
390
+ Maybe2.fromNullable = (value) => value === null || value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
391
+ Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
392
+ Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
393
+ Maybe2.fromUndefined = (value) => value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
394
+ Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
395
+ Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
396
+ Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
397
+ Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
398
+ Maybe2.fold = (onNone, onSome) => (data) => (0, Maybe2.isSome)(data) ? onSome(data.value) : onNone();
399
+ Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
400
+ Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
401
+ Maybe2.tap = (f) => (data) => {
402
+ if ((0, Maybe2.isSome)(data)) f(data.value);
403
403
  return data;
404
404
  };
405
- Option2.filter = (predicate) => (data) => (0, Option2.isSome)(data) ? predicate(data.value) ? data : (0, Option2.none)() : data;
406
- Option2.recover = (fallback) => (data) => (0, Option2.isSome)(data) ? data : fallback();
407
- Option2.ap = (arg) => (data) => (0, Option2.isSome)(data) && (0, Option2.isSome)(arg) ? (0, Option2.some)(data.value(arg.value)) : (0, Option2.none)();
408
- })(Option || (Option = {}));
405
+ Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
406
+ Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
407
+ Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
408
+ })(Maybe || (Maybe = {}));
409
409
 
410
410
  // src/Core/Optional.ts
411
411
  var Optional;
@@ -414,12 +414,12 @@ var Optional;
414
414
  Optional2.prop = () => (key) => (0, Optional2.make)(
415
415
  (s) => {
416
416
  const val = s[key];
417
- return val !== null && val !== void 0 ? Option.some(val) : Option.none();
417
+ return val !== null && val !== void 0 ? Maybe.some(val) : Maybe.none();
418
418
  },
419
419
  (a) => (s) => ({ ...s, [key]: a })
420
420
  );
421
421
  Optional2.index = (i) => (0, Optional2.make)(
422
- (arr) => i >= 0 && i < arr.length ? Option.some(arr[i]) : Option.none(),
422
+ (arr) => i >= 0 && i < arr.length ? Maybe.some(arr[i]) : Maybe.none(),
423
423
  (a) => (arr) => {
424
424
  if (i < 0 || i >= arr.length) return arr;
425
425
  const copy = [...arr];
@@ -448,7 +448,7 @@ var Optional;
448
448
  Optional2.andThen = (inner) => (outer) => (0, Optional2.make)(
449
449
  (s) => {
450
450
  const mid = outer.get(s);
451
- return mid.kind === "None" ? Option.none() : inner.get(mid.value);
451
+ return mid.kind === "None" ? Maybe.none() : inner.get(mid.value);
452
452
  },
453
453
  (b) => (s) => {
454
454
  const mid = outer.get(s);
@@ -458,7 +458,7 @@ var Optional;
458
458
  Optional2.andThenLens = (inner) => (outer) => (0, Optional2.make)(
459
459
  (s) => {
460
460
  const mid = outer.get(s);
461
- return mid.kind === "None" ? Option.none() : Option.some(inner.get(mid.value));
461
+ return mid.kind === "None" ? Maybe.none() : Maybe.some(inner.get(mid.value));
462
462
  },
463
463
  (b) => (s) => {
464
464
  const mid = outer.get(s);
@@ -504,7 +504,7 @@ var Refinement;
504
504
  Refinement2.compose = (bc) => (ab) => (a) => ab(a) && bc(a);
505
505
  Refinement2.and = (second) => (first) => (a) => first(a) && second(a);
506
506
  Refinement2.or = (second) => (first) => (a) => first(a) || second(a);
507
- Refinement2.toFilter = (r) => (a) => r(a) ? Option.some(a) : Option.none();
507
+ Refinement2.toFilter = (r) => (a) => r(a) ? Maybe.some(a) : Maybe.none();
508
508
  Refinement2.toResult = (r, onFail) => (a) => r(a) ? Result.ok(a) : Result.err(onFail(a));
509
509
  })(Refinement || (Refinement = {}));
510
510
 
@@ -569,7 +569,7 @@ var RemoteData;
569
569
  return data;
570
570
  };
571
571
  RemoteData2.recover = (fallback) => (data) => (0, RemoteData2.isFailure)(data) ? fallback(data.error) : data;
572
- RemoteData2.toOption = (data) => (0, RemoteData2.isSuccess)(data) ? Option.some(data.value) : Option.none();
572
+ RemoteData2.toMaybe = (data) => (0, RemoteData2.isSuccess)(data) ? Maybe.some(data.value) : Maybe.none();
573
573
  RemoteData2.toResult = (onNotReady) => (data) => (0, RemoteData2.isSuccess)(data) ? Result.ok(data.value) : Result.err((0, RemoteData2.isFailure)(data) ? data.error : onNotReady());
574
574
  })(RemoteData || (RemoteData = {}));
575
575
 
@@ -712,31 +712,31 @@ var State;
712
712
  State2.execute = (initialState) => (st) => st(initialState)[1];
713
713
  })(State || (State = {}));
714
714
 
715
- // src/Core/TaskOption.ts
716
- var TaskOption;
717
- ((TaskOption2) => {
718
- TaskOption2.some = (value) => Task.resolve(Option.some(value));
719
- TaskOption2.none = () => Task.resolve(Option.none());
720
- TaskOption2.fromOption = (option) => Task.resolve(option);
721
- TaskOption2.fromTask = (task) => Task.map(Option.some)(task);
722
- TaskOption2.tryCatch = (f) => Task.from(
723
- () => f().then(Option.some).catch(() => Option.none())
715
+ // src/Core/TaskMaybe.ts
716
+ var TaskMaybe;
717
+ ((TaskMaybe2) => {
718
+ TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
719
+ TaskMaybe2.none = () => Task.resolve(Maybe.none());
720
+ TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
721
+ TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
722
+ TaskMaybe2.tryCatch = (f) => Task.from(
723
+ () => f().then(Maybe.some).catch(() => Maybe.none())
724
724
  );
725
- TaskOption2.map = (f) => (data) => Task.map(Option.map(f))(data);
726
- TaskOption2.chain = (f) => (data) => Task.chain((option) => Option.isSome(option) ? f(option.value) : Task.resolve(Option.none()))(data);
727
- TaskOption2.ap = (arg) => (data) => Task.from(
725
+ TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
726
+ TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
727
+ TaskMaybe2.ap = (arg) => (data) => Task.from(
728
728
  () => Promise.all([
729
729
  Deferred.toPromise(data()),
730
730
  Deferred.toPromise(arg())
731
- ]).then(([of_, oa]) => Option.ap(oa)(of_))
731
+ ]).then(([of_, oa]) => Maybe.ap(oa)(of_))
732
732
  );
733
- TaskOption2.fold = (onNone, onSome) => (data) => Task.map(Option.fold(onNone, onSome))(data);
734
- TaskOption2.match = (cases) => (data) => Task.map(Option.match(cases))(data);
735
- TaskOption2.getOrElse = (defaultValue) => (data) => Task.map(Option.getOrElse(defaultValue))(data);
736
- TaskOption2.tap = (f) => (data) => Task.map(Option.tap(f))(data);
737
- TaskOption2.filter = (predicate) => (data) => Task.map(Option.filter(predicate))(data);
738
- TaskOption2.toTaskResult = (onNone) => (data) => Task.map(Option.toResult(onNone))(data);
739
- })(TaskOption || (TaskOption = {}));
733
+ TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
734
+ TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
735
+ TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
736
+ TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
737
+ TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
738
+ TaskMaybe2.toTaskResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
739
+ })(TaskMaybe || (TaskMaybe = {}));
740
740
 
741
741
  // src/Core/TaskResult.ts
742
742
  var TaskResult;
@@ -772,6 +772,17 @@ var TaskResult;
772
772
  });
773
773
  return run(attempts);
774
774
  });
775
+ TaskResult2.pollUntil = (options) => (task) => Task.from(() => {
776
+ const { when: predicate, delay } = options;
777
+ const getDelay = (attempt) => delay === void 0 ? 0 : typeof delay === "function" ? delay(attempt) : delay;
778
+ const run = (attempt) => Deferred.toPromise(task()).then((result) => {
779
+ if (Result.isErr(result)) return result;
780
+ if (predicate(result.value)) return result;
781
+ const ms = getDelay(attempt);
782
+ return (ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve()).then(() => run(attempt + 1));
783
+ });
784
+ return run(1);
785
+ });
775
786
  TaskResult2.timeout = (ms, onTimeout) => (data) => Task.from(() => {
776
787
  let timerId;
777
788
  return Promise.race([
@@ -970,23 +981,23 @@ var isNonEmptyList = (list) => list.length > 0;
970
981
  // src/Utils/Arr.ts
971
982
  var Arr;
972
983
  ((Arr2) => {
973
- Arr2.head = (data) => data.length > 0 ? Option.some(data[0]) : Option.none();
974
- Arr2.last = (data) => data.length > 0 ? Option.some(data[data.length - 1]) : Option.none();
975
- Arr2.tail = (data) => data.length > 0 ? Option.some(data.slice(1)) : Option.none();
976
- Arr2.init = (data) => data.length > 0 ? Option.some(data.slice(0, -1)) : Option.none();
984
+ Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
985
+ Arr2.last = (data) => data.length > 0 ? Maybe.some(data[data.length - 1]) : Maybe.none();
986
+ Arr2.tail = (data) => data.length > 0 ? Maybe.some(data.slice(1)) : Maybe.none();
987
+ Arr2.init = (data) => data.length > 0 ? Maybe.some(data.slice(0, -1)) : Maybe.none();
977
988
  Arr2.findFirst = (predicate) => (data) => {
978
989
  const idx = data.findIndex(predicate);
979
- return idx >= 0 ? Option.some(data[idx]) : Option.none();
990
+ return idx >= 0 ? Maybe.some(data[idx]) : Maybe.none();
980
991
  };
981
992
  Arr2.findLast = (predicate) => (data) => {
982
993
  for (let i = data.length - 1; i >= 0; i--) {
983
- if (predicate(data[i])) return Option.some(data[i]);
994
+ if (predicate(data[i])) return Maybe.some(data[i]);
984
995
  }
985
- return Option.none();
996
+ return Maybe.none();
986
997
  };
987
998
  Arr2.findIndex = (predicate) => (data) => {
988
999
  const idx = data.findIndex(predicate);
989
- return idx >= 0 ? Option.some(idx) : Option.none();
1000
+ return idx >= 0 ? Maybe.some(idx) : Maybe.none();
990
1001
  };
991
1002
  Arr2.map = (f) => (data) => {
992
1003
  const n = data.length;
@@ -1034,7 +1045,11 @@ var Arr;
1034
1045
  }
1035
1046
  return result;
1036
1047
  };
1037
- Arr2.sortBy = (compare) => (data) => [...data].sort(compare);
1048
+ Arr2.sortBy = (compare) => (data) => {
1049
+ const arr = data;
1050
+ if (typeof arr.toSorted === "function") return arr.toSorted(compare);
1051
+ return [...data].sort(compare);
1052
+ };
1038
1053
  Arr2.zip = (other) => (data) => {
1039
1054
  const len = Math.min(data.length, other.length);
1040
1055
  const result = new Array(len);
@@ -1084,10 +1099,10 @@ var Arr;
1084
1099
  const result = new Array(n);
1085
1100
  for (let i = 0; i < n; i++) {
1086
1101
  const mapped = f(data[i]);
1087
- if (mapped.kind === "None") return Option.none();
1102
+ if (mapped.kind === "None") return Maybe.none();
1088
1103
  result[i] = mapped.value;
1089
1104
  }
1090
- return Option.some(result);
1105
+ return Maybe.some(result);
1091
1106
  };
1092
1107
  Arr2.traverseResult = (f) => (data) => {
1093
1108
  const n = data.length;
@@ -1126,6 +1141,22 @@ var Arr;
1126
1141
  return true;
1127
1142
  };
1128
1143
  Arr2.reverse = (data) => [...data].reverse();
1144
+ Arr2.insertAt = (index, item) => (data) => {
1145
+ const i = Math.max(0, Math.min(index, data.length));
1146
+ const arr = data;
1147
+ if (typeof arr.toSpliced === "function") return arr.toSpliced(i, 0, item);
1148
+ const result = [...data];
1149
+ result.splice(i, 0, item);
1150
+ return result;
1151
+ };
1152
+ Arr2.removeAt = (index) => (data) => {
1153
+ if (index < 0 || index >= data.length) return data;
1154
+ const arr = data;
1155
+ if (typeof arr.toSpliced === "function") return arr.toSpliced(index, 1);
1156
+ const result = [...data];
1157
+ result.splice(index, 1);
1158
+ return result;
1159
+ };
1129
1160
  Arr2.take = (n) => (data) => n <= 0 ? [] : data.slice(0, n);
1130
1161
  Arr2.drop = (n) => (data) => data.slice(n);
1131
1162
  Arr2.takeWhile = (predicate) => (data) => {
@@ -1175,7 +1206,7 @@ var Dict;
1175
1206
  return result;
1176
1207
  };
1177
1208
  Dict2.has = (key) => (m) => m.has(key);
1178
- Dict2.lookup = (key) => (m) => m.has(key) ? Option.some(m.get(key)) : Option.none();
1209
+ Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.some(m.get(key)) : Maybe.none();
1179
1210
  Dict2.size = (m) => m.size;
1180
1211
  Dict2.isEmpty = (m) => m.size === 0;
1181
1212
  Dict2.keys = (m) => [...m.keys()];
@@ -1285,9 +1316,9 @@ var Num;
1285
1316
  Num2.clamp = (min, max) => (n) => Math.min(Math.max(n, min), max);
1286
1317
  Num2.between = (min, max) => (n) => n >= min && n <= max;
1287
1318
  Num2.parse = (s) => {
1288
- if (s.trim() === "") return Option.none();
1319
+ if (s.trim() === "") return Maybe.none();
1289
1320
  const n = Number(s);
1290
- return isNaN(n) ? Option.none() : Option.some(n);
1321
+ return isNaN(n) ? Maybe.none() : Maybe.some(n);
1291
1322
  };
1292
1323
  Num2.add = (b) => (a) => a + b;
1293
1324
  Num2.subtract = (b) => (a) => a - b;
@@ -1330,7 +1361,7 @@ var Rec;
1330
1361
  }
1331
1362
  return result;
1332
1363
  };
1333
- Rec2.lookup = (key) => (data) => Object.hasOwn(data, key) ? Option.some(data[key]) : Option.none();
1364
+ Rec2.lookup = (key) => (data) => Object.hasOwn(data, key) ? { kind: "Some", value: data[key] } : { kind: "None" };
1334
1365
  Rec2.keys = (data) => Object.keys(data);
1335
1366
  Rec2.values = (data) => Object.values(data);
1336
1367
  Rec2.entries = (data) => Object.entries(data);
@@ -1410,7 +1441,7 @@ var Str;
1410
1441
  */
1411
1442
  int: (s) => {
1412
1443
  const n = parseInt(s, 10);
1413
- return isNaN(n) ? Option.none() : Option.some(n);
1444
+ return isNaN(n) ? Maybe.none() : Maybe.some(n);
1414
1445
  },
1415
1446
  /**
1416
1447
  * Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
@@ -1424,7 +1455,7 @@ var Str;
1424
1455
  */
1425
1456
  float: (s) => {
1426
1457
  const n = parseFloat(s);
1427
- return isNaN(n) ? Option.none() : Option.some(n);
1458
+ return isNaN(n) ? Maybe.none() : Maybe.some(n);
1428
1459
  }
1429
1460
  };
1430
1461
  })(Str || (Str = {}));
@@ -1510,8 +1541,8 @@ var Uniq;
1510
1541
  Dict,
1511
1542
  Lens,
1512
1543
  Logged,
1544
+ Maybe,
1513
1545
  Num,
1514
- Option,
1515
1546
  Optional,
1516
1547
  Predicate,
1517
1548
  Reader,
@@ -1523,7 +1554,7 @@ var Uniq;
1523
1554
  State,
1524
1555
  Str,
1525
1556
  Task,
1526
- TaskOption,
1557
+ TaskMaybe,
1527
1558
  TaskResult,
1528
1559
  TaskValidation,
1529
1560
  These,
package/dist/index.mjs CHANGED
@@ -37,13 +37,13 @@ import {
37
37
  RemoteData,
38
38
  Resource,
39
39
  State,
40
- TaskOption,
40
+ TaskMaybe,
41
41
  TaskResult,
42
42
  TaskValidation,
43
43
  These,
44
44
  Tuple,
45
45
  Validation
46
- } from "./chunk-2XKWSZEU.mjs";
46
+ } from "./chunk-UWGFO7BH.mjs";
47
47
  import {
48
48
  Arr,
49
49
  Dict,
@@ -51,13 +51,13 @@ import {
51
51
  Rec,
52
52
  Str,
53
53
  Uniq
54
- } from "./chunk-FAZN3IWZ.mjs";
54
+ } from "./chunk-B3YNH6GZ.mjs";
55
55
  import {
56
56
  Deferred,
57
- Option,
57
+ Maybe,
58
58
  Result,
59
59
  Task
60
- } from "./chunk-QPTGO5AS.mjs";
60
+ } from "./chunk-EAR4TIGH.mjs";
61
61
  import {
62
62
  Brand
63
63
  } from "./chunk-BYWKZLHM.mjs";
@@ -71,8 +71,8 @@ export {
71
71
  Dict,
72
72
  Lens,
73
73
  Logged,
74
+ Maybe,
74
75
  Num,
75
- Option,
76
76
  Optional,
77
77
  Predicate,
78
78
  Reader,
@@ -84,7 +84,7 @@ export {
84
84
  State,
85
85
  Str,
86
86
  Task,
87
- TaskOption,
87
+ TaskMaybe,
88
88
  TaskResult,
89
89
  TaskValidation,
90
90
  These,