@zambit/elevate-ts 0.1.2

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.
Files changed (170) hide show
  1. package/CLA-CORPORATE.md +72 -0
  2. package/CLA-INDIVIDUAL.md +71 -0
  3. package/DUAL-PUBLISHING-STRATEGY.md +571 -0
  4. package/LICENSE +610 -0
  5. package/README.md +77 -0
  6. package/dist/cjs/Either.d.ts +67 -0
  7. package/dist/cjs/Either.d.ts.map +1 -0
  8. package/dist/cjs/Either.js +147 -0
  9. package/dist/cjs/Either.js.map +1 -0
  10. package/dist/cjs/EitherAsync.d.ts +139 -0
  11. package/dist/cjs/EitherAsync.d.ts.map +1 -0
  12. package/dist/cjs/EitherAsync.js +171 -0
  13. package/dist/cjs/EitherAsync.js.map +1 -0
  14. package/dist/cjs/Function.d.ts +153 -0
  15. package/dist/cjs/Function.d.ts.map +1 -0
  16. package/dist/cjs/Function.js +110 -0
  17. package/dist/cjs/Function.js.map +1 -0
  18. package/dist/cjs/List.d.ts +134 -0
  19. package/dist/cjs/List.d.ts.map +1 -0
  20. package/dist/cjs/List.js +243 -0
  21. package/dist/cjs/List.js.map +1 -0
  22. package/dist/cjs/Maybe.d.ts +64 -0
  23. package/dist/cjs/Maybe.d.ts.map +1 -0
  24. package/dist/cjs/Maybe.js +122 -0
  25. package/dist/cjs/Maybe.js.map +1 -0
  26. package/dist/cjs/MaybeAsync.d.ts +115 -0
  27. package/dist/cjs/MaybeAsync.d.ts.map +1 -0
  28. package/dist/cjs/MaybeAsync.js +151 -0
  29. package/dist/cjs/MaybeAsync.js.map +1 -0
  30. package/dist/cjs/NonEmptyList.d.ts +86 -0
  31. package/dist/cjs/NonEmptyList.d.ts.map +1 -0
  32. package/dist/cjs/NonEmptyList.js +128 -0
  33. package/dist/cjs/NonEmptyList.js.map +1 -0
  34. package/dist/cjs/Reader.d.ts +53 -0
  35. package/dist/cjs/Reader.d.ts.map +1 -0
  36. package/dist/cjs/Reader.js +60 -0
  37. package/dist/cjs/Reader.js.map +1 -0
  38. package/dist/cjs/State.d.ts +71 -0
  39. package/dist/cjs/State.d.ts.map +1 -0
  40. package/dist/cjs/State.js +94 -0
  41. package/dist/cjs/State.js.map +1 -0
  42. package/dist/cjs/Tuple.d.ts +69 -0
  43. package/dist/cjs/Tuple.d.ts.map +1 -0
  44. package/dist/cjs/Tuple.js +73 -0
  45. package/dist/cjs/Tuple.js.map +1 -0
  46. package/dist/cjs/Validation.d.ts +53 -0
  47. package/dist/cjs/Validation.d.ts.map +1 -0
  48. package/dist/cjs/Validation.js +77 -0
  49. package/dist/cjs/Validation.js.map +1 -0
  50. package/dist/cjs/index.d.ts +12 -0
  51. package/dist/cjs/index.d.ts.map +1 -0
  52. package/dist/cjs/index.js +25 -0
  53. package/dist/cjs/index.js.map +1 -0
  54. package/dist/cjs/tokens/config.d.ts +43 -0
  55. package/dist/cjs/tokens/config.d.ts.map +1 -0
  56. package/dist/cjs/tokens/config.js +162 -0
  57. package/dist/cjs/tokens/config.js.map +1 -0
  58. package/dist/cjs/tokens/cssGen.d.ts +18 -0
  59. package/dist/cjs/tokens/cssGen.d.ts.map +1 -0
  60. package/dist/cjs/tokens/cssGen.js +144 -0
  61. package/dist/cjs/tokens/cssGen.js.map +1 -0
  62. package/dist/cjs/tokens/generateCSS.d.ts +18 -0
  63. package/dist/cjs/tokens/generateCSS.d.ts.map +1 -0
  64. package/dist/cjs/tokens/generateCSS.js +83 -0
  65. package/dist/cjs/tokens/generateCSS.js.map +1 -0
  66. package/dist/cjs/tokens/index.d.ts +13 -0
  67. package/dist/cjs/tokens/index.d.ts.map +1 -0
  68. package/dist/cjs/tokens/index.js +12 -0
  69. package/dist/cjs/tokens/index.js.map +1 -0
  70. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  71. package/dist/esm/Either.d.ts +67 -0
  72. package/dist/esm/Either.d.ts.map +1 -0
  73. package/dist/esm/Either.js +136 -0
  74. package/dist/esm/Either.js.map +1 -0
  75. package/dist/esm/EitherAsync.d.ts +139 -0
  76. package/dist/esm/EitherAsync.d.ts.map +1 -0
  77. package/dist/esm/EitherAsync.js +173 -0
  78. package/dist/esm/EitherAsync.js.map +1 -0
  79. package/dist/esm/Function.d.ts +153 -0
  80. package/dist/esm/Function.d.ts.map +1 -0
  81. package/dist/esm/Function.js +109 -0
  82. package/dist/esm/Function.js.map +1 -0
  83. package/dist/esm/List.d.ts +134 -0
  84. package/dist/esm/List.d.ts.map +1 -0
  85. package/dist/esm/List.js +243 -0
  86. package/dist/esm/List.js.map +1 -0
  87. package/dist/esm/Maybe.d.ts +64 -0
  88. package/dist/esm/Maybe.d.ts.map +1 -0
  89. package/dist/esm/Maybe.js +113 -0
  90. package/dist/esm/Maybe.js.map +1 -0
  91. package/dist/esm/MaybeAsync.d.ts +115 -0
  92. package/dist/esm/MaybeAsync.d.ts.map +1 -0
  93. package/dist/esm/MaybeAsync.js +150 -0
  94. package/dist/esm/MaybeAsync.js.map +1 -0
  95. package/dist/esm/NonEmptyList.d.ts +86 -0
  96. package/dist/esm/NonEmptyList.d.ts.map +1 -0
  97. package/dist/esm/NonEmptyList.js +128 -0
  98. package/dist/esm/NonEmptyList.js.map +1 -0
  99. package/dist/esm/Reader.d.ts +53 -0
  100. package/dist/esm/Reader.d.ts.map +1 -0
  101. package/dist/esm/Reader.js +60 -0
  102. package/dist/esm/Reader.js.map +1 -0
  103. package/dist/esm/State.d.ts +71 -0
  104. package/dist/esm/State.d.ts.map +1 -0
  105. package/dist/esm/State.js +94 -0
  106. package/dist/esm/State.js.map +1 -0
  107. package/dist/esm/Tuple.d.ts +69 -0
  108. package/dist/esm/Tuple.d.ts.map +1 -0
  109. package/dist/esm/Tuple.js +73 -0
  110. package/dist/esm/Tuple.js.map +1 -0
  111. package/dist/esm/Validation.d.ts +53 -0
  112. package/dist/esm/Validation.d.ts.map +1 -0
  113. package/dist/esm/Validation.js +79 -0
  114. package/dist/esm/Validation.js.map +1 -0
  115. package/dist/esm/index.d.ts +12 -0
  116. package/dist/esm/index.d.ts.map +1 -0
  117. package/dist/esm/index.js +22 -0
  118. package/dist/esm/index.js.map +1 -0
  119. package/dist/esm/src/Either.d.ts +67 -0
  120. package/dist/esm/src/Either.d.ts.map +1 -0
  121. package/dist/esm/src/Either.js +147 -0
  122. package/dist/esm/src/Either.js.map +1 -0
  123. package/dist/esm/src/EitherAsync.d.ts +139 -0
  124. package/dist/esm/src/EitherAsync.d.ts.map +1 -0
  125. package/dist/esm/src/EitherAsync.js +171 -0
  126. package/dist/esm/src/EitherAsync.js.map +1 -0
  127. package/dist/esm/src/Function.d.ts +153 -0
  128. package/dist/esm/src/Function.d.ts.map +1 -0
  129. package/dist/esm/src/Function.js +110 -0
  130. package/dist/esm/src/Function.js.map +1 -0
  131. package/dist/esm/src/List.d.ts +134 -0
  132. package/dist/esm/src/List.d.ts.map +1 -0
  133. package/dist/esm/src/List.js +243 -0
  134. package/dist/esm/src/List.js.map +1 -0
  135. package/dist/esm/src/Maybe.d.ts +64 -0
  136. package/dist/esm/src/Maybe.d.ts.map +1 -0
  137. package/dist/esm/src/Maybe.js +122 -0
  138. package/dist/esm/src/Maybe.js.map +1 -0
  139. package/dist/esm/src/MaybeAsync.d.ts +115 -0
  140. package/dist/esm/src/MaybeAsync.d.ts.map +1 -0
  141. package/dist/esm/src/MaybeAsync.js +151 -0
  142. package/dist/esm/src/MaybeAsync.js.map +1 -0
  143. package/dist/esm/src/NonEmptyList.d.ts +86 -0
  144. package/dist/esm/src/NonEmptyList.d.ts.map +1 -0
  145. package/dist/esm/src/NonEmptyList.js +128 -0
  146. package/dist/esm/src/NonEmptyList.js.map +1 -0
  147. package/dist/esm/src/Reader.d.ts +53 -0
  148. package/dist/esm/src/Reader.d.ts.map +1 -0
  149. package/dist/esm/src/Reader.js +60 -0
  150. package/dist/esm/src/Reader.js.map +1 -0
  151. package/dist/esm/src/State.d.ts +71 -0
  152. package/dist/esm/src/State.d.ts.map +1 -0
  153. package/dist/esm/src/State.js +94 -0
  154. package/dist/esm/src/State.js.map +1 -0
  155. package/dist/esm/src/Tuple.d.ts +69 -0
  156. package/dist/esm/src/Tuple.d.ts.map +1 -0
  157. package/dist/esm/src/Tuple.js +73 -0
  158. package/dist/esm/src/Tuple.js.map +1 -0
  159. package/dist/esm/src/Validation.d.ts +53 -0
  160. package/dist/esm/src/Validation.d.ts.map +1 -0
  161. package/dist/esm/src/Validation.js +77 -0
  162. package/dist/esm/src/Validation.js.map +1 -0
  163. package/dist/esm/src/index.d.ts +12 -0
  164. package/dist/esm/src/index.d.ts.map +1 -0
  165. package/dist/esm/src/index.js +25 -0
  166. package/dist/esm/src/index.js.map +1 -0
  167. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  168. package/elevate-ts-vs-effect-critique.md +806 -0
  169. package/eslint.config.js +104 -0
  170. package/package.json +139 -0
