@satoshibits/functional 1.0.3 → 1.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 (134) hide show
  1. package/README.md +28 -145
  2. package/dist/array-utils.d.mts +13 -0
  3. package/dist/array-utils.d.mts.map +1 -1
  4. package/dist/array-utils.mjs +19 -3
  5. package/dist/array-utils.mjs.map +1 -1
  6. package/dist/array-utils.test.d.ts +2 -0
  7. package/dist/array-utils.test.d.ts.map +1 -0
  8. package/dist/array-utils.test.js +256 -0
  9. package/dist/array-utils.test.js.map +1 -0
  10. package/dist/composition.d.mts +53 -6
  11. package/dist/composition.d.mts.map +1 -1
  12. package/dist/composition.mjs +111 -22
  13. package/dist/composition.mjs.map +1 -1
  14. package/dist/composition.test.d.ts +2 -0
  15. package/dist/composition.test.d.ts.map +1 -0
  16. package/dist/composition.test.js +409 -0
  17. package/dist/composition.test.js.map +1 -0
  18. package/dist/index.d.mts +10 -5
  19. package/dist/index.d.mts.map +1 -1
  20. package/dist/index.mjs +10 -5
  21. package/dist/index.mjs.map +1 -1
  22. package/dist/integration.test.d.mts +2 -0
  23. package/dist/integration.test.d.mts.map +1 -0
  24. package/dist/integration.test.mjs +486 -0
  25. package/dist/integration.test.mjs.map +1 -0
  26. package/dist/io.d.mts +338 -0
  27. package/dist/io.d.mts.map +1 -0
  28. package/dist/io.mjs +389 -0
  29. package/dist/io.mjs.map +1 -0
  30. package/dist/io.test.d.mts +2 -0
  31. package/dist/io.test.d.mts.map +1 -0
  32. package/dist/io.test.mjs +373 -0
  33. package/dist/io.test.mjs.map +1 -0
  34. package/dist/laws.test.d.mts +2 -0
  35. package/dist/laws.test.d.mts.map +1 -0
  36. package/dist/laws.test.mjs +614 -0
  37. package/dist/laws.test.mjs.map +1 -0
  38. package/dist/object-utils.d.mts +11 -0
  39. package/dist/object-utils.d.mts.map +1 -1
  40. package/dist/object-utils.mjs +11 -0
  41. package/dist/object-utils.mjs.map +1 -1
  42. package/dist/object-utils.test.d.ts +2 -0
  43. package/dist/object-utils.test.d.ts.map +1 -0
  44. package/dist/object-utils.test.js +286 -0
  45. package/dist/object-utils.test.js.map +1 -0
  46. package/dist/option-additions.test.d.mts +2 -0
  47. package/dist/option-additions.test.d.mts.map +1 -0
  48. package/dist/option-additions.test.mjs +325 -0
  49. package/dist/option-additions.test.mjs.map +1 -0
  50. package/dist/option.d.mts +202 -58
  51. package/dist/option.d.mts.map +1 -1
  52. package/dist/option.mjs +271 -63
  53. package/dist/option.mjs.map +1 -1
  54. package/dist/option.test.d.ts +6 -0
  55. package/dist/option.test.d.ts.map +1 -0
  56. package/dist/option.test.js +606 -0
  57. package/dist/option.test.js.map +1 -0
  58. package/dist/performance.d.mts +27 -10
  59. package/dist/performance.d.mts.map +1 -1
  60. package/dist/performance.mjs +42 -20
  61. package/dist/performance.mjs.map +1 -1
  62. package/dist/performance.test.d.ts +2 -0
  63. package/dist/performance.test.d.ts.map +1 -0
  64. package/dist/performance.test.js +424 -0
  65. package/dist/performance.test.js.map +1 -0
  66. package/dist/pipeline.d.mts +12 -0
  67. package/dist/pipeline.d.mts.map +1 -1
  68. package/dist/pipeline.mjs +12 -0
  69. package/dist/pipeline.mjs.map +1 -1
  70. package/dist/pipeline.test.d.ts +2 -0
  71. package/dist/pipeline.test.d.ts.map +1 -0
  72. package/dist/pipeline.test.js +445 -0
  73. package/dist/pipeline.test.js.map +1 -0
  74. package/dist/predicates.d.mts +12 -0
  75. package/dist/predicates.d.mts.map +1 -1
  76. package/dist/predicates.mjs +12 -0
  77. package/dist/predicates.mjs.map +1 -1
  78. package/dist/predicates.test.d.ts +2 -0
  79. package/dist/predicates.test.d.ts.map +1 -0
  80. package/dist/predicates.test.js +375 -0
  81. package/dist/predicates.test.js.map +1 -0
  82. package/dist/reader-result.d.mts +37 -16
  83. package/dist/reader-result.d.mts.map +1 -1
  84. package/dist/reader-result.mjs +37 -16
  85. package/dist/reader-result.mjs.map +1 -1
  86. package/dist/reader-result.test.d.ts +2 -0
  87. package/dist/reader-result.test.d.ts.map +1 -0
  88. package/dist/reader-result.test.js +1259 -0
  89. package/dist/reader-result.test.js.map +1 -0
  90. package/dist/reader.d.mts +443 -0
  91. package/dist/reader.d.mts.map +1 -0
  92. package/dist/reader.mjs +456 -0
  93. package/dist/reader.mjs.map +1 -0
  94. package/dist/reader.test.d.mts +2 -0
  95. package/dist/reader.test.d.mts.map +1 -0
  96. package/dist/reader.test.mjs +288 -0
  97. package/dist/reader.test.mjs.map +1 -0
  98. package/dist/result-additions.test.d.mts +2 -0
  99. package/dist/result-additions.test.d.mts.map +1 -0
  100. package/dist/result-additions.test.mjs +325 -0
  101. package/dist/result-additions.test.mjs.map +1 -0
  102. package/dist/result.d.mts +208 -0
  103. package/dist/result.d.mts.map +1 -1
  104. package/dist/result.mjs +287 -0
  105. package/dist/result.mjs.map +1 -1
  106. package/dist/result.test.d.ts +2 -0
  107. package/dist/result.test.d.ts.map +1 -0
  108. package/dist/result.test.js +453 -0
  109. package/dist/result.test.js.map +1 -0
  110. package/dist/task.d.mts +374 -0
  111. package/dist/task.d.mts.map +1 -0
  112. package/dist/task.mjs +386 -0
  113. package/dist/task.mjs.map +1 -0
  114. package/dist/task.test.d.mts +2 -0
  115. package/dist/task.test.d.mts.map +1 -0
  116. package/dist/task.test.mjs +1006 -0
  117. package/dist/task.test.mjs.map +1 -0
  118. package/dist/types.d.mts +12 -0
  119. package/dist/types.d.mts.map +1 -1
  120. package/dist/types.mjs +12 -0
  121. package/dist/types.mjs.map +1 -1
  122. package/dist/types.test.d.ts +6 -0
  123. package/dist/types.test.d.ts.map +1 -0
  124. package/dist/types.test.js +447 -0
  125. package/dist/types.test.js.map +1 -0
  126. package/dist/validation.d.mts +12 -0
  127. package/dist/validation.d.mts.map +1 -1
  128. package/dist/validation.mjs +22 -4
  129. package/dist/validation.mjs.map +1 -1
  130. package/dist/validation.test.d.ts +2 -0
  131. package/dist/validation.test.d.ts.map +1 -0
  132. package/dist/validation.test.js +518 -0
  133. package/dist/validation.test.js.map +1 -0
  134. package/package.json +77 -13
