@nlozgachev/pipelined 0.28.0 → 0.30.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
@@ -351,18 +351,18 @@ var Logged;
351
351
  var Result;
352
352
  ((Result2) => {
353
353
  Result2.ok = (value) => ({ kind: "Ok", value });
354
- Result2.err = (error) => ({ kind: "Error", error });
354
+ Result2.error = (e) => ({ kind: "Error", error: e });
355
355
  Result2.isOk = (data) => data.kind === "Ok";
356
- Result2.isErr = (data) => data.kind === "Error";
356
+ Result2.isError = (data) => data.kind === "Error";
357
357
  Result2.tryCatch = (f, onError) => {
358
358
  try {
359
359
  return (0, Result2.ok)(f());
360
360
  } catch (e) {
361
- return (0, Result2.err)(onError(e));
361
+ return (0, Result2.error)(onError(e));
362
362
  }
363
363
  };
364
364
  Result2.map = (f) => (data) => (0, Result2.isOk)(data) ? (0, Result2.ok)(f(data.value)) : data;
365
- Result2.mapError = (f) => (data) => (0, Result2.isErr)(data) ? (0, Result2.err)(f(data.error)) : data;
365
+ Result2.mapError = (f) => (data) => (0, Result2.isError)(data) ? (0, Result2.error)(f(data.error)) : data;
366
366
  Result2.chain = (f) => (data) => (0, Result2.isOk)(data) ? f(data.value) : data;
367
367
  Result2.fold = (onErr, onOk) => (data) => (0, Result2.isOk)(data) ? onOk(data.value) : onErr(data.error);
368
368
  Result2.match = (cases) => (data) => (0, Result2.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
@@ -372,14 +372,14 @@ var Result;
372
372
  return data;
373
373
  };
374
374
  Result2.tapError = (f) => (data) => {
375
- if ((0, Result2.isErr)(data)) f(data.error);
375
+ if ((0, Result2.isError)(data)) f(data.error);
376
376
  return data;
377
377
  };
378
- Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.err)(onFalse(a));
378
+ Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.error)(onFalse(a));
379
379
  Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
380
- Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
380
+ Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isError)(data) && !isBlocked(data.error) ? fallback() : data;
381
381
  Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
382
- 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;
382
+ 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;
383
383
  })(Result || (Result = {}));
384
384
 
385
385
  // src/Core/Maybe.ts
@@ -394,7 +394,7 @@ var Maybe;
394
394
  Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
395
395
  Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
396
396
  Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
397
- Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
397
+ Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.error(onNone());
398
398
  Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
399
399
  Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
400
400
  Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
@@ -411,14 +411,14 @@ var Maybe;
411
411
  })(Maybe || (Maybe = {}));
412
412
 
413
413
  // src/internal/Op.util.ts
414
- var _abortedNil = { kind: "Nil", reason: "aborted" };
415
- var _droppedNil = { kind: "Nil", reason: "dropped" };
416
- var _replacedNil = { kind: "Nil", reason: "replaced" };
417
- var _evictedNil = { kind: "Nil", reason: "evicted" };
414
+ var _abortedNil = { kind: "OpNil", reason: "aborted" };
415
+ var _droppedNil = { kind: "OpNil", reason: "dropped" };
416
+ var _replacedNil = { kind: "OpNil", reason: "replaced" };
417
+ var _evictedNil = { kind: "OpNil", reason: "evicted" };
418
418
  var _idle = { kind: "Idle" };
419
419
  var _pending = { kind: "Pending" };
420
- var ok = (value) => ({ kind: "Ok", value });
421
- var err = (error) => ({ kind: "Err", error });
420
+ var ok = (value) => ({ kind: "OpOk", value });
421
+ var err = (error) => ({ kind: "OpError", error });
422
422
  var cancellableWait = (ms, signal) => {
423
423
  if (ms <= 0) return Promise.resolve();
424
424
  return new Promise((resolve) => {
@@ -541,6 +541,12 @@ var makeRestartable = (op, minInterval, retryOptions, timeoutOptions) => {
541
541
  subscribers.add(cb);
542
542
  if (currentState.kind !== "Idle") cb(currentState);
543
543
  return () => subscribers.delete(cb);
544
+ },
545
+ reset: () => emit(_idle),
546
+ poll: (input, { interval }) => {
547
+ void run(input);
548
+ const id = setInterval(() => void run(input), interval);
549
+ return () => clearInterval(id);
544
550
  }
545
551
  };
546
552
  };
@@ -605,6 +611,12 @@ var makeExclusive = (op, cooldown, retryOptions, timeoutOptions) => {
605
611
  subscribers.add(cb);
606
612
  if (currentState.kind !== "Idle") cb(currentState);
607
613
  return () => subscribers.delete(cb);
614
+ },
615
+ reset: () => emit(_idle),
616
+ poll: (input, { interval }) => {
617
+ void run(input);
618
+ const id = setInterval(() => void run(input), interval);
619
+ return () => clearInterval(id);
608
620
  }
609
621
  };
