@satoshibits/functional 1.0.3 → 1.1.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/array-utils.d.mts.map +1 -1
- package/dist/array-utils.mjs +6 -3
- package/dist/array-utils.mjs.map +1 -1
- package/dist/composition.d.mts +40 -6
- package/dist/composition.d.mts.map +1 -1
- package/dist/composition.mjs +98 -22
- package/dist/composition.mjs.map +1 -1
- package/dist/index.d.mts +10 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +10 -5
- package/dist/index.mjs.map +1 -1
- package/dist/io.d.mts +326 -0
- package/dist/io.d.mts.map +1 -0
- package/dist/io.mjs +377 -0
- package/dist/io.mjs.map +1 -0
- package/dist/option.d.mts +182 -55
- package/dist/option.d.mts.map +1 -1
- package/dist/option.mjs +251 -60
- package/dist/option.mjs.map +1 -1
- package/dist/performance.d.mts +1 -1
- package/dist/performance.d.mts.map +1 -1
- package/dist/performance.mjs +16 -11
- package/dist/performance.mjs.map +1 -1
- package/dist/reader.d.mts +431 -0
- package/dist/reader.d.mts.map +1 -0
- package/dist/reader.mjs +444 -0
- package/dist/reader.mjs.map +1 -0
- package/dist/result.d.mts +196 -0
- package/dist/result.d.mts.map +1 -1
- package/dist/result.mjs +275 -0
- package/dist/result.mjs.map +1 -1
- package/dist/task.d.mts +361 -0
- package/dist/task.d.mts.map +1 -0
- package/dist/task.mjs +373 -0
- package/dist/task.mjs.map +1 -0
- package/dist/validation.d.mts.map +1 -1
- package/dist/validation.mjs +10 -4
- package/dist/validation.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils.d.mts","sourceRoot":"","sources":["../src/array-utils.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,YAAY,GACtB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,WAClC,CAAC,EAAE,KAAG,CAAC,EACA,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,SAAS,GACnB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,WAC9C,CAAC,EAAE,KAAG,CAAC,EAOL,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,KAAK,GACf,CAAC,QAAS,MAAM,WACX,CAAC,EAAE,KAAG,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"array-utils.d.mts","sourceRoot":"","sources":["../src/array-utils.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,YAAY,GACtB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,WAClC,CAAC,EAAE,KAAG,CAAC,EACA,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,SAAS,GACnB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,WAC9C,CAAC,EAAE,KAAG,CAAC,EAOL,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,KAAK,GACf,CAAC,QAAS,MAAM,WACX,CAAC,EAAE,KAAG,CAAC,EAAE,EASd,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,eAAO,MAAM,OAAO,GACjB,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,WAC9C,CAAC,EAAE,KAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAUxB,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,eAAO,MAAM,QAAQ,GAClB,CAAC,aAAc,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,WAE7B,CAAC,EAAE,KACP;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAM9D,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,eAAO,MAAM,SAAS,GACnB,CAAC,aAAc,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,WAC9B,CAAC,EAAE,KAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAWpB,CAAC"}
|
package/dist/array-utils.mjs
CHANGED
|
@@ -161,6 +161,9 @@ export var filterMap = function (fn) {
|
|
|
161
161
|
*/
|
|
162
162
|
export var chunk = function (size) {
|
|
163
163
|
return function (arr) {
|
|
164
|
+
if (size <= 0) {
|
|
165
|
+
throw new RangeError("chunk size must be greater than 0");
|
|
166
|
+
}
|
|
164
167
|
var chunks = [];
|
|
165
168
|
for (var i = 0; i < arr.length; i += size) {
|
|
166
169
|
chunks.push(arr.slice(i, i + size));
|
|
@@ -286,9 +289,9 @@ export var groupBy = function (keyFn) {
|
|
|
286
289
|
*/
|
|
287
290
|
export var findSafe = function (predicate) {
|
|
288
291
|
return function (arr) {
|
|
289
|
-
var
|
|
290
|
-
if (
|
|
291
|
-
return { success: true, data:
|
|
292
|
+
var index = arr.findIndex(predicate);
|
|
293
|
+
if (index >= 0) {
|
|
294
|
+
return { success: true, data: arr[index] };
|
|
292
295
|
}
|
|
293
296
|
return { success: false, error: "Item not found" };
|
|
294
297
|
};
|
package/dist/array-utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils.mjs","sourceRoot":"","sources":["../src/array-utils.mts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,IAAM,YAAY,GACvB,UAAO,EAAiC;IACxC,OAAA,UAAC,GAAQ;QACP,OAAA,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IAAX,CAAW;AADb,CACa,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,IAAM,SAAS,GACpB,UAAO,EAA6C;IACpD,OAAA,UAAC,GAAQ;QACP,OAAA,GAAG,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAE,IAAI,EAAE,KAAK;YAC/B,IAAM,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC;IANN,CAMM;AAPR,CAOQ,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,IAAM,KAAK,GAChB,UAAK,IAAY;IACjB,OAAA,UAAC,GAAQ;QACP,IAAM,MAAM,GAAU,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"array-utils.mjs","sourceRoot":"","sources":["../src/array-utils.mts"],"names":[],"mappings":"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"}
|
package/dist/composition.d.mts
CHANGED
|
@@ -406,6 +406,28 @@ export declare const flip: <A, B, C>(fn: (a: A, b: B) => C) => (b: B, a: A) => C
|
|
|
406
406
|
* Memoization - caches function results based on arguments.
|
|
407
407
|
* Improves performance for expensive pure functions by storing previously computed results.
|
|
408
408
|
*
|
|
409
|
+
* @description
|
|
410
|
+
* Creates a memoized version of a function that caches results based on arguments.
|
|
411
|
+
* - Uses WeakMap for object/function arguments, enabling proper garbage collection
|
|
412
|
+
* - Handles circular references safely by using object identity, not structure
|
|
413
|
+
* - Creates a trie-like cache structure for multiple arguments
|
|
414
|
+
*
|
|
415
|
+
* @template Args - The argument types of the function
|
|
416
|
+
* @template Return - The return type of the function
|
|
417
|
+
* @param {Function} fn - The function to memoize
|
|
418
|
+
* @param {Function} [getKey] - Optional function to generate a cache key from arguments
|
|
419
|
+
*
|
|
420
|
+
* @warning **Cache Growth Considerations:**
|
|
421
|
+
* - Without `getKey`: Primitive arguments create unbounded cache growth.
|
|
422
|
+
* Each unique combination of primitives creates a permanent cache entry.
|
|
423
|
+
* - With `getKey`: If the key function returns objects, they're held with
|
|
424
|
+
* strong references and won't be garbage collected while cached.
|
|
425
|
+
*
|
|
426
|
+
* For applications requiring cache bounds or eviction policies, consider:
|
|
427
|
+
* - Using `getKey` to control cache keys
|
|
428
|
+
* - Implementing a wrapper with cache management
|
|
429
|
+
* - Using specialized memoization libraries with LRU or TTL support
|
|
430
|
+
*
|
|
409
431
|
* @category Performance
|
|
410
432
|
* @example
|
|
411
433
|
* // Memoize expensive calculations
|
|
@@ -426,10 +448,21 @@ export declare const flip: <A, B, C>(fn: (a: A, b: B) => C) => (b: B, a: A) => C
|
|
|
426
448
|
* ? { ...user, details: await fetchUserDetails(userId) }
|
|
427
449
|
* : user;
|
|
428
450
|
* },
|
|
429
|
-
* (userId, options) => `${userId}-${options.includeDetails}`
|
|
451
|
+
* (userId, options) => `${userId}-${options.includeDetails}` // Returns primitive key
|
|
430
452
|
* );
|
|
431
453
|
*
|
|
432
454
|
* @example
|
|
455
|
+
* // Safe with circular references
|
|
456
|
+
* const obj: any = { value: 1 };
|
|
457
|
+
* obj.self = obj; // Circular reference
|
|
458
|
+
*
|
|
459
|
+
* const process = memoize((item: any) => {
|
|
460
|
+
* return item.value * 2;
|
|
461
|
+
* });
|
|
462
|
+
*
|
|
463
|
+
* process(obj); // Works correctly, uses object identity for caching
|
|
464
|
+
*
|
|
465
|
+
* @example
|
|
433
466
|
* // Memoizing API calls
|
|
434
467
|
* const fetchProductData = memoize(async (productId: string) => {
|
|
435
468
|
* const response = await fetch(`/api/products/${productId}`);
|
|
@@ -441,8 +474,9 @@ export declare const flip: <A, B, C>(fn: (a: A, b: B) => C) => (b: B, a: A) => C
|
|
|
441
474
|
* await fetchProductData('123'); // Returns cached result
|
|
442
475
|
*
|
|
443
476
|
* @see identity - For functions that don't need memoization
|
|
477
|
+
* @since 2025-07-03
|
|
444
478
|
*/
|
|
445
|
-
export declare const memoize: <Args extends unknown[], Return>(fn: (...args: Args) => Return, getKey?: (...args: Args) =>
|
|
479
|
+
export declare const memoize: <Args extends unknown[], Return>(fn: (...args: Args) => Return, getKey?: (...args: Args) => unknown) => ((...args: Args) => Return);
|
|
446
480
|
/**
|
|
447
481
|
* Compose async functions from right to left.
|
|
448
482
|
* Allows composition of Promise-returning functions in mathematical order.
|
|
@@ -573,7 +607,7 @@ export declare function pipeAsync<A, B, C, D, E, F>(f1: (a: A) => Promise<B>, f2
|
|
|
573
607
|
* async () => startServer()
|
|
574
608
|
* ];
|
|
575
609
|
*
|
|
576
|
-
* const results = await
|
|
610
|
+
* const results = await sequenceAsync(initSteps);
|
|
577
611
|
* // All steps completed in order
|
|
578
612
|
*
|
|
579
613
|
* @example
|
|
@@ -582,12 +616,12 @@ export declare function pipeAsync<A, B, C, D, E, F>(f1: (a: A) => Promise<B>, f2
|
|
|
582
616
|
* async () => fetchUserData(id)
|
|
583
617
|
* );
|
|
584
618
|
*
|
|
585
|
-
* const allUserData = await
|
|
619
|
+
* const allUserData = await sequenceAsync(fetchOperations);
|
|
586
620
|
* // Fetches users one by one, not in parallel
|
|
587
621
|
*
|
|
588
622
|
* @example
|
|
589
623
|
* // Cleanup operations
|
|
590
|
-
* const cleanup =
|
|
624
|
+
* const cleanup = sequenceAsync([
|
|
591
625
|
* async () => closeConnections(),
|
|
592
626
|
* async () => flushCache(),
|
|
593
627
|
* async () => logShutdown()
|
|
@@ -599,5 +633,5 @@ export declare function pipeAsync<A, B, C, D, E, F>(f1: (a: A) => Promise<B>, f2
|
|
|
599
633
|
* @see pipeAsync - For composing async functions
|
|
600
634
|
* @since 2025-07-03
|
|
601
635
|
*/
|
|
602
|
-
export declare const
|
|
636
|
+
export declare const sequenceAsync: <T>(fns: (() => Promise<T>)[]) => Promise<T[]>;
|
|
603
637
|
//# sourceMappingURL=composition.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.d.mts","sourceRoot":"","sources":["../src/composition.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;
|
|
1
|
+
{"version":3,"file":"composition.d.mts","sourceRoot":"","sources":["../src/composition.mts"],"names":[],"mappings":"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"}
|
package/dist/composition.mjs
CHANGED
|
@@ -180,7 +180,11 @@ export var identity = function (x) { return x; };
|
|
|
180
180
|
* @see identity - Return the input unchanged
|
|
181
181
|
* @since 2025-07-03
|
|
182
182
|
*/
|
|
183
|
-
export var constant = function (x) {
|
|
183
|
+
export var constant = function (x) {
|
|
184
|
+
return function () {
|
|
185
|
+
return x;
|
|
186
|
+
};
|
|
187
|
+
};
|
|
184
188
|
export function compose() {
|
|
185
189
|
var fns = [];
|
|
186
190
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
@@ -233,10 +237,12 @@ export function compose() {
|
|
|
233
237
|
* @see identity - Pass through without side effects
|
|
234
238
|
* @since 2025-07-03
|
|
235
239
|
*/
|
|
236
|
-
export var tap = function (fn) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
+
export var tap = function (fn) {
|
|
241
|
+
return function (x) {
|
|
242
|
+
fn(x);
|
|
243
|
+
return x;
|
|
244
|
+
};
|
|
245
|
+
};
|
|
240
246
|
/**
|
|
241
247
|
* Currying utility - converts a function of multiple arguments into a sequence of functions.
|
|
242
248
|
* Each function takes a single argument and returns another function until all arguments are provided.
|
|
@@ -361,6 +367,28 @@ export var flip = function (fn) {
|
|
|
361
367
|
* Memoization - caches function results based on arguments.
|
|
362
368
|
* Improves performance for expensive pure functions by storing previously computed results.
|
|
363
369
|
*
|
|
370
|
+
* @description
|
|
371
|
+
* Creates a memoized version of a function that caches results based on arguments.
|
|
372
|
+
* - Uses WeakMap for object/function arguments, enabling proper garbage collection
|
|
373
|
+
* - Handles circular references safely by using object identity, not structure
|
|
374
|
+
* - Creates a trie-like cache structure for multiple arguments
|
|
375
|
+
*
|
|
376
|
+
* @template Args - The argument types of the function
|
|
377
|
+
* @template Return - The return type of the function
|
|
378
|
+
* @param {Function} fn - The function to memoize
|
|
379
|
+
* @param {Function} [getKey] - Optional function to generate a cache key from arguments
|
|
380
|
+
*
|
|
381
|
+
* @warning **Cache Growth Considerations:**
|
|
382
|
+
* - Without `getKey`: Primitive arguments create unbounded cache growth.
|
|
383
|
+
* Each unique combination of primitives creates a permanent cache entry.
|
|
384
|
+
* - With `getKey`: If the key function returns objects, they're held with
|
|
385
|
+
* strong references and won't be garbage collected while cached.
|
|
386
|
+
*
|
|
387
|
+
* For applications requiring cache bounds or eviction policies, consider:
|
|
388
|
+
* - Using `getKey` to control cache keys
|
|
389
|
+
* - Implementing a wrapper with cache management
|
|
390
|
+
* - Using specialized memoization libraries with LRU or TTL support
|
|
391
|
+
*
|
|
364
392
|
* @category Performance
|
|
365
393
|
* @example
|
|
366
394
|
* // Memoize expensive calculations
|
|
@@ -381,10 +409,21 @@ export var flip = function (fn) {
|
|
|
381
409
|
* ? { ...user, details: await fetchUserDetails(userId) }
|
|
382
410
|
* : user;
|
|
383
411
|
* },
|
|
384
|
-
* (userId, options) => `${userId}-${options.includeDetails}`
|
|
412
|
+
* (userId, options) => `${userId}-${options.includeDetails}` // Returns primitive key
|
|
385
413
|
* );
|
|
386
414
|
*
|
|
387
415
|
* @example
|
|
416
|
+
* // Safe with circular references
|
|
417
|
+
* const obj: any = { value: 1 };
|
|
418
|
+
* obj.self = obj; // Circular reference
|
|
419
|
+
*
|
|
420
|
+
* const process = memoize((item: any) => {
|
|
421
|
+
* return item.value * 2;
|
|
422
|
+
* });
|
|
423
|
+
*
|
|
424
|
+
* process(obj); // Works correctly, uses object identity for caching
|
|
425
|
+
*
|
|
426
|
+
* @example
|
|
388
427
|
* // Memoizing API calls
|
|
389
428
|
* const fetchProductData = memoize(async (productId: string) => {
|
|
390
429
|
* const response = await fetch(`/api/products/${productId}`);
|
|
@@ -396,27 +435,64 @@ export var flip = function (fn) {
|
|
|
396
435
|
* await fetchProductData('123'); // Returns cached result
|
|
397
436
|
*
|
|
398
437
|
* @see identity - For functions that don't need memoization
|
|
438
|
+
* @since 2025-07-03
|
|
399
439
|
*/
|
|
400
440
|
export var memoize = function (fn, getKey) {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
441
|
+
if (getKey) {
|
|
442
|
+
var keyedCache_1 = new Map();
|
|
443
|
+
return function () {
|
|
444
|
+
var args = [];
|
|
445
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
446
|
+
args[_i] = arguments[_i];
|
|
447
|
+
}
|
|
448
|
+
var key = getKey.apply(void 0, args);
|
|
449
|
+
if (keyedCache_1.has(key)) {
|
|
450
|
+
return keyedCache_1.get(key);
|
|
451
|
+
}
|
|
452
|
+
var result = fn.apply(void 0, args);
|
|
453
|
+
keyedCache_1.set(key, result);
|
|
454
|
+
return result;
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
var createNode = function () { return ({
|
|
458
|
+
primitiveChildren: new Map(),
|
|
459
|
+
objectChildren: new WeakMap(),
|
|
460
|
+
hasValue: false,
|
|
461
|
+
}); };
|
|
462
|
+
var root = createNode();
|
|
409
463
|
return function () {
|
|
410
464
|
var args = [];
|
|
411
465
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
412
466
|
args[_i] = arguments[_i];
|
|
413
467
|
}
|
|
414
|
-
var
|
|
415
|
-
|
|
416
|
-
|
|
468
|
+
var node = root;
|
|
469
|
+
for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {
|
|
470
|
+
var arg = args_1[_a];
|
|
471
|
+
// Use WeakMap for objects and functions (garbage-collectible)
|
|
472
|
+
if ((typeof arg === "object" && arg !== null) || typeof arg === "function") {
|
|
473
|
+
var nextNode = node.objectChildren.get(arg);
|
|
474
|
+
if (!nextNode) {
|
|
475
|
+
nextNode = createNode();
|
|
476
|
+
node.objectChildren.set(arg, nextNode);
|
|
477
|
+
}
|
|
478
|
+
node = nextNode;
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
// Use Map for primitives (permanent cache)
|
|
482
|
+
var nextNode = node.primitiveChildren.get(arg);
|
|
483
|
+
if (!nextNode) {
|
|
484
|
+
nextNode = createNode();
|
|
485
|
+
node.primitiveChildren.set(arg, nextNode);
|
|
486
|
+
}
|
|
487
|
+
node = nextNode;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
if (node.hasValue) {
|
|
491
|
+
return node.value;
|
|
417
492
|
}
|
|
418
493
|
var result = fn.apply(void 0, args);
|
|
419
|
-
|
|
494
|
+
node.hasValue = true;
|
|
495
|
+
node.value = result;
|
|
420
496
|
return result;
|
|
421
497
|
};
|
|
422
498
|
};
|
|
@@ -471,7 +547,7 @@ export function pipeAsync() {
|
|
|
471
547
|
* async () => startServer()
|
|
472
548
|
* ];
|
|
473
549
|
*
|
|
474
|
-
* const results = await
|
|
550
|
+
* const results = await sequenceAsync(initSteps);
|
|
475
551
|
* // All steps completed in order
|
|
476
552
|
*
|
|
477
553
|
* @example
|
|
@@ -480,12 +556,12 @@ export function pipeAsync() {
|
|
|
480
556
|
* async () => fetchUserData(id)
|
|
481
557
|
* );
|
|
482
558
|
*
|
|
483
|
-
* const allUserData = await
|
|
559
|
+
* const allUserData = await sequenceAsync(fetchOperations);
|
|
484
560
|
* // Fetches users one by one, not in parallel
|
|
485
561
|
*
|
|
486
562
|
* @example
|
|
487
563
|
* // Cleanup operations
|
|
488
|
-
* const cleanup =
|
|
564
|
+
* const cleanup = sequenceAsync([
|
|
489
565
|
* async () => closeConnections(),
|
|
490
566
|
* async () => flushCache(),
|
|
491
567
|
* async () => logShutdown()
|
|
@@ -497,7 +573,7 @@ export function pipeAsync() {
|
|
|
497
573
|
* @see pipeAsync - For composing async functions
|
|
498
574
|
* @since 2025-07-03
|
|
499
575
|
*/
|
|
500
|
-
export var
|
|
576
|
+
export var sequenceAsync = function (fns) {
|
|
501
577
|
return fns.reduce(function (promiseChain, currentFn) { return __awaiter(void 0, void 0, void 0, function () {
|
|
502
578
|
var chainResults, currentResult;
|
|
503
579
|
return __generator(this, function (_a) {
|
package/dist/composition.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.mjs","sourceRoot":"","sources":["../src/composition.mts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"composition.mjs","sourceRoot":"","sources":["../src/composition.mts"],"names":[],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @satoshibits/functional - Pure functional utilities
|
|
3
3
|
*/
|
|
4
|
-
export * from "./result.mjs";
|
|
5
|
-
export * from "./validation.mjs";
|
|
6
|
-
export * from "./composition.mjs";
|
|
7
|
-
export * from "./pipeline.mjs";
|
|
8
4
|
export * from "./array-utils.mjs";
|
|
5
|
+
export * from "./composition.mjs";
|
|
6
|
+
export * from "./io.mjs";
|
|
9
7
|
export * from "./object-utils.mjs";
|
|
8
|
+
export * from "./option.mjs";
|
|
9
|
+
export * from "./performance.mjs";
|
|
10
|
+
export * from "./pipeline.mjs";
|
|
10
11
|
export * from "./predicates.mjs";
|
|
12
|
+
export * from "./reader.mjs";
|
|
13
|
+
export * from "./reader-result.mjs";
|
|
14
|
+
export * from "./result.mjs";
|
|
15
|
+
export * from "./task.mjs";
|
|
11
16
|
export * from "./types.mjs";
|
|
12
|
-
export * from "./
|
|
17
|
+
export * from "./validation.mjs";
|
|
13
18
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -3,13 +3,18 @@
|
|
|
3
3
|
* @satoshibits/functional - Pure functional utilities
|
|
4
4
|
*/
|
|
5
5
|
// re-export everything for full access
|
|
6
|
-
export * from "./result.mjs";
|
|
7
|
-
export * from "./validation.mjs";
|
|
8
|
-
export * from "./composition.mjs";
|
|
9
|
-
export * from "./pipeline.mjs";
|
|
10
6
|
export * from "./array-utils.mjs";
|
|
7
|
+
export * from "./composition.mjs";
|
|
8
|
+
export * from "./io.mjs";
|
|
11
9
|
export * from "./object-utils.mjs";
|
|
10
|
+
export * from "./option.mjs";
|
|
11
|
+
export * from "./performance.mjs";
|
|
12
|
+
export * from "./pipeline.mjs";
|
|
12
13
|
export * from "./predicates.mjs";
|
|
14
|
+
export * from "./reader.mjs";
|
|
15
|
+
export * from "./reader-result.mjs";
|
|
16
|
+
export * from "./result.mjs";
|
|
17
|
+
export * from "./task.mjs";
|
|
13
18
|
export * from "./types.mjs";
|
|
14
|
-
export * from "./
|
|
19
|
+
export * from "./validation.mjs";
|
|
15
20
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":";AAAA;;GAEG;AAEH,uCAAuC;AACvC,cAAc,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":";AAAA;;GAEG;AAEH,uCAAuC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|