@nlozgachev/pipelined 0.16.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/utils.js CHANGED
@@ -67,37 +67,37 @@ var Result;
67
67
  };
68
68
  Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
69
69
  Result2.recoverUnless = (blockedErr, fallback) => (data) => (0, Result2.isErr)(data) && data.error !== blockedErr ? fallback() : data;
70
- Result2.toOption = (data) => (0, Result2.isOk)(data) ? Option.some(data.value) : Option.none();
70
+ Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
71
71
  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;
72
72
  })(Result || (Result = {}));
73
73
 
74
- // src/Core/Option.ts
74
+ // src/Core/Maybe.ts
75
75
  var _none = { kind: "None" };
76
- var Option;
77
- ((Option2) => {
78
- Option2.some = (value) => ({ kind: "Some", value });
79
- Option2.isSome = (data) => data.kind === "Some";
80
- Option2.none = () => _none;
81
- Option2.isNone = (data) => data.kind === "None";
82
- Option2.fromNullable = (value) => value === null || value === void 0 ? (0, Option2.none)() : (0, Option2.some)(value);
83
- Option2.toNullable = (data) => (0, Option2.isSome)(data) ? data.value : null;
84
- Option2.toUndefined = (data) => (0, Option2.isSome)(data) ? data.value : void 0;
85
- Option2.fromUndefined = (value) => value === void 0 ? (0, Option2.none)() : (0, Option2.some)(value);
86
- Option2.toResult = (onNone) => (data) => (0, Option2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
87
- Option2.fromResult = (data) => Result.isOk(data) ? (0, Option2.some)(data.value) : (0, Option2.none)();
88
- Option2.map = (f) => (data) => (0, Option2.isSome)(data) ? (0, Option2.some)(f(data.value)) : data;
89
- Option2.chain = (f) => (data) => (0, Option2.isSome)(data) ? f(data.value) : data;
90
- Option2.fold = (onNone, onSome) => (data) => (0, Option2.isSome)(data) ? onSome(data.value) : onNone();
91
- Option2.match = (cases) => (data) => (0, Option2.isSome)(data) ? cases.some(data.value) : cases.none();
92
- Option2.getOrElse = (defaultValue) => (data) => (0, Option2.isSome)(data) ? data.value : defaultValue();
93
- Option2.tap = (f) => (data) => {
94
- if ((0, Option2.isSome)(data)) f(data.value);
76
+ var Maybe;
77
+ ((Maybe2) => {
78
+ Maybe2.some = (value) => ({ kind: "Some", value });
79
+ Maybe2.isSome = (data) => data.kind === "Some";
80
+ Maybe2.none = () => _none;
81
+ Maybe2.isNone = (data) => data.kind === "None";
82
+ Maybe2.fromNullable = (value) => value === null || value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
83
+ Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
84
+ Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
85
+ Maybe2.fromUndefined = (value) => value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
86
+ Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
87
+ Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
88
+ Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
89
+ Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
90
+ Maybe2.fold = (onNone, onSome) => (data) => (0, Maybe2.isSome)(data) ? onSome(data.value) : onNone();
91
+ Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
92
+ Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
93
+ Maybe2.tap = (f) => (data) => {
94
+ if ((0, Maybe2.isSome)(data)) f(data.value);
95
95
  return data;
96
96
  };
97
- Option2.filter = (predicate) => (data) => (0, Option2.isSome)(data) ? predicate(data.value) ? data : (0, Option2.none)() : data;
98
- Option2.recover = (fallback) => (data) => (0, Option2.isSome)(data) ? data : fallback();
99
- Option2.ap = (arg) => (data) => (0, Option2.isSome)(data) && (0, Option2.isSome)(arg) ? (0, Option2.some)(data.value(arg.value)) : (0, Option2.none)();
100
- })(Option || (Option = {}));
97
+ Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
98
+ Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
99
+ Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
100
+ })(Maybe || (Maybe = {}));
101
101
 
102
102
  // src/Core/Task.ts
103
103
  var toPromise = (task) => Deferred.toPromise(task());
@@ -179,23 +179,23 @@ var isNonEmptyList = (list) => list.length > 0;
179
179
  // src/Utils/Arr.ts
180
180
  var Arr;
181
181
  ((Arr2) => {
182
- Arr2.head = (data) => data.length > 0 ? Option.some(data[0]) : Option.none();
183
- Arr2.last = (data) => data.length > 0 ? Option.some(data[data.length - 1]) : Option.none();
184
- Arr2.tail = (data) => data.length > 0 ? Option.some(data.slice(1)) : Option.none();
185
- Arr2.init = (data) => data.length > 0 ? Option.some(data.slice(0, -1)) : Option.none();
182
+ Arr2.head = (data) => data.length > 0 ? Maybe.some(data[0]) : Maybe.none();
183
+ Arr2.last = (data) => data.length > 0 ? Maybe.some(data[data.length - 1]) : Maybe.none();
184
+ Arr2.tail = (data) => data.length > 0 ? Maybe.some(data.slice(1)) : Maybe.none();
185
+ Arr2.init = (data) => data.length > 0 ? Maybe.some(data.slice(0, -1)) : Maybe.none();
186
186
  Arr2.findFirst = (predicate) => (data) => {
187
187
  const idx = data.findIndex(predicate);
188
- return idx >= 0 ? Option.some(data[idx]) : Option.none();
188
+ return idx >= 0 ? Maybe.some(data[idx]) : Maybe.none();
189
189
  };
190
190
  Arr2.findLast = (predicate) => (data) => {
191
191
  for (let i = data.length - 1; i >= 0; i--) {
192
- if (predicate(data[i])) return Option.some(data[i]);
192
+ if (predicate(data[i])) return Maybe.some(data[i]);
193
193
  }
194
- return Option.none();
194
+ return Maybe.none();
195
195
  };
196
196
  Arr2.findIndex = (predicate) => (data) => {
197
197
  const idx = data.findIndex(predicate);
198
- return idx >= 0 ? Option.some(idx) : Option.none();
198
+ return idx >= 0 ? Maybe.some(idx) : Maybe.none();
199
199
  };
200
200
  Arr2.map = (f) => (data) => {
201
201
  const n = data.length;
@@ -243,7 +243,11 @@ var Arr;
243
243
  }
244
244
  return result;
245
245
  };
246
- Arr2.sortBy = (compare) => (data) => [...data].sort(compare);
246
+ Arr2.sortBy = (compare) => (data) => {
247
+ const arr = data;
248
+ if (typeof arr.toSorted === "function") return arr.toSorted(compare);
249
+ return [...data].sort(compare);
250
+ };
247
251
  Arr2.zip = (other) => (data) => {
248
252
  const len = Math.min(data.length, other.length);
249
253
  const result = new Array(len);
@@ -293,10 +297,10 @@ var Arr;
293
297
  const result = new Array(n);
294
298
  for (let i = 0; i < n; i++) {
295
299
  const mapped = f(data[i]);
296
- if (mapped.kind === "None") return Option.none();
300
+ if (mapped.kind === "None") return Maybe.none();
297
301
  result[i] = mapped.value;
298
302
  }
299
- return Option.some(result);
303
+ return Maybe.some(result);
300
304
  };
301
305
  Arr2.traverseResult = (f) => (data) => {
302
306
  const n = data.length;
@@ -335,6 +339,22 @@ var Arr;
335
339
  return true;
336
340
  };
337
341
  Arr2.reverse = (data) => [...data].reverse();
342
+ Arr2.insertAt = (index, item) => (data) => {
343
+ const i = Math.max(0, Math.min(index, data.length));
344
+ const arr = data;
345
+ if (typeof arr.toSpliced === "function") return arr.toSpliced(i, 0, item);
346
+ const result = [...data];
347
+ result.splice(i, 0, item);
348
+ return result;
349
+ };
350
+ Arr2.removeAt = (index) => (data) => {
351
+ if (index < 0 || index >= data.length) return data;
352
+ const arr = data;
353
+ if (typeof arr.toSpliced === "function") return arr.toSpliced(index, 1);
354
+ const result = [...data];
355
+ result.splice(index, 1);
356
+ return result;
357
+ };
338
358
  Arr2.take = (n) => (data) => n <= 0 ? [] : data.slice(0, n);
339
359
  Arr2.drop = (n) => (data) => data.slice(n);
340
360
  Arr2.takeWhile = (predicate) => (data) => {
@@ -384,7 +404,7 @@ var Dict;
384
404
  return result;
385
405
  };
386
406
  Dict2.has = (key) => (m) => m.has(key);
387
- Dict2.lookup = (key) => (m) => m.has(key) ? Option.some(m.get(key)) : Option.none();
407
+ Dict2.lookup = (key) => (m) => m.has(key) ? Maybe.some(m.get(key)) : Maybe.none();
388
408
  Dict2.size = (m) => m.size;
389
409
  Dict2.isEmpty = (m) => m.size === 0;
390
410
  Dict2.keys = (m) => [...m.keys()];
@@ -494,9 +514,9 @@ var Num;
494
514
  Num2.clamp = (min, max) => (n) => Math.min(Math.max(n, min), max);
495
515
  Num2.between = (min, max) => (n) => n >= min && n <= max;
496
516
  Num2.parse = (s) => {
497
- if (s.trim() === "") return Option.none();
517
+ if (s.trim() === "") return Maybe.none();
498
518
  const n = Number(s);
499
- return isNaN(n) ? Option.none() : Option.some(n);
519
+ return isNaN(n) ? Maybe.none() : Maybe.some(n);
500
520
  };
501
521
  Num2.add = (b) => (a) => a + b;
502
522
  Num2.subtract = (b) => (a) => a - b;
@@ -539,7 +559,7 @@ var Rec;
539
559
  }
540
560
  return result;
541
561
  };
542
- Rec2.lookup = (key) => (data) => Object.hasOwn(data, key) ? Option.some(data[key]) : Option.none();
562
+ Rec2.lookup = (key) => (data) => Object.hasOwn(data, key) ? { kind: "Some", value: data[key] } : { kind: "None" };
543
563
  Rec2.keys = (data) => Object.keys(data);
544
564
  Rec2.values = (data) => Object.values(data);
545
565
  Rec2.entries = (data) => Object.entries(data);
@@ -619,7 +639,7 @@ var Str;
619
639
  */
620
640
  int: (s) => {
621
641
  const n = parseInt(s, 10);
622
- return isNaN(n) ? Option.none() : Option.some(n);
642
+ return isNaN(n) ? Maybe.none() : Maybe.some(n);
623
643
  },
624
644
  /**
625
645
  * Parses a string as a floating-point number. Returns `None` if the result is `NaN`.
@@ -633,7 +653,7 @@ var Str;
633
653
  */
634
654
  float: (s) => {
635
655
  const n = parseFloat(s);
636
- return isNaN(n) ? Option.none() : Option.some(n);
656
+ return isNaN(n) ? Maybe.none() : Maybe.some(n);
637
657
  }
638
658
  };
639
659
  })(Str || (Str = {}));
package/dist/utils.mjs CHANGED
@@ -5,8 +5,8 @@ import {
5
5
  Rec,
6
6
  Str,
7
7
  Uniq
8
- } from "./chunk-FAZN3IWZ.mjs";
9
- import "./chunk-QPTGO5AS.mjs";
8
+ } from "./chunk-B3YNH6GZ.mjs";
9
+ import "./chunk-EAR4TIGH.mjs";
10
10
  import "./chunk-DBIC62UV.mjs";
11
11
  export {
12
12
  Arr,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlozgachev/pipelined",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "Simple functional programming toolkit for TypeScript",
5
5
  "license": "BSD-3-Clause",
6
6
  "homepage": "https://pipelined.lozgachev.dev",