package/dist/task.mjs ADDED
@@ -0,0 +1,386 @@
1
+ "use strict";
2
+ /**
3
+ * @module task
4
+ * @description Task represents a lazy asynchronous computation.
5
+ * A Task is simply a thunk that returns a Promise. This provides a lazy, composable
6
+ * wrapper around async operations, ensuring referential transparency and making
7
+ * async code more predictable and testable. Note that Tasks can reject - for
8
+ * explicit error handling, consider using Task<Result<T, E>> pattern.
9
+ *
10
+ * ### For Dummies
11
+ * - A `Task<T>` is `() => Promise<T>`—build your async pipeline today, execute tomorrow.
12
+ * - Nothing runs until you call `Task.run(task)` (or call the function yourself).
13
+ * - Great for retries, composition, and testing because you control when effects fire.
14
+ *
15
+ * ### Decision Tree
16
+ * - Have a value already? Start with `Task.of(value)`.
17
+ * - Need to wrap an async function? Use `Task.fromPromise(() => promise)`.
18
+ * - Transforming results? Apply `Task.map(fn)`.
19
+ * - Next step returns another Task? Chain with `Task.chain(nextTask)`.
20
+ * - Working with multiple tasks together? Use helpers like `Task.ap`, `Task.sequence`, etc., inside the module.
21
+ * - When it’s go time, run with `await Task.run(task)`.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * import { Task } from './task.mts';
26
+ *
27
+ * // basic usage
28
+ * const readFile = (path: string): Task<string> =>
29
+ * () => fs.promises.readFile(path, 'utf-8');
30
+ *
31
+ * // composing tasks
32
+ * const processFile = Task.chain((content: string) =>
33
+ * Task.of(content.toUpperCase())
34
+ * )(readFile('data.txt'));
35
+ *
36
+ * // running tasks
37
+ * const result = await Task.run(processFile);
38
+ * ```
39
+ *
40
+ * @category Core
41
+ * @since 2025-09-18
42
+ */
43
+ /**
44
+ * Task utility functions for working with Task types.
45
+ * @description Provides a functional API for creating, transforming, and composing Tasks.
46
+ * All functions are curried to support functional composition and partial application.
47
+ *
48
+ * @category Utilities
49
+ * @since 2025-09-18
50
+ */
51
+ export var Task = {
52
+ /**
53
+ * Creates a Task that immediately resolves with the given value.
54
+ * @description Factory function for creating tasks from values. The resulting
55
+ * task will always succeed with the provided value.
56
+ *
57
+ * @template A - The type of the value
58
+ * @param {A} value - The value to wrap in a Task
59
+ * @returns {Task<A>} A Task that resolves to the value
60
+ *
61
+ * @category Constructors
62
+ * @example
63
+ * ```typescript
64
+ * const task = Task.of(42);
65
+ * await Task.run(task); // => 42
66
+ *
67
+ * // Useful for starting chains
68
+ * const result = await Task.run(
69
+ * Task.chain((n: number) => Task.of(n * 2))(
70
+ * Task.of(21)
71
+ * )
72
+ * ); // => 42
73
+ * ```
74
+ *
75
+ * @since 2025-09-18
76
+ */
77
+ of: function (value) { return function () { return Promise.resolve(value); }; },
78
+ /**
79
+ * Creates a Task from a Promise.
80
+ * @description Wraps a Promise in a Task, making it lazy. The Promise
81
+ * won't execute until the Task is run.
82
+ *
83
+ * @template A - The type of the value the Promise resolves to
84
+ * @param {() => Promise<A>} f - A function that returns a Promise
85
+ * @returns {Task<A>} A Task wrapping the Promise
86
+ *
87
+ * @category Constructors
88
+ * @example
89
+ * ```typescript
90
+ * const fetchData = Task.fromPromise(() =>
91
+ * fetch('/api/data').then(r => r.json())
92
+ * );
93
+ *
94
+ * // Promise doesn't execute until run
95
+ * const result = await Task.run(fetchData);
96
+ * ```
97
+ *
98
+ * @since 2025-09-18
99
+ */
100
+ fromPromise: function (f) { return f; },
101
+ /**
102
+ * Transforms the value inside a Task using the given function.
103
+ * @description Applies a pure function to the eventual value of a Task,
104
+ * creating a new Task with the transformed value. This is the functor
105
+ * map operation for Task types.
106
+ *
107
+ * @template A - The input type
108
+ * @template B - The output type
109
+ * @param {function(A): B} f - Function to transform the value
110
+ * @returns {function(Task<A>): Task<B>} A function that transforms Tasks
111
+ *
112
+ * @category Transformations
113
+ * @example
114
+ * ```typescript
115
+ * const double = Task.map((n: number) => n * 2);
116
+ * const task = Task.of(21);
117
+ * const doubled = double(task);
118
+ * await Task.run(doubled); // => 42
119
+ * ```
120
+ *
121
+ * @since 2025-09-18
122
+ */
123
+ map: function (f) { return function (task) {
124
+ return function () { return task().then(f); };
125
+ }; },
126
+ /**
127
+ * Chains Task-returning operations.
128
+ * @description Sequences two Tasks where the second depends on the result
129
+ * of the first. This is the monadic bind operation for Task types.
130
+ *
131
+ * @template A - The input type
132
+ * @template B - The output type
133
+ * @param {function(A): Task<B>} f - Function that returns a new Task
134
+ * @returns {function(Task<A>): Task<B>} A function that chains Tasks
135
+ *
136
+ * @category Combinators
137
+ * @example
138
+ * ```typescript
139
+ * const readFile = (path: string): Task<string> =>
140
+ * () => fs.promises.readFile(path, 'utf-8');
141
+ *
142
+ * const parseJson = <T>(content: string): Task<T> =>
143
+ * Task.of(JSON.parse(content));
144
+ *
145
+ * const loadConfig = Task.chain(parseJson<Config>)(
146
+ * readFile('config.json')
147
+ * );
148
+ * ```
149
+ *
150
+ * @since 2025-09-18
151
+ */
152
+ chain: function (f) { return function (task) {
153
+ return function () { return task().then(function (a) { return f(a)(); }); };
154
+ }; },
155
+ /**
156
+ * Alias for chain to match fp-ts naming.
157
+ * @description See {@link chain} for details.
158
+ *
159
+ * @category Combinators
160
+ * @since 2025-09-18
161
+ */
162
+ flatMap: function (f) { return function (task) {
163
+ return function () { return task().then(function (a) { return f(a)(); }); };
164
+ }; },
165
+ /**
166
+ * Applies a Task of a function to a Task of a value.
167
+ * @description Enables applying functions wrapped in Tasks to values wrapped
168
+ * in Tasks. This is the applicative apply operation for Task types.
169
+ *
170
+ * @template A - The input type
171
+ * @template B - The output type
172
+ * @param {Task<A>} taskValue - Task containing a value
173
+ * @returns {function(Task<function(A): B>): Task<B>} A function that applies Task functions
174
+ *
175
+ * @category Combinators
176
+ * @example
177
+ * ```typescript
178
+ * const add = (a: number) => (b: number) => a + b;
179
+ * const taskAdd = Task.of(add);
180
+ * const task5 = Task.of(5);
181
+ * const task3 = Task.of(3);
182
+ *
183
+ * const result = await Task.run(
184
+ * Task.ap(task3)(
185
+ * Task.ap(task5)(
186
+ * Task.map(add)(Task.of(10))
187
+ * )
188
+ * )
189
+ * ); // => 18
190
+ * ```
191
+ *
192
+ * @since 2025-09-18
193
+ */
194
+ ap: function (taskValue) { return function (taskFn) {
195
+ return function () { return Promise.all([taskFn(), taskValue()]).then(function (_a) {
196
+ var f = _a[0], a = _a[1];
197
+ return f(a);
198
+ }); };
199
+ }; },
200
+ /**
201
+ * Runs a Task to completion and returns its Promise.
202
+ * @description Executes a Task, triggering the async computation and
203
+ * returning the resulting Promise.
204
+ *
205
+ * @template A - The type of the value
206
+ * @param {Task<A>} task - The Task to run
207
+ * @returns {Promise<A>} The result of running the Task
208
+ *
209
+ * @category Execution
210
+ * @example
211
+ * ```typescript
212
+ * const task = Task.of(42);
213
+ * const result = await Task.run(task); // => 42
214
+ * ```
215
+ *
216
+ * @since 2025-09-18
217
+ */
218
+ run: function (task) { return task(); },
219
+ /**
220
+ * Converts an array of Tasks into a Task of an array.
221
+ * @description Runs all Tasks in parallel and collects their results.
222
+ * All Tasks must succeed for the resulting Task to succeed.
223
+ *
224
+ * @template A - The type of values in the Tasks
225
+ * @param {Task<A>[]} tasks - Array of Tasks to sequence
226
+ * @returns {Task<A[]>} A Task containing an array of results
227
+ *
228
+ * @category Combinators
229
+ * @example
230
+ * ```typescript
231
+ * const tasks = [
232
+ * Task.of(1),
233
+ * Task.of(2),
234
+ * Task.of(3)
235
+ * ];
236
+ * const combined = Task.sequence(tasks);
237
+ * await Task.run(combined); // => [1, 2, 3]
238
+ * ```
239
+ *
240
+ * @since 2025-09-18
241
+ */
242
+ sequence: function (tasks) {
243
+ return function () { return Promise.all(tasks.map(function (t) { return t(); })); };
244
+ },
245
+ /**
246
+ * Maps a function returning a Task over an array and sequences the results.
247
+ * @description Applies a Task-returning function to each element of an array
248
+ * and runs all resulting Tasks in parallel.
249
+ *
250
+ * @template A - The input type
251
+ * @template B - The output type
252
+ * @param {function(A): Task<B>} f - Function that returns a Task
253
+ * @returns {function(A[]): Task<B[]>} A function that traverses arrays with Tasks
254
+ *
255
+ * @category Combinators
256
+ * @example
257
+ * ```typescript
258
+ * const fetchUser = (id: string): Task<User> =>
259
+ * () => fetch(`/api/users/${id}`).then(r => r.json());
260
+ *
261
+ * const fetchAllUsers = Task.traverse(fetchUser);
262
+ * const users = await Task.run(
263
+ * fetchAllUsers(['1', '2', '3'])
264
+ * );
265
+ * ```
266
+ *
267
+ * @since 2025-09-18
268
+ */
269
+ traverse: function (f) { return function (as) {
270
+ return Task.sequence(as.map(f));
271
+ }; },
272
+ /**
273
+ * Creates a Task that delays for the specified milliseconds.
274
+ * @description Returns a Task that waits for the given duration before
275
+ * resolving with void.
276
+ *
277
+ * @param {number} ms - Number of milliseconds to delay
278
+ * @returns {Task<void>} A Task that delays
279
+ *
280
+ * @category Utilities
281
+ * @example
282
+ * ```typescript
283
+ * const delayed = Task.chain(() => Task.of('done'))(
284
+ * Task.delay(1000)
285
+ * );
286
+ * await Task.run(delayed); // => 'done' (after 1 second)
287
+ * ```
288
+ *
289
+ * @since 2025-09-18
290
+ */
291
+ delay: function (ms) {
292
+ return function () { return new Promise(function (resolve) { return setTimeout(resolve, ms); }); };
293
+ },
294
+ /**
295
+ * Combines the results of a tuple of Tasks into a Task of a tuple.
296
+ * @description Takes multiple Tasks and returns a Task containing a tuple
297
+ * of their results. All Tasks run in parallel.
298
+ *
299
+ * @template T - Tuple type of Tasks
300
+ * @param {...T} tasks - Tasks to combine
301
+ * @returns {Task<{ [K in keyof T]: T[K] extends Task<infer U> ? U : never }>} Task of tuple
302
+ *
303
+ * @category Combinators
304
+ * @example
305
+ * ```typescript
306
+ * const task1 = Task.of(1);
307
+ * const task2 = Task.of('hello');
308
+ * const task3 = Task.of(true);
309
+ *
310
+ * const combined = Task.sequenceT(task1, task2, task3);
311
+ * await Task.run(combined); // => [1, 'hello', true]
312
+ * ```
313
+ *
314
+ * @since 2025-09-18
315
+ */
316
+ sequenceT: function () {
317
+ var tasks = [];
318
+ for (var _i = 0; _i < arguments.length; _i++) {
319
+ tasks[_i] = arguments[_i];
320
+ }
321
+ return function () { return Promise.all(tasks.map(function (t) { return t(); })); };
322
+ },
323
+ /**
324
+ * Combines the results of a record of Tasks into a Task of a record.
325
+ * @description Takes an object with Task values and returns a Task containing
326
+ * an object with the results. All Tasks run in parallel.
327
+ *
328
+ * @template R - Record type with Task values
329
+ * @param {R} tasks - Record of Tasks to combine
330
+ * @returns {Task<{ [K in keyof R]: R[K] extends Task<infer U> ? U : never }>} Task of record
331
+ *
332
+ * @category Combinators
333
+ * @example
334
+ * ```typescript
335
+ * const tasks = {
336
+ * user: Task.of({ name: 'Alice' }),
337
+ * count: Task.of(42),
338
+ * enabled: Task.of(true)
339
+ * };
340
+ *
341
+ * const combined = Task.sequenceS(tasks);
342
+ * await Task.run(combined);
343
+ * // => { user: { name: 'Alice' }, count: 42, enabled: true }
344
+ * ```
345
+ *
346
+ * @since 2025-09-18
347
+ */
348
+ sequenceS: function (tasks) {
349
+ return function () {
350
+ var keys = Object.keys(tasks);
351
+ return Promise.all(keys.map(function (k) { return tasks[k](); })).then(function (values) {
352
+ return keys.reduce(function (acc, k, i) {
353
+ acc[k] = values[i];
354
+ return acc;
355
+ }, {});
356
+ });
357
+ };
358
+ },
359
+ /**
360
+ * Executes a Task for its side effects, discarding the result.
361
+ * @description Runs a Task but returns void, useful for Tasks that
362
+ * perform side effects where the result isn't needed.
363
+ *
364
+ * @template A - The type of the value (discarded)
365
+ * @param {function(A): Task<unknown>} f - Function that returns a Task (result discarded)
366
+ * @returns {function(Task<A>): Task<A>} A function that executes side effects
367
+ *
368
+ * @category Combinators
369
+ * @example
370
+ * ```typescript
371
+ * const log = (msg: string): Task<void> =>
372
+ * () => Promise.resolve(console.log(msg));
373
+ *
374
+ * const task = Task.chainFirst((n: number) => log(`Got: ${n}`))(
375
+ * Task.of(42)
376
+ * );
377
+ * await Task.run(task); // logs "Got: 42", returns 42
378
+ * ```
379
+ *
380
+ * @since 2025-09-18
381
+ */
382
+ chainFirst: function (f) { return function (task) {
383
+ return function () { return task().then(function (a) { return f(a)().then(function () { return a; }); }); };
384
+ }; },
385
+ };
386
+ //# sourceMappingURL=task.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.mjs","sourceRoot":"","sources":["../src/task.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=task.test.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.test.d.mts","sourceRoot":"","sources":["../src/task.test.mts"],"names":[],"mappings":""}