@nlozgachev/pipelined 0.20.0 → 0.22.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.
@@ -1,603 +0,0 @@
1
- import {
2
- Deferred,
3
- Maybe,
4
- Result,
5
- Task
6
- } from "./chunk-RUDOUVQR.mjs";
7
-
8
- // src/Core/Lens.ts
9
- var Lens;
10
- ((Lens2) => {
11
- Lens2.make = (get2, set2) => ({ get: get2, set: set2 });
12
- Lens2.prop = () => (key) => (0, Lens2.make)(
13
- (s) => s[key],
14
- (a) => (s) => ({ ...s, [key]: a })
15
- );
16
- Lens2.get = (lens) => (s) => lens.get(s);
17
- Lens2.set = (lens) => (a) => (s) => lens.set(a)(s);
18
- Lens2.modify = (lens) => (f) => (s) => lens.set(f(lens.get(s)))(s);
19
- Lens2.andThen = (inner) => (outer) => (0, Lens2.make)(
20
- (s) => inner.get(outer.get(s)),
21
- (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
22
- );
23
- Lens2.andThenOptional = (inner) => (outer) => ({
24
- get: (s) => inner.get(outer.get(s)),
25
- set: (b) => (s) => outer.set(inner.set(b)(outer.get(s)))(s)
26
- });
27
- Lens2.toOptional = (lens) => ({
28
- get: (s) => ({ kind: "Some", value: lens.get(s) }),
29
- set: lens.set
30
- });
31
- })(Lens || (Lens = {}));
32
-
33
- // src/Core/Logged.ts
34
- var Logged;
35
- ((Logged2) => {
36
- Logged2.make = (value) => ({ value, log: [] });
37
- Logged2.tell = (entry) => ({ value: void 0, log: [entry] });
38
- Logged2.map = (f) => (data) => ({
39
- value: f(data.value),
40
- log: data.log
41
- });
42
- Logged2.chain = (f) => (data) => {
43
- const next = f(data.value);
44
- return { value: next.value, log: [...data.log, ...next.log] };
45
- };
46
- Logged2.ap = (arg) => (data) => ({
47
- value: data.value(arg.value),
48
- log: [...data.log, ...arg.log]
49
- });
50
- Logged2.tap = (f) => (data) => {
51
- f(data.value);
52
- return data;
53
- };
54
- Logged2.run = (data) => [data.value, data.log];
55
- })(Logged || (Logged = {}));
56
-
57
- // src/Core/Optional.ts
58
- var Optional;
59
- ((Optional2) => {
60
- Optional2.make = (get2, set2) => ({ get: get2, set: set2 });
61
- Optional2.prop = () => (key) => (0, Optional2.make)(
62
- (s) => {
63
- const val = s[key];
64
- return val !== null && val !== void 0 ? Maybe.some(val) : Maybe.none();
65
- },
66
- (a) => (s) => ({ ...s, [key]: a })
67
- );
68
- Optional2.index = (i) => (0, Optional2.make)(
69
- (arr) => i >= 0 && i < arr.length ? Maybe.some(arr[i]) : Maybe.none(),
70
- (a) => (arr) => {
71
- if (i < 0 || i >= arr.length) return arr;
72
- const copy = [...arr];
73
- copy[i] = a;
74
- return copy;
75
- }
76
- );
77
- Optional2.get = (opt) => (s) => opt.get(s);
78
- Optional2.set = (opt) => (a) => (s) => opt.set(a)(s);
79
- Optional2.modify = (opt) => (f) => (s) => {
80
- const val = opt.get(s);
81
- return val.kind === "None" ? s : opt.set(f(val.value))(s);
82
- };
83
- Optional2.getOrElse = (opt) => (defaultValue) => (s) => {
84
- const val = opt.get(s);
85
- return val.kind === "Some" ? val.value : defaultValue();
86
- };
87
- Optional2.fold = (opt) => (onNone, onSome) => (s) => {
88
- const val = opt.get(s);
89
- return val.kind === "Some" ? onSome(val.value) : onNone();
90
- };
91
- Optional2.match = (opt) => (cases) => (s) => {
92
- const val = opt.get(s);
93
- return val.kind === "Some" ? cases.some(val.value) : cases.none();
94
- };
95
- Optional2.andThen = (inner) => (outer) => (0, Optional2.make)(
96
- (s) => {
97
- const mid = outer.get(s);
98
- return mid.kind === "None" ? Maybe.none() : inner.get(mid.value);
99
- },
100
- (b) => (s) => {
101
- const mid = outer.get(s);
102
- return mid.kind === "None" ? s : outer.set(inner.set(b)(mid.value))(s);
103
- }
104
- );
105
- Optional2.andThenLens = (inner) => (outer) => (0, Optional2.make)(
106
- (s) => {
107
- const mid = outer.get(s);
108
- return mid.kind === "None" ? Maybe.none() : Maybe.some(inner.get(mid.value));
109
- },
110
- (b) => (s) => {
111
- const mid = outer.get(s);
112
- return mid.kind === "None" ? s : outer.set(inner.set(b)(mid.value))(s);
113
- }
114
- );
115
- })(Optional || (Optional = {}));
116
-
117
- // src/Core/Predicate.ts
118
- var Predicate;
119
- ((Predicate2) => {
120
- Predicate2.not = (p) => (a) => !p(a);
121
- Predicate2.and = (second) => (first) => (a) => first(a) && second(a);
122
- Predicate2.or = (second) => (first) => (a) => first(a) || second(a);
123
- Predicate2.using = (f) => (p) => (b) => p(f(b));
124
- Predicate2.all = (predicates) => (a) => predicates.every((p) => p(a));
125
- Predicate2.any = (predicates) => (a) => predicates.some((p) => p(a));
126
- Predicate2.fromRefinement = (r) => r;
127
- })(Predicate || (Predicate = {}));
128
-
129
- // src/Core/Reader.ts
130
- var Reader;
131
- ((Reader2) => {
132
- Reader2.resolve = (value) => (_env) => value;
133
- Reader2.ask = () => (env) => env;
134
- Reader2.asks = (f) => (env) => f(env);
135
- Reader2.map = (f) => (data) => (env) => f(data(env));
136
- Reader2.chain = (f) => (data) => (env) => f(data(env))(env);
137
- Reader2.ap = (arg) => (data) => (env) => data(env)(arg(env));
138
- Reader2.tap = (f) => (data) => (env) => {
139
- const a = data(env);
140
- f(a);
141
- return a;
142
- };
143
- Reader2.local = (f) => (data) => (env) => data(f(env));
144
- Reader2.run = (env) => (data) => data(env);
145
- })(Reader || (Reader = {}));
146
-
147
- // src/Core/Refinement.ts
148
- var Refinement;
149
- ((Refinement2) => {
150
- Refinement2.make = (f) => f;
151
- Refinement2.compose = (bc) => (ab) => (a) => ab(a) && bc(a);
152
- Refinement2.and = (second) => (first) => (a) => first(a) && second(a);
153
- Refinement2.or = (second) => (first) => (a) => first(a) || second(a);
154
- Refinement2.toFilter = (r) => (a) => r(a) ? Maybe.some(a) : Maybe.none();
155
- Refinement2.toResult = (r, onFail) => (a) => r(a) ? Result.ok(a) : Result.err(onFail(a));
156
- })(Refinement || (Refinement = {}));
157
-
158
- // src/Core/RemoteData.ts
159
- var _notAsked = { kind: "NotAsked" };
160
- var _loading = { kind: "Loading" };
161
- var RemoteData;
162
- ((RemoteData2) => {
163
- RemoteData2.notAsked = () => _notAsked;
164
- RemoteData2.loading = () => _loading;
165
- RemoteData2.failure = (error) => ({
166
- kind: "Failure",
167
- error
168
- });
169
- RemoteData2.success = (value) => ({
170
- kind: "Success",
171
- value
172
- });
173
- RemoteData2.isNotAsked = (data) => data.kind === "NotAsked";
174
- RemoteData2.isLoading = (data) => data.kind === "Loading";
175
- RemoteData2.isFailure = (data) => data.kind === "Failure";
176
- RemoteData2.isSuccess = (data) => data.kind === "Success";
177
- RemoteData2.map = (f) => (data) => (0, RemoteData2.isSuccess)(data) ? (0, RemoteData2.success)(f(data.value)) : data;
178
- RemoteData2.mapError = (f) => (data) => (0, RemoteData2.isFailure)(data) ? (0, RemoteData2.failure)(f(data.error)) : data;
179
- RemoteData2.chain = (f) => (data) => (0, RemoteData2.isSuccess)(data) ? f(data.value) : data;
180
- RemoteData2.ap = (arg) => (data) => {
181
- if ((0, RemoteData2.isSuccess)(data) && (0, RemoteData2.isSuccess)(arg)) {
182
- return (0, RemoteData2.success)(data.value(arg.value));
183
- }
184
- if ((0, RemoteData2.isFailure)(data)) return data;
185
- if ((0, RemoteData2.isFailure)(arg)) return arg;
186
- if ((0, RemoteData2.isLoading)(data) || (0, RemoteData2.isLoading)(arg)) return (0, RemoteData2.loading)();
187
- return (0, RemoteData2.notAsked)();
188
- };
189
- RemoteData2.fold = (onNotAsked, onLoading, onFailure, onSuccess) => (data) => {
190
- switch (data.kind) {
191
- case "NotAsked":
192
- return onNotAsked();
193
- case "Loading":
194
- return onLoading();
195
- case "Failure":
196
- return onFailure(data.error);
197
- case "Success":
198
- return onSuccess(data.value);
199
- }
200
- };
201
- RemoteData2.match = (cases) => (data) => {
202
- switch (data.kind) {
203
- case "NotAsked":
204
- return cases.notAsked();
205
- case "Loading":
206
- return cases.loading();
207
- case "Failure":
208
- return cases.failure(data.error);
209
- case "Success":
210
- return cases.success(data.value);
211
- }
212
- };
213
- RemoteData2.getOrElse = (defaultValue) => (data) => (0, RemoteData2.isSuccess)(data) ? data.value : defaultValue();
214
- RemoteData2.tap = (f) => (data) => {
215
- if ((0, RemoteData2.isSuccess)(data)) f(data.value);
216
- return data;
217
- };
218
- RemoteData2.recover = (fallback) => (data) => (0, RemoteData2.isFailure)(data) ? fallback(data.error) : data;
219
- RemoteData2.toMaybe = (data) => (0, RemoteData2.isSuccess)(data) ? Maybe.some(data.value) : Maybe.none();
220
- RemoteData2.toResult = (onNotReady) => (data) => (0, RemoteData2.isSuccess)(data) ? Result.ok(data.value) : Result.err((0, RemoteData2.isFailure)(data) ? data.error : onNotReady());
221
- })(RemoteData || (RemoteData = {}));
222
-
223
- // src/Core/Resource.ts
224
- var Resource;
225
- ((Resource2) => {
226
- Resource2.make = (acquire, release) => ({ acquire, release });
227
- Resource2.fromTask = (acquire, release) => ({
228
- acquire: Task.map((a) => Result.ok(a))(acquire),
229
- release
230
- });
231
- Resource2.use = (f) => (resource) => Task.from(
232
- () => Deferred.toPromise(resource.acquire()).then(async (acquired) => {
233
- if (Result.isErr(acquired)) return acquired;
234
- const a = acquired.value;
235
- const usageResult = await Deferred.toPromise(f(a)());
236
- await Deferred.toPromise(resource.release(a)());
237
- return usageResult;
238
- })
239
- );
240
- Resource2.combine = (resourceA, resourceB) => ({
241
- acquire: Task.from(
242
- () => Deferred.toPromise(resourceA.acquire()).then(async (acquiredA) => {
243
- if (Result.isErr(acquiredA)) return acquiredA;
244
- const a = acquiredA.value;
245
- const acquiredB = await Deferred.toPromise(resourceB.acquire());
246
- if (Result.isErr(acquiredB)) {
247
- await Deferred.toPromise(resourceA.release(a)());
248
- return acquiredB;
249
- }
250
- return Result.ok([a, acquiredB.value]);
251
- })
252
- ),
253
- release: ([a, b]) => Task.from(() => Deferred.toPromise(resourceB.release(b)()).then(() => Deferred.toPromise(resourceA.release(a)())))
254
- });
255
- })(Resource || (Resource = {}));
256
-
257
- // src/Core/State.ts
258
- var State;
259
- ((State2) => {
260
- State2.resolve = (value) => (s) => [value, s];
261
- State2.get = () => (s) => [s, s];
262
- State2.gets = (f) => (s) => [f(s), s];
263
- State2.put = (newState) => (_s) => [void 0, newState];
264
- State2.modify = (f) => (s) => [void 0, f(s)];
265
- State2.map = (f) => (st) => (s) => {
266
- const [a, s1] = st(s);
267
- return [f(a), s1];
268
- };
269
- State2.chain = (f) => (st) => (s) => {
270
- const [a, s1] = st(s);
271
- return f(a)(s1);
272
- };
273
- State2.ap = (arg) => (fn) => (s) => {
274
- const [f, s1] = fn(s);
275
- const [a, s2] = arg(s1);
276
- return [f(a), s2];
277
- };
278
- State2.tap = (f) => (st) => (s) => {
279
- const [a, s1] = st(s);
280
- f(a);
281
- return [a, s1];
282
- };
283
- State2.run = (initialState) => (st) => st(initialState);
284
- State2.evaluate = (initialState) => (st) => st(initialState)[0];
285
- State2.execute = (initialState) => (st) => st(initialState)[1];
286
- })(State || (State = {}));
287
-
288
- // src/Core/TaskMaybe.ts
289
- var TaskMaybe;
290
- ((TaskMaybe2) => {
291
- TaskMaybe2.some = (value) => Task.resolve(Maybe.some(value));
292
- TaskMaybe2.none = () => Task.resolve(Maybe.none());
293
- TaskMaybe2.fromMaybe = (option) => Task.resolve(option);
294
- TaskMaybe2.fromTask = (task) => Task.map(Maybe.some)(task);
295
- TaskMaybe2.tryCatch = (f) => Task.from(
296
- () => f().then(Maybe.some).catch(() => Maybe.none())
297
- );
298
- TaskMaybe2.map = (f) => (data) => Task.map(Maybe.map(f))(data);
299
- TaskMaybe2.chain = (f) => (data) => Task.chain((option) => Maybe.isSome(option) ? f(option.value) : Task.resolve(Maybe.none()))(data);
300
- TaskMaybe2.ap = (arg) => (data) => Task.from(
301
- () => Promise.all([
302
- Deferred.toPromise(data()),
303
- Deferred.toPromise(arg())
304
- ]).then(([of_, oa]) => Maybe.ap(oa)(of_))
305
- );
306
- TaskMaybe2.fold = (onNone, onSome) => (data) => Task.map(Maybe.fold(onNone, onSome))(data);
307
- TaskMaybe2.match = (cases) => (data) => Task.map(Maybe.match(cases))(data);
308
- TaskMaybe2.getOrElse = (defaultValue) => (data) => Task.map(Maybe.getOrElse(defaultValue))(data);
309
- TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
310
- TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
311
- TaskMaybe2.toTaskResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
312
- })(TaskMaybe || (TaskMaybe = {}));
313
-
314
- // src/Core/TaskResult.ts
315
- var cancellableWait = (ms, signal) => {
316
- if (ms <= 0) return Promise.resolve();
317
- if (!signal) return new Promise((r) => setTimeout(r, ms));
318
- return new Promise((resolve) => {
319
- const id = setTimeout(resolve, ms);
320
- signal.addEventListener("abort", () => {
321
- clearTimeout(id);
322
- resolve();
323
- }, { once: true });
324
- });
325
- };
326
- var TaskResult;
327
- ((TaskResult2) => {
328
- TaskResult2.ok = (value) => Task.resolve(Result.ok(value));
329
- TaskResult2.err = (error) => Task.resolve(Result.err(error));
330
- TaskResult2.tryCatch = (f, onError) => Task.from(
331
- (signal) => f(signal).then(Result.ok).catch((e) => Result.err(onError(e)))
332
- );
333
- TaskResult2.map = (f) => (data) => Task.map(Result.map(f))(data);
334
- TaskResult2.mapError = (f) => (data) => Task.map(Result.mapError(f))(data);
335
- TaskResult2.chain = (f) => (data) => Task.chain((result) => Result.isOk(result) ? f(result.value) : Task.resolve(Result.err(result.error)))(
336
- data
337
- );
338
- TaskResult2.fold = (onErr, onOk) => (data) => Task.map(Result.fold(onErr, onOk))(data);
339
- TaskResult2.match = (cases) => (data) => Task.map(Result.match(cases))(data);
340
- TaskResult2.recover = (fallback) => (data) => Task.chain(
341
- (result) => Result.isErr(result) ? fallback(result.error) : Task.resolve(result)
342
- )(data);
343
- TaskResult2.getOrElse = (defaultValue) => (data) => Task.map(Result.getOrElse(defaultValue))(data);
344
- TaskResult2.tap = (f) => (data) => Task.map(Result.tap(f))(data);
345
- TaskResult2.retry = (options) => (data) => Task.from((signal) => {
346
- const { attempts, backoff, when: shouldRetry } = options;
347
- const getDelay = (n) => backoff === void 0 ? 0 : typeof backoff === "function" ? backoff(n) : backoff;
348
- const run = (left) => Deferred.toPromise(data(signal)).then((result) => {
349
- if (Result.isOk(result)) return result;
350
- if (left <= 1) return result;
351
- if (shouldRetry !== void 0 && !shouldRetry(result.error)) {
352
- return result;
353
- }
354
- if (signal?.aborted) return result;
355
- const ms = getDelay(attempts - left + 1);
356
- return cancellableWait(ms, signal).then(() => {
357
- if (signal?.aborted) return result;
358
- return run(left - 1);
359
- });
360
- });
361
- return run(attempts);
362
- });
363
- TaskResult2.pollUntil = (options) => (task) => Task.from((signal) => {
364
- const { when: predicate, delay } = options;
365
- const getDelay = (attempt) => delay === void 0 ? 0 : typeof delay === "function" ? delay(attempt) : delay;
366
- const run = (attempt) => Deferred.toPromise(task(signal)).then((result) => {
367
- if (Result.isErr(result)) return result;
368
- if (predicate(result.value)) return result;
369
- if (signal?.aborted) return result;
370
- const ms = getDelay(attempt);
371
- return cancellableWait(ms, signal).then(() => {
372
- if (signal?.aborted) return result;
373
- return run(attempt + 1);
374
- });
375
- });
376
- return run(1);
377
- });
378
- TaskResult2.timeout = (ms, onTimeout) => (data) => Task.from((outerSignal) => {
379
- const controller = new AbortController();
380
- const onOuterAbort = () => controller.abort();
381
- outerSignal?.addEventListener("abort", onOuterAbort, { once: true });
382
- let timerId;
383
- return Promise.race([
384
- Deferred.toPromise(data(controller.signal)).then((result) => {
385
- clearTimeout(timerId);
386
- outerSignal?.removeEventListener("abort", onOuterAbort);
387
- return result;
388
- }),
389
- new Promise((resolve) => {
390
- timerId = setTimeout(() => {
391
- controller.abort();
392
- outerSignal?.removeEventListener("abort", onOuterAbort);
393
- resolve(Result.err(onTimeout()));
394
- }, ms);
395
- })
396
- ]);
397
- });
398
- TaskResult2.abortable = (factory, onError) => {
399
- const controller = new AbortController();
400
- const task = (outerSignal) => {
401
- if (outerSignal) {
402
- if (outerSignal.aborted) {
403
- controller.abort(outerSignal.reason);
404
- } else {
405
- outerSignal.addEventListener("abort", () => controller.abort(outerSignal.reason), { once: true });
406
- }
407
- }
408
- return Deferred.fromPromise(
409
- factory(controller.signal).then(Result.ok).catch((e) => Result.err(onError(e)))
410
- );
411
- };
412
- return { task, abort: () => controller.abort() };
413
- };
414
- })(TaskResult || (TaskResult = {}));
415
-
416
- // src/Core/Validation.ts
417
- var Validation;
418
- ((Validation2) => {
419
- Validation2.valid = (value) => ({
420
- kind: "Valid",
421
- value
422
- });
423
- Validation2.invalid = (error) => ({
424
- kind: "Invalid",
425
- errors: [error]
426
- });
427
- Validation2.invalidAll = (errors) => ({
428
- kind: "Invalid",
429
- errors
430
- });
431
- Validation2.isValid = (data) => data.kind === "Valid";
432
- Validation2.isInvalid = (data) => data.kind === "Invalid";
433
- Validation2.map = (f) => (data) => (0, Validation2.isValid)(data) ? (0, Validation2.valid)(f(data.value)) : data;
434
- Validation2.ap = (arg) => (data) => {
435
- if ((0, Validation2.isValid)(data) && (0, Validation2.isValid)(arg)) return (0, Validation2.valid)(data.value(arg.value));
436
- const errors = [
437
- ...(0, Validation2.isInvalid)(data) ? data.errors : [],
438
- ...(0, Validation2.isInvalid)(arg) ? arg.errors : []
439
- ];
440
- return (0, Validation2.invalidAll)(errors);
441
- };
442
- Validation2.fold = (onInvalid, onValid) => (data) => (0, Validation2.isValid)(data) ? onValid(data.value) : onInvalid(data.errors);
443
- Validation2.match = (cases) => (data) => (0, Validation2.isValid)(data) ? cases.valid(data.value) : cases.invalid(data.errors);
444
- Validation2.getOrElse = (defaultValue) => (data) => (0, Validation2.isValid)(data) ? data.value : defaultValue();
445
- Validation2.tap = (f) => (data) => {
446
- if ((0, Validation2.isValid)(data)) f(data.value);
447
- return data;
448
- };
449
- Validation2.recover = (fallback) => (data) => (0, Validation2.isValid)(data) ? data : fallback(data.errors);
450
- Validation2.recoverUnless = (blockedErrors, fallback) => (data) => (0, Validation2.isInvalid)(data) && !data.errors.some((err) => blockedErrors.includes(err)) ? fallback() : data;
451
- Validation2.product = (first, second) => {
452
- if ((0, Validation2.isValid)(first) && (0, Validation2.isValid)(second)) return (0, Validation2.valid)([first.value, second.value]);
453
- const errors = [
454
- ...(0, Validation2.isInvalid)(first) ? first.errors : [],
455
- ...(0, Validation2.isInvalid)(second) ? second.errors : []
456
- ];
457
- return (0, Validation2.invalidAll)(errors);
458
- };
459
- Validation2.productAll = (data) => {
460
- const values = [];
461
- const errors = [];
462
- for (const v of data) {
463
- if ((0, Validation2.isValid)(v)) values.push(v.value);
464
- else errors.push(...v.errors);
465
- }
466
- return errors.length > 0 ? (0, Validation2.invalidAll)(errors) : (0, Validation2.valid)(values);
467
- };
468
- })(Validation || (Validation = {}));
469
-
470
- // src/Core/TaskValidation.ts
471
- var TaskValidation;
472
- ((TaskValidation2) => {
473
- TaskValidation2.valid = (value) => Task.resolve(Validation.valid(value));
474
- TaskValidation2.invalid = (error) => Task.resolve(Validation.invalid(error));
475
- TaskValidation2.invalidAll = (errors) => Task.resolve(Validation.invalidAll(errors));
476
- TaskValidation2.fromValidation = (validation) => Task.resolve(validation);
477
- TaskValidation2.tryCatch = (f, onError) => Task.from(
478
- () => f().then(Validation.valid).catch((e) => Validation.invalid(onError(e)))
479
- );
480
- TaskValidation2.map = (f) => (data) => Task.map(Validation.map(f))(data);
481
- TaskValidation2.ap = (arg) => (data) => Task.from(
482
- () => Promise.all([
483
- Deferred.toPromise(data()),
484
- Deferred.toPromise(arg())
485
- ]).then(([vf, va]) => Validation.ap(va)(vf))
486
- );
487
- TaskValidation2.fold = (onInvalid, onValid) => (data) => Task.map(Validation.fold(onInvalid, onValid))(data);
488
- TaskValidation2.match = (cases) => (data) => Task.map(Validation.match(cases))(data);
489
- TaskValidation2.getOrElse = (defaultValue) => (data) => Task.map(Validation.getOrElse(defaultValue))(data);
490
- TaskValidation2.tap = (f) => (data) => Task.map(Validation.tap(f))(data);
491
- TaskValidation2.recover = (fallback) => (data) => Task.chain(
492
- (validation) => Validation.isValid(validation) ? Task.resolve(validation) : fallback(validation.errors)
493
- )(data);
494
- TaskValidation2.product = (first, second) => Task.from(
495
- () => Promise.all([
496
- Deferred.toPromise(first()),
497
- Deferred.toPromise(second())
498
- ]).then(([va, vb]) => Validation.product(va, vb))
499
- );
500
- TaskValidation2.productAll = (data) => Task.from(
501
- () => Promise.all(data.map((t) => Deferred.toPromise(t()))).then((results) => Validation.productAll(results))
502
- );
503
- })(TaskValidation || (TaskValidation = {}));
504
-
505
- // src/Core/These.ts
506
- var These;
507
- ((These2) => {
508
- These2.first = (value) => ({ kind: "First", first: value });
509
- These2.second = (value) => ({ kind: "Second", second: value });
510
- These2.both = (first2, second2) => ({
511
- kind: "Both",
512
- first: first2,
513
- second: second2
514
- });
515
- These2.isFirst = (data) => data.kind === "First";
516
- These2.isSecond = (data) => data.kind === "Second";
517
- These2.isBoth = (data) => data.kind === "Both";
518
- These2.hasFirst = (data) => data.kind === "First" || data.kind === "Both";
519
- These2.hasSecond = (data) => data.kind === "Second" || data.kind === "Both";
520
- These2.mapFirst = (f) => (data) => {
521
- if ((0, These2.isSecond)(data)) return data;
522
- if ((0, These2.isFirst)(data)) return (0, These2.first)(f(data.first));
523
- return (0, These2.both)(f(data.first), data.second);
524
- };
525
- These2.mapSecond = (f) => (data) => {
526
- if ((0, These2.isFirst)(data)) return data;
527
- if ((0, These2.isSecond)(data)) return (0, These2.second)(f(data.second));
528
- return (0, These2.both)(data.first, f(data.second));
529
- };
530
- These2.mapBoth = (onFirst, onSecond) => (data) => {
531
- if ((0, These2.isSecond)(data)) return (0, These2.second)(onSecond(data.second));
532
- if ((0, These2.isFirst)(data)) return (0, These2.first)(onFirst(data.first));
533
- return (0, These2.both)(onFirst(data.first), onSecond(data.second));
534
- };
535
- These2.chainFirst = (f) => (data) => {
536
- if ((0, These2.isSecond)(data)) return data;
537
- return f(data.first);
538
- };
539
- These2.chainSecond = (f) => (data) => {
540
- if ((0, These2.isFirst)(data)) return data;
541
- return f(data.second);
542
- };
543
- These2.fold = (onFirst, onSecond, onBoth) => (data) => {
544
- if ((0, These2.isSecond)(data)) return onSecond(data.second);
545
- if ((0, These2.isFirst)(data)) return onFirst(data.first);
546
- return onBoth(data.first, data.second);
547
- };
548
- These2.match = (cases) => (data) => {
549
- if ((0, These2.isSecond)(data)) return cases.second(data.second);
550
- if ((0, These2.isFirst)(data)) return cases.first(data.first);
551
- return cases.both(data.first, data.second);
552
- };
553
- These2.getFirstOrElse = (defaultValue) => (data) => (0, These2.hasFirst)(data) ? data.first : defaultValue();
554
- These2.getSecondOrElse = (defaultValue) => (data) => (0, These2.hasSecond)(data) ? data.second : defaultValue();
555
- These2.tap = (f) => (data) => {
556
- if ((0, These2.hasFirst)(data)) f(data.first);
557
- return data;
558
- };
559
- These2.swap = (data) => {
560
- if ((0, These2.isSecond)(data)) return (0, These2.first)(data.second);
561
- if ((0, These2.isFirst)(data)) return (0, These2.second)(data.first);
562
- return (0, These2.both)(data.second, data.first);
563
- };
564
- })(These || (These = {}));
565
-
566
- // src/Core/Tuple.ts
567
- var Tuple;
568
- ((Tuple2) => {
569
- Tuple2.make = (first2, second2) => [first2, second2];
570
- Tuple2.first = (tuple) => tuple[0];
571
- Tuple2.second = (tuple) => tuple[1];
572
- Tuple2.mapFirst = (f) => (tuple) => [f(tuple[0]), tuple[1]];
573
- Tuple2.mapSecond = (f) => (tuple) => [tuple[0], f(tuple[1])];
574
- Tuple2.mapBoth = (onFirst, onSecond) => (tuple) => [
575
- onFirst(tuple[0]),
576
- onSecond(tuple[1])
577
- ];
578
- Tuple2.fold = (f) => (tuple) => f(tuple[0], tuple[1]);
579
- Tuple2.swap = (tuple) => [tuple[1], tuple[0]];
580
- Tuple2.toArray = (tuple) => [...tuple];
581
- Tuple2.tap = (f) => (tuple) => {
582
- f(tuple[0], tuple[1]);
583
- return tuple;
584
- };
585
- })(Tuple || (Tuple = {}));
586
-
587
- export {
588
- Lens,
589
- Logged,
590
- Optional,
591
- Predicate,
592
- Reader,
593
- Refinement,
594
- RemoteData,
595
- Resource,
596
- State,
597
- TaskMaybe,
598
- TaskResult,
599
- Validation,
600
- TaskValidation,
601
- These,
602
- Tuple
603
- };