@nlozgachev/pipelined 0.14.0 → 0.15.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
@@ -29,6 +29,7 @@ __export(Core_exports, {
29
29
  Reader: () => Reader,
30
30
  Refinement: () => Refinement,
31
31
  RemoteData: () => RemoteData,
32
+ Resource: () => Resource,
32
33
  Result: () => Result,
33
34
  State: () => State,
34
35
  Task: () => Task,
@@ -326,37 +327,6 @@ var RemoteData;
326
327
  RemoteData2.toResult = (onNotReady) => (data) => (0, RemoteData2.isSuccess)(data) ? Result.ok(data.value) : Result.err((0, RemoteData2.isFailure)(data) ? data.error : onNotReady());
327
328
  })(RemoteData || (RemoteData = {}));
328
329
 
329
- // src/Core/State.ts
330
- var State;
331
- ((State2) => {
332
- State2.resolve = (value) => (s) => [value, s];
333
- State2.get = () => (s) => [s, s];
334
- State2.gets = (f) => (s) => [f(s), s];
335
- State2.put = (newState) => (_s) => [void 0, newState];
336
- State2.modify = (f) => (s) => [void 0, f(s)];
337
- State2.map = (f) => (st) => (s) => {
338
- const [a, s1] = st(s);
339
- return [f(a), s1];
340
- };
341
- State2.chain = (f) => (st) => (s) => {
342
- const [a, s1] = st(s);
343
- return f(a)(s1);
344
- };
345
- State2.ap = (arg) => (fn) => (s) => {
346
- const [f, s1] = fn(s);
347
- const [a, s2] = arg(s1);
348
- return [f(a), s2];
349
- };
350
- State2.tap = (f) => (st) => (s) => {
351
- const [a, s1] = st(s);
352
- f(a);
353
- return [a, s1];
354
- };
355
- State2.run = (initialState) => (st) => st(initialState);
356
- State2.evaluate = (initialState) => (st) => st(initialState)[0];
357
- State2.execute = (initialState) => (st) => st(initialState)[1];
358
- })(State || (State = {}));
359
-
360
330
  // src/Core/Task.ts
361
331
  var toPromise = (task) => Deferred.toPromise(task());
362
332
  var Task;
@@ -431,6 +401,71 @@ var Task;
431
401
  });
432
402
  })(Task || (Task = {}));
433
403
 
404
+ // src/Core/Resource.ts
405
+ var Resource;
406
+ ((Resource2) => {
407
+ Resource2.make = (acquire, release) => ({ acquire, release });
408
+ Resource2.fromTask = (acquire, release) => ({
409
+ acquire: Task.map((a) => Result.ok(a))(acquire),
410
+ release
411
+ });
412
+ Resource2.use = (f) => (resource) => Task.from(
413
+ () => Deferred.toPromise(resource.acquire()).then(async (acquired) => {
414
+ if (Result.isErr(acquired)) return acquired;
415
+ const a = acquired.value;
416
+ const usageResult = await Deferred.toPromise(f(a)());
417
+ await Deferred.toPromise(resource.release(a)());
418
+ return usageResult;
419
+ })
420
+ );
421
+ Resource2.combine = (resourceA, resourceB) => ({
422
+ acquire: Task.from(
423
+ () => Deferred.toPromise(resourceA.acquire()).then(async (acquiredA) => {
424
+ if (Result.isErr(acquiredA)) return acquiredA;
425
+ const a = acquiredA.value;
426
+ const acquiredB = await Deferred.toPromise(resourceB.acquire());
427
+ if (Result.isErr(acquiredB)) {
428
+ await Deferred.toPromise(resourceA.release(a)());
429
+ return acquiredB;
430
+ }
431
+ return Result.ok([a, acquiredB.value]);
432
+ })
433
+ ),
434
+ release: ([a, b]) => Task.from(() => Deferred.toPromise(resourceB.release(b)()).then(() => Deferred.toPromise(resourceA.release(a)())))
435
+ });
436
+ })(Resource || (Resource = {}));
437
+
438
+ // src/Core/State.ts
439
+ var State;
440
+ ((State2) => {
441
+ State2.resolve = (value) => (s) => [value, s];
442
+ State2.get = () => (s) => [s, s];
443
+ State2.gets = (f) => (s) => [f(s), s];
444
+ State2.put = (newState) => (_s) => [void 0, newState];
445
+ State2.modify = (f) => (s) => [void 0, f(s)];
446
+ State2.map = (f) => (st) => (s) => {
447
+ const [a, s1] = st(s);
448
+ return [f(a), s1];
449
+ };
450
+ State2.chain = (f) => (st) => (s) => {
451
+ const [a, s1] = st(s);
452
+ return f(a)(s1);
453
+ };
454
+ State2.ap = (arg) => (fn) => (s) => {
455
+ const [f, s1] = fn(s);
456
+ const [a, s2] = arg(s1);
457
+ return [f(a), s2];
458
+ };
459
+ State2.tap = (f) => (st) => (s) => {
460
+ const [a, s1] = st(s);
461
+ f(a);
462
+ return [a, s1];
463
+ };
464
+ State2.run = (initialState) => (st) => st(initialState);
465
+ State2.evaluate = (initialState) => (st) => st(initialState)[0];
466
+ State2.execute = (initialState) => (st) => st(initialState)[1];
467
+ })(State || (State = {}));
468
+
434
469
  // src/Core/TaskOption.ts
