@nlozgachev/pipelined 0.33.0 → 0.34.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
@@ -43,44 +43,48 @@ var Deferred;
43
43
  var Result;
44
44
  ((Result2) => {
45
45
  Result2.ok = (value) => ({ kind: "Ok", value });
46
- Result2.error = (e) => ({ kind: "Error", error: e });
46
+ Result2.err = (e) => ({ kind: "Err", error: e });
47
47
  Result2.isOk = (data) => data.kind === "Ok";
48
- Result2.isError = (data) => data.kind === "Error";
48
+ Result2.isErr = (data) => data.kind === "Err";
49
49
  Result2.tryCatch = (f, onError) => {
50
50
  try {
51
51
  return (0, Result2.ok)(f());
52
- } catch (e) {
53
- return (0, Result2.error)(onError(e));
52
+ } catch (error) {
53
+ return (0, Result2.err)(onError(error));
54
54
  }
55
55
  };
56
56
  Result2.map = (f) => (data) => (0, Result2.isOk)(data) ? (0, Result2.ok)(f(data.value)) : data;
57
- Result2.mapError = (f) => (data) => (0, Result2.isError)(data) ? (0, Result2.error)(f(data.error)) : data;
57
+ Result2.mapError = (f) => (data) => (0, Result2.isErr)(data) ? (0, Result2.err)(f(data.error)) : data;
58
58
  Result2.chain = (f) => (data) => (0, Result2.isOk)(data) ? f(data.value) : data;
59
59
  Result2.fold = (onErr, onOk) => (data) => (0, Result2.isOk)(data) ? onOk(data.value) : onErr(data.error);
60
60
  Result2.match = (cases) => (data) => (0, Result2.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
61
61
  Result2.getOrElse = (defaultValue) => (data) => (0, Result2.isOk)(data) ? data.value : defaultValue();
62
62
  Result2.tap = (f) => (data) => {
63
- if ((0, Result2.isOk)(data)) f(data.value);
63
+ if ((0, Result2.isOk)(data)) {
64
+ f(data.value);
65
+ }
64
66
  return data;
65
67
  };
66
68
  Result2.tapError = (f) => (data) => {
67
- if ((0, Result2.isError)(data)) f(data.error);
69
+ if ((0, Result2.isErr)(data)) {
70
+ f(data.error);
71
+ }
68
72
  return data;
69
73
  };
70
- Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.error)(onFalse(a));
71
- Result2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result2.error)(onNull()) : (0, Result2.ok)(value);
72
- Result2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result2.error)(onNone()) : (0, Result2.ok)(maybe.value);
74
+ Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.err)(onFalse(a));
75
+ Result2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result2.err)(onNull()) : (0, Result2.ok)(value);
76
+ Result2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result2.err)(onNone()) : (0, Result2.ok)(maybe.value);
73
77
  Result2.fromThrowable = (f, onError) => (...args) => {
74
78
  try {
75
79
  return (0, Result2.ok)(f(...args));
76
- } catch (e) {
77
- return (0, Result2.error)(onError(e));
80
+ } catch (error) {
81
+ return (0, Result2.err)(onError(error));
78
82
  }
79
83
  };
80
84
  Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
81
- Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isError)(data) && !isBlocked(data.error) ? fallback() : data;
85
+ Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
82
86
  Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
83
- Result2.ap = (arg) => (data) => (0, Result2.isOk)(data) && (0, Result2.isOk)(arg) ? (0, Result2.ok)(data.value(arg.value)) : (0, Result2.isError)(data) ? data : arg;
87
+ 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;
84
88
  })(Result || (Result = {}));
85
89
 
86
90
  // src/Core/Maybe.ts
@@ -95,7 +99,7 @@ var Maybe;
95
99
  Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
96
100
  Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
97
101
  Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
98
- Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.error(onNone());
102
+ Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
99
103
  Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
100
104
  Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
101
105
  Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
@@ -103,7 +107,9 @@ var Maybe;
103
107
  Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
104
108
  Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
105
109
  Maybe2.tap = (f) => (data) => {
106
- if ((0, Maybe2.isSome)(data)) f(data.value);
110
+ if ((0, Maybe2.isSome)(data)) {
111
+ f(data.value);
112
+ }
107
113
  return data;
108
114
  };