610
622
  };
@@ -704,6 +716,12 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
704
716
  subscribers.add(cb);
705
717
  if (currentState.kind !== "Idle") cb(currentState);
706
718
  return () => subscribers.delete(cb);
719
+ },
720
+ reset: () => emit(_idle),
721
+ poll: (input, { interval }) => {
722
+ void run(input);
723
+ const id = setInterval(() => void run(input), interval);
724
+ return () => clearInterval(id);
707
725
  }
708
726
  };
709
727
  };
@@ -774,6 +792,12 @@ var makeBuffered = (op, size, retryOptions, timeoutOptions) => {
774
792
  subscribers.add(cb);
775
793
  if (currentState.kind !== "Idle") cb(currentState);
776
794
  return () => subscribers.delete(cb);
795
+ },
796
+ reset: () => emit(_idle),
797
+ poll: (input, { interval }) => {
798
+ void run(input);
799
+ const id = setInterval(() => void run(input), interval);
800
+ return () => clearInterval(id);
777
801
  }
778
802
  };
779
803
  };
@@ -896,6 +920,12 @@ var makeDebounced = (op, ms, leading, maxWait, retryOptions, timeoutOptions) =>
896
920
  subscribers.add(cb);
897
921
  if (currentState.kind !== "Idle") cb(currentState);
898
922
  return () => subscribers.delete(cb);
923
+ },
924
+ reset: () => emit(_idle),
925
+ poll: (input, { interval }) => {
926
+ void run(input);
927
+ const id = setInterval(() => void run(input), interval);
928
+ return () => clearInterval(id);
899
929
  }
900
930
  };
901
931
  };
@@ -988,6 +1018,12 @@ var makeThrottled = (op, ms, trailing, retryOptions, timeoutOptions) => {
988
1018
  subscribers.add(cb);
989
1019
  if (currentState.kind !== "Idle") cb(currentState);
990
1020
  return () => subscribers.delete(cb);
1021
+ },
1022
+ reset: () => emit(_idle),
1023
+ poll: (input, { interval }) => {
1024
+ void run(input);
1025
+ const id = setInterval(() => void run(input), interval);
1026
+ return () => clearInterval(id);
991
1027
  }
992
1028
  };
993
1029
  };
@@ -1069,6 +1105,12 @@ var makeConcurrent = (op, n, overflow, retryOptions, timeoutOptions) => {
1069
1105
  subscribers.add(cb);
1070
1106
  if (currentState.kind !== "Idle") cb(currentState);
1071
1107
  return () => subscribers.delete(cb);
1108
+ },
1109
+ reset: () => emit(_idle),
1110
+ poll: (input, { interval }) => {
1111
+ void run(input);
1112
+ const id = setInterval(() => void run(input), interval);
1113
+ return () => clearInterval(id);
1072
1114
  }
1073
1115
  };
1074
1116
  };
@@ -1145,6 +1187,15 @@ var makeKeyed = (op, keyFn, perKey, timeoutOptions) => {
1145
1187
  subscribers.add(cb);
1146
1188
  if (stateMap.size > 0) cb(new Map(stateMap));
1147
1189
  return () => subscribers.delete(cb);
1190
+ },
1191
+ reset: () => {
1192
+ stateMap.clear();
1193
+ emitSnapshot();
1194
+ },
1195
+ poll: (input, { interval }) => {
1196
+ void run(input);
1197
+ const id = setInterval(() => void run(input), interval);
1198
+ return () => clearInterval(id);
1148
1199
  }
1149
1200
  };
1150
1201
  };
@@ -1199,6 +1250,12 @@ var makeOnce = (op, retryOptions, timeoutOptions) => {
1199
1250
  subscribers.add(cb);
1200
1251
  if (currentState.kind !== "Idle") cb(currentState);
1201
1252
  return () => subscribers.delete(cb);
1253
+ },
1254
+ reset: () => emit(_idle),
1255
+ poll: (input, { interval }) => {
1256
+ void run(input);
1257
+ const id = setInterval(() => void run(input), interval);
1258
+ return () => clearInterval(id);
1202
1259
  }