435
470
  var TaskOption;
436
471
  ((TaskOption2) => {
@@ -686,6 +721,7 @@ var Tuple;
686
721
  Reader,
687
722
  Refinement,
688
723
  RemoteData,
724
+ Resource,
689
725
  Result,
690
726
  State,
691
727
  Task,
package/dist/core.mjs CHANGED
@@ -6,6 +6,7 @@ import {
6
6
  Reader,
7
7
  Refinement,
8
8
  RemoteData,
9
+ Resource,
9
10
  State,
10
11
  TaskOption,
11
12
  TaskResult,
@@ -13,7 +14,7 @@ import {
13
14
  These,
14
15
  Tuple,
15
16
  Validation
16
- } from "./chunk-UV2HMF2A.mjs";
17
+ } from "./chunk-2XKWSZEU.mjs";
17
18
  import {
18
19
  Deferred,
19
20
  Option,
@@ -30,6 +31,7 @@ export {
30
31
  Reader,
31
32
  Refinement,
32
33
  RemoteData,
34
+ Resource,
33
35
  Result,
34
36
  State,
35
37
  Task,
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { and, compose, constFalse, constNull, constTrue, constUndefined, constVoid, constant, converge, curry, curry3, curry4, flip, flow, identity, juxt, memoize, memoizeWeak, not, on, once, or, pipe, tap, uncurry, uncurry3, uncurry4 } from './composition.mjs';
2
2
  export { D as Deferred, E as Err, N as None, O as Ok, a as Option, R as Result, S as Some, T as Task } from './Task-Bd3gXPRQ.mjs';
3
- export { Failure, Invalid, Lens, Loading, Logged, NotAsked, Optional, Predicate, Reader, Refinement, RemoteData, State, Success, TaskOption, TaskResult, TaskValidation, These, TheseBoth, TheseFirst, TheseSecond, Tuple, Valid, Validation } from './core.mjs';
3
+ export { Failure, Invalid, Lens, Loading, Logged, NotAsked, Optional, Predicate, Reader, Refinement, RemoteData, Resource, State, Success, TaskOption, TaskResult, TaskValidation, These, TheseBoth, TheseFirst, TheseSecond, Tuple, Valid, Validation } from './core.mjs';
4
4
  export { Brand } from './types.mjs';
5
5
  export { N as NonEmptyList, i as isNonEmptyList } from './NonEmptyList-BlGFjor5.mjs';
6
6
  export { Arr, Dict, Num, Rec, Str, Uniq } from './utils.mjs';
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { and, compose, constFalse, constNull, constTrue, constUndefined, constVoid, constant, converge, curry, curry3, curry4, flip, flow, identity, juxt, memoize, memoizeWeak, not, on, once, or, pipe, tap, uncurry, uncurry3, uncurry4 } from './composition.js';
2
2
  export { D as Deferred, E as Err, N as None, O as Ok, a as Option, R as Result, S as Some, T as Task } from './Task-BjAkkD6t.js';
3
- export { Failure, Invalid, Lens, Loading, Logged, NotAsked, Optional, Predicate, Reader, Refinement, RemoteData, State, Success, TaskOption, TaskResult, TaskValidation, These, TheseBoth, TheseFirst, TheseSecond, Tuple, Valid, Validation } from './core.js';
3
+ export { Failure, Invalid, Lens, Loading, Logged, NotAsked, Optional, Predicate, Reader, Refinement, RemoteData, Resource, State, Success, TaskOption, TaskResult, TaskValidation, These, TheseBoth, TheseFirst, TheseSecond, Tuple, Valid, Validation } from './core.js';
4
4
  export { Brand } from './types.js';
5
5
  export { N as NonEmptyList, i as isNonEmptyList } from './NonEmptyList-BlGFjor5.js';
6
6
  export { Arr, Dict, Num, Rec, Str, Uniq } from './utils.js';
package/dist/index.js CHANGED
@@ -34,6 +34,7 @@ __export(src_exports, {
34
34
  Rec: () => Rec,
35
35
  Refinement: () => Refinement,
36
36
  RemoteData: () => RemoteData,
37
+ Resource: () => Resource,
37
38
  Result: () => Result,
38
39
  State: () => State,
39
40
  Str: () => Str,
@@ -77,8 +78,49 @@ __export(src_exports, {
77
78
  module.exports = __toCommonJS(src_exports);
78
79
 
79
80
  // src/Composition/compose.ts
80
- function compose(...fns) {
81
- return (arg) => fns.reduceRight((acc, fn) => fn(acc), arg);
81
+ function compose(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9) {
82
+ const len = arguments.length;
83
+ switch (len) {
84
+ case 1:
85
+ return f0;
86
+ case 2:
87
+ return function() {
88
+ return f0(f1.apply(this, arguments));
89
+ };
90
+ case 3:
91
+ return function() {
92
+ return f0(f1(f2.apply(this, arguments)));
93
+ };
94
+ case 4:
95
+ return function() {
96
+ return f0(f1(f2(f3.apply(this, arguments))));
97
+ };
98
+ case 5:
99
+ return function() {
100
+ return f0(f1(f2(f3(f4.apply(this, arguments)))));
101
+ };
102
+ case 6:
103
+ return function() {
104
+ return f0(f1(f2(f3(f4(f5.apply(this, arguments))))));
105
+ };
106
+ case 7:
107
+ return function() {
108
+ return f0(f1(f2(f3(f4(f5(f6.apply(this, arguments)))))));
109
+ };
110
+ case 8:
111
+ return function() {
112
+ return f0(f1(f2(f3(f4(f5(f6(f7.apply(this, arguments))))))));
113
+ };
114
+ case 9:
115
+ return function() {
116
+ return f0(f1(f2(f3(f4(f5(f6(f7(f8.apply(this, arguments)))))))));
117
+ };
118
+ case 10:
119
+ return function() {
120
+ return f0(f1(f2(f3(f4(f5(f6(f7(f8(f9.apply(this, arguments))))))))));
121
+ };
122
+ }
123
+ return f0;
82
124
  }
83
125
 
84
126
  // src/Composition/converge.ts
@@ -95,12 +137,53 @@ var curry4 = (f) => (a) => (b) => (c) => (d) => f(a, b, c, d);
95
137
  var flip = (f) => (b) => (a) => f(a)(b);
96
138
 
97
139
  // src/Composition/flow.ts
98
- function flow(...fns) {
99
- return (...args) => {
100
- if (fns.length === 0) return args[0];
101
- const [first, ...rest] = fns;
102
- return rest.reduce((acc, fn) => fn(acc), first(...args));
103
- };
140
+ function flow(ab, bc, cd, de, ef, fg, gh, hi, ij, jk) {
141
+ const len = arguments.length;
142
+ switch (len) {
143
+ case 0:
144
+ return function(...args) {
145
+ return args[0];
146
+ };
147
+ case 1:
148
+ return ab;
149
+ case 2:
150
+ return function() {
151
+ return bc(ab.apply(this, arguments));
152
+ };
153
+ case 3:
154
+ return function() {
155
+ return cd(bc(ab.apply(this, arguments)));
156
+ };
157
+ case 4:
158
+ return function() {
159
+ return de(cd(bc(ab.apply(this, arguments))));
160
+ };
161
+ case 5:
162
+ return function() {
163
+ return ef(de(cd(bc(ab.apply(this, arguments)))));
164
+ };
165
+ case 6:
166
+ return function() {
167
+ return fg(ef(de(cd(bc(ab.apply(this, arguments))))));
168
+ };
169
+ case 7:
170
+ return function() {
171
+ return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));
172
+ };
173
+ case 8:
174
+ return function() {
175
+ return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));
176
+ };
177
+ case 9:
178
+ return function() {
179
+ return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));
180
+ };
181
+ case 10:
182
+ return function() {
183
+ return jk(ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))))));
184
+ };
185
+ }
186
+ return ab;
104
187
  }
