@nlozgachev/pipelined 0.43.0 → 0.45.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/core.js CHANGED
@@ -38,6 +38,9 @@ __export(Core_exports, {
38
38
  Result: () => Result,
39
39
  State: () => State,
40
40
  Task: () => Task,
41
+ TaskMaybe: () => TaskMaybe,
42
+ TaskResult: () => TaskResult,
43
+ TaskValidation: () => TaskValidation,
41
44
  These: () => These,
42
45
  Tuple: () => Tuple,
43
46
  Validation: () => Validation
@@ -54,8 +57,8 @@ var Combinable;
54
57
  Combinable2.any = { empty: false, combine: (b) => (a) => a || b };
55
58
  Combinable2.array = () => ({ empty: [], combine: (b) => (a) => [...a, ...b] });
56
59
  Combinable2.maybe = (inner) => ({
57
- empty: Maybe.none(),
58
- combine: (b) => (a) => Maybe.isNone(a) ? b : Maybe.isNone(b) ? a : Maybe.some(inner.combine(b.value)(a.value))
60
+ empty: Maybe.make.none(),
61
+ combine: (b) => (a) => Maybe.is.none(a) ? b : Maybe.is.none(b) ? a : Maybe.make.some(inner.combine(b.value)(a.value))
59
62
  });
60
63
  Combinable2.fold = (c) => (data) => data.reduce((acc, x) => c.combine(x)(acc), c.empty);
61
64
  })(Combinable || (Combinable = {}));
@@ -63,11 +66,17 @@ var Combinable;
63
66
  // src/Core/Deferred.ts
64
67
  var Deferred;
65
68
  ((Deferred2) => {
66
- Deferred2.fromPromise = (p) => (
67
- // eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
68
- { then: ((f) => p.then(f)) }
69
- );
70
- Deferred2.toPromise = (d) => new Promise((resolve) => d.then(resolve));
69
+ let from;
70
+ ((from2) => {
71
+ from2.Promise = (p) => (
72
+ // eslint-disable-next-line unicorn/no-thenable -- Deferred is intentionally thenable; it is the mechanism that makes Task awaitable
73
+ { then: ((f) => p.then(f)) }
74
+ );
75
+ })(from = Deferred2.from || (Deferred2.from = {}));
76
+ let to;
77
+ ((to2) => {
78
+ to2.Promise = (d) => new globalThis.Promise((resolve) => d.then(resolve));
79
+ })(to = Deferred2.to || (Deferred2.to = {}));
71
80
  })(Deferred || (Deferred = {}));
72
81
 
73
82
  // src/Core/Equality.ts
@@ -111,12 +120,15 @@ var Lazy;
111
120
  // src/Core/Lens.ts
112
121
  var Lens;