@@ -0,0 +1,173 @@
1
+ // EitherAsync — Lazy Async Either
2
+ import * as Either from './Either.js';
3
+ /**
4
+ * Construct an EitherAsync from a lazy computation.
5
+ * @param run - A function returning Promise<Either<L, R>>.
6
+ * @returns An EitherAsync that encapsulates the computation.
7
+ */
8
+ export const EitherAsync = (run) => ({ tag: 'EitherAsync', run });
9
+ /**
10
+ * Lift a synchronous Either into EitherAsync.
11
+ * @param ea - The synchronous Either.
12
+ * @returns An EitherAsync that immediately resolves to the Either.
13
+ */
14
+ export const liftEither = (ea) => EitherAsync(() => Promise.resolve(ea));
15
+ /**
16
+ * Lift a Promise into EitherAsync.
17
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
18
+ * @param p - The Promise to lift.
19
+ * @param onError - Function to transform errors to Left.
20
+ * @returns An EitherAsync that resolves to Right or Left.
21
+ */
22
+ export const fromPromise = (p, onError) => EitherAsync(() => p.then((r) => Either.Right(r), (e) => Either.Left(onError(e))));
23
+ /**
24
+ * Wrap an async function with error handling.
25
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
26
+ * @param f - An async function.
27
+ * @param onError - Function to transform errors to Left.
28
+ * @returns An EitherAsync that captures the result or Left on error.
29
+ */
30
+ export const tryCatch = (f, onError) => EitherAsync(() => Promise.resolve()
31
+ .then(() => f())
32
+ .then((r) => Either.Right(r), (e) => Either.Left(onError(e))));
33
+ /**
34
+ * Functor map over the Right value.
35
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
36
+ * @param f - Function to transform the Right value.
37
+ * @returns A function taking EitherAsync and returning a new EitherAsync.
38
+ */
39
+ export const map = (f) => (ea) => EitherAsync(() => ea.run().then((either) => Either.map(f)(either)));
40
+ /**
41
+ * Map over the Left value.
42
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
43
+ * @param f - Function to transform the Left value.
44
+ * @returns A function taking EitherAsync and returning a new EitherAsync.
45
+ */
46
+ export const mapLeft = (f) => (ea) => EitherAsync(() => ea.run().then((either) => Either.mapLeft(f)(either)));
47
+ /**
48
+ * Bifunctor bimap: map over both Left and Right.
49
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
50
+ * @param f - Function to transform Left.
51
+ * @param g - Function to transform Right.
52
+ * @returns A function taking EitherAsync and returning a new EitherAsync.
53
+ */
54
+ export const bimap = (f, g) => (ea) => EitherAsync(() => ea.run().then((either) => Either.bimap(f, g)(either)));
55
+ /**
56
+ * Monadic bind: sequentially compose EitherAsync computations.
57
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
58
+ * @param f - Function that returns an EitherAsync.
59
+ * @returns A function taking EitherAsync and returning a flattened EitherAsync.
60
+ */
61
+ export const chain = (f) => (ea) => EitherAsync(async () => {
62
+ const either = await ea.run();
63
+ if (either.tag === 'Right') {
64
+ return f(either.right).run();
65
+ }
66
+ return either;
67
+ });
68
+ /**
69
+ * Chain over the Left value.
70
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
71
+ * @param f - Function that returns an EitherAsync.
72
+ * @returns A function taking EitherAsync and returning a new EitherAsync.
73
+ */
74
+ export const chainLeft = (f) => (ea) => EitherAsync(async () => {
75
+ const either = await ea.run();
76
+ if (either.tag === 'Left') {
77
+ return await f(either.left).run();
78
+ }
79
+ return { tag: 'Right', right: either.right };
80
+ });
81
+ /**
82
+ * Applicative ap: apply an EitherAsync function to an EitherAsync value.
83
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
84
+ * @param ef - An EitherAsync of a function.
85
+ * @returns A function taking EitherAsync and returning a new EitherAsync.
86
+ */
87
+ export const ap = (ef) => (ea) => EitherAsync(async () => {
88
+ const [f, a] = await Promise.all([ef.run(), ea.run()]);
89
+ return Either.ap(f)(a);
90
+ });
91
+ /**
92
+ * Extract the Right value or provide a default.
93
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
94
+ * @param r - The default value.
95
+ * @returns A function taking EitherAsync and returning a Promise of the value.
96
+ */
97
+ export const getOrElse = (r) => (ea) => ea.run().then((either) => Either.getOrElse(r)(either));
98
+ /**
99
+ * Extract the Right value or compute from Left.
100
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
101
+ * @param f - Function computing the default from Left.
102
+ * @returns A function taking EitherAsync and returning a Promise of the value.
103
+ */
104
+ export const getOrElseL = (f) => (ea) => ea.run().then(async (either) => {
105
+ if (either.tag === 'Right')
106
+ return either.right;
107
+ return f(either.left);
108
+ });
109
+ /**
110
+ * Case analysis on EitherAsync.
111
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
112
+ * @param onLeft - Function for Left.
113
+ * @param onRight - Function for Right.
114
+ * @returns A function taking EitherAsync and returning Promise of result.
115
+ */
116
+ export const fold = (onLeft, onRight) => (ea) => ea.run().then((either) => Either.fold(onLeft, onRight)(either));
117
+ /**
118
+ * Swap Left and Right.
119
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
120
+ * @param ea - The EitherAsync to swap.
121
+ * @returns A new EitherAsync with Left and Right swapped.
122
+ */
123
+ export const swap = (ea) => EitherAsync(() => ea.run().then((either) => Either.swap(either)));
124
+ /**
125
+ * Convert EitherAsync to MaybeAsync, discarding Left.
126
+ * Rejected Promises and thrown exceptions become Left which becomes Nothing; never throws or rejects.
127
+ * @param ea - The EitherAsync to convert.
128
+ * @returns A MaybeAsync that ignores the Left value.
129
+ */
130
+ export const toMaybeAsync = (ea) => {
131
+ // Dynamic import to avoid circular dependencies
132
+ return {
133
+ tag: 'MaybeAsync',
134
+ run: async () => {
135
+ const either = await ea.run();
136
+ const Maybe = await import('./Maybe.js');
137
+ return either.tag === 'Right'
138
+ ? Maybe.Just(either.right)
139
+ : Maybe.Nothing;
140
+ },
141
+ };
142
+ };
143
+ /**
144
+ * All-or-Left: if any EitherAsync is Left, result is Left with the first error.
145
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
146
+ * @param eas - Array of EitherAsync.
147
+ * @returns An EitherAsync that is Right of array if all are Right, else the first Left.
148
+ */
149
+ export const all = (eas) => EitherAsync(async () => {
150
+ const results = await Promise.all(eas.map((ea) => ea.run()));
151
+ const values = [];
152
+ for (const either of results) {
153
+ if (either.tag === 'Left')
154
+ return either;
155
+ values.push(either.right);
156
+ }
157
+ return Either.Right(values);
158
+ });
159
+ /**
160
+ * Extract all Left values from an array of EitherAsync.
161
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
162
+ * @param eas - Array of EitherAsync.
163
+ * @returns Promise of collected Left values.
164
+ */
165
+ export const lefts = (eas) => Promise.all(eas.map((ea) => ea.run())).then((results) => results.flatMap((either) => (either.tag === 'Left' ? [either.left] : [])));
166
+ /**
167
+ * Extract all Right values from an array of EitherAsync.
168
+ * Rejected Promises and thrown exceptions become Left; never throws or rejects.
169
+ * @param eas - Array of EitherAsync.
170
+ * @returns Promise of collected Right values.
171
+ */
172
+ export const rights = (eas) => Promise.all(eas.map((ea) => ea.run())).then((results) => results.flatMap((either) => (either.tag === 'Right' ? [either.right] : [])));
173
+ //# sourceMappingURL=EitherAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EitherAsync.js","sourceRoot":"","sources":["../../src/EitherAsync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Identity function: returns its input unchanged.
3
+ * @param a - The value to return.
4
+ * @returns The same value.
5
+ */
6
+ export declare const identity: <A>(a: A) => A;
7
+ /**
8
+ * Create a function that always returns the same value.
9
+ * @param a - The value to return.
10
+ * @returns A function that ignores its input and returns the value.
11
+ */
12
+ export declare const constant: <A>(a: A) => (() => A);
13
+ /**
14
+ * Flip the first two arguments of a binary function.
15
+ * @param f - A binary function.
16
+ * @returns A function with argument order reversed.
17
+ */
18
+ export declare const flip: <A, B, C>(f: (a: A, b: B) => C) => ((b: B, a: A) => C);
19
+ /**
20
+ * Absurd: a function that takes a never value.
21
+ * @param a - A value of type never (should never be called).
22
+ * @returns A value of any type (unreachable).
23
+ */
24
+ export declare const absurd: <A>(_: never) => A;
25
+ /**
26
+ * Pipe a value through a chain of functions (arity 1).
27
+ * @param a - The initial value.
28
+ * @param f1 - The first function.
29
+ * @returns The result of f1(a).
30
+ */
31
+ export declare function pipe<A, B>(a: A, f1: (a: A) => B): B;
32
+ /**
33
+ * Pipe a value through a chain of functions (arity 2).
34
+ * @param a - The initial value.
35
+ * @param f1 - The first function.
36
+ * @param f2 - The second function.
37
+ * @returns The result of f2(f1(a)).
38
+ */
39
+ export declare function pipe<A, B, C>(a: A, f1: (a: A) => B, f2: (b: B) => C): C;
40
+ /**
41
+ * Pipe a value through a chain of functions (arity 3).
42
+ */
43
+ export declare function pipe<A, B, C, D>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D): D;
44
+ /**
45
+ * Pipe a value through a chain of functions (arity 4).
46
+ */
47
+ export declare function pipe<A, B, C, D, E>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E): E;
48
+ /**
49
+ * Pipe a value through a chain of functions (arity 5).
50
+ */
51
+ export declare function pipe<A, B, C, D, E, F>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F): F;
52
+ /**
53
+ * Pipe a value through a chain of functions (arity 6).
54
+ */
55
+ export declare function pipe<A, B, C, D, E, F, G>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G): G;
56
+ /**
57
+ * Pipe a value through a chain of functions (arity 7).
58
+ */
59
+ export declare function pipe<A, B, C, D, E, F, G, H>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H): H;
60
+ /**
61
+ * Pipe a value through a chain of functions (arity 8).
62
+ */
63
+ export declare function pipe<A, B, C, D, E, F, G, H, I>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I): I;
64
+ /**
65
+ * Pipe a value through a chain of functions (arity 9).
66
+ */
67
+ export declare function pipe<A, B, C, D, E, F, G, H, I, J>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I, f9: (i: I) => J): J;
68
+ /**
69
+ * Pipe a value through a chain of functions (arity 10).
70
+ */
71
+ export declare function pipe<A, B, C, D, E, F, G, H, I, J, K>(a: A, f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I, f9: (i: I) => J, f10: (j: J) => K): K;
72
+ /**
73
+ * Compose functions left-to-right (arity 1).
74
+ * @param f1 - The first function.
75
+ * @returns A function that applies f1.
76
+ */
77
+ export declare function flow<A, B>(f1: (a: A) => B): (a: A) => B;
78
+ /**
79
+ * Compose functions left-to-right (arity 2).
80
+ * @param f1 - The first function.
81
+ * @param f2 - The second function.
82
+ * @returns A function that applies f1 then f2.
83
+ */
84
+ export declare function flow<A, B, C>(f1: (a: A) => B, f2: (b: B) => C): (a: A) => C;
85
+ /**
86
+ * Compose functions left-to-right (arity 3).
87
+ */
88
+ export declare function flow<A, B, C, D>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D): (a: A) => D;
89
+ /**
90
+ * Compose functions left-to-right (arity 4).
91
+ */
92
+ export declare function flow<A, B, C, D, E>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E): (a: A) => E;
93
+ /**
94
+ * Compose functions left-to-right (arity 5).
95
+ */
96
+ export declare function flow<A, B, C, D, E, F>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F): (a: A) => F;
97
+ /**
98
+ * Compose functions left-to-right (arity 6).
99
+ */
100
+ export declare function flow<A, B, C, D, E, F, G>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G): (a: A) => G;
101
+ /**
102
+ * Compose functions left-to-right (arity 7).
103
+ */
104
+ export declare function flow<A, B, C, D, E, F, G, H>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H): (a: A) => H;
105
+ /**
106
+ * Compose functions left-to-right (arity 8).
107
+ */
108
+ export declare function flow<A, B, C, D, E, F, G, H, I>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I): (a: A) => I;
109
+ /**
110
+ * Compose functions left-to-right (arity 9).
111
+ */
112
+ export declare function flow<A, B, C, D, E, F, G, H, I, J>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I, f9: (i: I) => J): (a: A) => J;
113
+ /**
114
+ * Compose functions left-to-right (arity 10).
115
+ */
116
+ export declare function flow<A, B, C, D, E, F, G, H, I, J, K>(f1: (a: A) => B, f2: (b: B) => C, f3: (c: C) => D, f4: (d: D) => E, f5: (e: E) => F, f6: (f: F) => G, f7: (g: G) => H, f8: (h: H) => I, f9: (i: I) => J, f10: (j: J) => K): (a: A) => K;
117
+ /**
118
+ * Curry a 2-argument function.
119
+ * @param f - A binary function.
120
+ * @returns A curried function.
121
+ */
122
+ export declare const curry2: <A, B, C>(f: (a: A, b: B) => C) => ((a: A) => (b: B) => C);
123
+ /**
124
+ * Curry a 3-argument function.
125
+ * @param f - A ternary function.
126
+ * @returns A curried function.
127
+ */
128
+ export declare const curry3: <A, B, C, D>(f: (a: A, b: B, c: C) => D) => ((a: A) => (b: B) => (c: C) => D);
129
+ /**
130
+ * Curry a 4-argument function.
131
+ * @param f - A 4-argument function.
132
+ * @returns A curried function.
133
+ */
134
+ export declare const curry4: <A, B, C, D, E>(f: (a: A, b: B, c: C, d: D) => E) => ((a: A) => (b: B) => (c: C) => (d: D) => E);
135
+ /**
136
+ * Memoize a function with single-level cache.
137
+ * @param f - The function to memoize.
138
+ * @returns A memoized function.
139
+ */
140
+ export declare const memoize: <A, B>(f: (a: A) => B) => ((a: A) => B);
141
+ /**
142
+ * Execute a function at most once; cache the result.
143
+ * @param f - The function to execute once.
144
+ * @returns A function that returns the cached result on all calls.
145
+ */
146
+ export declare const once: <A, B>(f: (a: A) => B) => ((a: A) => B);
147
+ /**
148
+ * Execute a side effect and pass the value through.
149
+ * @param f - A side-effect function.
150
+ * @returns A function that executes the side effect and returns its input.
151
+ */
152
+ export declare const tap: <A>(f: (a: A) => void) => ((a: A) => A);
153
+ //# sourceMappingURL=Function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Function.d.ts","sourceRoot":"","sources":["../../src/Function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ // Function — Composition and Utilities
2
+ /**
3
+ * Identity function: returns its input unchanged.
4
+ * @param a - The value to return.
5
+ * @returns The same value.
6
+ */
7
+ export const identity = (a) => a;
8
+ /**
9
+ * Create a function that always returns the same value.
10
+ * @param a - The value to return.
11
+ * @returns A function that ignores its input and returns the value.
12
+ */
13
+ export const constant = (a) => () => a;
14
+ /**
15
+ * Flip the first two arguments of a binary function.
16
+ * @param f - A binary function.
17
+ * @returns A function with argument order reversed.
18
+ */
19
+ export const flip = (f) => (b, a) => f(a, b);
20
+ /**
21
+ * Absurd: a function that takes a never value.
22
+ * @param a - A value of type never (should never be called).
23
+ * @returns A value of any type (unreachable).
24
+ */
25
+ export const absurd = (_) => {
26
+ throw new Error('absurd: unreachable');
27
+ };
28
+ /**
29
+ * Pipe implementation.
30
+ */
31
+ export function pipe(a, ...fns) {
32
+ let result = a;
33
+ for (const fn of fns) {
34
+ result = fn(result);
35
+ }
36
+ return result;
37
+ }
38
+ /**
39
+ * Flow implementation.
40
+ */
41
+ export function flow(...fns) {
42
+ return (a) => {
43
+ let result = a;
44
+ for (const fn of fns) {
45
+ result = fn(result);
46
+ }
47
+ return result;
48
+ };
49
+ }
50
+ /**
51
+ * Curry a 2-argument function.
52
+ * @param f - A binary function.
53
+ * @returns A curried function.
54
+ */
55
+ export const curry2 = (f) => (a) => (b) => f(a, b);
56
+ /**
57
+ * Curry a 3-argument function.
58
+ * @param f - A ternary function.
59
+ * @returns A curried function.
60
+ */
61
+ export const curry3 = (f) => (a) => (b) => (c) => f(a, b, c);
62
+ /**
63
+ * Curry a 4-argument function.
64
+ * @param f - A 4-argument function.
65
+ * @returns A curried function.
66
+ */
67
+ export const curry4 = (f) => (a) => (b) => (c) => (d) => f(a, b, c, d);
68
+ /**
69
+ * Memoize a function with single-level cache.
70
+ * @param f - The function to memoize.
71
+ * @returns A memoized function.
72
+ */
73
+ export const memoize = (f) => {
74
+ const cache = new Map();
75
+ return (a) => {
76
+ if (cache.has(a)) {
77
+ return cache.get(a);
78
+ }
79
+ const result = f(a);
80
+ cache.set(a, result);
81
+ return result;
82
+ };
83
+ };
84
+ /**
85
+ * Execute a function at most once; cache the result.
86
+ * @param f - The function to execute once.
87
+ * @returns A function that returns the cached result on all calls.
88
+ */
89
+ export const once = (f) => {
90
+ let called = false;
91
+ let result;
92
+ return (a) => {
93
+ if (!called) {
94
+ result = f(a);
95
+ called = true;
96
+ }
97
+ return result;
98
+ };
99
+ };
100
+ /**
101
+ * Execute a side effect and pass the value through.
102
+ * @param f - A side-effect function.
103
+ * @returns A function that executes the side effect and returns its input.
104
+ */
105
+ export const tap = (f) => (a) => {
106
+ f(a);
107
+ return a;
108
+ };
109
+ //# sourceMappingURL=Function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Function.js","sourceRoot":"","sources":["../../src/Function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import * as Maybe from './Maybe.js';
2
+ /**
3
+ * Get the first element of an array.
4
+ * @param arr - The array.
5
+ * @returns The first element or undefined if empty.
6
+ */
7
+ export declare const head: <A>(arr: readonly A[]) => A | undefined;
8
+ /**
9
+ * Get all but the first element.
10
+ * @param arr - The array.
11
+ * @returns An array of remaining elements.
12
+ */
13
+ export declare const tail: <A>(arr: readonly A[]) => readonly A[];
14
+ /**
15
+ * Get the last element of an array.
16
+ * @param arr - The array.
17
+ * @returns The last element or undefined if empty.
18
+ */
19
+ export declare const last: <A>(arr: readonly A[]) => A | undefined;
20
+ /**
21
+ * Get all but the last element.
22
+ * @param arr - The array.
23
+ * @returns An array of all but the last element.
24
+ */
25
+ export declare const init: <A>(arr: readonly A[]) => readonly A[];
26
+ /**
27
+ * Deconstruct an array into head and tail.
28
+ * @param arr - The array.
29
+ * @returns Just [head, tail] if nonempty, Nothing if empty.
30
+ */
31
+ export declare const uncons: <A>(arr: readonly A[]) => Maybe.Maybe<readonly [A, readonly A[]]>;
32
+ /**
33
+ * Prepend an element to an array.
34
+ * @param a - The element to prepend.
35
+ * @returns A function that takes an array and returns the new array.
36
+ */
37
+ export declare const cons: <A>(a: A) => ((arr: readonly A[]) => readonly A[]);
38
+ /**
39
+ * Append an element to an array.
40
+ * @param a - The element to append.
41
+ * @returns A function that takes an array and returns the new array.
42
+ */
43
+ export declare const snoc: <A>(a: A) => ((arr: readonly A[]) => readonly A[]);
44
+ /**
45
+ * Take the first n elements.
46
+ * @param n - The number of elements to take.
47
+ * @returns A function that takes an array and returns the first n elements.
48
+ */
49
+ export declare const take: <A>(n: number) => ((arr: readonly A[]) => readonly A[]);
50
+ /**
51
+ * Drop the first n elements.
52
+ * @param n - The number of elements to drop.
53
+ * @returns A function that takes an array and returns the remaining elements.
54
+ */
55
+ export declare const drop: <A>(n: number) => ((arr: readonly A[]) => readonly A[]);
56
+ /**
57
+ * Take elements while predicate holds.
58
+ * @param predicate - The predicate to test.
59
+ * @returns A function that takes an array and returns elements taken while predicate holds.
60
+ */
61
+ export declare const takeWhile: <A>(predicate: (a: A) => boolean) => ((arr: readonly A[]) => readonly A[]);
62
+ /**
63
+ * Drop elements while predicate holds.
64
+ * @param predicate - The predicate to test.
65
+ * @returns A function that takes an array and returns remaining elements.
66
+ */
67
+ export declare const dropWhile: <A>(predicate: (a: A) => boolean) => ((arr: readonly A[]) => readonly A[]);
68
+ /**
69
+ * Partition an array into two based on a predicate.
70
+ * @param predicate - The predicate to split on.
71
+ * @returns A function that takes an array and returns [matching, nonmatching].
72
+ */
73
+ export declare const partition: <A>(predicate: (a: A) => boolean) => ((arr: readonly A[]) => readonly [readonly A[], readonly A[]]);
74
+ /**
75
+ * Split an array at the first element that fails the predicate.
76
+ * @param predicate - The predicate to test.
77
+ * @returns A function that takes an array and returns [taken, dropped].
78
+ */
79
+ export declare const span: <A>(predicate: (a: A) => boolean) => ((arr: readonly A[]) => readonly [readonly A[], readonly A[]]);
80
+ /**
81
+ * Group consecutive equal elements.
82
+ * @param eq - Equality comparator.
83
+ * @returns A function that takes an array and returns grouped elements.
84
+ */
85
+ export declare const groupBy: <A>(eq: (a: A, b: A) => boolean) => ((arr: readonly A[]) => readonly (readonly A[])[]);
86
+ /**
87
+ * Remove consecutive duplicates.
88
+ * @param eq - Equality comparator.
89
+ * @returns A function that takes an array and returns array without consecutive duplicates.
90
+ */
91
+ export declare const nubBy: <A>(eq: (a: A, b: A) => boolean) => ((arr: readonly A[]) => readonly A[]);
92
+ /**
93
+ * Sort an array with a comparator function.
94
+ * @param ord - Comparator function (negative if a < b, positive if a > b).
95
+ * @returns A function that takes an array and returns a sorted array.
96
+ */
97
+ export declare const sortBy: <A>(ord: (a: A, b: A) => number) => ((arr: readonly A[]) => readonly A[]);
98
+ /**
99
+ * Zip two arrays into pairs.
100
+ * @param arr2 - The second array.
101
+ * @returns A function taking first array, returning [pairs, remainders].
102
+ */
103
+ export declare const zip: <A, B>(arr2: readonly B[]) => (arr1: readonly A[]) => readonly [[A, B][], A[] | B[]];
104
+ /**
105
+ * Zip two arrays with a function.
106
+ * @param f - Function to apply to pairs.
107
+ * @returns A function taking the second array, then first array, returning results.
108
+ */
109
+ export declare const zipWith: <A, B, C>(f: (a: A, b: B) => C) => ((arr2: readonly B[]) => (arr1: readonly A[]) => readonly C[]);
110
+ /**
111
+ * Unzip an array of pairs into two arrays.
112
+ * @param pairs - Array of pairs.
113
+ * @returns A tuple of two arrays.
114
+ */
115
+ export declare const unzip: <A, B>(pairs: readonly (readonly [A, B])[]) => readonly [readonly A[], readonly B[]];
116
+ /**
117
+ * Flatten one level of nesting.
118
+ * @param arr - Array of arrays.
119
+ * @returns A flattened array.
120
+ */
121
+ export declare const flatten: <A>(arr: readonly (readonly A[])[]) => readonly A[];
122
+ /**
123
+ * Insert a separator between elements.
124
+ * @param sep - The separator element.
125
+ * @returns A function that takes an array and returns interspersed array.
126
+ */
127
+ export declare const intersperse: <A>(sep: A) => ((arr: readonly A[]) => readonly A[]);
128
+ /**
129
+ * Transpose a matrix (2D array).
130
+ * @param matrix - A matrix as array of arrays.
131
+ * @returns The transposed matrix.
132
+ */
133
+ export declare const transpose: <A>(matrix: readonly (readonly A[])[]) => readonly (readonly A[])[];
134
+ //# sourceMappingURL=List.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/List.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,KAAG,CAAC,GAAG,SAAmB,CAAA;AAEnE;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,KAAG,SAAS,CAAC,EAAkB,CAAA;AAExE;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,KAAG,CAAC,GAAG,SACE,CAAA;AAElD;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,KAAG,SAAS,CAAC,EACd,CAAA;AAExC;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,KAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CACf,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAC7C,CAAA;AAEtB;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAC7C,CAAA;AAEtB;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,GAAG,MAAM,KAAG,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAC9C,CAAA;AAE1B;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,GAAG,MAAM,KAAG,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CACjD,CAAA;AAEvB;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,KAC3B,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAItC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,KAC3B,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAItC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,KAC3B,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAY7D,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EACpB,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,KAC3B,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAK7D,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EACvB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAC1B,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAejD,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAC1B,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAUpC,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,EACtB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,KAC1B,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CACV,CAAA;AAE7B;;;;GAIG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,EAAE,MAAM,SAAS,CAAC,EAAE,MAAM,MAAM,SAAS,CAAC,EAAE,mCASnE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7B,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KACnB,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAS7D,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EACxB,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAClC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAQtC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,KAAG,SAAS,CAAC,EAQrE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,KAAK,CAAC,KAAG,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CASzE,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,QAAQ,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,KAChC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAczB,CAAA"}