105
188
 
106
189
  // src/Composition/fn.ts
@@ -163,8 +246,32 @@ var not = (predicate) => (...args) => !predicate(...args);
163
246
  var on = (f, g) => (a, b) => f(g(a), g(b));
164
247
 
165
248
  // src/Composition/pipe.ts
166
- function pipe(a, ...fns) {
167
- return fns.reduce((acc, fn) => fn(acc), a);
249
+ function pipe(a, ab, bc, cd, de, ef, fg, gh, hi, ij, jk) {
250
+ const len = arguments.length;
251
+ switch (len) {
252
+ case 1:
253
+ return a;
254
+ case 2:
255
+ return ab(a);
256
+ case 3:
257
+ return bc(ab(a));
258
+ case 4:
259
+ return cd(bc(ab(a)));
260
+ case 5:
261
+ return de(cd(bc(ab(a))));
262
+ case 6:
263
+ return ef(de(cd(bc(ab(a)))));
264
+ case 7:
265
+ return fg(ef(de(cd(bc(ab(a))))));
266
+ case 8:
267
+ return gh(fg(ef(de(cd(bc(ab(a)))))));
268
+ case 9:
269
+ return hi(gh(fg(ef(de(cd(bc(ab(a))))))));
270
+ case 10:
271
+ return ij(hi(gh(fg(ef(de(cd(bc(ab(a)))))))));
272
+ case 11:
273
+ return jk(ij(hi(gh(fg(ef(de(cd(bc(ab(a))))))))));
274
+ }
168
275
  }
169
276
 
170
277
  // src/Composition/tap.ts
@@ -468,37 +575,6 @@ var RemoteData;
468
575
  RemoteData2.toResult = (onNotReady) => (data) => (0, RemoteData2.isSuccess)(data) ? Result.ok(data.value) : Result.err((0, RemoteData2.isFailure)(data) ? data.error : onNotReady());
469
576
  })(RemoteData || (RemoteData = {}));