1203
1260
  };
1204
1261
  };
@@ -1206,44 +1263,59 @@ var makeOnce = (op, retryOptions, timeoutOptions) => {
1206
1263
  // src/Core/Op.ts
1207
1264
  var Op;
1208
1265
  ((Op2) => {
1209
- Op2.nil = (reason) => ({ kind: "Nil", reason });
1266
+ Op2.nil = (reason) => ({ kind: "OpNil", reason });
1210
1267
  Op2.create = (factory, onError) => ({
1211
1268
  _factory: (input, signal) => Deferred.fromPromise(
1212
- factory(signal)(input).then((value) => Result.ok(value)).catch((e) => signal.aborted ? null : Result.err(onError(e)))
1269
+ factory(signal)(input).then((value) => Result.ok(value)).catch((e) => signal.aborted ? null : Result.error(onError(e)))
1213
1270
  )
1214
1271
  });
1215
- Op2.ok = (value) => ({ kind: "Ok", value });
1216
- Op2.err = (error) => ({ kind: "Err", error });
1217
- Op2.isOk = (outcome) => outcome.kind === "Ok";
1218
- Op2.isErr = (outcome) => outcome.kind === "Err";
1219
- Op2.isNil = (outcome) => outcome.kind === "Nil";
1272
+ Op2.lift = (f) => (0, Op2.create)(
1273
+ (signal) => (input) => f(input, signal),
1274
+ (e) => e
1275
+ );
1276
+ Op2.ok = (value) => ({ kind: "OpOk", value });
1277
+ Op2.error = (error2) => ({ kind: "OpError", error: error2 });
1278
+ Op2.isIdle = (state) => state.kind === "Idle";
1279
+ Op2.isPending = (state) => state.kind === "Pending";
1280
+ Op2.isQueued = (state) => state.kind === "Queued";
1281
+ Op2.isRetrying = (state) => state.kind === "Retrying";
1282
+ Op2.isOk = (state) => state.kind === "OpOk";
1283
+ Op2.isError = (state) => state.kind === "OpError";
1284
+ Op2.isNil = (state) => state.kind === "OpNil";
1220
1285
  Op2.match = (cases) => (outcome) => {
1221
- if (outcome.kind === "Ok") return cases.ok(outcome.value);
1222
- if (outcome.kind === "Err") return cases.err(outcome.error);
1286
+ if (outcome.kind === "OpOk") return cases.ok(outcome.value);
1287
+ if (outcome.kind === "OpError") return cases.error(outcome.error);
1223
1288
  return cases.nil();
1224
1289
  };
1225
- Op2.fold = (onErr, onOk, onNil) => (outcome) => {
1226
- if (outcome.kind === "Ok") return onOk(outcome.value);
1227
- if (outcome.kind === "Err") return onErr(outcome.error);
1290
+ Op2.fold = (onError, onOk, onNil) => (outcome) => {
1291
+ if (outcome.kind === "OpOk") return onOk(outcome.value);
1292
+ if (outcome.kind === "OpError") return onError(outcome.error);
1228
1293
  return onNil();
1229
1294
  };
1230
- Op2.getOrElse = (defaultValue) => (outcome) => outcome.kind === "Ok" ? outcome.value : defaultValue();
1231
- Op2.map = (f) => (outcome) => outcome.kind === "Ok" ? (0, Op2.ok)(f(outcome.value)) : outcome;
1232
- Op2.mapError = (f) => (outcome) => outcome.kind === "Err" ? (0, Op2.err)(f(outcome.error)) : outcome;
1233
- Op2.chain = (f) => (outcome) => outcome.kind === "Ok" ? f(outcome.value) : outcome;
1295
+ Op2.getOrElse = (defaultValue) => (outcome) => outcome.kind === "OpOk" ? outcome.value : defaultValue();
1296
+ Op2.map = (f) => (outcome) => outcome.kind === "OpOk" ? (0, Op2.ok)(f(outcome.value)) : outcome;
1297
+ Op2.mapError = (f) => (outcome) => outcome.kind === "OpError" ? (0, Op2.error)(f(outcome.error)) : outcome;
1298
+ Op2.chain = (f) => (outcome) => outcome.kind === "OpOk" ? f(outcome.value) : outcome;
1234
1299
  Op2.tap = (f) => (outcome) => {
1235
- if (outcome.kind === "Ok") f(outcome.value);
1300
+ if (outcome.kind === "OpOk") f(outcome.value);
1236
1301
  return outcome;
1237
1302
  };
1238
- Op2.recover = (f) => (outcome) => outcome.kind === "Err" ? f(outcome.error) : outcome;
1303
+ Op2.recover = (f) => (outcome) => outcome.kind === "OpError" ? f(outcome.error) : outcome;
1239
1304
  Op2.toResult = (onNil) => (outcome) => {
1240
- if (outcome.kind === "Ok") return Result.ok(outcome.value);
1241
- if (outcome.kind === "Err") return Result.err(outcome.error);
1242
- return Result.err(onNil());
1305
+ if (outcome.kind === "OpOk") return Result.ok(outcome.value);
1306
+ if (outcome.kind === "OpError") return Result.error(outcome.error);
1307
+ return Result.error(onNil());
1243
1308
  };
1244
- Op2.toMaybe = (outcome) => outcome.kind === "Ok" ? Maybe.some(outcome.value) : Maybe.none();
1309
+ Op2.toMaybe = (outcome) => outcome.kind === "OpOk" ? Maybe.some(outcome.value) : Maybe.none();
1245
1310
  Op2.all = (invocations) => Deferred.fromPromise(Promise.all(invocations.map(Deferred.toPromise)));
1246
1311
  Op2.race = (invocations) => Deferred.fromPromise(Promise.race(invocations.map(Deferred.toPromise)));
1312
+ Op2.wire = (source, f) => source.subscribe((state) => {
1313
+ if ((0, Op2.isOk)(state)) f(state.value);
1314
+ });
1315
+ Op2.wireAll = (...pairs) => {
1316
+ const cleanups = pairs.map(([source, f]) => (0, Op2.wire)(source, f));
1317
+ return () => cleanups.forEach((c) => c());
1318
+ };
1247
1319
  function interpret(op, options) {
1248
1320
  const { strategy, retry: retryOptions, timeout: timeoutOptions } = options;
1249
1321
  switch (strategy) {
@@ -1382,7 +1454,7 @@ var Refinement;
1382
1454
  Refinement2.and = (second) => (first) => (a) => first(a) && second(a);
1383
1455
  Refinement2.or = (second) => (first) => (a) => first(a) || second(a);
1384
1456
  Refinement2.toFilter = (r) => (a) => r(a) ? Maybe.some(a) : Maybe.none();
1385
- Refinement2.toResult = (r, onFail) => (a) => r(a) ? Result.ok(a) : Result.err(onFail(a));
1457
+ Refinement2.toResult = (r, onFail) => (a) => r(a) ? Result.ok(a) : Result.error(onFail(a));
1386
1458
  })(Refinement || (Refinement = {}));
1387
1459
 
1388
1460
  // src/Core/RemoteData.ts
@@ -1451,9 +1523,10 @@ var RemoteData;
1451
1523
  };
1452
1524
  RemoteData2.recover = (fallback) => (data) => (0, RemoteData2.isFailure)(data) ? fallback(data.error) : data;
1453
1525
  RemoteData2.toMaybe = (data) => (0, RemoteData2.isSuccess)(data) ? Maybe.some(data.value) : Maybe.none();
1454
- RemoteData2.toResult = (onNotReady) => (data) => (0, RemoteData2.isSuccess)(data) ? Result.ok(data.value) : Result.err((0, RemoteData2.isFailure)(data) ? data.error : onNotReady());
1526
+ RemoteData2.toResult = (onNotReady) => (data) => (0, RemoteData2.isSuccess)(data) ? Result.ok(data.value) : Result.error((0, RemoteData2.isFailure)(data) ? data.error : onNotReady());
1455
1527
  RemoteData2.fromResult = (data) => Result.isOk(data) ? (0, RemoteData2.success)(data.value) : (0, RemoteData2.failure)(data.error);
1456
1528
  RemoteData2.fromMaybe = (onNone) => (data) => Maybe.isSome(data) ? (0, RemoteData2.success)(data.value) : (0, RemoteData2.failure)(onNone());
1529
+ RemoteData2.filter = (pred, onFalse) => (data) => (0, RemoteData2.isSuccess)(data) ? pred(data.value) ? data : (0, RemoteData2.failure)(onFalse(data.value)) : data;
1457
1530
  })(RemoteData || (RemoteData = {}));
1458
1531
 
1459
1532
  // src/Core/Task.ts
@@ -1493,22 +1566,22 @@ var Task;
1493
1566
  if (times <= 0) return Promise.resolve([]);
1494
1567
  const results = [];
1495
1568
  const wait = () => ms !== void 0 && ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve();
1496
- const run = (left) => toPromise(task, signal).then((a) => {
1569
+ const run2 = (left) => toPromise(task, signal).then((a) => {
1497
1570
  results.push(a);
1498
1571
  if (left <= 1) return results;
1499
- return wait().then(() => run(left - 1));
1572
+ return wait().then(() => run2(left - 1));
1500
1573
  });
1501
- return run(times);
1574
+ return run2(times);
1502
1575
  });
1503
1576
  Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
1504
1577
  const { when: predicate, delay: ms, maxAttempts } = options;
1505
1578
  const wait = () => ms !== void 0 && ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve();
1506
- const run = (attempt) => toPromise(task, signal).then((a) => {
1579
+ const run2 = (attempt) => toPromise(task, signal).then((a) => {
1507
1580
  if (predicate(a)) return a;
1508
1581
  if (maxAttempts !== void 0 && attempt >= maxAttempts) return a;
1509
- return wait().then(() => run(attempt + 1));
1582
+ return wait().then(() => run2(attempt + 1));
1510
1583
  });
1511
- return run(1);
1584
+ return run2(1);
1512
1585
  });
1513
1586
  Task2.race = (tasks) => (0, Task2.from)((signal) => Promise.race(tasks.map((t) => toPromise(t, signal))));
1514
1587
  Task2.sequential = (tasks) => (0, Task2.from)(async (signal) => {
@@ -1533,7 +1606,7 @@ var Task;
1533
1606
  timerId = setTimeout(() => {
1534
1607
  controller.abort();
1535
1608
  outerSignal?.removeEventListener("abort", onOuterAbort);
1536
- resolve2(Result.err(onTimeout()));
1609
+ resolve2(Result.error(onTimeout()));
1537
1610
  }, ms);
1538
1611
  })
1539
1612
  ]);
