@nlozgachev/pipelined 0.35.0 → 0.37.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/README.md +69 -92
- package/dist/{Task-zAY4kSVB.d.ts → Task-DIgwvoIb.d.ts} +67 -1
- package/dist/{Task-DXsuurnc.d.mts → Task-fn1n--6H.d.mts} +67 -1
- package/dist/{chunk-AHEZFTMT.mjs → chunk-3Q5UBRYB.mjs} +92 -0
- package/dist/{chunk-IJFFWBKW.mjs → chunk-72BGUEQM.mjs} +1 -1
- package/dist/{chunk-DLBHVYII.mjs → chunk-PUMSVZB4.mjs} +12 -0
- package/dist/{chunk-5AWUAG7G.mjs → chunk-SHO53CQC.mjs} +26 -6
- package/dist/composition.d.mts +189 -1
- package/dist/composition.d.ts +189 -1
- package/dist/composition.js +93 -0
- package/dist/composition.mjs +3 -1
- package/dist/core.d.mts +113 -7
- package/dist/core.d.ts +113 -7
- package/dist/core.js +37 -5
- package/dist/core.mjs +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +130 -5
- package/dist/index.mjs +6 -4
- package/dist/utils.d.mts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +12 -0
- package/dist/utils.mjs +2 -2
- package/package.json +8 -3
package/dist/index.js
CHANGED
|
@@ -64,6 +64,7 @@ __export(src_exports, {
|
|
|
64
64
|
curry: () => curry,
|
|
65
65
|
curry3: () => curry3,
|
|
66
66
|
curry4: () => curry4,
|
|
67
|
+
defaultTo: () => defaultTo,
|
|
67
68
|
flip: () => flip,
|
|
68
69
|
flow: () => flow,
|
|
69
70
|
identity: () => identity,
|
|
@@ -210,6 +211,53 @@ function flow(ab, bc, cd, de, ef, fg, gh, hi, ij, jk) {
|
|
|
210
211
|
}
|
|
211
212
|
}
|
|
212
213
|
}
|
|
214
|
+
var when = (predicate, onTrue) => (a) => predicate(a) ? onTrue(a) : a;
|
|
215
|
+
var unless = (predicate, onFalse) => (a) => predicate(a) ? a : onFalse(a);
|
|
216
|
+
var either = (predicate, onTrue, onFalse) => (a) => predicate(a) ? onTrue(a) : onFalse(a);
|
|
217
|
+
var struct = (fields) => (a) => {
|
|
218
|
+
const result = {};
|
|
219
|
+
for (const key of Object.keys(fields)) {
|
|
220
|
+
result[key] = fields[key](a);
|
|
221
|
+
}
|
|
222
|
+
return result;
|
|
223
|
+
};
|
|
224
|
+
function safe(...fns) {
|
|
225
|
+
return (a) => {
|
|
226
|
+
let result = a;
|
|
227
|
+
if (result === null || result === void 0) {
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
for (const fn of fns) {
|
|
231
|
+
result = fn(result);
|
|
232
|
+
if (result === null || result === void 0) {
|
|
233
|
+
return result;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return result;
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
function async(...fns) {
|
|
240
|
+
return async (a) => {
|
|
241
|
+
let result = await a;
|
|
242
|
+
for (const fn of fns) {
|
|
243
|
+
result = await fn(result);
|
|
244
|
+
}
|
|
245
|
+
return result;
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
flow.when = when;
|
|
249
|
+
flow.unless = unless;
|
|
250
|
+
flow.either = either;
|
|
251
|
+
flow.struct = struct;
|
|
252
|
+
flow.safe = safe;
|
|
253
|
+
flow.async = async;
|
|
254
|
+
flow.try = (f, onError) => (a) => {
|
|
255
|
+
try {
|
|
256
|
+
return f(a);
|
|
257
|
+
} catch (error) {
|
|
258
|
+
return onError(error, a);
|
|
259
|
+
}
|
|
260
|
+
};
|
|
213
261
|
|
|
214
262
|
// src/Composition/fn.ts
|
|
215
263
|
var identity = (a) => a;
|
|
@@ -233,6 +281,7 @@ var once = (f) => {
|
|
|
233
281
|
return result;
|
|
234
282
|
};
|
|
235
283
|
};
|
|
284
|
+
var defaultTo = (fallback) => (a) => a === null || a === void 0 ? fallback : a;
|
|
236
285
|
|
|
237
286
|
// src/Composition/juxt.ts
|
|
238
287
|
function juxt(fns) {
|
|
@@ -308,6 +357,49 @@ function pipe(a, ab, bc, cd, de, ef, fg, gh, hi, ij, jk) {
|
|
|
308
357
|
}
|
|
309
358
|
}
|
|
310
359
|
}
|
|
360
|
+
var when2 = (predicate, onTrue) => (a) => predicate(a) ? onTrue(a) : a;
|
|
361
|
+
var unless2 = (predicate, onFalse) => (a) => predicate(a) ? a : onFalse(a);
|
|
362
|
+
var either2 = (predicate, onTrue, onFalse) => (a) => predicate(a) ? onTrue(a) : onFalse(a);
|
|
363
|
+
var struct2 = (fields) => (a) => {
|
|
364
|
+
const result = {};
|
|
365
|
+
for (const key of Object.keys(fields)) {
|
|
366
|
+
result[key] = fields[key](a);
|
|
367
|
+
}
|
|
368
|
+
return result;
|
|
369
|
+
};
|
|
370
|
+
function safe2(a, ...fns) {
|
|
371
|
+
let result = a;
|
|
372
|
+
if (result === null || result === void 0) {
|
|
373
|
+
return result;
|
|
374
|
+
}
|
|
375
|
+
for (const fn of fns) {
|
|
376
|
+
result = fn(result);
|
|
377
|
+
if (result === null || result === void 0) {
|
|
378
|
+
return result;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return result;
|
|
382
|
+
}
|
|
383
|
+
async function async2(a, ...fns) {
|
|
384
|
+
let result = await a;
|
|
385
|
+
for (const fn of fns) {
|
|
386
|
+
result = await fn(result);
|
|
387
|
+
}
|
|
388
|
+
return result;
|
|
389
|
+
}
|
|
390
|
+
pipe.when = when2;
|
|
391
|
+
pipe.unless = unless2;
|
|
392
|
+
pipe.either = either2;
|
|
393
|
+
pipe.struct = struct2;
|
|
394
|
+
pipe.safe = safe2;
|
|
395
|
+
pipe.async = async2;
|
|
396
|
+
pipe.try = (f, onError) => (a) => {
|
|
397
|
+
try {
|
|
398
|
+
return f(a);
|
|
399
|
+
} catch (error) {
|
|
400
|
+
return onError(error, a);
|
|
401
|
+
}
|
|
402
|
+
};
|
|
311
403
|
|
|
312
404
|
// src/Composition/tap.ts
|
|
313
405
|
var tap = (f) => (a) => {
|
|
@@ -371,6 +463,10 @@ var Result;
|
|
|
371
463
|
Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
|
|
372
464
|
Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
|
|
373
465
|
Result2.ap = (arg) => (data) => (0, Result2.isOk)(data) && (0, Result2.isOk)(arg) ? (0, Result2.ok)(data.value(arg.value)) : (0, Result2.isErr)(data) ? data : arg;
|
|
466
|
+
Result2.bindTo = (key) => (data) => (0, Result2.map)((a) => ({ [key]: a }))(data);
|
|
467
|
+
Result2.bind = (key, f) => (data) => (0, Result2.chain)(
|
|
468
|
+
(a) => (0, Result2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
469
|
+
)(data);
|
|
374
470
|
})(Result || (Result = {}));
|
|
375
471
|
|
|
376
472
|
// src/Core/Maybe.ts
|
|
@@ -401,6 +497,10 @@ var Maybe;
|
|
|
401
497
|
Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
|
|
402
498
|
Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
|
|
403
499
|
Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
|
|
500
|
+
Maybe2.bindTo = (key) => (data) => (0, Maybe2.map)((a) => ({ [key]: a }))(data);
|
|
501
|
+
Maybe2.bind = (key, f) => (data) => (0, Maybe2.chain)(
|
|
502
|
+
(a) => (0, Maybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
503
|
+
)(data);
|
|
404
504
|
})(Maybe || (Maybe = {}));
|
|
405
505
|
|
|
406
506
|
// src/Core/Combinable.ts
|
|
@@ -508,6 +608,10 @@ var Logged;
|
|
|
508
608
|
return data;
|
|
509
609
|
};
|
|
510
610
|
Logged2.run = (data) => [data.value, data.log];
|
|
611
|
+
Logged2.bindTo = (key) => (data) => (0, Logged2.map)((a) => ({ [key]: a }))(data);
|
|
612
|
+
Logged2.bind = (key, f) => (data) => (0, Logged2.chain)(
|
|
613
|
+
(a) => (0, Logged2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
614
|
+
)(data);
|
|
511
615
|
})(Logged || (Logged = {}));
|
|
512
616
|
|
|
513
617
|
// src/Types/Brand.ts
|
|
@@ -1522,7 +1626,7 @@ var Op;
|
|
|
1522
1626
|
}
|
|
1523
1627
|
return cases.nil();
|
|
1524
1628
|
};
|
|
1525
|
-
Op2.fold = (onErr,
|
|
1629
|
+
Op2.fold = (onErr, onNil, onOk) => (outcome) => {
|
|
1526
1630
|
if (outcome.kind === "OpOk") {
|
|
1527
1631
|
return onOk(outcome.value);
|
|
1528
1632
|
}
|
|
@@ -1707,6 +1811,10 @@ var Reader;
|
|
|
1707
1811
|
};
|
|
1708
1812
|
Reader2.local = (f) => (data) => (env) => data(f(env));
|
|
1709
1813
|
Reader2.run = (env) => (data) => data(env);
|
|
1814
|
+
Reader2.bindTo = (key) => (data) => (0, Reader2.map)((a) => ({ [key]: a }))(data);
|
|
1815
|
+
Reader2.bind = (key, f) => (data) => (0, Reader2.chain)(
|
|
1816
|
+
(a) => (0, Reader2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
1817
|
+
)(data);
|
|
1710
1818
|
})(Reader || (Reader = {}));
|
|
1711
1819
|
|
|
1712
1820
|
// src/Core/Refinement.ts
|
|
@@ -1751,17 +1859,17 @@ var RemoteData;
|
|
|
1751
1859
|
}
|
|
1752
1860
|
return (0, RemoteData2.notAsked)();
|
|
1753
1861
|
};
|
|
1754
|
-
RemoteData2.fold = (onNotAsked, onLoading,
|
|
1862
|
+
RemoteData2.fold = (onFailure, onNotAsked, onLoading, onSuccess) => (data) => {
|
|
1755
1863
|
switch (data.kind) {
|
|
1864
|
+
case "Failure": {
|
|
1865
|
+
return onFailure(data.error);
|
|
1866
|
+
}
|
|
1756
1867
|
case "NotAsked": {
|
|
1757
1868
|
return onNotAsked();
|
|
1758
1869
|
}
|
|
1759
1870
|
case "Loading": {
|
|
1760
1871
|
return onLoading();
|
|
1761
1872
|
}
|
|
1762
|
-
case "Failure": {
|
|
1763
|
-
return onFailure(data.error);
|
|
1764
|
-
}
|
|
1765
1873
|
case "Success": {
|
|
1766
1874
|
return onSuccess(data.value);
|
|
1767
1875
|
}
|
|
@@ -2026,6 +2134,10 @@ var Task;
|
|
|
2026
2134
|
return { task, abort };
|
|
2027
2135
|
};
|
|
2028
2136
|
Task2.run = (signal) => (task) => Deferred.toPromise(task(signal));
|
|
2137
|
+
Task2.bindTo = (key) => (data) => (0, Task2.map)((a) => ({ [key]: a }))(data);
|
|
2138
|
+
Task2.bind = (key, f) => (data) => (0, Task2.chain)(
|
|
2139
|
+
(a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2140
|
+
)(data);
|
|
2029
2141
|
})(Task || (Task = {}));
|
|
2030
2142
|
|
|
2031
2143
|
// src/Core/Resource.ts
|
|
@@ -2103,6 +2215,10 @@ var State;
|
|
|
2103
2215
|
State2.run = (initialState) => (st) => st(initialState);
|
|
2104
2216
|
State2.evaluate = (initialState) => (st) => st(initialState)[0];
|
|
2105
2217
|
State2.execute = (initialState) => (st) => st(initialState)[1];
|
|
2218
|
+
State2.bindTo = (key) => (data) => (0, State2.map)((a) => ({ [key]: a }))(data);
|
|
2219
|
+
State2.bind = (key, f) => (data) => (0, State2.chain)(
|
|
2220
|
+
(a) => (0, State2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2221
|
+
)(data);
|
|
2106
2222
|
})(State || (State = {}));
|
|
2107
2223
|
|
|
2108
2224
|
// src/Core/TaskMaybe.ts
|
|
@@ -2128,6 +2244,10 @@ var TaskMaybe;
|
|
|
2128
2244
|
TaskMaybe2.tap = (f) => (data) => Task.map(Maybe.tap(f))(data);
|
|
2129
2245
|
TaskMaybe2.filter = (predicate) => (data) => Task.map(Maybe.filter(predicate))(data);
|
|
2130
2246
|
TaskMaybe2.toTaskResult = (onNone) => (data) => Task.map(Maybe.toResult(onNone))(data);
|
|
2247
|
+
TaskMaybe2.bindTo = (key) => (data) => (0, TaskMaybe2.map)((a) => ({ [key]: a }))(data);
|
|
2248
|
+
TaskMaybe2.bind = (key, f) => (data) => (0, TaskMaybe2.chain)(
|
|
2249
|
+
(a) => (0, TaskMaybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2250
|
+
)(data);
|
|
2131
2251
|
})(TaskMaybe || (TaskMaybe = {}));
|
|
2132
2252
|
|
|
2133
2253
|
// src/Core/TaskResult.ts
|
|
@@ -2159,6 +2279,10 @@ var TaskResult;
|
|
|
2159
2279
|
)
|
|
2160
2280
|
);
|
|
2161
2281
|
TaskResult2.run = (signal) => (task) => Deferred.toPromise(task(signal));
|
|
2282
|
+
TaskResult2.bindTo = (key) => (data) => (0, TaskResult2.map)((a) => ({ [key]: a }))(data);
|
|
2283
|
+
TaskResult2.bind = (key, f) => (data) => (0, TaskResult2.chain)(
|
|
2284
|
+
(a) => (0, TaskResult2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
2285
|
+
)(data);
|
|
2162
2286
|
})(TaskResult || (TaskResult = {}));
|
|
2163
2287
|
|
|
2164
2288
|
// src/Core/Validation.ts
|
|
@@ -3239,6 +3363,7 @@ var Uniq;
|
|
|
3239
3363
|
curry,
|
|
3240
3364
|
curry3,
|
|
3241
3365
|
curry4,
|
|
3366
|
+
defaultTo,
|
|
3242
3367
|
flip,
|
|
3243
3368
|
flow,
|
|
3244
3369
|
identity,
|
package/dist/index.mjs
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
curry,
|
|
12
12
|
curry3,
|
|
13
13
|
curry4,
|
|
14
|
+
defaultTo,
|
|
14
15
|
flip,
|
|
15
16
|
flow,
|
|
16
17
|
identity,
|
|
@@ -26,7 +27,7 @@ import {
|
|
|
26
27
|
uncurry,
|
|
27
28
|
uncurry3,
|
|
28
29
|
uncurry4
|
|
29
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-3Q5UBRYB.mjs";
|
|
30
31
|
import {
|
|
31
32
|
Combinable,
|
|
32
33
|
Equality,
|
|
@@ -48,7 +49,7 @@ import {
|
|
|
48
49
|
These,
|
|
49
50
|
Tuple,
|
|
50
51
|
Validation
|
|
51
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-SHO53CQC.mjs";
|
|
52
53
|
import {
|
|
53
54
|
Arr,
|
|
54
55
|
Dict,
|
|
@@ -56,13 +57,13 @@ import {
|
|
|
56
57
|
Rec,
|
|
57
58
|
Str,
|
|
58
59
|
Uniq
|
|
59
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-72BGUEQM.mjs";
|
|
60
61
|
import {
|
|
61
62
|
Deferred,
|
|
62
63
|
Maybe,
|
|
63
64
|
Result,
|
|
64
65
|
Task
|
|
65
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-PUMSVZB4.mjs";
|
|
66
67
|
import "./chunk-IPP4XFYH.mjs";
|
|
67
68
|
import {
|
|
68
69
|
isNonEmptyList
|
|
@@ -116,6 +117,7 @@ export {
|
|
|
116
117
|
curry,
|
|
117
118
|
curry3,
|
|
118
119
|
curry4,
|
|
120
|
+
defaultTo,
|
|
119
121
|
flip,
|
|
120
122
|
flow,
|
|
121
123
|
identity,
|
package/dist/utils.d.mts
CHANGED
package/dist/utils.d.ts
CHANGED
package/dist/utils.js
CHANGED
|
@@ -85,6 +85,10 @@ var Result;
|
|
|
85
85
|
Result2.recoverUnless = (isBlocked, fallback) => (data) => (0, Result2.isErr)(data) && !isBlocked(data.error) ? fallback() : data;
|
|
86
86
|
Result2.toMaybe = (data) => (0, Result2.isOk)(data) ? Maybe.some(data.value) : Maybe.none();
|
|
87
87
|
Result2.ap = (arg) => (data) => (0, Result2.isOk)(data) && (0, Result2.isOk)(arg) ? (0, Result2.ok)(data.value(arg.value)) : (0, Result2.isErr)(data) ? data : arg;
|
|
88
|
+
Result2.bindTo = (key) => (data) => (0, Result2.map)((a) => ({ [key]: a }))(data);
|
|
89
|
+
Result2.bind = (key, f) => (data) => (0, Result2.chain)(
|
|
90
|
+
(a) => (0, Result2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
91
|
+
)(data);
|
|
88
92
|
})(Result || (Result = {}));
|
|
89
93
|
|
|
90
94
|
// src/Core/Maybe.ts
|
|
@@ -115,6 +119,10 @@ var Maybe;
|
|
|
115
119
|
Maybe2.filter = (predicate) => (data) => (0, Maybe2.isSome)(data) ? predicate(data.value) ? data : (0, Maybe2.none)() : data;
|
|
116
120
|
Maybe2.recover = (fallback) => (data) => (0, Maybe2.isSome)(data) ? data : fallback();
|
|
117
121
|
Maybe2.ap = (arg) => (data) => (0, Maybe2.isSome)(data) && (0, Maybe2.isSome)(arg) ? (0, Maybe2.some)(data.value(arg.value)) : (0, Maybe2.none)();
|
|
122
|
+
Maybe2.bindTo = (key) => (data) => (0, Maybe2.map)((a) => ({ [key]: a }))(data);
|
|
123
|
+
Maybe2.bind = (key, f) => (data) => (0, Maybe2.chain)(
|
|
124
|
+
(a) => (0, Maybe2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
125
|
+
)(data);
|
|
118
126
|
})(Maybe || (Maybe = {}));
|
|
119
127
|
|
|
120
128
|
// src/Types/Brand.ts
|
|
@@ -364,6 +372,10 @@ var Task;
|
|
|
364
372
|
return { task, abort };
|
|
365
373
|
};
|
|
366
374
|
Task2.run = (signal) => (task) => Deferred.toPromise(task(signal));
|
|
375
|
+
Task2.bindTo = (key) => (data) => (0, Task2.map)((a) => ({ [key]: a }))(data);
|
|
376
|
+
Task2.bind = (key, f) => (data) => (0, Task2.chain)(
|
|
377
|
+
(a) => (0, Task2.map)((b) => ({ ...a, [key]: b }))(f(a))
|
|
378
|
+
)(data);
|
|
367
379
|
})(Task || (Task = {}));
|
|
368
380
|
|
|
369
381
|
// src/Types/NonEmptyList.ts
|
package/dist/utils.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nlozgachev/pipelined",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0",
|
|
4
4
|
"description": "Opinionated functional abstractions for TypeScript",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"homepage": "https://pipelined.lozgachev.dev",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"types": "./dist/index.d.ts",
|
|
19
19
|
"sideEffects": false,
|
|
20
20
|
"engines": {
|
|
21
|
-
"node": ">=
|
|
21
|
+
"node": ">=24"
|
|
22
22
|
},
|
|
23
23
|
"files": [
|
|
24
24
|
"dist"
|
|
@@ -53,11 +53,16 @@
|
|
|
53
53
|
"format:check": "dprint check && dprint check --config dprint.md.json docs/**/*.md docs/**/*.mdx README.md",
|
|
54
54
|
"typecheck": "tsc --noEmit",
|
|
55
55
|
"lint": "oxlint src/",
|
|
56
|
-
"publish:npm": "pnpm build && npm publish --access public"
|
|
56
|
+
"publish:npm": "pnpm build && npm publish --access public",
|
|
57
|
+
"release:patch": "bumpp --patch -c -t -p",
|
|
58
|
+
"release:minor": "bumpp --minor -c -t -p",
|
|
59
|
+
"docs:dev": "pnpm --filter pipelined-docs dev",
|
|
60
|
+
"docs:build": "pnpm --filter pipelined-docs build"
|
|
57
61
|
},
|
|
58
62
|
"devDependencies": {
|
|
59
63
|
"@types/node": "25.9.1",
|
|
60
64
|
"@vitest/coverage-v8": "4.1.7",
|
|
65
|
+
"bumpp": "11.1.0",
|
|
61
66
|
"dprint": "0.54.0",
|
|
62
67
|
"fast-check": "4.8.0",
|
|
63
68
|
"oxlint": "1.66.0",
|