470
577
 
471
- // src/Core/State.ts
472
- var State;
473
- ((State2) => {
474
- State2.resolve = (value) => (s) => [value, s];
475
- State2.get = () => (s) => [s, s];
476
- State2.gets = (f) => (s) => [f(s), s];
477
- State2.put = (newState) => (_s) => [void 0, newState];
478
- State2.modify = (f) => (s) => [void 0, f(s)];
479
- State2.map = (f) => (st) => (s) => {
480
- const [a, s1] = st(s);
481
- return [f(a), s1];
482
- };
483
- State2.chain = (f) => (st) => (s) => {
484
- const [a, s1] = st(s);
485
- return f(a)(s1);
486
- };
487
- State2.ap = (arg) => (fn) => (s) => {
488
- const [f, s1] = fn(s);
489
- const [a, s2] = arg(s1);
490
- return [f(a), s2];
491
- };
492
- State2.tap = (f) => (st) => (s) => {
493
- const [a, s1] = st(s);
494
- f(a);
495
- return [a, s1];
496
- };
497
- State2.run = (initialState) => (st) => st(initialState);
498
- State2.evaluate = (initialState) => (st) => st(initialState)[0];
499
- State2.execute = (initialState) => (st) => st(initialState)[1];
500
- })(State || (State = {}));
501
-
502
578
  // src/Core/Task.ts
503
579
  var toPromise = (task) => Deferred.toPromise(task());
504
580
  var Task;
@@ -573,6 +649,71 @@ var Task;
573
649
  });
574
650
  })(Task || (Task = {}));
575
651
 