@@ -1556,6 +1629,7 @@ var Task;
1556
1629
  };
1557
1630
  return { task, abort };
1558
1631
  };
1632
+ Task2.run = (signal) => (task) => Deferred.toPromise(task(signal));
1559
1633
  })(Task || (Task = {}));
1560
1634
 
1561
1635
  // src/Core/Resource.ts
@@ -1568,7 +1642,7 @@ var Resource;
1568
1642
  });
1569
1643
  Resource2.use = (f) => (resource) => Task.from(
1570
1644
  () => Deferred.toPromise(resource.acquire()).then(async (acquired) => {
1571
- if (Result.isErr(acquired)) return acquired;
1645
+ if (Result.isError(acquired)) return acquired;
1572
1646
  const a = acquired.value;
1573
1647
  const usageResult = await Deferred.toPromise(f(a)());
1574
1648
  await Deferred.toPromise(resource.release(a)());
@@ -1578,10 +1652,10 @@ var Resource;
1578
1652
  Resource2.combine = (resourceA, resourceB) => ({
1579
1653
  acquire: Task.from(
1580
1654
  () => Deferred.toPromise(resourceA.acquire()).then(async (acquiredA) => {
1581
- if (Result.isErr(acquiredA)) return acquiredA;
1655
+ if (Result.isError(acquiredA)) return acquiredA;
1582
1656
  const a = acquiredA.value;
1583
1657
  const acquiredB = await Deferred.toPromise(resourceB.acquire());
1584
- if (Result.isErr(acquiredB)) {
1658
+ if (Result.isError(acquiredB)) {
1585
1659
  await Deferred.toPromise(resourceA.release(a)());
1586
1660
  return acquiredB;
1587
1661
  }
@@ -1653,23 +1727,26 @@ var TaskMaybe;
1653
1727
  var TaskResult;
1654
1728
  ((TaskResult2) => {
1655
1729
  TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
1656
- TaskResult2.err = (error) => Task.resolve(Result.err(error));
1730
+ TaskResult2.err = (error) => Task.resolve(Result.error(error));
1657
1731
  TaskResult2.tryCatch = (f, onError) => Task.from(
1658
- (signal) => f(signal).then(Result.ok).catch((e) => Result.err(onError(e)))
1732
+ (signal) => f(signal).then(Result.ok).catch((e) => Result.error(onError(e)))
1659
1733
  );
1660
1734
  TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
1661
1735
  TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
1662
- TaskResult2.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
1736
+ TaskResult2.chain = (f) => (data) => Task.chain(
1737
+ (result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.error(result.error))
1738
+ )(
1663
1739
  data
1664
1740
  );
1665
1741
  TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
1666
1742
  TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
1667
1743
  TaskResult2.recover = (fallback) => (data) => Task.chain(
1668
- (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
1744
+ (result) => Result.isError(result) ? fallback(result.error) : Task.resolve(result)
1669
1745
  )(data);
1670
1746
  TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
1671
1747
  TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
1672
1748
  TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
1749
+ TaskResult2.run = (signal) => (task) => Deferred.toPromise(task(signal));
1673
1750
  })(TaskResult || (TaskResult = {}));
1674
1751
 
1675
1752
  // src/Core/Validation.ts
@@ -1712,7 +1789,9 @@ var Validation;
1712
1789
  };
1713
1790
  Validation2.recover = (fallback) => (data) => (0, Validation2.isValid)(data) ? data : fallback(data.errors);
1714
1791
  Validation2.recoverUnless = (isBlocked, fallback) => (data) => (0, Validation2.isInvalid)(data) && !data.errors.some(isBlocked) ? fallback() : data;
1715
- Validation2.toResult = (data) => (0, Validation2.isValid)(data) ? Result.ok(data.value) : Result.err(data.errors);
1792
+ Validation2.toResult = (data) => (0, Validation2.isValid)(data) ? Result.ok(data.value) : Result.error(data.errors);
1793
+ Validation2.toMaybe = (data) => (0, Validation2.isValid)(data) ? Maybe.some(data.value) : Maybe.none();
1794
+ Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.valid)(data.value) : (0, Validation2.invalid)(data.error);
1716
1795
  Validation2.product = (first, second) => {
1717
1796
  if ((0, Validation2.isValid)(first) && (0, Validation2.isValid)(second)) return (0, Validation2.valid)([first.value, second.value]);
1718
1797
  const errors = [
@@ -2017,7 +2096,7 @@ var Arr;
2017
2096
  const result = [];
2018
2097
  for (const a of data) {
2019
2098
  const r = await Deferred.toPromise(f(a)());
2020
- if (Result.isErr(r)) return r;
2099
+ if (Result.isError(r)) return r;
2021
2100
  result.push(r.value);
2022
2101
  }
2023
2102
  return Result.ok(result);
@@ -2158,6 +2237,14 @@ var Dict;
2158
2237
  }
2159
2238
  return result;
2160
2239
  };
2240
+ Dict2.filterMap = (f) => (m) => {
2241
+ const result = new globalThis.Map();
2242
+ for (const [key, value] of m) {
2243
+ const mapped = f(value);
2244
+ if (mapped.kind === "Some") result.set(key, mapped.value);
2245
+ }
2246
+ return result;
2247
+ };
2161
2248
  Dict2.union = (other) => (m) => {
2162
2249
  const result = new globalThis.Map(m);
2163
2250
  for (const [k, v] of other) {
package/dist/index.mjs CHANGED
@@ -44,7 +44,7 @@ import {
44
44
  These,
45
45
  Tuple,
46
46
  Validation
47
- } from "./chunk-QJS6D6MW.mjs";
47
+ } from "./chunk-PV7JOUKL.mjs";
48
48
  import {
49
49
  Arr,
50
50
  Dict,
@@ -52,13 +52,13 @@ import {
52
52
  Rec,
53
53
  Str,
54
54
  Uniq
55
- } from "./chunk-CA3VE4YD.mjs";
55
+ } from "./chunk-FWYOEWJ2.mjs";
56
56
  import {
57
57
  Deferred,
58
58
  Maybe,
59
59
  Result,
60
60
  Task
61
- } from "./chunk-7JF44HJH.mjs";
61
+ } from "./chunk-SDGDJ7CU.mjs";
62
62
  import {
63
63
  Brand
64
64
  } from "./chunk-BYWKZLHM.mjs";
package/dist/utils.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { M as Maybe, R as Result, T as Task } from './Task-BZT0wedE.mjs';
1
+ import { M as Maybe, R as Result, T as Task } from './Task-BDcKwFAj.mjs';
2
2
  import { N as NonEmptyList } from './NonEmptyList-BlGFjor5.mjs';
3
3
 
4
4
  /**
@@ -269,7 +269,7 @@ declare namespace Arr {
269
269
  * ```ts
270
270
  * pipe(
271
271
  * [1, 2, 3],
272
- * Arr.traverseResult(n => n > 0 ? Result.ok(n) : Result.err("negative"))
272
+ * Arr.traverseResult(n => n > 0 ? Result.ok(n) : Result.error("negative"))
273
273
  * ); // Ok([1, 2, 3])
274
274
  * ```
275
275
  */
@@ -684,6 +684,21 @@ declare namespace Dict {
684
684
  * ```
685
685
  */
686
686
  const compact: <K, A>(m: ReadonlyMap<K, Maybe<A>>) => ReadonlyMap<K, A>;
687
+ /**
688
+ * Applies `f` to each value. Entries where `f` returns `None` are removed; entries where
689
+ * `f` returns `Some` are kept with the unwrapped value. Combines map and filter in one pass.
690
+ *
691
+ * @example
692
+ * ```ts
693
+ * const parse = (s: string): Maybe<number> => {
694
+ * const n = Number(s);
695
+ * return isNaN(n) ? Maybe.none() : Maybe.some(n);
696
+ * };
697
+ * Dict.filterMap(parse)(Dict.fromRecord({ a: "1", b: "two", c: "3" }));
698
+ * // ReadonlyMap { "a" => 1, "c" => 3 }
699
+ * ```
700
+ */
701
+ const filterMap: <A, B>(f: (a: A) => Maybe<B>) => <K>(m: ReadonlyMap<K, A>) => ReadonlyMap<K, B>;
687
702
  /**
688
703
  * Merges two dictionaries. When both contain the same key, the value from `other` takes
689
704
  * precedence.
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { M as Maybe, R as Result, T as Task } from './Task-BW66NsGR.js';
1
+ import { M as Maybe, R as Result, T as Task } from './Task-CnF22Q2o.js';
2
2
  import { N as NonEmptyList } from './NonEmptyList-BlGFjor5.js';
3
3
 
4
4
  /**
@@ -269,7 +269,7 @@ declare namespace Arr {
269
269
  * ```ts
270
270
  * pipe(
271
271
  * [1, 2, 3],
272
- * Arr.traverseResult(n => n > 0 ? Result.ok(n) : Result.err("negative"))
272
+ * Arr.traverseResult(n => n > 0 ? Result.ok(n) : Result.error("negative"))
273
273
  * ); // Ok([1, 2, 3])
274
274
  * ```
275
275
  */
@@ -684,6 +684,21 @@ declare namespace Dict {
684
684
  * ```
685
685
  */
686
686
  const compact: <K, A>(m: ReadonlyMap<K, Maybe<A>>) => ReadonlyMap<K, A>;
687
+ /**
688
+ * Applies `f` to each value. Entries where `f` returns `None` are removed; entries where
689
+ * `f` returns `Some` are kept with the unwrapped value. Combines map and filter in one pass.
690
+ *
691
+ * @example
692
+ * ```ts
693
+ * const parse = (s: string): Maybe<number> => {
694
+ * const n = Number(s);
695
+ * return isNaN(n) ? Maybe.none() : Maybe.some(n);
696
+ * };
697
+ * Dict.filterMap(parse)(Dict.fromRecord({ a: "1", b: "two", c: "3" }));
698
+ * // ReadonlyMap { "a" => 1, "c" => 3 }
699
+ * ```
700
+ */
701
+ const filterMap: <A, B>(f: (a: A) => Maybe<B>) => <K>(m: ReadonlyMap<K, A>) => ReadonlyMap<K, B>;
687
702
  /**
688
703
  * Merges two dictionaries. When both contain the same key, the value from `other` takes
689
704
  * precedence.
package/dist/utils.js CHANGED
@@ -43,18 +43,18 @@ var Deferred;
43
43
  var Result;
44
44
  ((Result2) => {
45
45
  Result2.ok = (value) => ({ kind: "Ok", value });
46
- Result2.err = (error) => ({ kind: "Error", error });
46
+ Result2.error = (e) => ({ kind: "Error", error: e });
47
47
  Result2.isOk = (data) => data.kind === "Ok";
48
- Result2.isErr = (data) => data.kind === "Error";
48
+ Result2.isError = (data) => data.kind === "Error";
49
49
  Result2.tryCatch = (f, onError) => {
50
50
  try {
51
51
  return (0, Result2.ok)(f());
52
52
  } catch (e) {
53
- return (0, Result2.err)(onError(e));
53
+ return (0, Result2.error)(onError(e));
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.isErr)(data) ? (0, Result2.err)(f(data.error)) : data;
57
+ Result2.mapError = (f) => (data) => (0, Result2.isError)(data) ? (0, Result2.error)(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);
@@ -64,14 +64,14 @@ var Result;
64
64
  return data;
65
65
  };
66
66
  Result2.tapError = (f) => (data) => {
67
- if ((0, Result2.isErr)(data)) f(data.error);
67
+ if ((0, Result2.isError)(data)) f(data.error);
68
68
  return data;
69
69
  };
70
- Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.err)(onFalse(a));
70
+ Result2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result2.ok)(a) : (0, Result2.error)(onFalse(a));
71
71
  Result2.recover = (fallback) => (data) => (0, Result2.isOk)(data) ? data : fallback(data.error);
72
- Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
72
+ Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isError)(data) && !isBlocked(data.error) ? fallback() : data;
73
73
  Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
74
- 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;
74
+ 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;
75
75
  })(Result || (Result = {}));
76
76
 
77
77
  // src/Core/Maybe.ts
@@ -86,7 +86,7 @@ var Maybe;
86
86
  Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
87
87
  Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
88
88
  Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
89
- Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
89
+ Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.error(onNone());
90
90
  Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
91
91
  Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
92
92
  Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
@@ -139,22 +139,22 @@ var Task;
139
139
  if (times <= 0) return Promise.resolve([]);
140
140
  const results = [];
141
141
  const wait = () => ms !== void 0 && ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve();
142
- const run = (left) => toPromise(task, signal).then((a) => {
142
+ const run2 = (left) => toPromise(task, signal).then((a) => {
143
143
  results.push(a);
144
144
  if (left <= 1) return results;
145
- return wait().then(() => run(left - 1));
145
+ return wait().then(() => run2(left - 1));
146
146
  });
147
- return run(times);
147
+ return run2(times);
148
148
  });
149
149
  Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
150
150
  const { when: predicate, delay: ms, maxAttempts } = options;
151
151
  const wait = () => ms !== void 0 && ms > 0 ? new Promise((r) => setTimeout(r, ms)) : Promise.resolve();
152
- const run = (attempt) => toPromise(task, signal).then((a) => {
152
+ const run2 = (attempt) => toPromise(task, signal).then((a) => {
153
153
  if (predicate(a)) return a;
154
154
  if (maxAttempts !== void 0 && attempt >= maxAttempts) return a;
155
- return wait().then(() => run(attempt + 1));
155
+ return wait().then(() => run2(attempt + 1));
156
156
  });
157
- return run(1);
157
+ return run2(1);
158
158
  });
159
159
  Task2.race = (tasks) => (0, Task2.from)((signal) => Promise.race(tasks.map((t) => toPromise(t, signal))));
160
160
  Task2.sequential = (tasks) => (0, Task2.from)(async (signal) => {
@@ -179,7 +179,7 @@ var Task;
179
179
  timerId = setTimeout(() => {
180
180
  controller.abort();
181
181
  outerSignal?.removeEventListener("abort", onOuterAbort);
182
- resolve2(Result.err(onTimeout()));
182
+ resolve2(Result.error(onTimeout()));
183
183
  }, ms);
184
184
  })
185
185
  ]);
@@ -202,6 +202,7 @@ var Task;
202
202
  };
203
203
  return { task, abort };
204
204
  };
205
+ Task2.run = (signal) => (task) => Deferred.toPromise(task(signal));
205
206
  })(Task || (Task = {}));
206
207
 
207
208
  // src/Types/NonEmptyList.ts
@@ -365,7 +366,7 @@ var Arr;
365
366
  const result = [];
366
367
  for (const a of data) {
367
368
  const r = await Deferred.toPromise(f(a)());
368
- if (Result.isErr(r)) return r;
369
+ if (Result.isError(r)) return r;
369
370
  result.push(r.value);
370
371
  }
371
372
  return Result.ok(result);
@@ -506,6 +507,14 @@ var Dict;
506
507
  }
507
508
  return result;
508
509
  };
510
+ Dict2.filterMap = (f) => (m) => {
511
+ const result = new globalThis.Map();
512
+ for (const [key, value] of m) {
513
+ const mapped = f(value);
514
+ if (mapped.kind === "Some") result.set(key, mapped.value);
515
+ }
516
+ return result;
517
+ };
509
518
  Dict2.union = (other) => (m) => {
510
519
  const result = new globalThis.Map(m);
511
520
  for (const [k, v] of other) {
package/dist/utils.mjs CHANGED
@@ -5,8 +5,8 @@ import {
5
5
  Rec,
6
6
  Str,
7
7
  Uniq
8
- } from "./chunk-CA3VE4YD.mjs";
9
- import "./chunk-7JF44HJH.mjs";
8
+ } from "./chunk-FWYOEWJ2.mjs";
9
+ import "./chunk-SDGDJ7CU.mjs";
10
10
  import "./chunk-DBIC62UV.mjs";
11
11
  export {
12
12
  Arr,