113
122
  ((Lens3) => {
114
- Lens3.make = (get2, set2) => ({ get: get2, set: set2 });
115
- Lens3.prop = () => (key) => (0, Lens3.make)((s) => s[key], (a) => (s) => ({ ...s, [key]: a }));
123
+ let from;
124
+ ((from2) => {
125
+ from2.accessors = (get2, set2) => ({ get: get2, set: set2 });
126
+ from2.property = () => (key) => (0, from2.accessors)((s) => s[key], (a) => (s) => ({ ...s, [key]: a }));
127
+ })(from = Lens3.from || (Lens3.from = {}));
116
128
  Lens3.get = (lens) => (s) => lens.get(s);
117
129
  Lens3.set = (lens) => (a) => (s) => lens.set(a)(s);
118
130
  Lens3.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
119
- Lens3.andThen = (inner) => (outer) => (0, Lens3.make)((s) => inner.get(outer.get(s)), (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s));
131
+ Lens3.andThen = (inner) => (outer) => from.accessors((s) => inner.get(outer.get(s)), (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s));
120
132
  Lens3.andThenOptional = (inner) => (outer) => ({
121
133
  get: (s) => inner.get(outer.get(s)),
122
134
  set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
@@ -130,8 +142,11 @@ var Lens;
130
142
  // src/Core/Logged.ts
131
143
  var Logged;
132
144
  ((Logged2) => {
133
- Logged2.make = (value) => ({ value, log: [] });
134
- Logged2.tell = (entry) => ({ value: void 0, log: [entry] });
145
+ let from;
146
+ ((from2) => {
147
+ from2.value = (val) => ({ value: val, log: [] });
148
+ from2.entry = (logEntry) => ({ value: void 0, log: [logEntry] });
149
+ })(from = Logged2.from || (Logged2.from = {}));
135
150
  Logged2.map = (f) => (data) => ({
136
151
  value: f(data.value),
137
152
  log: data.log
@@ -158,47 +173,59 @@ var Logged;
158
173
  // src/Core/Maybe.ts
159
174
  var _none = { kind: "None" };
160
175
  var Maybe;
161
- ((Maybe2) => {
162
- Maybe2.some = (value) => ({ kind: "Some", value });
163
- Maybe2.isSome = (data) => data.kind === "Some";
164
- Maybe2.none = () => _none;
165
- Maybe2.isNone = (data) => data.kind === "None";
166
- Maybe2.fromNullable = (value) => value === null || value === void 0 ? (0, Maybe2.none)() : (0, Maybe2.some)(value);
167
- Maybe2.toNullable = (data) => (0, Maybe2.isSome)(data) ? data.value : null;
168
- Maybe2.toUndefined = (data) => (0, Maybe2.isSome)(data) ? data.value : void 0;
169
- Maybe2.fromPredicate = (pred) => (a) => pred(a) ? (0, Maybe2.some)(a) : (0, Maybe2.none)();
170
- Maybe2.toResult = (onNone) => (data) => (0, Maybe2.isSome)(data) ? Result.ok(data.value) : Result.err(onNone());
171
- Maybe2.fromResult = (data) => Result.isOk(data) ? (0, Maybe2.some)(data.value) : (0, Maybe2.none)();
172
- Maybe2.map = (f) => (data) => (0, Maybe2.isSome)(data) ? (0, Maybe2.some)(f(data.value)) : data;
173
- Maybe2.chain = (f) => (data) => (0, Maybe2.isSome)(data) ? f(data.value) : data;
174
- Maybe2.fold = (onNone, onSome) => (data) => (0, Maybe2.isSome)(data) ? onSome(data.value) : onNone();
175
- Maybe2.match = (cases) => (data) => (0, Maybe2.isSome)(data) ? cases.some(data.value) : cases.none();
176
- Maybe2.getOrElse = (defaultValue) => (data) => (0, Maybe2.isSome)(data) ? data.value : defaultValue();
177
- Maybe2.tap = (f) => (data) => {
178
- if ((0, Maybe2.isSome)(data)) {
176
+ ((Maybe3) => {
177
+ let make;
178
+ ((make2) => {
179
+ make2.some = (value) => ({ kind: "Some", value });
180
+ make2.none = () => _none;
181
+ })(make = Maybe3.make || (Maybe3.make = {}));
182
+ let is;
183
+ ((is2) => {
184
+ is2.some = (data) => data.kind === "Some";
185
+ is2.none = (data) => data.kind === "None";
186
+ })(is = Maybe3.is || (Maybe3.is = {}));
187
+ let to;
188
+ ((to2) => {
189
+ to2.nullable = (data) => is.some(data) ? data.value : null;
190
+ to2.undefined = (data) => is.some(data) ? data.value : globalThis.undefined;
191
+ to2.Result = (onNone) => (data) => is.some(data) ? Result.make.ok(data.value) : Result.make.err(onNone());
192
+ })(to = Maybe3.to || (Maybe3.to = {}));
193
+ let from;
194
+ ((from2) => {
195
+ from2.nullable = (value) => value === null || value === void 0 ? make.none() : make.some(value);
196
+ from2.Predicate = (pred) => (a) => pred(a) ? make.some(a) : make.none();
197
+ from2.Result = (data) => Result.is.ok(data) ? make.some(data.value) : make.none();
198
+ })(from = Maybe3.from || (Maybe3.from = {}));
199
+ Maybe3.map = (f) => (data) => is.some(data) ? make.some(f(data.value)) : data;
200
+ Maybe3.chain = (f) => (data) => is.some(data) ? f(data.value) : data;
201
+ Maybe3.fold = (onNone, onSome) => (data) => is.some(data) ? onSome(data.value) : onNone();
202
+ Maybe3.match = (cases) => (data) => is.some(data) ? cases.some(data.value) : cases.none();
203
+ Maybe3.getOrElse = (defaultValue) => (data) => is.some(data) ? data.value : defaultValue();
204
+ Maybe3.tap = (f) => (data) => {
205
+ if (is.some(data)) {
179
206
  f(data.value);
180
207
  }
181
208
  return data;
182
209
  };
183
- Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
184
- Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
185
- Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
186
- Maybe2.bindTo = (key) => (data) => (0, Maybe2.map)((a) => ({ [key]: a }))(data);
187
- Maybe2.bind = (key, f) => (data) => (0, Maybe2.chain)(
188
- (a) => (0, Maybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
210
+ Maybe3.filter = (predicate) => (data) => is.some(data) ? predicate(data.value) ? data : make.none() : data;
211
+ Maybe3.recover = (fallback) => (data) => is.some(data) ? data : fallback();
212
+ Maybe3.ap = (arg) => (data) => is.some(data) && is.some(arg) ? make.some(data.value(arg.value)) : make.none();
213
+ Maybe3.bindTo = (key) => (data) => (0, Maybe3.map)((a) => ({ [key]: a }))(data);
214
+ Maybe3.bind = (key, f) => (data) => (0, Maybe3.chain)(
215
+ (a) => (0, Maybe3.map)((b) => ({ ...a, [key]: b }))(f(a))
189
216
  )(data);
190
- Maybe2.struct = (fields) => {
217
+ Maybe3.struct = (fields) => {
191
218
  const result = {};
192
219
  for (const key in fields) {
193
220
  if (Object.hasOwn(fields, key)) {
194
221
  const res = fields[key];
195
- if ((0, Maybe2.isNone)(res)) {
222
+ if (is.none(res)) {
196
223
  return res;
197
224
  }
198
225
  result[key] = res.value;
199
226
  }
200
227
  }
201
- return (0, Maybe2.some)(result);
228
+ return make.some(result);
202
229
  };
203
230
  })(Maybe || (Maybe = {}));
204
231
 
@@ -218,11 +245,14 @@ var Duration;
218
245
  Duration2.minutes = (m) => wrap(m * 60 * 1e3);
219
246
  Duration2.hours = (h) => wrap(h * 60 * 60 * 1e3);
220
247
  Duration2.days = (d) => wrap(d * 24 * 60 * 60 * 1e3);
221
- Duration2.toMilliseconds = (d) => Brand.unwrap(d);
222
- Duration2.toSeconds = (d) => Brand.unwrap(d) / 1e3;
223
- Duration2.toMinutes = (d) => Brand.unwrap(d) / (60 * 1e3);
224
- Duration2.toHours = (d) => Brand.unwrap(d) / (60 * 60 * 1e3);
225
- Duration2.toDays = (d) => Brand.unwrap(d) / (24 * 60 * 60 * 1e3);
248
+ let to;
249
+ ((to2) => {
250
+ to2.milliseconds = (d) => Brand.unwrap(d);
251
+ to2.seconds = (d) => Brand.unwrap(d) / 1e3;
252
+ to2.minutes = (d) => Brand.unwrap(d) / (60 * 1e3);
253
+ to2.hours = (d) => Brand.unwrap(d) / (60 * 60 * 1e3);
254
+ to2.days = (d) => Brand.unwrap(d) / (24 * 60 * 60 * 1e3);
255
+ })(to = Duration2.to || (Duration2.to = {}));
226
256
  Duration2.add = (other) => (self) => wrap(Brand.unwrap(self) + Brand.unwrap(other));
227
257
  Duration2.subtract = (other) => (self) => wrap(Brand.unwrap(self) - Brand.unwrap(other));
228
258
  })(Duration || (Duration = {}));
@@ -236,7 +266,7 @@ var _idle = { kind: "Idle" };
236
266
  var _pending = { kind: "Pending" };
237
267
  var ok = (value) => ({ kind: "OpOk", value });
238
268
  var err = (error) => ({ kind: "OpErr", error });
239
- var getMs = (duration) => Duration.toMilliseconds(duration);
269
+ var getMs = (duration) => Duration.to.milliseconds(duration);
240
270
  var cancellableWait = (duration, signal) => {
241
271
  const rawMs = getMs(duration);
242
272
  if (rawMs <= 0) {
@@ -259,7 +289,7 @@ var runWithRetry = (op, input, signal, options, onRetrying) => {
259
289
  return typeof backoff === "function" ? backoff(n) : backoff;
260
290
  };
261
291
  const attempt = async (left) => {
262
- const result = await Deferred.toPromise(op._factory(input, signal));
292
+ const result = await Deferred.to.Promise(op._factory(input, signal));
263
293
  if (result === null || signal.aborted) {
264
294
  return null;
265
295
  }
@@ -294,12 +324,12 @@ var runWithRetry = (op, input, signal, options, onRetrying) => {
294
324
  var execute = (op, input, controller, retryOptions, timeoutOptions, onRetrying) => {
295
325
  const { signal } = controller;
296
326
  const toOutcome = (r) => r === null ? _abortedNil : r.kind === "Ok" ? ok(r.value) : err(r.error);
297
- const runPromise = retryOptions !== void 0 && onRetrying !== void 0 ? runWithRetry(op, input, signal, retryOptions, onRetrying).then(toOutcome) : Deferred.toPromise(op._factory(input, signal)).then(toOutcome);
327
+ const runPromise = retryOptions !== void 0 && onRetrying !== void 0 ? runWithRetry(op, input, signal, retryOptions, onRetrying).then(toOutcome) : Deferred.to.Promise(op._factory(input, signal)).then(toOutcome);
298
328
  if (timeoutOptions === void 0) {
299
- return Deferred.fromPromise(runPromise);
329
+ return Deferred.from.Promise(runPromise);
300
330
  }
301
331
  let timerId;
302
- return Deferred.fromPromise(Promise.race([
332
+ return Deferred.from.Promise(Promise.race([
303
333
  runPromise.then((outcome) => {
304
334
  clearTimeout(timerId);
305
335
  return outcome;
@@ -323,7 +353,7 @@ var makeRestartable = (op, minInterval, retryOptions, timeoutOptions) => {
323
353
  currentState = state;
324
354
  subscribers.forEach((cb) => cb(state));
325
355
  };
326
- const run = (input) => Deferred.fromPromise(
356
+ const run = (input) => Deferred.from.Promise(
327
357
  new Promise((resolve) => {
328
358
  waitController?.abort();
329
359
  waitController = void 0;
@@ -415,9 +445,9 @@ var makeExclusive = (op, cooldown, retryOptions, timeoutOptions) => {
415
445
  };
416
446
  const run = (input) => {
417
447
  if (currentController !== void 0 || cooldownTimer !== void 0) {
418
- return Deferred.fromPromise(Promise.resolve(_droppedNil));
448
+ return Deferred.from.Promise(Promise.resolve(_droppedNil));
419
449
  }
420
- return Deferred.fromPromise(
450
+ return Deferred.from.Promise(
421
451
  new Promise((resolve) => {
422
452
  currentResolve = resolve;
423
453
  currentController = new AbortController();
@@ -537,14 +567,14 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
537
567
  }
538
568
  }
539
569
  if (inFlight < maxConcurrency) {
540
- return Deferred.fromPromise(
570
+ return Deferred.from.Promise(
541
571
  new Promise((resolve) => {
542
572
  startOne(input, resolve, myGeneration);
543
573
  })
544
574
  );
545
575
  }
546
576
  if (maxSize === void 0 || queue.length < maxSize) {
547
- return Deferred.fromPromise(
577
+ return Deferred.from.Promise(
548
578
  new Promise((resolve) => {
549
579
  queue.push({ input, resolve });
550
580
  emit({ kind: "Queued", position: queue.length - 1 });
@@ -552,7 +582,7 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
552
582
  );
553
583
  }
554
584
  if (overflow === "replace-last") {
555
- return Deferred.fromPromise(
585
+ return Deferred.from.Promise(
556
586
  new Promise((resolve) => {
557
587
  const tail = queue.pop();
558
588
  tail.resolve(_evictedNil);
@@ -561,7 +591,7 @@ var makeQueue = (op, maxSize, overflow, concurrency, dedupe, retryOptions, timeo
561
591
  })
562
592
  );
563
593
  }
564
- return Deferred.fromPromise(Promise.resolve(_droppedNil));
594
+ return Deferred.from.Promise(Promise.resolve(_droppedNil));
565
595
  };
566
596
  const abort = () => {
567
597
  generation++;
@@ -633,7 +663,7 @@ var makeBuffered = (op, size, retryOptions, timeoutOptions) => {
633
663
  }
634
664
  });
635
665
  };
636
- const run = (input) => Deferred.fromPromise(
666
+ const run = (input) => Deferred.from.Promise(
637
667
  new Promise((resolve) => {
638
668
  if (currentController === void 0) {
639
669
  startRun(input, resolve);
@@ -759,7 +789,7 @@ var makeDebounced = (op, duration, leading, maxWait, retryOptions, timeoutOption
759
789
  timerId = setTimeout(fireTrailing, delay);
760
790
  };
761
791
  const inDebounceWindow = () => timerId !== void 0 || leadingController !== void 0 || currentController !== void 0;
762
- const run = (input) => Deferred.fromPromise(
792
+ const run = (input) => Deferred.from.Promise(
763
793
  new Promise((resolve) => {
764
794
  if (!inDebounceWindow()) {
765
795
  firstCallAt = Date.now();
@@ -874,9 +904,9 @@ var makeThrottled = (op, duration, trailing, retryOptions, timeoutOptions) => {
874
904
  const run = (input) => {
875
905
  if (cooldownTimer !== void 0) {
876
906
  if (!trailing) {
877
- return Deferred.fromPromise(Promise.resolve(_droppedNil));
907
+ return Deferred.from.Promise(Promise.resolve(_droppedNil));
878
908
  }
879
- return Deferred.fromPromise(
909
+ return Deferred.from.Promise(
880
910
  new Promise((resolve) => {
881
911
  const prev = pendingResolve;
882
912
  pendingInput = input;
@@ -885,7 +915,7 @@ var makeThrottled = (op, duration, trailing, retryOptions, timeoutOptions) => {
885
915
  })
886
916
  );
887
917
  }
888
- return Deferred.fromPromise(
918
+ return Deferred.from.Promise(
889
919
  new Promise((resolve) => {
890
920
  fireOp(input, resolve);
891
921
  startCooldown();
@@ -976,16 +1006,16 @@ var makeConcurrent = (op, n, overflow, retryOptions, timeoutOptions) => {
976
1006
  const run = (input) => {
977
1007
  const myGeneration = generation;
978
1008
  if (inflight < n) {
979
- return Deferred.fromPromise(
1009
+ return Deferred.from.Promise(
980
1010
  new Promise((resolve) => {
981
1011
  startOne(input, resolve, myGeneration);
982
1012
  })
983
1013
  );
984
1014
  }
985
1015
  if (overflow === "drop") {
986
- return Deferred.fromPromise(Promise.resolve(_droppedNil));
1016
+ return Deferred.from.Promise(Promise.resolve(_droppedNil));
987
1017
  }
988
- return Deferred.fromPromise(
1018
+ return Deferred.from.Promise(
989
1019
  new Promise((resolve) => {
990
1020
  overflowQueue.push({ input, resolve });
991
1021
  emit({ kind: "Queued", position: overflowQueue.length - 1 });
@@ -1038,7 +1068,7 @@ var makeKeyed = (op, keyFn, perKey, timeoutOptions) => {
1038
1068
  const k = keyFn(input);
1039
1069
  if (slots.has(k)) {
1040
1070
  if (perKey === "exclusive") {
1041
- return Deferred.fromPromise(Promise.resolve(_droppedNil));
1071
+ return Deferred.from.Promise(Promise.resolve(_droppedNil));
1042
1072
  }
1043
1073
  const existing = slots.get(k);
1044
1074
  existing.controller.abort();
@@ -1046,7 +1076,7 @@ var makeKeyed = (op, keyFn, perKey, timeoutOptions) => {
1046
1076
  slots.delete(k);
1047
1077
  prev(_replacedNil);
1048
1078
  }
1049
- return Deferred.fromPromise(
1079
+ return Deferred.from.Promise(
1050
1080
  new Promise((resolve) => {
1051
1081
  const controller = new AbortController();
1052
1082
  slots.set(k, { controller, resolve });
@@ -1126,9 +1156,9 @@ var makeOnce = (op, retryOptions, timeoutOptions) => {
1126
1156
  };
1127
1157
  const run = (input) => {
1128
1158
  if (currentState.kind !== "Idle") {
1129
- return Deferred.fromPromise(Promise.resolve(_droppedNil));
1159
+ return Deferred.from.Promise(Promise.resolve(_droppedNil));
1130
1160
  }
1131
- return Deferred.fromPromise(
1161
+ return Deferred.from.Promise(
1132
1162
  new Promise((resolve) => {
1133
1163
  currentResolve = resolve;
1134
1164
  currentController = new AbortController();
@@ -1189,10 +1219,8 @@ var Op;
1189
1219
  ((Op2) => {
1190
1220
  Op2.nil = (reason) => ({ kind: "OpNil", reason });
1191
1221
  Op2.create = (factory, onError) => ({
1192
- _factory: (input, signal) => Deferred.fromPromise(
1193
- factory(signal)(input).then((value) => Result.ok(value)).catch(
1194
- (error) => signal.aborted ? null : Result.err(onError(error))
1195
- )
1222
+ _factory: (input, signal) => Deferred.from.Promise(
1223
+ factory(signal)(input).then((value) => Result.make.ok(value)).catch((error) => signal.aborted ? null : Result.make.err(onError(error)))
1196
1224
  )
1197
1225
  });
1198
1226
  Op2.lift = (f) => (0, Op2.create)((signal) => (input) => f(input, signal), (e) => e);
@@ -1234,18 +1262,21 @@ var Op;
1234
1262
  return outcome;
1235
1263
  };
1236
1264
  Op2.recover = (f) => (outcome) => outcome.kind === "OpErr" ? f(outcome.error) : outcome;
1237
- Op2.toResult = (onNil) => (outcome) => {
1238
- if (outcome.kind === "OpOk") {
1239
- return Result.ok(outcome.value);
1240
- }
1241
- if (outcome.kind === "OpErr") {
1242
- return Result.err(outcome.error);
1243
- }
1244
- return Result.err(onNil());
1245
- };
1246
- Op2.toMaybe = (outcome) => outcome.kind === "OpOk" ? Maybe.some(outcome.value) : Maybe.none();
1247
- Op2.all = (invocations) => Deferred.fromPromise(Promise.all(invocations.map(Deferred.toPromise)));
1248
- Op2.race = (invocations) => Deferred.fromPromise(Promise.race(invocations.map(Deferred.toPromise)));
1265
+ let to;
1266
+ ((to2) => {
1267
+ to2.Result = (onNil) => (outcome) => {
1268
+ if (outcome.kind === "OpOk") {
1269
+ return Result.make.ok(outcome.value);
1270
+ }
1271
+ if (outcome.kind === "OpErr") {
1272
+ return Result.make.err(outcome.error);
1273
+ }
1274
+ return Result.make.err(onNil());
1275
+ };
1276
+ to2.Maybe = (outcome) => outcome.kind === "OpOk" ? Maybe.make.some(outcome.value) : Maybe.make.none();
1277
+ })(to = Op2.to || (Op2.to = {}));
1278
+ Op2.all = (invocations) => Deferred.from.Promise(Promise.all(invocations.map(Deferred.to.Promise)));
1279
+ Op2.race = (invocations) => Deferred.from.Promise(Promise.race(invocations.map(Deferred.to.Promise)));
1249
1280
  Op2.wire = (source, f) => source.subscribe((state) => {
1250
1281
  if ((0, Op2.isOk)(state)) {
1251
1282
  f(state.value);
@@ -1310,12 +1341,18 @@ var Op;
1310
1341
  // src/Core/Optional.ts
1311
1342
  var Optional;
1312
1343
  ((Optional2) => {
1313
- Optional2.make = (get2, set2) => ({ get: get2, set: set2 });
1314
- Optional2.prop = () => (key) => (0, Optional2.make)((s) => {
1315
- const val = s[key];
1316
- return val !== null && val !== void 0 ? Maybe.some(val) : Maybe.none();
1317
- }, (a) => (s) => ({ ...s, [key]: a }));
1318
- Optional2.index = (i) => (0, Optional2.make)((arr) => i >= 0 && i < arr.length ? Maybe.some(arr[i]) : Maybe.none(), (a) => (arr) => {
1344
+ let from;
1345
+ ((from2) => {
1346
+ from2.accessors = (get2, set2) => ({
1347
+ get: get2,
1348
+ set: set2
1349
+ });
1350
+ from2.property = () => (key) => (0, from2.accessors)((s) => {
1351
+ const val = s[key];
1352
+ return val !== null && val !== void 0 ? Maybe.make.some(val) : Maybe.make.none();
1353
+ }, (a) => (s) => ({ ...s, [key]: a }));
1354
+ })(from = Optional2.from || (Optional2.from = {}));
1355
+ Optional2.index = (i) => from.accessors((arr) => i >= 0 && i < arr.length ? Maybe.make.some(arr[i]) : Maybe.make.none(), (a) => (arr) => {
1319
1356
  if (i < 0 || i >= arr.length) {
1320
1357
  return arr;
1321
1358
  }
@@ -1341,16 +1378,16 @@ var Optional;
1341
1378
  const val = opt.get(s);
1342
1379
  return val.kind === "Some" ? cases.some(val.value) : cases.none();
1343
1380
  };
1344
- Optional2.andThen = (inner) => (outer) => (0, Optional2.make)((s) => {
1381
+ Optional2.andThen = (inner) => (outer) => from.accessors((s) => {
1345
1382
  const mid = outer.get(s);
1346
- return mid.kind === "None" ? Maybe.none() : inner.get(mid.value);
1383
+ return mid.kind === "None" ? Maybe.make.none() : inner.get(mid.value);
1347
1384
  }, (b) => (s) => {
1348
1385
  const mid = outer.get(s);
1349
1386
  return mid.kind === "None" ? s : outer.set(inner.set(b)(mid.value))(s);
1350
1387
  });
1351
- Optional2.andThenLens = (inner) => (outer) => (0, Optional2.make)((s) => {
1388
+ Optional2.andThenLens = (inner) => (outer) => from.accessors((s) => {
1352
1389
  const mid = outer.get(s);
1353
- return mid.kind === "None" ? Maybe.none() : Maybe.some(inner.get(mid.value));
1390
+ return mid.kind === "None" ? Maybe.make.none() : Maybe.make.some(inner.get(mid.value));
1354
1391
  }, (b) => (s) => {
1355
1392
  const mid = outer.get(s);
1356
1393
  return mid.kind === "None" ? s : outer.set(inner.set(b)(mid.value))(s);
@@ -1380,7 +1417,10 @@ var Predicate;
1380
1417
  Predicate2.using = (f) => (p) => (b) => p(f(b));
1381
1418
  Predicate2.all = (predicates) => (a) => predicates.every((p) => p(a));
1382
1419
  Predicate2.any = (predicates) => (a) => predicates.some((p) => p(a));
1383
- Predicate2.fromRefinement = (r) => r;
1420
+ let from;
1421
+ ((from2) => {
1422
+ from2.Refinement = (r) => r;
1423
+ })(from = Predicate2.from || (Predicate2.from = {}));
1384
1424
  })(Predicate || (Predicate = {}));
1385
1425
 
1386
1426
  // src/Core/Reader.ts
@@ -1408,12 +1448,18 @@ var Reader;
1408
1448
  // src/Core/Refinement.ts
1409
1449
  var Refinement;
1410
1450
  ((Refinement2) => {
1411
- Refinement2.make = (f) => f;
1451
+ let from;
1452
+ ((from2) => {
1453
+ from2.predicate = (f) => f;
1454
+ })(from = Refinement2.from || (Refinement2.from = {}));
1412
1455
  Refinement2.compose = (bc) => (ab) => (a) => ab(a) && bc(a);
1413
1456
  Refinement2.and = (second) => (first) => (a) => first(a) && second(a);
1414
1457
  Refinement2.or = (second) => (first) => (a) => first(a) || second(a);
1415
- Refinement2.toFilter = (r) => (a) => r(a) ? Maybe.some(a) : Maybe.none();
1416
- Refinement2.toResult = (r, onFail) => (a) => r(a) ? Result.ok(a) : Result.err(onFail(a));
1458
+ let to;
1459
+ ((to2) => {
1460
+ to2.Maybe = (r) => (a) => r(a) ? Maybe.make.some(a) : Maybe.make.none();
1461
+ to2.Result = (r, onFail) => (a) => r(a) ? Result.make.ok(a) : Result.make.err(onFail(a));
1462
+ })(to = Refinement2.to || (Refinement2.to = {}));
1417
1463
  })(Refinement || (Refinement = {}));
1418
1464
 
1419
1465
  // src/Core/RemoteData.ts
@@ -1421,31 +1467,37 @@ var _notAsked = { kind: "NotAsked" };
1421
1467
  var _loading = { kind: "Loading" };
1422
1468
  var RemoteData;
1423
1469
  ((RemoteData2) => {
1424
- RemoteData2.notAsked = () => _notAsked;
1425
- RemoteData2.loading = () => _loading;
1426
- RemoteData2.failure = (error) => ({ kind: "Failure", error });
1427
- RemoteData2.success = (value) => ({ kind: "Success", value });
1428
- RemoteData2.isNotAsked = (data) => data.kind === "NotAsked";
1429
- RemoteData2.isLoading = (data) => data.kind === "Loading";
1430
- RemoteData2.isFailure = (data) => data.kind === "Failure";
1431
- RemoteData2.isSuccess = (data) => data.kind === "Success";
1432
- RemoteData2.map = (f) => (data) => (0, RemoteData2.isSuccess)(data) ? (0, RemoteData2.success)(f(data.value)) : data;
1433
- RemoteData2.mapError = (f) => (data) => (0, RemoteData2.isFailure)(data) ? (0, RemoteData2.failure)(f(data.error)) : data;
1434
- RemoteData2.chain = (f) => (data) => (0, RemoteData2.isSuccess)(data) ? f(data.value) : data;
1470
+ let make;
1471
+ ((make2) => {
1472
+ make2.notAsked = () => _notAsked;
1473
+ make2.loading = () => _loading;
1474
+ make2.failure = (error) => ({ kind: "Failure", error });
1475
+ make2.success = (value) => ({ kind: "Success", value });
1476
+ })(make = RemoteData2.make || (RemoteData2.make = {}));
1477
+ let is;
1478
+ ((is2) => {
1479
+ is2.notAsked = (data) => data.kind === "NotAsked";
1480
+ is2.loading = (data) => data.kind === "Loading";
1481
+ is2.failure = (data) => data.kind === "Failure";
1482
+ is2.success = (data) => data.kind === "Success";
1483
+ })(is = RemoteData2.is || (RemoteData2.is = {}));
1484
+ RemoteData2.map = (f) => (data) => is.success(data) ? make.success(f(data.value)) : data;
1485
+ RemoteData2.mapError = (f) => (data) => is.failure(data) ? make.failure(f(data.error)) : data;
1486
+ RemoteData2.chain = (f) => (data) => is.success(data) ? f(data.value) : data;
1435
1487
  RemoteData2.ap = (arg) => (data) => {
1436
- if ((0, RemoteData2.isSuccess)(data) && (0, RemoteData2.isSuccess)(arg)) {
1437
- return (0, RemoteData2.success)(data.value(arg.value));
1488
+ if (is.success(data) && is.success(arg)) {
1489
+ return make.success(data.value(arg.value));
1438
1490
  }
1439
- if ((0, RemoteData2.isFailure)(data)) {
1491
+ if (is.failure(data)) {
1440
1492
  return data;
1441
1493
  }
1442
- if ((0, RemoteData2.isFailure)(arg)) {
1494
+ if (is.failure(arg)) {
1443
1495
  return arg;
1444
1496
  }
1445
- if ((0, RemoteData2.isLoading)(data) || (0, RemoteData2.isLoading)(arg)) {
1446
- return (0, RemoteData2.loading)();
1497
+ if (is.loading(data) || is.loading(arg)) {
1498
+ return make.loading();
1447
1499
  }
1448
- return (0, RemoteData2.notAsked)();
1500
+ return make.notAsked();
1449
1501
  };
1450
1502
  RemoteData2.fold = (onFailure, onNotAsked, onLoading, onSuccess) => (data) => {
1451
1503
  switch (data.kind) {
@@ -1479,69 +1531,78 @@ var RemoteData;
1479
1531
  }
1480
1532
  }
1481
1533
  };
1482
- RemoteData2.getOrElse = (defaultValue) => (data) => (0, RemoteData2.isSuccess)(data) ? data.value : defaultValue();
1534
+ RemoteData2.getOrElse = (defaultValue) => (data) => is.success(data) ? data.value : defaultValue();
1483
1535
  RemoteData2.tap = (f) => (data) => {
1484
- if ((0, RemoteData2.isSuccess)(data)) {
1536
+ if (is.success(data)) {
1485
1537
  f(data.value);
1486
1538
  }
1487
1539
  return data;
1488
1540
  };
1489
1541
  RemoteData2.tapError = (f) => (data) => {
1490
- if ((0, RemoteData2.isFailure)(data)) {
1542
+ if (is.failure(data)) {
1491
1543
  f(data.error);
1492
1544
  }
1493
1545
  return data;
1494
1546
  };
1495
- RemoteData2.recover = (fallback) => (data) => (0, RemoteData2.isFailure)(data) ? fallback(data.error) : data;
1496
- RemoteData2.toMaybe = (data) => (0, RemoteData2.isSuccess)(data) ? Maybe.some(data.value) : Maybe.none();
1497
- RemoteData2.toResult = (onNotReady) => (data) => (0, RemoteData2.isSuccess)(data) ? Result.ok(data.value) : Result.err((0, RemoteData2.isFailure)(data) ? data.error : onNotReady());
1498
- RemoteData2.fromResult = (data) => Result.isOk(data) ? (0, RemoteData2.success)(data.value) : (0, RemoteData2.failure)(data.error);
1499
- RemoteData2.fromMaybe = (onNone) => (data) => Maybe.isSome(data) ? (0, RemoteData2.success)(data.value) : (0, RemoteData2.failure)(onNone());
1500
- RemoteData2.filter = (pred, onFalse) => (data) => (0, RemoteData2.isSuccess)(data) ? pred(data.value) ? data : (0, RemoteData2.failure)(onFalse(data.value)) : data;
1547
+ RemoteData2.recover = (fallback) => (data) => is.failure(data) ? fallback(data.error) : data;
1548
+ let to;
1549
+ ((to2) => {
1550
+ to2.Maybe = (data) => is.success(data) ? Maybe.make.some(data.value) : Maybe.make.none();
1551
+ to2.Result = (onNotReady) => (data) => is.success(data) ? Result.make.ok(data.value) : Result.make.err(is.failure(data) ? data.error : onNotReady());
1552
+ })(to = RemoteData2.to || (RemoteData2.to = {}));
1553
+ let from;
1554
+ ((from2) => {
1555
+ from2.Result = (data) => Result.is.ok(data) ? make.success(data.value) : make.failure(data.error);
1556
+ from2.Maybe = (onNone) => (data) => Maybe.is.some(data) ? make.success(data.value) : make.failure(onNone());
1557
+ })(from = RemoteData2.from || (RemoteData2.from = {}));
1558
+ RemoteData2.filter = (pred, onFalse) => (data) => is.success(data) ? pred(data.value) ? data : make.failure(onFalse(data.value)) : data;
1501
1559
  })(RemoteData || (RemoteData = {}));
1502
1560
 
1503
1561
  // src/Core/Resource.ts
1504
1562
  var Resource;
1505
1563
  ((Resource2) => {
1506
- Resource2.make = (acquire, release) => ({
1507
- acquire,
1508
- release
1509
- });
1510
- Resource2.fromTask = (acquire, release) => ({
1511
- acquire: Task.map((a) => Result.ok(a))(acquire),
1512
- release
1513
- });
1514
- Resource2.use = (f) => (resource) => Task.from(
1515
- (signal) => Deferred.toPromise(resource.acquire(signal)).then(async (acquired) => {
1516
- if (Result.isErr(acquired)) {
1564
+ let from;
1565
+ ((from2) => {
1566
+ from2.handlers = (acquire, release) => ({
1567
+ acquire,
1568
+ release
1569
+ });
1570
+ from2.Task = (acquire, release) => ({
1571
+ acquire: Task.map((a) => Result.make.ok(a))(acquire),
1572
+ release
1573
+ });
1574
+ })(from = Resource2.from || (Resource2.from = {}));
1575
+ Resource2.use = (f) => (resource) => Task.from.Promise(
1576
+ (signal) => Deferred.to.Promise(resource.acquire(signal)).then(async (acquired) => {
1577
+ if (Result.is.err(acquired)) {
1517
1578
  return acquired;
1518
1579
  }
1519
1580
  const a = acquired.value;
1520
1581
  try {
1521
- const usageResult = await Deferred.toPromise(f(a)(signal));
1582
+ const usageResult = await Deferred.to.Promise(f(a)(signal));
1522
1583
  return usageResult;
1523
1584
  } finally {
1524
- await Deferred.toPromise(resource.release(a)(signal));
1585
+ await Deferred.to.Promise(resource.release(a)(signal));
1525
1586
  }
1526
1587
  })
1527
1588
  );
1528
1589
  Resource2.combine = (resourceA, resourceB) => ({
1529
- acquire: Task.from(
1530
- (signal) => Deferred.toPromise(resourceA.acquire(signal)).then(async (acquiredA) => {
1531
- if (Result.isErr(acquiredA)) {
1590
+ acquire: Task.from.Promise(
1591
+ (signal) => Deferred.to.Promise(resourceA.acquire(signal)).then(async (acquiredA) => {
1592
+ if (Result.is.err(acquiredA)) {
1532
1593
  return acquiredA;
1533
1594
  }
1534
1595
  const a = acquiredA.value;
1535
- const acquiredB = await Deferred.toPromise(resourceB.acquire(signal));
1536
- if (Result.isErr(acquiredB)) {
1537
- await Deferred.toPromise(resourceA.release(a)(signal));
1596
+ const acquiredB = await Deferred.to.Promise(resourceB.acquire(signal));
1597
+ if (Result.is.err(acquiredB)) {
1598
+ await Deferred.to.Promise(resourceA.release(a)(signal));
1538
1599
  return acquiredB;
1539
1600
  }
1540
- return Result.ok([a, acquiredB.value]);
1601
+ return Result.make.ok([a, acquiredB.value]);
1541
1602
  })
1542
1603
  ),
1543
- release: ([a, b]) => Task.from(
1544
- (signal) => Deferred.toPromise(resourceB.release(b)(signal)).then(() => Deferred.toPromise(resourceA.release(a)(signal)))
1604
+ release: ([a, b]) => Task.from.Promise(
1605
+ (signal) => Deferred.to.Promise(resourceB.release(b)(signal)).then(() => Deferred.to.Promise(resourceA.release(a)(signal)))
1545
1606
  )
1546
1607
  });
1547
1608
  })(Resource || (Resource = {}));
@@ -1549,49 +1610,61 @@ var Resource;
1549
1610
  // src/Core/Result.ts
1550
1611
  var Result;
1551
1612
  ((Result4) => {
1552
- Result4.ok = (value) => ({ kind: "Ok", value });
1553
- Result4.err = (e) => ({ kind: "Err", error: e });
1554
- Result4.isOk = (data) => data.kind === "Ok";
1555
- Result4.isErr = (data) => data.kind === "Err";
1613
+ let make;
1614
+ ((make2) => {
1615
+ make2.ok = (value) => ({ kind: "Ok", value });
1616
+ make2.err = (e) => ({ kind: "Err", error: e });
1617
+ })(make = Result4.make || (Result4.make = {}));
1618
+ let is;
1619
+ ((is2) => {
1620
+ is2.ok = (data) => data.kind === "Ok";
1621
+ is2.err = (data) => data.kind === "Err";
1622
+ })(is = Result4.is || (Result4.is = {}));
1556
1623
  Result4.tryCatch = (f, onError) => {
1557
1624
  try {
1558
- return (0, Result4.ok)(f());
1625
+ return make.ok(f());
1559
1626
  } catch (error) {
1560
- return (0, Result4.err)(onError(error));
1627
+ return make.err(onError(error));
1561
1628
  }
1562
1629
  };
1563
- Result4.map = (f) => (data) => (0, Result4.isOk)(data) ? (0, Result4.ok)(f(data.value)) : data;
1564
- Result4.mapError = (f) => (data) => (0, Result4.isErr)(data) ? (0, Result4.err)(f(data.error)) : data;
1565
- Result4.chain = (f) => (data) => (0, Result4.isOk)(data) ? f(data.value) : data;
1566
- Result4.fold = (onErr, onOk) => (data) => (0, Result4.isOk)(data) ? onOk(data.value) : onErr(data.error);
1567
- Result4.match = (cases) => (data) => (0, Result4.isOk)(data) ? cases.ok(data.value) : cases.err(data.error);
1568
- Result4.getOrElse = (defaultValue) => (data) => (0, Result4.isOk)(data) ? data.value : defaultValue();
1630
+ Result4.map = (f) => (data) => is.ok(data) ? make.ok(f(data.value)) : data;
1631
+ Result4.mapError = (f) => (data) => is.err(data) ? make.err(f(data.error)) : data;
1632
+ Result4.chain = (f) => (data) => is.ok(data) ? f(data.value) : data;
1633
+ Result4.fold = (onErr, onOk) => (data) => is.ok(data) ? onOk(data.value) : onErr(data.error);
1634
+ Result4.match = (cases) => (data) => is.ok(data) ? cases.ok(data.value) : cases.err(data.error);
1635
+ Result4.getOrElse = (defaultValue) => (data) => is.ok(data) ? data.value : defaultValue();
1569
1636
  Result4.tap = (f) => (data) => {
1570
- if ((0, Result4.isOk)(data)) {
1637
+ if (is.ok(data)) {
1571
1638
  f(data.value);
1572
1639
  }
1573
1640
  return data;
1574
1641
  };
1575
1642
  Result4.tapError = (f) => (data) => {
1576
- if ((0, Result4.isErr)(data)) {
1643
+ if (is.err(data)) {
1577
1644
  f(data.error);
1578
1645
  }
1579
1646
  return data;
1580
1647
  };
1581
- Result4.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Result4.ok)(a) : (0, Result4.err)(onFalse(a));
1582
- Result4.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Result4.err)(onNull()) : (0, Result4.ok)(value);
1583
- Result4.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Result4.err)(onNone()) : (0, Result4.ok)(maybe.value);
1584
- Result4.fromThrowable = (f, onError) => (...args) => {
1585
- try {
1586
- return (0, Result4.ok)(f(...args));
1587
- } catch (error) {
1588
- return (0, Result4.err)(onError(error));
1589
- }
1590
- };
1591
- Result4.recover = (fallback) => (data) => (0, Result4.isOk)(data) ? data : fallback(data.error);
1592
- Result4.recoverUnless = (isBlocked, fallback) => (data) => (0, Result4.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
1593
- Result4.toMaybe = (data) => (0, Result4.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
1594
- Result4.ap = (arg) => (data) => (0, Result4.isOk)(data) && (0, Result4.isOk)(arg) ? (0, Result4.ok)(data.value(arg.value)) : (0, Result4.isErr)(data) ? data : arg;
1648
+ let from;
1649
+ ((from2) => {
1650
+ from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.ok(a) : make.err(onFalse(a));
1651
+ from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.err(onNull()) : make.ok(value);
1652
+ from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.err(onNone()) : make.ok(maybe.value);
1653
+ from2.throwable = (f, onError) => (...args) => {
1654
+ try {
1655
+ return make.ok(f(...args));
1656
+ } catch (error) {
1657
+ return make.err(onError(error));
1658
+ }
1659
+ };
1660
+ })(from = Result4.from || (Result4.from = {}));
1661
+ Result4.recover = (fallback) => (data) => is.ok(data) ? data : fallback(data.error);
1662
+ Result4.recoverUnless = (isBlocked, fallback) => (data) => is.err(data) && !isBlocked(data.error) ? fallback() : data;
1663
+ let to;
1664
+ ((to2) => {
1665
+ to2.Maybe = (data) => is.ok(data) ? Maybe.make.some(data.value) : Maybe.make.none();
1666
+ })(to = Result4.to || (Result4.to = {}));
1667
+ Result4.ap = (arg) => (data) => is.ok(data) && is.ok(arg) ? make.ok(data.value(arg.value)) : is.err(data) ? data : arg;
1595
1668
  Result4.bindTo = (key) => (data) => (0, Result4.map)((a) => ({ [key]: a }))(data);
1596
1669
  Result4.bind = (key, f) => (data) => (0, Result4.chain)(
1597
1670
  (a) => (0, Result4.map)((b) => ({ ...a, [key]: b }))(f(a))
@@ -1601,13 +1674,13 @@ var Result;
1601
1674
  for (const key in fields) {
1602
1675
  if (Object.hasOwn(fields, key)) {
1603
1676
  const res = fields[key];
1604
- if ((0, Result4.isErr)(res)) {
1677
+ if (is.err(res)) {
1605
1678
  return res;
1606
1679
  }
1607
1680
  result[key] = res.value;
1608
1681
  }
1609
1682
  }
1610
- return (0, Result4.ok)(result);
1683
+ return make.ok(result);
1611
1684
  };
1612
1685
  })(Result || (Result = {}));
1613
1686
 
@@ -1649,17 +1722,24 @@ var State;
1649
1722
  // src/Core/TaskMaybe.ts
1650
1723
  var TaskMaybe;
1651
1724
  ((TaskMaybe2) => {
1652
- TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
1653
- TaskMaybe2.none = () => Task.resolve(Maybe.none());
1654
- TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
1655
- TaskMaybe2.fromNullable = (value) => Task.resolve(Maybe.fromNullable(value));
1656
- TaskMaybe2.fromResult = (result) => Task.resolve(Result.toMaybe(result));
1657
- TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
1658
- TaskMaybe2.tryCatch = (f) => Task.from((signal) => Promise.resolve(f(signal)).then(Maybe.some).catch(() => Maybe.none()));
1725
+ TaskMaybe2.some = (value) => Task.resolve(Maybe.make.some(value));
1726
+ TaskMaybe2.none = () => Task.resolve(Maybe.make.none());
1727
+ let from;
1728
+ ((from2) => {
1729
+ from2.Maybe = (option) => Task.resolve(option);
1730
+ from2.nullable = (value) => Task.resolve(Maybe.from.nullable(value));
1731
+ from2.Result = (result) => Task.resolve(Result.to.Maybe(result));
1732
+ from2.Task = (task) => Task.map(Maybe.make.some)(task);
1733
+ })(from = TaskMaybe2.from || (TaskMaybe2.from = {}));
1734
+ TaskMaybe2.tryCatch = (f) => Task.from.Promise(
1735
+ (signal) => Promise.resolve(f(signal)).then(Maybe.make.some).catch(() => Maybe.make.none())
1736
+ );
1659
1737
  TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
1660
- TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
1661
- TaskMaybe2.ap = (arg) => (data) => Task.from(
1662
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1738
+ TaskMaybe2.chain = (f) => (data) => Task.chain(
1739
+ (option) => Maybe.is.some(option) ? f(option.value) : Task.resolve(Maybe.make.none())
1740
+ )(data);
1741
+ TaskMaybe2.ap = (arg) => (data) => Task.from.Promise(
1742
+ (signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
1663
1743
  ([of_, oa]) => Maybe.ap(oa)(of_)
1664
1744
  )
1665
1745
  );
@@ -1668,25 +1748,30 @@ var TaskMaybe;
1668
1748
  TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
1669
1749
  TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
1670
1750
  TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
1671
- TaskMaybe2.toResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
1751
+ let to;
1752
+ ((to2) => {
1753
+ to2.Result = (onNone) => (data) => Task.map(Maybe.to.Result(onNone))(data);
1754
+ })(to = TaskMaybe2.to || (TaskMaybe2.to = {}));
1672
1755
  TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
1673
1756
  TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
1674
1757
  (a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
1675
1758
  )(data);
1676
- TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.isNone(maybe) ? fallback() : Task.resolve(maybe))(data);
1677
- TaskMaybe2.struct = (fields) => Task.from((signal) => {
1759
+ TaskMaybe2.recover = (fallback) => (data) => Task.chain((maybe) => Maybe.is.none(maybe) ? fallback() : Task.resolve(maybe))(
1760
+ data
1761
+ );
1762
+ TaskMaybe2.struct = (fields) => Task.from.Promise((signal) => {
1678
1763
  const keys = Object.keys(fields);
1679
- const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
1764
+ const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
1680
1765
  return Promise.all(promises).then((results) => {
1681
1766
  const record = {};
1682
1767
  for (let i = 0; i < keys.length; i++) {
1683
1768
  const res = results[i];
1684
- if (Maybe.isNone(res)) {
1769
+ if (Maybe.is.none(res)) {
1685
1770
  return res;
1686
1771
  }
1687
1772
  record[keys[i]] = res.value;
1688
1773
  }
1689
- return Maybe.some(record);
1774
+ return Maybe.make.some(record);
1690
1775
  });
1691
1776
  });
1692
1777
  })(TaskMaybe || (TaskMaybe = {}));
@@ -1694,28 +1779,35 @@ var TaskMaybe;
1694
1779
  // src/Core/TaskResult.ts
1695
1780
  var TaskResult;
1696
1781
  ((TaskResult2) => {
1697
- TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
1698
- TaskResult2.err = (error) => Task.resolve(Result.err(error));
1699
- TaskResult2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.err(onNull()) : Result.ok(value));
1700
- TaskResult2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Result.err(onNone()) : Result.ok(maybe.value));
1701
- TaskResult2.fromResult = (result) => Task.resolve(result);
1702
- TaskResult2.fromThrowable = (f, onError) => (...args) => Task.from(() => f(...args).then(Result.ok).catch((error) => Result.err(onError(error))));
1703
- TaskResult2.tryCatch = (f, onError) => Task.from((signal) => Promise.resolve(f(signal)).then(Result.ok).catch((error) => Result.err(onError(error))));
1782
+ TaskResult2.ok = (value) => Task.resolve(Result.make.ok(value));
1783
+ TaskResult2.err = (error) => Task.resolve(Result.make.err(error));
1784
+ let from;
1785
+ ((from2) => {
1786
+ from2.nullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Result.make.err(onNull()) : Result.make.ok(value));
1787
+ from2.Maybe = (onNone) => (maybe) => Task.resolve(Maybe.is.none(maybe) ? Result.make.err(onNone()) : Result.make.ok(maybe.value));
1788
+ from2.Result = (result) => Task.resolve(result);
1789
+ from2.throwable = (f, onError) => (...args) => Task.from.Promise(
1790
+ () => f(...args).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
1791
+ );
1792
+ })(from = TaskResult2.from || (TaskResult2.from = {}));
1793
+ TaskResult2.tryCatch = (f, onError) => Task.from.Promise(
1794
+ (signal) => Promise.resolve(f(signal)).then(Result.make.ok).catch((error) => Result.make.err(onError(error)))
1795
+ );
1704
1796
  TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
1705
1797
  TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
1706
- TaskResult2.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
1707
- data
1708
- );
1798
+ TaskResult2.chain = (f) => (data) => Task.chain(
1799
+ (result) => Result.is.ok(result) ? f(result.value) : Task.resolve(Result.make.err(result.error))
1800
+ )(data);
1709
1801
  TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
1710
1802
  TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
1711
1803
  TaskResult2.recover = (fallback) => (data) => Task.chain(
1712
- (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
1804
+ (result) => Result.is.err(result) ? fallback(result.error) : Task.resolve(result)
1713
1805
  )(data);
1714
1806
  TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
1715
1807
  TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
1716
1808
  TaskResult2.tapError = (f) => (data) => Task.map(Result.tapError(f))(data);
1717
- TaskResult2.ap = (arg) => (data) => Task.from(
1718
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1809
+ TaskResult2.ap = (arg) => (data) => Task.from.Promise(
1810
+ (signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
1719
1811
  ([of_, oa]) => Result.ap(oa)(of_)
1720
1812
  )
1721
1813
  );
@@ -1724,19 +1816,19 @@ var TaskResult;
1724
1816
  TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
1725
1817
  (a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
1726
1818
  )(data);
1727
- TaskResult2.struct = (fields) => Task.from((signal) => {
1819
+ TaskResult2.struct = (fields) => Task.from.Promise((signal) => {
1728
1820
  const keys = Object.keys(fields);
1729
- const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
1821
+ const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
1730
1822
  return Promise.all(promises).then((results) => {
1731
1823
  const record = {};
1732
1824
  for (let i = 0; i < keys.length; i++) {
1733
1825
  const res = results[i];
1734
- if (Result.isErr(res)) {
1826
+ if (Result.is.err(res)) {
1735
1827
  return res;
1736
1828
  }
1737
1829
  record[keys[i]] = res.value;
1738
1830
  }
1739
- return Result.ok(record);
1831
+ return Result.make.ok(record);
1740
1832
  });
1741
1833
  });
1742
1834
  })(TaskResult || (TaskResult = {}));
@@ -1747,19 +1839,28 @@ var isNonEmptyArr = (list) => list.length > 0;
1747
1839
  // src/Core/TaskValidation.ts
1748
1840
  var TaskValidation;
1749
1841
  ((TaskValidation2) => {
1750
- TaskValidation2.passed = (value) => Task.resolve(Validation.passed(value));
1751
- TaskValidation2.failed = (error) => Task.resolve(Validation.failed(error));
1752
- TaskValidation2.failedAll = (errors) => Task.resolve(Validation.failedAll(errors));
1753
- TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
1754
- TaskValidation2.fromNullable = (onNull) => (value) => Task.resolve(value === null || value === void 0 ? Validation.failed(onNull()) : Validation.passed(value));
1755
- TaskValidation2.fromMaybe = (onNone) => (maybe) => Task.resolve(Maybe.isNone(maybe) ? Validation.failed(onNone()) : Validation.passed(maybe.value));
1756
- TaskValidation2.fromResult = (result) => Task.resolve(Validation.fromResult(result));
1757
- TaskValidation2.tryCatch = (f, onError) => Task.from(
1758
- (signal) => Promise.resolve(f(signal)).then(Validation.passed).catch((error) => Validation.failed(onError(error)))
1842
+ TaskValidation2.passed = (value) => Task.resolve(Validation.make.passed(value));
1843
+ TaskValidation2.failed = (error) => Task.resolve(Validation.make.failed(error));
1844
+ TaskValidation2.failedAll = (errors) => Task.resolve(Validation.make.failedAll(errors));
1845
+ let from;
1846
+ ((from2) => {
1847
+ from2.Validation = (validation) => Task.resolve(validation);
1848
+ from2.nullable = (onNull) => (value) => Task.resolve(
1849
+ value === null || value === void 0 ? Validation.make.failed(onNull()) : Validation.make.passed(value)
1850
+ );
1851
+ from2.Maybe = (onNone) => (maybe) => Task.resolve(
1852
+ Maybe.is.none(maybe) ? Validation.make.failed(onNone()) : Validation.make.passed(maybe.value)
1853
+ );
1854
+ from2.Result = (result) => Task.resolve(Validation.from.Result(result));
1855
+ })(from = TaskValidation2.from || (TaskValidation2.from = {}));
1856
+ TaskValidation2.tryCatch = (f, onError) => Task.from.Promise(
1857
+ (signal) => Promise.resolve(f(signal)).then(Validation.make.passed).catch(
1858
+ (error) => Validation.make.failed(onError(error))
1859
+ )
1759
1860
  );
1760
1861
  TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
1761
- TaskValidation2.ap = (arg) => (data) => Task.from(
1762
- (signal) => Promise.all([Deferred.toPromise(data(signal)), Deferred.toPromise(arg(signal))]).then(
1862
+ TaskValidation2.ap = (arg) => (data) => Task.from.Promise(
1863
+ (signal) => Promise.all([Deferred.to.Promise(data(signal)), Deferred.to.Promise(arg(signal))]).then(
1763
1864
  ([vf, va]) => Validation.ap(va)(vf)
1764
1865
  )
1765
1866
  );
@@ -1768,61 +1869,64 @@ var TaskValidation;
1768
1869
  TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
1769
1870
  TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
1770
1871
  TaskValidation2.recover = (fallback) => (data) => Task.chain(
1771
- (validation) => Validation.isPassed(validation) ? Task.resolve(validation) : fallback(validation.errors)
1872
+ (validation) => Validation.is.passed(validation) ? Task.resolve(validation) : fallback(validation.errors)
1772
1873
  )(data);
1773
- TaskValidation2.product = (first, second) => Task.from(
1774
- (signal) => Promise.all([Deferred.toPromise(first(signal)), Deferred.toPromise(second(signal))]).then(
1874
+ TaskValidation2.product = (first, second) => Task.from.Promise(
1875
+ (signal) => Promise.all([Deferred.to.Promise(first(signal)), Deferred.to.Promise(second(signal))]).then(
1775
1876
  ([va, vb]) => Validation.product(va, vb)
1776
1877
  )
1777
1878
  );
1778
- TaskValidation2.productAll = (data) => Task.from(
1779
- (signal) => Promise.all(data.map((t) => Deferred.toPromise(t(signal)))).then((results) => {
1879
+ TaskValidation2.productAll = (data) => Task.from.Promise(
1880
+ (signal) => Promise.all(data.map((t) => Deferred.to.Promise(t(signal)))).then((results) => {
1780
1881
  const [first, ...rest] = results;
1781
1882
  return Validation.productAll([first, ...rest]);
1782
1883
  })
1783
1884
  );
1784
1885
  TaskValidation2.mapError = (f) => (data) => Task.map(Validation.mapError(f))(data);
1785
1886
  TaskValidation2.tapError = (f) => (data) => Task.map(Validation.tapError(f))(data);
1786
- TaskValidation2.struct = (fields) => Task.from((signal) => {
1887
+ TaskValidation2.struct = (fields) => Task.from.Promise((signal) => {
1787
1888
  const keys = Object.keys(fields);
1788
- const promises = keys.map((key) => Deferred.toPromise(fields[key](signal)));
1889
+ const promises = keys.map((key) => Deferred.to.Promise(fields[key](signal)));
1789
1890
  return Promise.all(promises).then((results) => {
1790
1891
  const record = {};
1791
1892
  const errors = [];
1792
1893
  for (let i = 0; i < keys.length; i++) {
1793
1894
  const res = results[i];
1794
- if (Validation.isPassed(res)) {
1895
+ if (Validation.is.passed(res)) {
1795
1896
  record[keys[i]] = res.value;
1796
1897
  } else {
1797
1898
  errors.push(...res.errors);
1798
1899
  }
1799
1900
  }
1800
- return isNonEmptyArr(errors) ? Validation.failedAll(errors) : Validation.passed(record);
1901
+ return isNonEmptyArr(errors) ? Validation.make.failedAll(errors) : Validation.make.passed(record);
1801
1902
  });
1802
1903
  });
1803
1904
  })(TaskValidation || (TaskValidation = {}));
1804
1905
 
1805
1906
  // src/Core/Task.ts
1806
- var toPromise = (task, signal) => Deferred.toPromise(task(signal));
1807
- var getMs2 = (duration) => Duration.toMilliseconds(duration);
1907
+ var toPromise = (task, signal) => Deferred.to.Promise(task(signal));
1908
+ var getMs2 = (duration) => Duration.to.milliseconds(duration);
1808
1909
  var Task;
1809
1910
  ((Task2) => {
1810
- Task2.resolve = (value) => () => Deferred.fromPromise(Promise.resolve(value));
1811
- Task2.from = (f) => (signal) => Deferred.fromPromise(f(signal));
1812
- Task2.fromSync = (f) => () => Deferred.fromPromise(Promise.resolve(f()));
1813
- Task2.map = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then(f));
1814
- Task2.chain = (f) => (data) => (0, Task2.from)((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
1815
- Task2.ap = (arg) => (data) => (0, Task2.from)((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
1816
- Task2.tap = (f) => (data) => (0, Task2.from)(
1911
+ Task2.resolve = (value) => () => Deferred.from.Promise(globalThis.Promise.resolve(value));
1912
+ let from;
1913
+ ((from2) => {
1914
+ from2.Promise = (f) => (signal) => Deferred.from.Promise(f(signal));
1915
+ from2.sync = (f) => () => Deferred.from.Promise(globalThis.Promise.resolve(f()));
1916
+ })(from = Task2.from || (Task2.from = {}));
1917
+ Task2.map = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then(f));
1918
+ Task2.chain = (f) => (data) => from.Promise((signal) => toPromise(data, signal).then((a) => toPromise(f(a), signal)));
1919
+ Task2.ap = (arg) => (data) => from.Promise((signal) => Promise.all([toPromise(data, signal), toPromise(arg, signal)]).then(([f, a]) => f(a)));
1920
+ Task2.tap = (f) => (data) => from.Promise(
1817
1921
  (signal) => toPromise(data, signal).then((a) => {
1818
1922
  f(a);
1819
1923
  return a;
1820
1924
  })
1821
1925
  );
1822
- Task2.all = (tasks) => (0, Task2.from)(
1926
+ Task2.all = (tasks) => from.Promise(
1823
1927
  (signal) => Promise.all(tasks.map((t) => toPromise(t, signal)))
1824
1928
  );
1825
- Task2.delay = (duration) => (data) => (0, Task2.from)(
1929
+ Task2.delay = (duration) => (data) => from.Promise(
1826
1930
  (signal) => new Promise((res) => {
1827
1931
  let timerId;
1828
1932
  const onAbort = () => {
@@ -1841,7 +1945,7 @@ var Task;
1841
1945
  }, getMs2(duration));
1842
1946
  })
1843
1947
  );
1844
- Task2.repeat = (options) => (task) => (0, Task2.from)((signal) => {
1948
+ Task2.repeat = (options) => (task) => from.Promise((signal) => {
1845
1949
  const { times, delay: delayDuration } = options;
1846
1950
  if (times <= 0) {
1847
1951
  return Promise.resolve([]);
@@ -1875,7 +1979,7 @@ var Task;
1875
1979
  };
1876
1980
  return run2(times);
1877
1981
  });
1878
- Task2.repeatUntil = (options) => (task) => (0, Task2.from)((signal) => {
1982
+ Task2.repeatUntil = (options) => (task) => from.Promise((signal) => {
1879
1983
  const { when: predicate, delay: delayDuration, maxAttempts } = options;
1880
1984
  const wait = () => new Promise((r) => {
1881
1985
  let timerId;
@@ -1912,10 +2016,10 @@ var Task;
1912
2016
  });
1913
2017
  Task2.race = (tasks) => {
1914
2018
  if (tasks.length === 0) {
1915
- return () => Deferred.fromPromise(new Promise(() => {
2019
+ return () => Deferred.from.Promise(new Promise(() => {
1916
2020
  }));
1917
2021
  }
1918
- return (0, Task2.from)((outerSignal) => {
2022
+ return from.Promise((outerSignal) => {
1919
2023
  const controllers = tasks.map(() => new AbortController());
1920
2024
  const onOuterAbort = () => {
1921
2025
  for (const ctrl of controllers) {
@@ -1944,8 +2048,8 @@ var Task;
1944
2048
  return Promise.race(promises);
1945
2049
  });
1946
2050
  };
1947
- Task2.sequence = (tasks) => (0, Task2.from)((signal) => Promise.all(tasks.map((t) => toPromise(t, signal))));
1948
- Task2.sequential = (tasks) => (0, Task2.from)(async (signal) => {
2051
+ Task2.sequence = (tasks) => from.Promise((signal) => Promise.all(tasks.map((t) => toPromise(t, signal))));
2052
+ Task2.sequential = (tasks) => from.Promise(async (signal) => {
1949
2053
  const results = [];
1950
2054
  for (const task of tasks) {
1951
2055
  if (signal?.aborted) {
@@ -1955,7 +2059,7 @@ var Task;
1955
2059
  }
1956
2060
  return results;
1957
2061
  });
1958
- Task2.timeout = (duration, onTimeout) => (task) => (0, Task2.from)((outerSignal) => {
2062
+ Task2.timeout = (duration, onTimeout) => (task) => from.Promise((outerSignal) => {
1959
2063
  const controller = new AbortController();
1960
2064
  let timerId;
1961
2065
  let cleanUp = () => {
@@ -1978,13 +2082,13 @@ var Task;
1978
2082
  return Promise.race([
1979
2083
  toPromise(task, controller.signal).then((a) => {
1980
2084
  cleanUp();
1981
- return Result.ok(a);
2085
+ return Result.make.ok(a);
1982
2086
  }),
1983
2087
  new Promise((res) => {
1984
2088
  timerId = setTimeout(() => {
1985
2089
  controller.abort();
1986
2090
  cleanUp();
1987
- res(Result.err(onTimeout()));
2091
+ res(Result.make.err(onTimeout()));
1988
2092
  }, getMs2(duration));
1989
2093
  })
1990
2094
  ]);
@@ -2003,7 +2107,7 @@ var Task;
2003
2107
  outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
2004
2108
  }
2005
2109
  }
2006
- return Deferred.fromPromise(factory(controller.signal));
2110
+ return Deferred.from.Promise(factory(controller.signal));
2007
2111
  };
2008
2112
  return { task, abort };
2009
2113
  };
@@ -2020,67 +2124,73 @@ var Task;
2020
2124
  // src/Core/These.ts
2021
2125
  var These;
2022
2126
  ((These2) => {
2023
- These2.first = (value) => ({ kind: "First", first: value });
2024
- These2.second = (value) => ({ kind: "Second", second: value });
2025
- These2.both = (f, s) => ({ kind: "Both", first: f, second: s });
2026
- These2.isFirst = (data) => data.kind === "First";
2027
- These2.isSecond = (data) => data.kind === "Second";
2028
- These2.isBoth = (data) => data.kind === "Both";
2127
+ let make;
2128
+ ((make2) => {
2129
+ make2.first = (value) => ({ kind: "First", first: value });
2130
+ make2.second = (value) => ({ kind: "Second", second: value });
2131
+ make2.both = (f, s) => ({ kind: "Both", first: f, second: s });
2132
+ })(make = These2.make || (These2.make = {}));
2133
+ let is;
2134
+ ((is2) => {
2135
+ is2.first = (data) => data.kind === "First";
2136
+ is2.second = (data) => data.kind === "Second";
2137
+ is2.both = (data) => data.kind === "Both";
2138
+ })(is = These2.is || (These2.is = {}));
2029
2139
  These2.hasFirst = (data) => data.kind === "First" || data.kind === "Both";
2030
2140
  These2.hasSecond = (data) => data.kind === "Second" || data.kind === "Both";
2031
2141
  These2.mapFirst = (f) => (data) => {
2032
- if ((0, These2.isSecond)(data)) {
2142
+ if (is.second(data)) {
2033
2143
  return data;
2034
2144
  }
2035
- if ((0, These2.isFirst)(data)) {
2036
- return (0, These2.first)(f(data.first));
2145
+ if (is.first(data)) {
2146
+ return make.first(f(data.first));
2037
2147
  }
2038
- return (0, These2.both)(f(data.first), data.second);
2148
+ return make.both(f(data.first), data.second);
2039
2149
  };
2040
2150
  These2.mapSecond = (f) => (data) => {
2041
- if ((0, These2.isFirst)(data)) {
2151
+ if (is.first(data)) {
2042
2152
  return data;
2043
2153
  }
2044
- if ((0, These2.isSecond)(data)) {
2045
- return (0, These2.second)(f(data.second));
2154
+ if (is.second(data)) {
2155
+ return make.second(f(data.second));
2046
2156
  }
2047
- return (0, These2.both)(data.first, f(data.second));
2157
+ return make.both(data.first, f(data.second));
2048
2158
  };
2049
2159
  These2.mapBoth = (onFirst, onSecond) => (data) => {
2050
- if ((0, These2.isSecond)(data)) {
2051
- return (0, These2.second)(onSecond(data.second));
2160
+ if (is.second(data)) {
2161
+ return make.second(onSecond(data.second));
2052
2162
  }
2053
- if ((0, These2.isFirst)(data)) {
2054
- return (0, These2.first)(onFirst(data.first));
2163
+ if (is.first(data)) {
2164
+ return make.first(onFirst(data.first));
2055
2165
  }
2056
- return (0, These2.both)(onFirst(data.first), onSecond(data.second));
2166
+ return make.both(onFirst(data.first), onSecond(data.second));
2057
2167
  };
2058
2168
  These2.chainFirst = (f) => (data) => {
2059
- if ((0, These2.isSecond)(data)) {
2169
+ if (is.second(data)) {
2060
2170
  return data;
2061
2171
  }
2062
2172
  return f(data.first);
2063
2173
  };
2064
2174
  These2.chainSecond = (f) => (data) => {
2065
- if ((0, These2.isFirst)(data)) {
2175
+ if (is.first(data)) {
2066
2176
  return data;
2067
2177
  }
2068
2178
  return f(data.second);
2069
2179
  };
2070
2180
  These2.fold = (onFirst, onSecond, onBoth) => (data) => {
2071
- if ((0, These2.isSecond)(data)) {
2181
+ if (is.second(data)) {
2072
2182
  return onSecond(data.second);
2073
2183
  }
2074
- if ((0, These2.isFirst)(data)) {
2184
+ if (is.first(data)) {
2075
2185
  return onFirst(data.first);
2076
2186
  }
2077
2187
  return onBoth(data.first, data.second);
2078
2188
  };
2079
2189
  These2.match = (cases) => (data) => {
2080
- if ((0, These2.isSecond)(data)) {
2190
+ if (is.second(data)) {
2081
2191
  return cases.second(data.second);
2082
2192
  }
2083
- if ((0, These2.isFirst)(data)) {
2193
+ if (is.first(data)) {
2084
2194
  return cases.first(data.first);
2085
2195
  }
2086
2196
  return cases.both(data.first, data.second);
@@ -2094,20 +2204,24 @@ var These;
2094
2204
  return data;
2095
2205
  };
2096
2206
  These2.swap = (data) => {
2097
- if ((0, These2.isSecond)(data)) {
2098
- return (0, These2.first)(data.second);
2207
+ if (is.second(data)) {
2208
+ return make.first(data.second);
2099
2209
  }
2100
- if ((0, These2.isFirst)(data)) {
2101
- return (0, These2.second)(data.first);
2210
+ if (is.first(data)) {
2211
+ return make.second(data.first);
2102
2212
  }
2103
- return (0, These2.both)(data.second, data.first);
2213
+ return make.both(data.second, data.first);
2104
2214
  };
2105
2215
  })(These || (These = {}));
2106
2216
 
2107
2217
  // src/Core/Tuple.ts
2108
2218
  var Tuple;
2109
2219
  ((Tuple2) => {
2110
- Tuple2.make = (first2, second2) => [first2, second2];
2220
+ let from;
2221
+ ((from2) => {
2222
+ from2.pair = (first2, second2) => [first2, second2];
2223
+ from2.array = (arr) => arr;
2224
+ })(from = Tuple2.from || (Tuple2.from = {}));
2111
2225
  Tuple2.first = (tuple) => tuple[0];
2112
2226
  Tuple2.second = (tuple) => tuple[1];
2113
2227
  Tuple2.mapFirst = (f) => (tuple) => [f(tuple[0]), tuple[1]];
@@ -2118,7 +2232,10 @@ var Tuple;
2118
2232
  ];
2119
2233
  Tuple2.fold = (f) => (tuple) => f(tuple[0], tuple[1]);
2120
2234
  Tuple2.swap = (tuple) => [tuple[1], tuple[0]];
2121
- Tuple2.toArray = (tuple) => [...tuple];
2235
+ let to;
2236
+ ((to2) => {
2237
+ to2.Array = (tuple) => [...tuple];
2238
+ })(to = Tuple2.to || (Tuple2.to = {}));
2122
2239
  Tuple2.tap = (f) => (tuple) => {
2123
2240
  f(tuple[0], tuple[1]);
2124
2241
  return tuple;
@@ -2128,59 +2245,71 @@ var Tuple;
2128
2245
  // src/Core/Validation.ts
2129
2246
  var Validation;
2130
2247
  ((Validation2) => {
2131
- Validation2.passed = (value) => ({ kind: "Passed", value });
2132
- Validation2.failed = (error) => ({ kind: "Failed", errors: [error] });
2133
- Validation2.failedAll = (errors) => ({ kind: "Failed", errors });
2134
- Validation2.isPassed = (data) => data.kind === "Passed";
2135
- Validation2.isFailed = (data) => data.kind === "Failed";
2136
- Validation2.fromPredicate = (pred, onFalse) => (a) => pred(a) ? (0, Validation2.passed)(a) : (0, Validation2.failed)(onFalse(a));
2137
- Validation2.fromNullable = (onNull) => (value) => value === null || value === void 0 ? (0, Validation2.failed)(onNull()) : (0, Validation2.passed)(value);
2138
- Validation2.fromMaybe = (onNone) => (maybe) => Maybe.isNone(maybe) ? (0, Validation2.failed)(onNone()) : (0, Validation2.passed)(maybe.value);
2139
- Validation2.map = (f) => (data) => (0, Validation2.isPassed)(data) ? (0, Validation2.passed)(f(data.value)) : data;
2140
- Validation2.mapError = (f) => (data) => (0, Validation2.isFailed)(data) ? (0, Validation2.failedAll)(data.errors.map(f)) : data;
2248
+ let make;
2249
+ ((make2) => {
2250
+ make2.passed = (value) => ({ kind: "Passed", value });
2251
+ make2.failed = (error) => ({ kind: "Failed", errors: [error] });
2252
+ make2.failedAll = (errors) => ({ kind: "Failed", errors });
2253
+ })(make = Validation2.make || (Validation2.make = {}));
2254
+ let is;
2255
+ ((is2) => {
2256
+ is2.passed = (data) => data.kind === "Passed";
2257
+ is2.failed = (data) => data.kind === "Failed";
2258
+ })(is = Validation2.is || (Validation2.is = {}));
2259
+ let from;
2260
+ ((from2) => {
2261
+ from2.Predicate = (pred, onFalse) => (a) => pred(a) ? make.passed(a) : make.failed(onFalse(a));
2262
+ from2.nullable = (onNull) => (value) => value === null || value === void 0 ? make.failed(onNull()) : make.passed(value);
2263
+ from2.Maybe = (onNone) => (maybe) => Maybe.is.none(maybe) ? make.failed(onNone()) : make.passed(maybe.value);
2264
+ from2.Result = (data) => data.kind === "Ok" ? make.passed(data.value) : make.failed(data.error);
2265
+ })(from = Validation2.from || (Validation2.from = {}));
2266
+ Validation2.map = (f) => (data) => is.passed(data) ? make.passed(f(data.value)) : data;
2267
+ Validation2.mapError = (f) => (data) => is.failed(data) ? make.failedAll(data.errors.map(f)) : data;
2141
2268
  Validation2.ap = (arg) => (data) => {
2142
- if ((0, Validation2.isPassed)(data)) {
2143
- return (0, Validation2.isPassed)(arg) ? (0, Validation2.passed)(data.value(arg.value)) : (0, Validation2.failedAll)(arg.errors);
2269
+ if (is.passed(data)) {
2270
+ return is.passed(arg) ? make.passed(data.value(arg.value)) : make.failedAll(arg.errors);
2144
2271
  }
2145
- return (0, Validation2.isPassed)(arg) ? (0, Validation2.failedAll)(data.errors) : (0, Validation2.failedAll)([...data.errors, ...arg.errors]);
2272
+ return is.passed(arg) ? make.failedAll(data.errors) : make.failedAll([...data.errors, ...arg.errors]);
2146
2273
  };
2147
- Validation2.fold = (onFailed, onPassed) => (data) => (0, Validation2.isPassed)(data) ? onPassed(data.value) : onFailed(data.errors);
2148
- Validation2.match = (cases) => (data) => (0, Validation2.isPassed)(data) ? cases.passed(data.value) : cases.failed(data.errors);
2149
- Validation2.getOrElse = (defaultValue) => (data) => (0, Validation2.isPassed)(data) ? data.value : defaultValue();
2274
+ Validation2.fold = (onFailed, onPassed) => (data) => is.passed(data) ? onPassed(data.value) : onFailed(data.errors);
2275
+ Validation2.match = (cases) => (data) => is.passed(data) ? cases.passed(data.value) : cases.failed(data.errors);
2276
+ Validation2.getOrElse = (defaultValue) => (data) => is.passed(data) ? data.value : defaultValue();
2150
2277
  Validation2.tap = (f) => (data) => {
2151
- if ((0, Validation2.isPassed)(data)) {
2278
+ if (is.passed(data)) {
2152
2279
  f(data.value);
2153
2280
  }
2154
2281
  return data;
2155
2282
  };
2156
2283
  Validation2.tapError = (f) => (data) => {
2157
- if ((0, Validation2.isFailed)(data)) {
2284
+ if (is.failed(data)) {
2158
2285
  f(data.errors);
2159
2286
  }
2160
2287
  return data;
2161
2288
  };
2162
- Validation2.recover = (fallback) => (data) => (0, Validation2.isPassed)(data) ? data : fallback(data.errors);
2163
- Validation2.recoverUnless = (isBlocked, fallback) => (data) => (0, Validation2.isFailed)(data) && !data.errors.some(isBlocked) ? fallback() : data;
2164
- Validation2.toResult = (data) => (0, Validation2.isPassed)(data) ? Result.ok(data.value) : Result.err(data.errors);
2165
- Validation2.toMaybe = (data) => (0, Validation2.isPassed)(data) ? Maybe.some(data.value) : Maybe.none();
2166
- Validation2.fromResult = (data) => data.kind === "Ok" ? (0, Validation2.passed)(data.value) : (0, Validation2.failed)(data.error);
2289
+ Validation2.recover = (fallback) => (data) => is.passed(data) ? data : fallback(data.errors);
2290
+ Validation2.recoverUnless = (isBlocked, fallback) => (data) => is.failed(data) && !data.errors.some(isBlocked) ? fallback() : data;
2291
+ let to;
2292
+ ((to2) => {
2293
+ to2.Result = (data) => is.passed(data) ? Result.make.ok(data.value) : Result.make.err(data.errors);
2294
+ to2.Maybe = (data) => is.passed(data) ? Maybe.make.some(data.value) : Maybe.make.none();
2295
+ })(to = Validation2.to || (Validation2.to = {}));
2167
2296
  Validation2.product = (first, second) => {
2168
- if ((0, Validation2.isPassed)(first)) {
2169
- return (0, Validation2.isPassed)(second) ? (0, Validation2.passed)([first.value, second.value]) : (0, Validation2.failedAll)(second.errors);
2297
+ if (is.passed(first)) {
2298
+ return is.passed(second) ? make.passed([first.value, second.value]) : make.failedAll(second.errors);
2170
2299
  }
2171
- return (0, Validation2.isPassed)(second) ? (0, Validation2.failedAll)(first.errors) : (0, Validation2.failedAll)([...first.errors, ...second.errors]);
2300
+ return is.passed(second) ? make.failedAll(first.errors) : make.failedAll([...first.errors, ...second.errors]);
2172
2301
  };
2173
2302
  Validation2.productAll = (data) => {
2174
2303
  const values = [];
2175
2304
  const errors = [];
2176
2305
  for (const v of data) {
2177
- if ((0, Validation2.isPassed)(v)) {
2306
+ if (is.passed(v)) {
2178
2307
  values.push(v.value);
2179
2308
  } else {
2180
2309
  errors.push(...v.errors);
2181
2310
  }
2182
2311
  }
2183
- return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(values);
2312
+ return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(values);
2184
2313
  };
2185
2314
  Validation2.struct = (fields) => {
2186
2315
  const record = {};
@@ -2188,14 +2317,14 @@ var Validation;
2188
2317
  for (const key in fields) {
2189
2318
  if (Object.hasOwn(fields, key)) {
2190
2319
  const val = fields[key];
2191
- if ((0, Validation2.isPassed)(val)) {
2320
+ if (is.passed(val)) {
2192
2321
  record[key] = val.value;
2193
2322
  } else {
2194
2323
  errors.push(...val.errors);
2195
2324
  }
2196
2325
  }
2197
2326
  }
2198
- return isNonEmptyArr(errors) ? (0, Validation2.failedAll)(errors) : (0, Validation2.passed)(record);
2327
+ return isNonEmptyArr(errors) ? make.failedAll(errors) : make.passed(record);
2199
2328
  };
2200
2329
  })(Validation || (Validation = {}));
2201
2330
  // Annotate the CommonJS export names for ESM import in node:
@@ -2218,6 +2347,9 @@ var Validation;
2218
2347
  Result,
2219
2348
  State,
2220
2349
  Task,
2350
+ TaskMaybe,
2351
+ TaskResult,
2352
+ TaskValidation,
2221
2353
  These,
2222
2354
  Tuple,
2223
2355
  Validation