652
+ // src/Core/Resource.ts
653
+ var Resource;
654
+ ((Resource2) => {
655
+ Resource2.make = (acquire, release) => ({ acquire, release });
656
+ Resource2.fromTask = (acquire, release) => ({
657
+ acquire: Task.map((a) => Result.ok(a))(acquire),
658
+ release
659
+ });
660
+ Resource2.use = (f) => (resource) => Task.from(
661
+ () => Deferred.toPromise(resource.acquire()).then(async (acquired) => {
662
+ if (Result.isErr(acquired)) return acquired;
663
+ const a = acquired.value;
664
+ const usageResult = await Deferred.toPromise(f(a)());
665
+ await Deferred.toPromise(resource.release(a)());
666
+ return usageResult;
667
+ })
668
+ );
669
+ Resource2.combine = (resourceA, resourceB) => ({
670
+ acquire: Task.from(
671
+ () => Deferred.toPromise(resourceA.acquire()).then(async (acquiredA) => {
672
+ if (Result.isErr(acquiredA)) return acquiredA;
673
+ const a = acquiredA.value;
674
+ const acquiredB = await Deferred.toPromise(resourceB.acquire());
675
+ if (Result.isErr(acquiredB)) {
676
+ await Deferred.toPromise(resourceA.release(a)());
677
+ return acquiredB;
678
+ }
679
+ return Result.ok([a, acquiredB.value]);
680
+ })
681
+ ),
682
+ release: ([a, b]) => Task.from(() => Deferred.toPromise(resourceB.release(b)()).then(() => Deferred.toPromise(resourceA.release(a)())))
683
+ });
684
+ })(Resource || (Resource = {}));
685
+
686
+ // src/Core/State.ts
687
+ var State;
688
+ ((State2) => {
689
+ State2.resolve = (value) => (s) => [value, s];
690
+ State2.get = () => (s) => [s, s];
691
+ State2.gets = (f) => (s) => [f(s), s];
692
+ State2.put = (newState) => (_s) => [void 0, newState];
693
+ State2.modify = (f) => (s) => [void 0, f(s)];
694
+ State2.map = (f) => (st) => (s) => {
695
+ const [a, s1] = st(s);
696
+ return [f(a), s1];
697
+ };
698
+ State2.chain = (f) => (st) => (s) => {
699
+ const [a, s1] = st(s);
700
+ return f(a)(s1);
701
+ };
702
+ State2.ap = (arg) => (fn) => (s) => {
703
+ const [f, s1] = fn(s);
704
+ const [a, s2] = arg(s1);
705
+ return [f(a), s2];
706
+ };
707
+ State2.tap = (f) => (st) => (s) => {
708
+ const [a, s1] = st(s);
709
+ f(a);
710
+ return [a, s1];
711
+ };
712
+ State2.run = (initialState) => (st) => st(initialState);
713
+ State2.evaluate = (initialState) => (st) => st(initialState)[0];
714
+ State2.execute = (initialState) => (st) => st(initialState)[1];
715
+ })(State || (State = {}));
716
+
576
717
  // src/Core/TaskOption.ts
577
718
  var TaskOption;