109
115
  Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
@@ -138,7 +144,7 @@ var Duration;
138
144
 
139
145
  // src/Core/Task.ts
140
146
  var toPromise = (task, signal) => Deferred.toPromise(task(signal));
141
- var getMs = (ms) => typeof ms === "number" ? ms : Duration.toMilliseconds(ms);
147
+ var getMs = (duration) => Duration.toMilliseconds(duration);
142
148
  var Task;
143
149
  ((Task2) => {
144
150
  Task2.resolve = (value) => () => Deferred.fromPromise(Promise.resolve(value));
@@ -146,12 +152,7 @@ var Task;
146
152
  Task2.fromSync = (f) => () => Deferred.fromPromise(Promise.resolve(f()));
147
153
  Task2.map = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then(f));
148
154
  Task2.chain = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
149
- Task2.ap = (arg) => (data) => (0, Task2.from)(
150
- (signal) => Promise.all([
151
- toPromise(data, signal),
152
- toPromise(arg, signal)
153
- ]).then(([f, a]) => f(a))
154
- );
155
+ Task2.ap = (arg) => (data) => (0, Task2.from)((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
155
156
  Task2.tap = (f) => (data) => (0, Task2.from)(
156
157
  (signal) => toPromise(data, signal).then((a) => {
157
158
  f(a);
@@ -161,35 +162,39 @@ var Task;
161
162
  Task2.all = (tasks) => (0, Task2.from)(
162
163
  (signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
163
164
  );
164
- Task2.delay = (ms) => (data) => (0, Task2.from)(
165
- (signal) => new Promise((resolve2) => {
166
- let timerId = void 0;
165
+ Task2.delay = (duration) => (data) => (0, Task2.from)(
166
+ (signal) => new Promise((res) => {
167
+ let timerId;
167
168
  const onAbort = () => {
168
169
  if (timerId !== void 0) {
169
170
  clearTimeout(timerId);
170
171
  }
171
- resolve2(toPromise(data, signal));
172
+ res(toPromise(data, signal));
172
173
  };
173
174
  if (signal) {
174
175
  if (signal.aborted) {
175
- return resolve2(toPromise(data, signal));
176
+ return res(toPromise(data, signal));
176
177
  }
177
178
  signal.addEventListener("abort", onAbort, { once: true });
178
179
  }
179
180
  timerId = setTimeout(() => {
180
181
  signal?.removeEventListener("abort", onAbort);
181
- resolve2(toPromise(data, signal));
182
- }, getMs(ms));
182
+ res(toPromise(data, signal));
183
+ }, getMs(duration));
183
184
  })
184
185
  );
185
186
  Task2.repeat = (options) => (task) => (0, Task2.from)((signal) => {
186
- const { times, delay: ms } = options;
187
- if (times <= 0) return Promise.resolve([]);
187
+ const { times, delay: delayDuration } = options;
188
+ if (times <= 0) {
189
+ return Promise.resolve([]);
190
+ }
188
191
  const results = [];
189
192
  const wait = () => {
190
- if (signal?.aborted) return Promise.resolve();
193
+ if (signal?.aborted) {
194
+ return Promise.resolve();
195
+ }
191
196
  return new Promise((r) => {
192
- let timerId = void 0;
197
+ let timerId;
193
198
  const onAbort = () => {
194
199
  if (timerId !== void 0) {
195
200
  clearTimeout(timerId);
@@ -202,7 +207,7 @@ var Task;
202
207
  timerId = setTimeout(() => {
203
208
  signal?.removeEventListener("abort", onAbort);
204
209
  r();
205
- }, getMs(ms || 0));
210
+ }, delayDuration ? getMs(delayDuration) : 0);
206
211
  });
207
212
  };
208
213
  const run2 = (left) => {
@@ -211,18 +216,22 @@ var Task;
211
216
  }
212
217
  return toPromise(task, signal).then((a) => {
213
218
  results.push(a);
214
- if (left <= 1 || signal?.aborted) return results;
219
+ if (left <= 1 || signal?.aborted) {
220
+ return results;
221
+ }
215
222
  return wait().then(() => run2(left - 1));
216
223
  });
217
224
  };
218
225
  return run2(times);
219
226
  });
220
227
  Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
221
- const { when: predicate, delay: ms, maxAttempts } = options;
228
+ const { when: predicate, delay: delayDuration, maxAttempts } = options;
222
229
  const wait = () => {
223
- if (signal?.aborted) return Promise.resolve();
230
+ if (signal?.aborted) {
231
+ return Promise.resolve();
232
+ }
224
233
  return new Promise((r) => {
225
- let timerId = void 0;
234
+ let timerId;
226
235
  const onAbort = () => {
227
236
  if (timerId !== void 0) {
228
237
  clearTimeout(timerId);
@@ -235,7 +244,7 @@ var Task;
235
244
  timerId = setTimeout(() => {
236
245
  signal?.removeEventListener("abort", onAbort);
237
246
  r();
238
- }, getMs(ms || 0));
247
+ }, delayDuration ? getMs(delayDuration) : 0);
239
248
  });
240
249
  };
241
250
  const run2 = (attempt, lastValue) => {
@@ -243,9 +252,15 @@ var Task;
243
252
  return Promise.resolve(lastValue);
244
253
  }
245
254
  return toPromise(task, signal).then((a) => {
246
- if (predicate(a)) return a;
247
- if (maxAttempts !== void 0 && attempt >= maxAttempts) return a;
248
- if (signal?.aborted) return a;
255
+ if (predicate(a)) {
256
+ return a;
257
+ }
258
+ if (maxAttempts !== void 0 && attempt >= maxAttempts) {
259
+ return a;
260
+ }
261
+ if (signal?.aborted) {
262
+ return a;
263
+ }
249
264
  return wait().then(() => run2(attempt + 1, a));
250
265
  });
251
266
  };
@@ -259,7 +274,9 @@ var Task;
259
274
  return (0, Task2.from)((outerSignal) => {
260
275
  const controllers = tasks.map(() => new AbortController());
261
276
  const onOuterAbort = () => {
262
- for (const ctrl of controllers) ctrl.abort();
277
+ for (const ctrl of controllers) {
278
+ ctrl.abort();
279
+ }
263
280
  };
264
281
  if (outerSignal) {
265
282
  if (outerSignal.aborted) {
@@ -294,19 +311,19 @@ var Task;
294
311
  }
295
312
  return results;
296
313
  });
297
- Task2.timeout = (ms, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
314
+ Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
298
315
  const controller = new AbortController();
299
316
  let timerId;
300
- const cleanUp = () => {
317
+ function cleanUp() {
301
318
  if (timerId !== void 0) {
302
319
  clearTimeout(timerId);
303
320
  }
304
321
  outerSignal?.removeEventListener("abort", onOuterAbort);
305
- };
306
- const onOuterAbort = () => {
322
+ }
323
+ function onOuterAbort() {
307
324
  cleanUp();
308
325
  controller.abort();
309
- };
326
+ }
310
327
  if (outerSignal) {
311
328
  if (outerSignal.aborted) {
312
329
  controller.abort();
@@ -319,12 +336,12 @@ var Task;
319
336
  cleanUp();
320
337
  return Result.ok(a);
321
338
  }),
322
- new Promise((resolve2) => {
339
+ new Promise((res) => {
323
340
  timerId = setTimeout(() => {
324
341
  controller.abort();
325
342
  cleanUp();
326
- resolve2(Result.error(onTimeout()));
327
- }, getMs(ms));
343
+ res(Result.err(onTimeout()));
344
+ }, getMs(duration));
328
345
  })
329
346
  ]);
330
347
  });
@@ -361,35 +378,43 @@ var Arr;
361
378
  Arr2.init = (data) => data.length > 0 ? Maybe.some(data.slice(0, -1)) : Maybe.none();
362
379
  Arr2.findFirst = (predicate) => (data) => {
363
380
  const idx = data.findIndex(predicate);
364
- return idx >= 0 ? Maybe.some(data[idx]) : Maybe.none();
381
+ return idx !== -1 ? Maybe.some(data[idx]) : Maybe.none();
365
382
  };
366
383
  Arr2.findLast = (predicate) => (data) => {
367
384
  for (let i = data.length - 1; i >= 0; i--) {
368
- if (predicate(data[i])) return Maybe.some(data[i]);
385
+ if (predicate(data[i])) {
386
+ return Maybe.some(data[i]);
387
+ }
369
388
  }
370
389
  return Maybe.none();
371
390
  };
372
391
  Arr2.findIndex = (predicate) => (data) => {
373
392
  const idx = data.findIndex(predicate);
374
- return idx >= 0 ? Maybe.some(idx) : Maybe.none();
393
+ return idx !== -1 ? Maybe.some(idx) : Maybe.none();
375
394
  };
376
395
  Arr2.map = (f) => (data) => {
377
396
  const n = data.length;
378
397
  const result = new Array(n);
379
- for (let i = 0; i < n; i++) result[i] = f(data[i]);
398
+ for (let i = 0; i < n; i++) {
399
+ result[i] = f(data[i]);
400
+ }
380
401
  return result;
381
402
  };
382
403
  Arr2.mapWithIndex = (f) => (data) => {
383
404
  const n = data.length;
384
405
  const result = new Array(n);
385
- for (let i = 0; i < n; i++) result[i] = f(i, data[i]);
406
+ for (let i = 0; i < n; i++) {
407
+ result[i] = f(i, data[i]);
408
+ }
386
409
  return result;
387
410
  };
388
411
  Arr2.filter = (predicate) => (data) => {
389
412
  const n = data.length;
390
413
  const result = [];
391
414
  for (let i = 0; i < n; i++) {
392
- if (predicate(data[i])) result.push(data[i]);
415
+ if (predicate(data[i])) {
416
+ result.push(data[i]);
417
+ }
393
418
  }
394
419
  return result;
395
420
  };
@@ -397,7 +422,9 @@ var Arr;
397
422
  const result = [];
398
423
  for (let i = 0; i < data.length; i++) {
399
424
  const mapped = f(data[i]);
400
- if (mapped.kind === "Some") result.push(mapped.value);
425
+ if (mapped.kind === "Some") {
426
+ result.push(mapped.value);
427
+ }
401
428
  }
402
429
  return result;
403
430
  };
@@ -447,14 +474,14 @@ var Arr;
447
474
  const result = {};
448
475
  for (const a of data) {
449
476
  const key = f(a);
450
- if (!result[key]) result[key] = [];
477
+ if (!result[key]) {
478
+ result[key] = [];
479
+ }
451
480
  result[key].push(a);
452
481
  }
453
482
  return result;
454
483
  };
455
- Arr2.uniq = (data) => [
456
- ...new Set(data)
457
- ];
484
+ Arr2.uniq = (data) => [...new Set(data)];
458
485
  Arr2.uniqBy = (f) => (data) => {
459
486
  const seen = /* @__PURE__ */ new Set();
460
487
  const result = [];
@@ -478,12 +505,16 @@ var Arr;
478
505
  };
479
506
  Arr2.sortBy = (compare) => (data) => {
480
507
  const arr = data;
481
- if (typeof arr.toSorted === "function") return arr.toSorted(compare);
482
- return [...data].sort(compare);
508
+ if (typeof arr.toSorted === "function") {
509
+ return arr.toSorted(compare);
510
+ }
511
+ return [...data].toSorted(compare);
483
512
  };
484
513
  Arr2.sortWith = (ord) => (data) => {
485
514
  const arr = data;
486
- if (typeof arr.toSorted === "function") return arr.toSorted(ord);
515
+ if (typeof arr.toSorted === "function") {
516
+ return arr.toSorted(ord);
517
+ }
487
518
  return [...data].sort(ord);
488
519
  };
489
520
  Arr2.zip = (other) => (data) => {
@@ -503,7 +534,9 @@ var Arr;
503
534
  return result;
504
535
  };
505
536
  Arr2.intersperse = (sep) => (data) => {
506
- if (data.length <= 1) return data;
537
+ if (data.length <= 1) {
538
+ return data;
539
+ }
507
540
  const result = [data[0]];
508
541
  for (let i = 1; i < data.length; i++) {
509
542
  result.push(sep, data[i]);
@@ -511,7 +544,9 @@ var Arr;
511
544
  return result;
512
545
  };
513
546
  Arr2.chunksOf = (n) => (data) => {
514
- if (n <= 0) return [];
547
+ if (n <= 0) {
548
+ return [];
549
+ }
515
550
  const result = [];
516
551
  for (let i = 0; i < data.length; i += n) {
517
552
  result.push(data.slice(i, i + n));
@@ -541,7 +576,9 @@ var Arr;
541
576
  for (let i = 0; i < n; i++) {
542
577
  const chunk = f(data[i]);
543
578
  const m = chunk.length;
544
- for (let j = 0; j < m; j++) result.push(chunk[j]);
579
+ for (let j = 0; j < m; j++) {
580
+ result.push(chunk[j]);
581
+ }
545
582
  }
546
583
  return result;
547
584
  };
@@ -551,7 +588,9 @@ var Arr;
551
588
  const result = new Array(n);
552
589
  for (let i = 0; i < n; i++) {
553
590
  const mapped = f(data[i]);
554
- if (mapped.kind === "None") return Maybe.none();
591
+ if (mapped.kind === "None") {
592
+ return Maybe.none();
593
+ }
555
594
  result[i] = mapped.value;
556
595
  }
557
596
  return Maybe.some(result);
@@ -561,7 +600,9 @@ var Arr;
561
600
  const result = new Array(n);
562
601
  for (let i = 0; i < n; i++) {
563
602
  const mapped = f(data[i]);
564
- if (mapped.kind === "Error") return mapped;
603
+ if (mapped.kind === "Err") {
604
+ return mapped;
605
+ }
565
606
  result[i] = mapped.value;
566
607
  }
567
608
  return Result.ok(result);
@@ -574,7 +615,9 @@ var Arr;
574
615
  const result = [];
575
616
  for (const a of data) {
576
617
  const r = await Deferred.toPromise(f(a)());
577
- if (Result.isError(r)) return r;
618
+ if (Result.isErr(r)) {
619
+ return r;
620
+ }
578
621
  result.push(r.value);
579
622
  }
580
623
  return Result.ok(result);
@@ -584,27 +627,41 @@ var Arr;
584
627
  Arr2.size = (data) => data.length;
585
628
  Arr2.some = (predicate) => (data) => {
586
629
  const n = data.length;
587
- for (let i = 0; i < n; i++) if (predicate(data[i])) return true;
630
+ for (let i = 0; i < n; i++) {
631
+ if (predicate(data[i])) {
632
+ return true;
633
+ }
634
+ }
588
635
  return false;
589
636
  };
590
637
  Arr2.every = (predicate) => (data) => {
591
638
  const n = data.length;
592
- for (let i = 0; i < n; i++) if (!predicate(data[i])) return false;
639
+ for (let i = 0; i < n; i++) {
640
+ if (!predicate(data[i])) {
641
+ return false;
642
+ }
643
+ }
593
644
  return true;
594
645
  };
595
- Arr2.reverse = (data) => [...data].reverse();
646
+ Arr2.reverse = (data) => [...data].toReversed();
596
647
  Arr2.insertAt = (index, item) => (data) => {
597
648
  const i = Math.max(0, Math.min(index, data.length));
598
649
  const arr = data;
599
- if (typeof arr.toSpliced === "function") return arr.toSpliced(i, 0, item);
650
+ if (typeof arr.toSpliced === "function") {
651
+ return arr.toSpliced(i, 0, item);
652
+ }
600
653
  const result = [...data];
601
654
  result.splice(i, 0, item);
602
655
  return result;
603
656
  };
604
657
  Arr2.removeAt = (index) => (data) => {
605
- if (index < 0 || index >= data.length) return data;
658
+ if (index < 0 || index >= data.length) {
659
+ return data;
660
+ }
606
661
  const arr = data;
607
- if (typeof arr.toSpliced === "function") return arr.toSpliced(index, 1);
662
+ if (typeof arr.toSpliced === "function") {
663
+ return arr.toSpliced(index, 1);
664
+ }
608
665
  const result = [...data];
609
666
  result.splice(index, 1);
610
667
  return result;
@@ -614,14 +671,18 @@ var Arr;
614
671
  Arr2.takeWhile = (predicate) => (data) => {
615
672
  const result = [];
616
673
  for (const a of data) {
617
- if (!predicate(a)) break;
674
+ if (!predicate(a)) {
675
+ break;
676
+ }
618
677
  result.push(a);
619
678
  }
620
679
  return result;
621
680
  };
622
681
  Arr2.dropWhile = (predicate) => (data) => {
623
682
  let i = 0;
624
- while (i < data.length && predicate(data[i])) i++;
683
+ while (i < data.length && predicate(data[i])) {
684
+ i++;
685
+ }
625
686
  return data.slice(i);
626
687
  };
627
688
  Arr2.scan = (initial, f) => (data) => {
@@ -652,8 +713,11 @@ var Dict;
652
713
  for (const item of items) {
653
714
  const key = keyFn(item);
654
715
  const arr = result.get(key);
655
- if (arr !== void 0) arr.push(item);
656
- else result.set(key, [item]);
716
+ if (arr !== void 0) {
717
+ arr.push(item);
718
+ } else {
719
+ result.set(key, [item]);
720
+ }
657
721
  }
658
722
  return result;
659
723
  };
@@ -670,7 +734,9 @@ var Dict;
670
734
  return result;
671
735
  };
672
736
  Dict2.remove = (key) => (m) => {
673
- if (!m.has(key)) return m;
737
+ if (!m.has(key)) {
738
+ return m;
739
+ }
674
740
  const result = new globalThis.Map(m);
675
741
  result.delete(key);
676
742
  return result;
@@ -697,21 +763,27 @@ var Dict;
697
763
  Dict2.filter = (predicate) => (m) => {
698
764
  const result = new globalThis.Map();
699
765
  for (const [k, v] of m) {
700
- if (predicate(v)) result.set(k, v);
766
+ if (predicate(v)) {
767
+ result.set(k, v);
768
+ }
701
769
  }
702
770
  return result;
703
771
  };
704
772
  Dict2.filterWithKey = (predicate) => (m) => {
705
773
  const result = new globalThis.Map();
706
774
  for (const [k, v] of m) {
707
- if (predicate(k, v)) result.set(k, v);
775
+ if (predicate(k, v)) {
776
+ result.set(k, v);
777
+ }
708
778
  }
709
779
  return result;
710
780
  };
711
781
  Dict2.compact = (m) => {
712
782
  const result = new globalThis.Map();
713
783
  for (const [k, v] of m) {
714
- if (v.kind === "Some") result.set(k, v.value);
784
+ if (v.kind === "Some") {
785
+ result.set(k, v.value);
786
+ }
715
787
  }
716
788
  return result;
717
789
  };
@@ -719,7 +791,9 @@ var Dict;
719
791
  const result = new globalThis.Map();
720
792
  for (const [key, value] of m) {
721
793
  const mapped = f(value);
722
- if (mapped.kind === "Some") result.set(key, mapped.value);
794
+ if (mapped.kind === "Some") {
795
+ result.set(key, mapped.value);
796
+ }
723
797
  }
724
798
  return result;
725
799
  };
@@ -733,14 +807,18 @@ var Dict;
733
807
  Dict2.intersection = (other) => (m) => {
734
808
  const result = new globalThis.Map();
735
809
  for (const [k, v] of m) {
736
- if (other.has(k)) result.set(k, v);
810
+ if (other.has(k)) {
811
+ result.set(k, v);
812
+ }
737
813
  }
738
814
  return result;
739
815
  };
740
816
  Dict2.difference = (other) => (m) => {
741
817
  const result = new globalThis.Map();
742
818
  for (const [k, v] of m) {
743
- if (!other.has(k)) result.set(k, v);
819
+ if (!other.has(k)) {
820
+ result.set(k, v);
821
+ }
744
822
  }
745
823
  return result;
746
824
  };
@@ -765,7 +843,9 @@ var Dict;
765
843
  var Num;
766
844
  ((Num2) => {
767
845
  Num2.range = (from, to, step = 1) => {
768
- if (step <= 0 || from > to) return [];
846
+ if (step <= 0 || from > to) {
847
+ return [];
848
+ }
769
849
  const count = Math.floor((to - from) / step) + 1;
770
850
  const result = new Array(count);
771
851
  for (let i = 0; i < count; i++) {
@@ -776,7 +856,9 @@ var Num;
776
856
  Num2.clamp = (min2, max2) => (n) => Math.min(Math.max(n, min2), max2);
777
857
  Num2.between = (min2, max2) => (n) => n >= min2 && n <= max2;
778
858
  Num2.parse = (s) => {
779
- if (s.trim() === "") return Maybe.none();
859
+ if (s.trim() === "") {
860
+ return Maybe.none();
861
+ }
780
862
  const n = Number(s);
781
863
  return isNaN(n) ? Maybe.none() : Maybe.some(n);
782
864
  };
@@ -792,23 +874,33 @@ var Num;
792
874
  Num2.remainder = (divisor) => (n) => divisor === 0 ? Maybe.none() : Maybe.some(n % divisor);
793
875
  Num2.sum = (ns) => {
794
876
  let result = 0;
795
- for (let i = 0; i < ns.length; i++) result += ns[i];
877
+ for (let i = 0; i < ns.length; i++) {
878
+ result += ns[i];
879
+ }
796
880
  return result;
797
881
  };
798
882
  Num2.mean = (ns) => ns.length === 0 ? Maybe.none() : Maybe.some((0, Num2.sum)(ns) / ns.length);
799
883
  Num2.min = (ns) => {
800
- if (ns.length === 0) return Maybe.none();
884
+ if (ns.length === 0) {
885
+ return Maybe.none();
886
+ }
801
887
  let [result] = ns;
802
888
  for (let i = 1; i < ns.length; i++) {
803
- if (ns[i] < result) result = ns[i];
889
+ if (ns[i] < result) {
890
+ result = ns[i];
891
+ }
804
892
  }
805
893
  return Maybe.some(result);
806
894
  };
807
895
  Num2.max = (ns) => {
808
- if (ns.length === 0) return Maybe.none();
896
+ if (ns.length === 0) {
897
+ return Maybe.none();
898
+ }
809
899
  let [result] = ns;
810
900
  for (let i = 1; i < ns.length; i++) {
811
- if (ns[i] > result) result = ns[i];
901
+ if (ns[i] > result) {
902
+ result = ns[i];
903
+ }
812
904
  }
813
905
  return Maybe.some(result);
814
906
  };
@@ -820,16 +912,33 @@ var Rec;
820
912
  Rec2.map = (f) => (data) => {
821
913
  const keys2 = Object.keys(data);
822
914
  const vals = Object.values(data);
823
- const result = {};
915
+ const result = Object.create(Object.getPrototypeOf(data));
824
916
  for (let i = 0; i < keys2.length; i++) {
825
917
  Object.defineProperty(result, keys2[i], { value: f(vals[i]), writable: true, enumerable: true, configurable: true });
826
918
  }
827
919
  return result;
828
920
  };
921
+ Rec2.filterMap = (f) => (data) => {
922
+ const keys2 = Object.keys(data);
923
+ const vals = Object.values(data);
924
+ const result = Object.create(Object.getPrototypeOf(data));
925
+ for (let i = 0; i < keys2.length; i++) {
926
+ const maybeVal = f(vals[i]);
927
+ if (maybeVal.kind === "Some") {
928
+ Object.defineProperty(result, keys2[i], {
929
+ value: maybeVal.value,
930
+ writable: true,
931
+ enumerable: true,
932
+ configurable: true
933
+ });
934
+ }
935
+ }
936
+ return result;
937
+ };
829
938
  Rec2.mapWithKey = (f) => (data) => {
830
939
  const keys2 = Object.keys(data);
831
940
  const vals = Object.values(data);
832
- const result = {};
941
+ const result = Object.create(Object.getPrototypeOf(data));
833
942
  for (let i = 0; i < keys2.length; i++) {
834
943
  Object.defineProperty(result, keys2[i], {
835
944
  value: f(keys2[i], vals[i]),
@@ -841,10 +950,12 @@ var Rec;
841
950
  return result;
842
951
  };
843
952
  Rec2.filter = (predicate) => (data) => {
844
- const result = {};
845
- for (const [k, v] of Object.entries(data)) {
846
- if (predicate(v)) {
847
- Object.defineProperty(result, k, { value: v, writable: true, enumerable: true, configurable: true });
953
+ const keys2 = Object.keys(data);
954
+ const vals = Object.values(data);
955
+ const result = Object.create(Object.getPrototypeOf(data));
956
+ for (let i = 0; i < keys2.length; i++) {
957
+ if (predicate(vals[i])) {
958
+ Object.defineProperty(result, keys2[i], { value: vals[i], writable: true, enumerable: true, configurable: true });
848
959
  }
849
960
  }
850
961
  return result;
@@ -977,8 +1088,8 @@ var Str;
977
1088
  Str2.parseJson = (s) => {
978
1089
  try {
979
1090
  return Result.ok(JSON.parse(s));
980
- } catch (e) {
981
- return Result.error(e);
1091
+ } catch (error) {
1092
+ return Result.err(error);
982
1093
  }
983
1094
  };
984
1095
  })(Str || (Str = {}));
@@ -994,20 +1105,28 @@ var Uniq;
994
1105
  Uniq2.isEmpty = (s) => s.size === 0;
995
1106
  Uniq2.isSubsetOf = (other) => (s) => {
996
1107
  const set = s;
997
- if (typeof set.isSubsetOf === "function") return set.isSubsetOf(other);
1108
+ if (typeof set.isSubsetOf === "function") {
1109
+ return set.isSubsetOf(other);
1110
+ }
998
1111
  for (const item of s) {
999
- if (!other.has(item)) return false;
1112
+ if (!other.has(item)) {
1113
+ return false;
1114
+ }
1000
1115
  }
1001
1116
  return true;
1002
1117
  };
1003
1118
  Uniq2.insert = (item) => (s) => {
1004
- if (s.has(item)) return s;
1119
+ if (s.has(item)) {
1120
+ return s;
1121
+ }
1005
1122
  const result = new globalThis.Set(s);
1006
1123
  result.add(item);
1007
1124
  return result;
1008
1125
  };
1009
1126
  Uniq2.remove = (item) => (s) => {
1010
- if (!s.has(item)) return s;
1127
+ if (!s.has(item)) {
1128
+ return s;
1129
+ }
1011
1130
  const result = new globalThis.Set(s);
1012
1131
  result.delete(item);
1013
1132
  return result;
@@ -1022,29 +1141,47 @@ var Uniq;
1022
1141
  Uniq2.filter = (predicate) => (s) => {
1023
1142
  const result = new globalThis.Set();
1024
1143
  for (const item of s) {
1025
- if (predicate(item)) result.add(item);
1144
+ if (predicate(item)) {
1145
+ result.add(item);
1146
+ }
1026
1147
  }
1027
1148
  return result;
1028
1149
  };
1029
1150
  Uniq2.union = (other) => (s) => {
1030
1151
  const set = s;
1031
- if (typeof set.union === "function") return set.union(other);
1152
+ if (typeof set.union === "function") {
1153
+ return set.union(other);
1154
+ }
1032
1155
  const result = new globalThis.Set(s);
1033
- for (const item of other) result.add(item);
1156
+ for (const item of other) {
1157
+ result.add(item);
1158
+ }
1034
1159
  return result;
1035
1160
  };
1036
1161
  Uniq2.intersection = (other) => (s) => {
1037
1162
  const set = s;
1038
- if (typeof set.intersection === "function") return set.intersection(other);
1163
+ if (typeof set.intersection === "function") {
1164
+ return set.intersection(other);
1165
+ }
1039
1166
  const result = new globalThis.Set();
1040
- for (const item of s) if (other.has(item)) result.add(item);
1167
+ for (const item of s) {
1168
+ if (other.has(item)) {
1169
+ result.add(item);
1170
+ }
1171
+ }
1041
1172
  return result;
1042
1173
  };
1043
1174
  Uniq2.difference = (other) => (s) => {
1044
1175
  const set = s;
1045
- if (typeof set.difference === "function") return set.difference(other);
1176
+ if (typeof set.difference === "function") {
1177
+ return set.difference(other);
1178
+ }
1046
1179
  const result = new globalThis.Set();
1047
- for (const item of s) if (!other.has(item)) result.add(item);
1180
+ for (const item of s) {
1181
+ if (!other.has(item)) {
1182
+ result.add(item);
1183
+ }
1184
+ }
1048
1185
  return result;
1049
1186
  };
1050
1187
  Uniq2.reduce = (init, f) => (s) => {