578
719
  ((TaskOption2) => {
@@ -1379,6 +1520,7 @@ var Uniq;
1379
1520
  Rec,
1380
1521
  Refinement,
1381
1522
  RemoteData,
1523
+ Resource,
1382
1524
  Result,
1383
1525
  State,
1384
1526
  Str,
package/dist/index.mjs CHANGED
@@ -26,7 +26,7 @@ import {
26
26
  uncurry,
27
27
  uncurry3,
28
28
  uncurry4
29
- } from "./chunk-4TXC322E.mjs";
29
+ } from "./chunk-KXAWFKQQ.mjs";
30
30
  import {
31
31
  Lens,
32
32
  Logged,
@@ -35,6 +35,7 @@ import {
35
35
  Reader,
36
36
  Refinement,
37
37
  RemoteData,
38
+ Resource,
38
39
  State,
39
40
  TaskOption,
40
41
  TaskResult,
@@ -42,7 +43,7 @@ import {
42
43
  These,
43
44
  Tuple,
44
45
  Validation
45
- } from "./chunk-UV2HMF2A.mjs";
46
+ } from "./chunk-2XKWSZEU.mjs";
46
47
  import {
47
48
  Arr,
48
49
  Dict,
@@ -78,6 +79,7 @@ export {
78
79
  Rec,
79
80
  Refinement,
80
81
  RemoteData,
82
+ Resource,
81
83
  Result,
82
84
  State,
83
85
  Str,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlozgachev/pipelined",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "Simple functional programming toolkit for TypeScript",
5
5
  "license": "BSD-3-Clause",
6
6
  "homepage": "https://pipelined.lozgachev.dev",
@@ -57,10 +57,12 @@
57
57
  },
58
58
  "devDependencies": {
59
59
  "@types/node": "25.5.0",
60
+ "@vitest/coverage-v8": "4.1.0",
60
61
  "dprint": "0.53.0",
61
62
  "oxlint": "1.56.0",
62
63
  "tsup": "8.5.1",
63
64
  "typescript": "5.9.3",
64
65
  "vitest": "4.1.0"
65
- }
66
+ },
67
+ "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be"
66
68
  }
@@ -1,136 +0,0 @@
1
- // src/Composition/compose.ts
2
- function compose(...fns) {
3
- return (arg) => fns.reduceRight((acc, fn) => fn(acc), arg);
4
- }
5
-
6
- // src/Composition/converge.ts
7
- function converge(f, transformers) {
8
- return (a) => f(...transformers.map((t) => t(a)));
9
- }
10
-
11
- // src/Composition/curry.ts
12
- var curry = (f) => (a) => (b) => f(a, b);
13
- var curry3 = (f) => (a) => (b) => (c) => f(a, b, c);
14
- var curry4 = (f) => (a) => (b) => (c) => (d) => f(a, b, c, d);
15
-
16
- // src/Composition/flip.ts
17
- var flip = (f) => (b) => (a) => f(a)(b);
18
-
19
- // src/Composition/flow.ts
20
- function flow(...fns) {
21
- return (...args) => {
22
- if (fns.length === 0) return args[0];
23
- const [first, ...rest] = fns;
24
- return rest.reduce((acc, fn) => fn(acc), first(...args));
25
- };
26
- }
27
-
28
- // src/Composition/fn.ts
29
- var identity = (a) => a;
30
- var constant = (a) => () => a;
31
- var constTrue = () => true;
32
- var constFalse = () => false;
33
- var constNull = () => null;
34
- var constUndefined = () => void 0;
35
- var constVoid = () => {
36
- };
37
- var and = (p1, p2) => (...args) => p1(...args) && p2(...args);
38
- var or = (p1, p2) => (...args) => p1(...args) || p2(...args);
39
- var once = (f) => {
40
- let called = false;
41
- let result;
42
- return () => {
43
- if (!called) {
44
- result = f();
45
- called = true;
46
- }
47
- return result;
48
- };
49
- };
50
-
51
- // src/Composition/juxt.ts
52
- function juxt(fns) {
53
- return (a) => fns.map((f) => f(a));
54
- }
55
-
56
- // src/Composition/memoize.ts
57
- var memoize = (f, keyFn = (a) => a) => {
58
- const cache = /* @__PURE__ */ new Map();
59
- return (a) => {
60
- const key = keyFn(a);
61
- if (cache.has(key)) {
62
- return cache.get(key);
63
- }
64
- const result = f(a);
65
- cache.set(key, result);
66
- return result;
67
- };
68
- };
69
- var memoizeWeak = (f) => {
70
- const cache = /* @__PURE__ */ new WeakMap();
71
- return (a) => {
72
- if (cache.has(a)) {
73
- return cache.get(a);
74
- }
75
- const result = f(a);
76
- cache.set(a, result);
77
- return result;
78
- };
79
- };
80
-
81
- // src/Composition/not.ts
82
- var not = (predicate) => (...args) => !predicate(...args);
83
-
84
- // src/Composition/on.ts
85
- var on = (f, g) => (a, b) => f(g(a), g(b));
86
-
87
- // src/Composition/pipe.ts
88
- function pipe(a, ...fns) {
89
- return fns.reduce((acc, fn) => fn(acc), a);
90
- }
91
-
92
- // src/Composition/tap.ts
93
- var tap = (f) => (a) => {
94
- f(a);
95
- return a;
96
- };
97
-
98
- // src/Composition/uncurry.ts
99
- function uncurry(f) {
100
- return (...args) => {
101
- const inner = f(...args.slice(0, f.length));
102
- return inner.length === 0 ? inner() : inner(...args.slice(f.length));
103
- };
104
- }
105
- var uncurry3 = (f) => (a, b, c) => f(a)(b)(c);
106
- var uncurry4 = (f) => (a, b, c, d) => f(a)(b)(c)(d);
107
-
108
- export {
109
- compose,
110
- converge,
111
- curry,
112
- curry3,
113
- curry4,
114
- flip,
115
- flow,
116
- identity,
117
- constant,
118
- constTrue,
119
- constFalse,
120
- constNull,
121
- constUndefined,
122
- constVoid,
123
- and,
124
- or,
125
- once,
126
- juxt,
127
- memoize,
128
- memoizeWeak,
129
- not,
130
- on,
131
- pipe,
132
- tap,
133
- uncurry,
134
- uncurry3,
135
- uncurry4
136
- };