@satoshibits/functional 1.1.0 → 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.
- package/README.md +28 -145
- package/dist/array-utils.d.mts +13 -0
- package/dist/array-utils.d.mts.map +1 -1
- package/dist/array-utils.mjs +13 -0
- package/dist/array-utils.mjs.map +1 -1
- package/dist/array-utils.test.d.ts +2 -0
- package/dist/array-utils.test.d.ts.map +1 -0
- package/dist/array-utils.test.js +256 -0
- package/dist/array-utils.test.js.map +1 -0
- package/dist/composition.d.mts +13 -0
- package/dist/composition.d.mts.map +1 -1
- package/dist/composition.mjs +13 -0
- package/dist/composition.mjs.map +1 -1
- package/dist/composition.test.d.ts +2 -0
- package/dist/composition.test.d.ts.map +1 -0
- package/dist/composition.test.js +409 -0
- package/dist/composition.test.js.map +1 -0
- package/dist/integration.test.d.mts +2 -0
- package/dist/integration.test.d.mts.map +1 -0
- package/dist/integration.test.mjs +486 -0
- package/dist/integration.test.mjs.map +1 -0
- package/dist/io.d.mts +12 -0
- package/dist/io.d.mts.map +1 -1
- package/dist/io.mjs +12 -0
- package/dist/io.mjs.map +1 -1
- package/dist/io.test.d.mts +2 -0
- package/dist/io.test.d.mts.map +1 -0
- package/dist/io.test.mjs +373 -0
- package/dist/io.test.mjs.map +1 -0
- package/dist/laws.test.d.mts +2 -0
- package/dist/laws.test.d.mts.map +1 -0
- package/dist/laws.test.mjs +614 -0
- package/dist/laws.test.mjs.map +1 -0
- package/dist/object-utils.d.mts +11 -0
- package/dist/object-utils.d.mts.map +1 -1
- package/dist/object-utils.mjs +11 -0
- package/dist/object-utils.mjs.map +1 -1
- package/dist/object-utils.test.d.ts +2 -0
- package/dist/object-utils.test.d.ts.map +1 -0
- package/dist/object-utils.test.js +286 -0
- package/dist/object-utils.test.js.map +1 -0
- package/dist/option-additions.test.d.mts +2 -0
- package/dist/option-additions.test.d.mts.map +1 -0
- package/dist/option-additions.test.mjs +325 -0
- package/dist/option-additions.test.mjs.map +1 -0
- package/dist/option.d.mts +20 -3
- package/dist/option.d.mts.map +1 -1
- package/dist/option.mjs +20 -3
- package/dist/option.mjs.map +1 -1
- package/dist/option.test.d.ts +6 -0
- package/dist/option.test.d.ts.map +1 -0
- package/dist/option.test.js +606 -0
- package/dist/option.test.js.map +1 -0
- package/dist/performance.d.mts +26 -9
- package/dist/performance.d.mts.map +1 -1
- package/dist/performance.mjs +26 -9
- package/dist/performance.mjs.map +1 -1
- package/dist/performance.test.d.ts +2 -0
- package/dist/performance.test.d.ts.map +1 -0
- package/dist/performance.test.js +424 -0
- package/dist/performance.test.js.map +1 -0
- package/dist/pipeline.d.mts +12 -0
- package/dist/pipeline.d.mts.map +1 -1
- package/dist/pipeline.mjs +12 -0
- package/dist/pipeline.mjs.map +1 -1
- package/dist/pipeline.test.d.ts +2 -0
- package/dist/pipeline.test.d.ts.map +1 -0
- package/dist/pipeline.test.js +445 -0
- package/dist/pipeline.test.js.map +1 -0
- package/dist/predicates.d.mts +12 -0
- package/dist/predicates.d.mts.map +1 -1
- package/dist/predicates.mjs +12 -0
- package/dist/predicates.mjs.map +1 -1
- package/dist/predicates.test.d.ts +2 -0
- package/dist/predicates.test.d.ts.map +1 -0
- package/dist/predicates.test.js +375 -0
- package/dist/predicates.test.js.map +1 -0
- package/dist/reader-result.d.mts +37 -16
- package/dist/reader-result.d.mts.map +1 -1
- package/dist/reader-result.mjs +37 -16
- package/dist/reader-result.mjs.map +1 -1
- package/dist/reader-result.test.d.ts +2 -0
- package/dist/reader-result.test.d.ts.map +1 -0
- package/dist/reader-result.test.js +1259 -0
- package/dist/reader-result.test.js.map +1 -0
- package/dist/reader.d.mts +12 -0
- package/dist/reader.d.mts.map +1 -1
- package/dist/reader.mjs +12 -0
- package/dist/reader.mjs.map +1 -1
- package/dist/reader.test.d.mts +2 -0
- package/dist/reader.test.d.mts.map +1 -0
- package/dist/reader.test.mjs +288 -0
- package/dist/reader.test.mjs.map +1 -0
- package/dist/result-additions.test.d.mts +2 -0
- package/dist/result-additions.test.d.mts.map +1 -0
- package/dist/result-additions.test.mjs +325 -0
- package/dist/result-additions.test.mjs.map +1 -0
- package/dist/result.d.mts +12 -0
- package/dist/result.d.mts.map +1 -1
- package/dist/result.mjs +12 -0
- package/dist/result.mjs.map +1 -1
- package/dist/result.test.d.ts +2 -0
- package/dist/result.test.d.ts.map +1 -0
- package/dist/result.test.js +453 -0
- package/dist/result.test.js.map +1 -0
- package/dist/task.d.mts +13 -0
- package/dist/task.d.mts.map +1 -1
- package/dist/task.mjs +13 -0
- package/dist/task.mjs.map +1 -1
- package/dist/task.test.d.mts +2 -0
- package/dist/task.test.d.mts.map +1 -0
- package/dist/task.test.mjs +1006 -0
- package/dist/task.test.mjs.map +1 -0
- package/dist/types.d.mts +12 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +12 -0
- package/dist/types.mjs.map +1 -1
- package/dist/types.test.d.ts +6 -0
- package/dist/types.test.d.ts.map +1 -0
- package/dist/types.test.js +447 -0
- package/dist/types.test.js.map +1 -0
- package/dist/validation.d.mts +12 -0
- package/dist/validation.d.mts.map +1 -1
- package/dist/validation.mjs +12 -0
- package/dist/validation.mjs.map +1 -1
- package/dist/validation.test.d.ts +2 -0
- package/dist/validation.test.d.ts.map +1 -0
- package/dist/validation.test.js +518 -0
- package/dist/validation.test.js.map +1 -0
- package/package.json +77 -13
package/README.md
CHANGED
|
@@ -17,153 +17,36 @@ This library provides a set of pure, composable functions that follow functional
|
|
|
17
17
|
|
|
18
18
|
## Modules
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- `
|
|
27
|
-
- `
|
|
28
|
-
- `
|
|
29
|
-
- `
|
|
30
|
-
- `
|
|
31
|
-
- `
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
**Functions:**
|
|
38
|
-
|
|
39
|
-
- `mapValues` - Transform object values while preserving keys
|
|
40
|
-
- `pick` - Create new object with selected keys
|
|
41
|
-
- `omit` - Create new object without specified keys
|
|
42
|
-
- `merge` - Deep merge objects with type safety
|
|
43
|
-
|
|
44
|
-
### `composition.mts`
|
|
45
|
-
|
|
46
|
-
Core function composition utilities.
|
|
47
|
-
|
|
48
|
-
**Functions:**
|
|
49
|
-
|
|
50
|
-
- `pipe` - Left-to-right function composition
|
|
51
|
-
- `pipeAsync` - Async function pipeline
|
|
52
|
-
- `compose` - Right-to-left function composition
|
|
53
|
-
- `composeAsync` - Async function composition
|
|
54
|
-
- `flow` - Type-safe variadic pipe
|
|
55
|
-
- `flowAsync` - Type-safe variadic async pipe
|
|
56
|
-
- `tap` - Side effect injection
|
|
57
|
-
- `curry` - Function currying
|
|
58
|
-
- `partial` - Partial application
|
|
59
|
-
- `flip` - Flip function arguments
|
|
60
|
-
- `memoize` - Function memoization
|
|
61
|
-
- `constant` - Create constant function
|
|
62
|
-
- `identity` - Identity function
|
|
63
|
-
- `noop` - No-operation function
|
|
64
|
-
|
|
65
|
-
### `predicates.mts`
|
|
66
|
-
|
|
67
|
-
Predicate functions and logical combinators.
|
|
68
|
-
|
|
69
|
-
**Functions:**
|
|
70
|
-
|
|
71
|
-
- `and` - Logical AND combinator
|
|
72
|
-
- `or` - Logical OR combinator
|
|
73
|
-
- `not` - Logical NOT combinator
|
|
74
|
-
- `xor` - Logical XOR combinator
|
|
75
|
-
- `isNil` - Check for null or undefined
|
|
76
|
-
- `isNotNil` - Check for non-null/undefined
|
|
77
|
-
- `isEmpty` - Check for empty values
|
|
78
|
-
- `isNotEmpty` - Check for non-empty values
|
|
79
|
-
- `equals` - Deep equality check
|
|
80
|
-
- `oneOf` - Check if value is in array
|
|
81
|
-
- `inRange` - Check if number is in range
|
|
82
|
-
- `matches` - Partial object matching
|
|
83
|
-
- `hasProperty` - Property existence check
|
|
84
|
-
- `includes` - Substring/array element check
|
|
85
|
-
- `alwaysTrue` - Constant true predicate
|
|
86
|
-
- `alwaysFalse` - Constant false predicate
|
|
87
|
-
|
|
88
|
-
### `performance.mts`
|
|
89
|
-
|
|
90
|
-
Performance optimization utilities.
|
|
91
|
-
|
|
92
|
-
**Functions:**
|
|
93
|
-
|
|
94
|
-
- `debounce` - Delay function execution
|
|
95
|
-
- `throttle` - Rate limit function calls
|
|
96
|
-
- `batchAsync` - Batch async operations
|
|
97
|
-
- `performanceUtils.measure` - Measure function execution time
|
|
98
|
-
|
|
99
|
-
### `pipeline.mts`
|
|
100
|
-
|
|
101
|
-
Fluent pipeline API for chaining operations.
|
|
102
|
-
|
|
103
|
-
**Class:**
|
|
104
|
-
|
|
105
|
-
- `Pipeline` - Chainable transformation pipeline with methods:
|
|
106
|
-
- `map` - Transform value
|
|
107
|
-
- `flatMap` - Transform and flatten
|
|
108
|
-
- `filter` - Conditional transformation
|
|
109
|
-
- `tap` - Side effects
|
|
110
|
-
- `pipeAsync` - Async transformations
|
|
111
|
-
- `value` - Extract final value
|
|
112
|
-
|
|
113
|
-
### `result.mts`
|
|
114
|
-
|
|
115
|
-
Result type for explicit error handling without exceptions.
|
|
116
|
-
|
|
117
|
-
**Types & Functions:**
|
|
118
|
-
|
|
119
|
-
- `Result<T, E>` - Success or error union type
|
|
120
|
-
- `Result.ok` - Create success result
|
|
121
|
-
- `Result.err` - Create error result
|
|
122
|
-
- `Result.map` - Transform success value
|
|
123
|
-
- `Result.mapError` - Transform error value
|
|
124
|
-
- `Result.chain` - Monadic bind
|
|
125
|
-
- `Result.match` - Pattern matching
|
|
126
|
-
- `Result.isOk` - Type guard for success
|
|
127
|
-
- `Result.isErr` - Type guard for error
|
|
128
|
-
|
|
129
|
-
### `reader-result.mts`
|
|
130
|
-
|
|
131
|
-
Reader monad combined with Result type for dependency injection and error handling.
|
|
132
|
-
|
|
133
|
-
**Types & Functions:**
|
|
134
|
-
|
|
135
|
-
- `ReaderResult<D, E, A>` - Reader + Result monad
|
|
136
|
-
- `ReaderResult.of` - Create from value
|
|
137
|
-
- `ReaderResult.fromResult` - Lift Result
|
|
138
|
-
- `ReaderResult.ask` - Access dependencies
|
|
139
|
-
- `ReaderResult.chain` - Monadic composition
|
|
140
|
-
- `ReaderResult.map` - Transform success value
|
|
141
|
-
- `ReaderResult.run` - Execute with dependencies
|
|
142
|
-
|
|
143
|
-
### `validation.mts`
|
|
144
|
-
|
|
145
|
-
Validation utilities and error types.
|
|
146
|
-
|
|
147
|
-
**Types & Functions:**
|
|
148
|
-
|
|
149
|
-
- `ValidationError` - Structured validation error
|
|
150
|
-
- `createValidationError` - Error factory
|
|
151
|
-
- `combineValidationErrors` - Merge multiple errors
|
|
152
|
-
- `formatValidationError` - Error formatting
|
|
20
|
+
Each module exposes its own "For Dummies" primer and decision tree at the very top of the source file. Treat those JSDoc blocks as the single source of truth—they are updated alongside the implementation and explain how to choose between related helpers.
|
|
21
|
+
|
|
22
|
+
- [`array-utils.mts`](./src/array-utils.mts) – Immutable array helpers.
|
|
23
|
+
- [`object-utils.mts`](./src/object-utils.mts) – Copy-on-write object transforms.
|
|
24
|
+
- [`composition.mts`](./src/composition.mts) – `pipe`, `flow`, `compose`, and friends.
|
|
25
|
+
- [`predicates.mts`](./src/predicates.mts) – Predicate combinators and batteries-included checks.
|
|
26
|
+
- [`performance.mts`](./src/performance.mts) – Debounce/throttle/batching utilities plus timing helpers.
|
|
27
|
+
- [`pipeline.mts`](./src/pipeline.mts) – Chainable class wrapper over composition patterns.
|
|
28
|
+
- [`result.mts`](./src/result.mts) – Explicit success/error container utilities.
|
|
29
|
+
- [`reader.mts`](./src/reader.mts) & [`reader-result.mts`](./src/reader-result.mts) – Dependency injection-friendly monads.
|
|
30
|
+
- [`task.mts`](./src/task.mts) – Lazy async computations.
|
|
31
|
+
- [`option.mts`](./src/option.mts) – Maybe-style optional handling.
|
|
32
|
+
- [`types.mts`](./src/types.mts) – Branded/nominal type helpers.
|
|
33
|
+
- [`validation.mts`](./src/validation.mts) – Result-powered validation DSL.
|
|
34
|
+
|
|
35
|
+
> 📌 Tip: when in doubt, open the module and read the lead JSDoc—it includes simple explanations, usage guidance, and decision trees that stay in sync with the code.
|
|
153
36
|
|
|
154
37
|
## Usage Patterns
|
|
155
38
|
|
|
156
39
|
### Import Strategy
|
|
157
40
|
|
|
158
|
-
|
|
41
|
+
Prefer targeted subpath imports so bundlers only touch the code you need. The root export still works and is now marked `sideEffects: false`, so unused utilities are tree-shaken either way.
|
|
159
42
|
|
|
160
43
|
```typescript
|
|
161
|
-
//
|
|
162
|
-
import { pipe, compose } from "
|
|
163
|
-
import { mapValues, pick } from "
|
|
44
|
+
// Focused imports keep bundles lean
|
|
45
|
+
import { pipe, compose } from "@satoshibits/functional/composition";
|
|
46
|
+
import { mapValues, pick } from "@satoshibits/functional/object-utils";
|
|
164
47
|
|
|
165
|
-
//
|
|
166
|
-
import {
|
|
48
|
+
// Root import stays available; bundlers will drop unused exports
|
|
49
|
+
import { Result } from "@satoshibits/functional";
|
|
167
50
|
```
|
|
168
51
|
|
|
169
52
|
### Composition Patterns
|
|
@@ -171,9 +54,9 @@ import { pipe } from "@/lib/functional";
|
|
|
171
54
|
Functions are designed to work together through composition:
|
|
172
55
|
|
|
173
56
|
```typescript
|
|
174
|
-
import { chunk, filterMap } from "
|
|
175
|
-
import { pipe } from "
|
|
176
|
-
import { isNotNil } from "
|
|
57
|
+
import { chunk, filterMap } from "@satoshibits/functional/array-utils";
|
|
58
|
+
import { pipe } from "@satoshibits/functional/composition";
|
|
59
|
+
import { isNotNil } from "@satoshibits/functional/predicates";
|
|
177
60
|
|
|
178
61
|
// Combine utilities for complex transformations
|
|
179
62
|
const processData = pipe(
|
|
@@ -187,8 +70,8 @@ const processData = pipe(
|
|
|
187
70
|
Use Result types for explicit error handling:
|
|
188
71
|
|
|
189
72
|
```typescript
|
|
190
|
-
import { findSafe } from "
|
|
191
|
-
import { Result } from "
|
|
73
|
+
import { findSafe } from "@satoshibits/functional/array-utils";
|
|
74
|
+
import { Result } from "@satoshibits/functional";
|
|
192
75
|
|
|
193
76
|
// Functions return Result types for safety
|
|
194
77
|
const result = findSafe((x: User) => x.id === targetId)(users);
|
|
@@ -237,6 +120,6 @@ When adding new utilities:
|
|
|
237
120
|
3. Include proper `@since` tags with current date
|
|
238
121
|
4. Write thorough unit tests
|
|
239
122
|
5. Follow established naming conventions
|
|
240
|
-
6.
|
|
123
|
+
6. Refresh the module's lead JSDoc so the "For Dummies" + decision tree guidance stays accurate
|
|
241
124
|
|
|
242
125
|
## License - MIT
|
package/dist/array-utils.d.mts
CHANGED
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
* These functions are designed to be composed and follow functional programming principles.
|
|
5
5
|
* All operations return new arrays, preserving immutability.
|
|
6
6
|
*
|
|
7
|
+
* ### For Dummies
|
|
8
|
+
* - These helpers are fancy versions of `map`/`filter` that never mutate the original array.
|
|
9
|
+
* - You plug them into pipelines to keep array logic readable and testable.
|
|
10
|
+
* - Every function returns a **new** array, so you can trust the input stays untouched.
|
|
11
|
+
*
|
|
12
|
+
* ### Decision Tree
|
|
13
|
+
* - Need element plus index? Reach for `mapWithIndex`.
|
|
14
|
+
* - Want to transform and drop `undefined` results in one go? Use `filterMap`.
|
|
15
|
+
* - Splitting into fixed-size slices? Call `chunk(size)`.
|
|
16
|
+
* - Grouping by a computed key? Use `groupBy(keyFn)`.
|
|
17
|
+
* - Need safe lookups? `findSafe(predicate)` returns an Option instead of `undefined`.
|
|
18
|
+
* - Splitting by predicate? `partition(predicate)` gives you matching and non-matching buckets.
|
|
19
|
+
*
|
|
7
20
|
* @example
|
|
8
21
|
* ```typescript
|
|
9
22
|
* import { filterMap, chunk, groupBy } from './array-utils.mts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils.d.mts","sourceRoot":"","sources":["../src/array-utils.mts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"array-utils.d.mts","sourceRoot":"","sources":["../src/array-utils.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;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
|
@@ -5,6 +5,19 @@
|
|
|
5
5
|
* These functions are designed to be composed and follow functional programming principles.
|
|
6
6
|
* All operations return new arrays, preserving immutability.
|
|
7
7
|
*
|
|
8
|
+
* ### For Dummies
|
|
9
|
+
* - These helpers are fancy versions of `map`/`filter` that never mutate the original array.
|
|
10
|
+
* - You plug them into pipelines to keep array logic readable and testable.
|
|
11
|
+
* - Every function returns a **new** array, so you can trust the input stays untouched.
|
|
12
|
+
*
|
|
13
|
+
* ### Decision Tree
|
|
14
|
+
* - Need element plus index? Reach for `mapWithIndex`.
|
|
15
|
+
* - Want to transform and drop `undefined` results in one go? Use `filterMap`.
|
|
16
|
+
* - Splitting into fixed-size slices? Call `chunk(size)`.
|
|
17
|
+
* - Grouping by a computed key? Use `groupBy(keyFn)`.
|
|
18
|
+
* - Need safe lookups? `findSafe(predicate)` returns an Option instead of `undefined`.
|
|
19
|
+
* - Splitting by predicate? `partition(predicate)` gives you matching and non-matching buckets.
|
|
20
|
+
*
|
|
8
21
|
* @example
|
|
9
22
|
* ```typescript
|
|
10
23
|
* import { filterMap, chunk, groupBy } from './array-utils.mts';
|
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
|
|
1
|
+
{"version":3,"file":"array-utils.mjs","sourceRoot":"","sources":["../src/array-utils.mts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;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,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;QAC5D,CAAC;QACD,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;AATD,CASC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,MAAM,CAAC,IAAM,OAAO,GAClB,UAA+B,KAAqB;IACpD,OAAA,UAAC,GAAQ;QACP,IAAM,MAAM,GAAG,EAAoB,CAAC;QACpC,KAAmB,UAAG,EAAH,WAAG,EAAH,iBAAG,EAAH,IAAG,EAAE,CAAC;YAApB,IAAM,IAAI,YAAA;YACb,IAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;AAVD,CAUC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAM,CAAC,IAAM,QAAQ,GACnB,UAAK,SAA+B;IACpC,OAAA,UACE,GAAQ;QAER,IAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAM,EAAE,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACrD,CAAC;AARD,CAQC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,MAAM,CAAC,IAAM,SAAS,GACpB,UAAK,SAA+B;IACpC,OAAA,UAAC,GAAQ;QACP,IAAM,IAAI,GAAQ,EAAE,CAAC;QACrB,IAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,KAAmB,UAAG,EAAH,WAAG,EAAH,iBAAG,EAAH,IAAG,EAAE,CAAC;YAApB,IAAM,IAAI,YAAA;YACb,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;AAXD,CAWC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-utils.test.d.ts","sourceRoot":"","sources":["../src/array-utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var vitest_1 = require("vitest");
|
|
4
|
+
var array_utils_mjs_1 = require("./array-utils.mjs");
|
|
5
|
+
(0, vitest_1.describe)('array-utils', function () {
|
|
6
|
+
(0, vitest_1.describe)('mapWithIndex', function () {
|
|
7
|
+
(0, vitest_1.it)('should map elements with their indices', function () {
|
|
8
|
+
var result = (0, array_utils_mjs_1.mapWithIndex)(function (item, i) { return "".concat(i, ": ").concat(item); })(['a', 'b', 'c']);
|
|
9
|
+
(0, vitest_1.expect)(result).toEqual(['0: a', '1: b', '2: c']);
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.it)('should handle empty arrays', function () {
|
|
12
|
+
var result = (0, array_utils_mjs_1.mapWithIndex)(function (item, i) { return item + i; })([]);
|
|
13
|
+
(0, vitest_1.expect)(result).toEqual([]);
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.it)('should work with complex transformations', function () {
|
|
16
|
+
var items = ['First', 'Second', 'Third'];
|
|
17
|
+
var numbered = (0, array_utils_mjs_1.mapWithIndex)(function (item, i) { return ({
|
|
18
|
+
index: i + 1,
|
|
19
|
+
value: item,
|
|
20
|
+
label: "".concat(i + 1, ". ").concat(item)
|
|
21
|
+
}); })(items);
|
|
22
|
+
(0, vitest_1.expect)(numbered).toEqual([
|
|
23
|
+
{ index: 1, value: 'First', label: '1. First' },
|
|
24
|
+
{ index: 2, value: 'Second', label: '2. Second' },
|
|
25
|
+
{ index: 3, value: 'Third', label: '3. Third' }
|
|
26
|
+
]);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.describe)('filterMap', function () {
|
|
30
|
+
(0, vitest_1.it)('should filter and map in a single pass', function () {
|
|
31
|
+
var nums = (0, array_utils_mjs_1.filterMap)(function (s) {
|
|
32
|
+
var n = parseInt(s);
|
|
33
|
+
return isNaN(n) ? undefined : n;
|
|
34
|
+
})(['1', 'a', '2', 'b', '3']);
|
|
35
|
+
(0, vitest_1.expect)(nums).toEqual([1, 2, 3]);
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.it)('should handle empty arrays', function () {
|
|
38
|
+
var result = (0, array_utils_mjs_1.filterMap)(function (x) { return x > 0 ? x * 2 : undefined; })([]);
|
|
39
|
+
(0, vitest_1.expect)(result).toEqual([]);
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.it)('should filter out all undefined values', function () {
|
|
42
|
+
var result = (0, array_utils_mjs_1.filterMap)(function (x) { return x > 10 ? x : undefined; })([1, 2, 3, 4, 5]);
|
|
43
|
+
(0, vitest_1.expect)(result).toEqual([]);
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.it)('should work with complex objects', function () {
|
|
46
|
+
var users = [
|
|
47
|
+
{ name: 'Alice', profile: { age: 25 } },
|
|
48
|
+
{ name: 'Bob', profile: null },
|
|
49
|
+
{ name: 'Charlie', profile: { age: 30 } }
|
|
50
|
+
];
|
|
51
|
+
var ages = (0, array_utils_mjs_1.filterMap)(function (u) {
|
|
52
|
+
return u.profile ? { name: u.name, age: u.profile.age } : undefined;
|
|
53
|
+
})(users);
|
|
54
|
+
(0, vitest_1.expect)(ages).toEqual([
|
|
55
|
+
{ name: 'Alice', age: 25 },
|
|
56
|
+
{ name: 'Charlie', age: 30 }
|
|
57
|
+
]);
|
|
58
|
+
});
|
|
59
|
+
(0, vitest_1.it)('should provide index to the mapping function', function () {
|
|
60
|
+
var result = (0, array_utils_mjs_1.filterMap)(function (x, i) {
|
|
61
|
+
return i % 2 === 0 ? x * 2 : undefined;
|
|
62
|
+
})([1, 2, 3, 4, 5]);
|
|
63
|
+
(0, vitest_1.expect)(result).toEqual([2, 6, 10]); // indices 0, 2, 4
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.it)('should not create intermediate arrays', function () {
|
|
66
|
+
// This test verifies the optimization by checking behavior
|
|
67
|
+
// The function should process each element exactly once
|
|
68
|
+
var processCount = 0;
|
|
69
|
+
var result = (0, array_utils_mjs_1.filterMap)(function (x) {
|
|
70
|
+
processCount++;
|
|
71
|
+
return x > 2 ? x * 10 : undefined;
|
|
72
|
+
})([1, 2, 3, 4, 5]);
|
|
73
|
+
(0, vitest_1.expect)(processCount).toBe(5); // Each element processed exactly once
|
|
74
|
+
(0, vitest_1.expect)(result).toEqual([30, 40, 50]);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.describe)('chunk', function () {
|
|
78
|
+
(0, vitest_1.it)('should chunk array into specified size', function () {
|
|
79
|
+
var chunks = (0, array_utils_mjs_1.chunk)(2)([1, 2, 3, 4, 5]);
|
|
80
|
+
(0, vitest_1.expect)(chunks).toEqual([[1, 2], [3, 4], [5]]);
|
|
81
|
+
});
|
|
82
|
+
(0, vitest_1.it)('should throw when size is zero or negative', function () {
|
|
83
|
+
(0, vitest_1.expect)(function () { return (0, array_utils_mjs_1.chunk)(0)([1, 2, 3]); }).toThrowError(new RangeError('chunk size must be greater than 0'));
|
|
84
|
+
(0, vitest_1.expect)(function () { return (0, array_utils_mjs_1.chunk)(-1)([1, 2, 3]); }).toThrowError(RangeError);
|
|
85
|
+
});
|
|
86
|
+
(0, vitest_1.it)('should handle arrays that divide evenly', function () {
|
|
87
|
+
var chunks = (0, array_utils_mjs_1.chunk)(3)([1, 2, 3, 4, 5, 6]);
|
|
88
|
+
(0, vitest_1.expect)(chunks).toEqual([[1, 2, 3], [4, 5, 6]]);
|
|
89
|
+
});
|
|
90
|
+
(0, vitest_1.it)('should handle empty arrays', function () {
|
|
91
|
+
var chunks = (0, array_utils_mjs_1.chunk)(3)([]);
|
|
92
|
+
(0, vitest_1.expect)(chunks).toEqual([]);
|
|
93
|
+
});
|
|
94
|
+
(0, vitest_1.it)('should handle chunk size larger than array', function () {
|
|
95
|
+
var chunks = (0, array_utils_mjs_1.chunk)(10)([1, 2, 3]);
|
|
96
|
+
(0, vitest_1.expect)(chunks).toEqual([[1, 2, 3]]);
|
|
97
|
+
});
|
|
98
|
+
(0, vitest_1.it)('should handle chunk size of 1', function () {
|
|
99
|
+
var chunks = (0, array_utils_mjs_1.chunk)(1)([1, 2, 3]);
|
|
100
|
+
(0, vitest_1.expect)(chunks).toEqual([[1], [2], [3]]);
|
|
101
|
+
});
|
|
102
|
+
(0, vitest_1.it)('should work with strings', function () {
|
|
103
|
+
var items = ['A', 'B', 'C', 'D', 'E', 'F'];
|
|
104
|
+
var rows = (0, array_utils_mjs_1.chunk)(3)(items);
|
|
105
|
+
(0, vitest_1.expect)(rows).toEqual([['A', 'B', 'C'], ['D', 'E', 'F']]);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.describe)('groupBy', function () {
|
|
109
|
+
(0, vitest_1.it)('should group by key function', function () {
|
|
110
|
+
var users = [
|
|
111
|
+
{ name: 'Alice', age: 25 },
|
|
112
|
+
{ name: 'Bob', age: 30 },
|
|
113
|
+
{ name: 'Charlie', age: 25 }
|
|
114
|
+
];
|
|
115
|
+
var byAge = (0, array_utils_mjs_1.groupBy)(function (u) { return u.age; })(users);
|
|
116
|
+
(0, vitest_1.expect)(byAge).toEqual({
|
|
117
|
+
25: [
|
|
118
|
+
{ name: 'Alice', age: 25 },
|
|
119
|
+
{ name: 'Charlie', age: 25 }
|
|
120
|
+
],
|
|
121
|
+
30: [{ name: 'Bob', age: 30 }]
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
(0, vitest_1.it)('should handle empty arrays', function () {
|
|
125
|
+
var result = (0, array_utils_mjs_1.groupBy)(function (x) { return x % 2; })([]);
|
|
126
|
+
(0, vitest_1.expect)(result).toEqual({});
|
|
127
|
+
});
|
|
128
|
+
(0, vitest_1.it)('should group strings by first letter', function () {
|
|
129
|
+
var words = ['apple', 'banana', 'apricot', 'cherry', 'avocado'];
|
|
130
|
+
var byFirstLetter = (0, array_utils_mjs_1.groupBy)(function (word) { return word[0]; })(words);
|
|
131
|
+
(0, vitest_1.expect)(byFirstLetter).toEqual({
|
|
132
|
+
a: ['apple', 'apricot', 'avocado'],
|
|
133
|
+
b: ['banana'],
|
|
134
|
+
c: ['cherry']
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
(0, vitest_1.it)('should handle numeric grouping', function () {
|
|
138
|
+
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
139
|
+
var byRemainder = (0, array_utils_mjs_1.groupBy)(function (n) { return n % 3; })(numbers);
|
|
140
|
+
(0, vitest_1.expect)(byRemainder).toEqual({
|
|
141
|
+
0: [3, 6, 9],
|
|
142
|
+
1: [1, 4, 7],
|
|
143
|
+
2: [2, 5, 8]
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
(0, vitest_1.it)('should preserve order within groups', function () {
|
|
147
|
+
var _a, _b;
|
|
148
|
+
var items = [
|
|
149
|
+
{ id: 1, type: 'a' },
|
|
150
|
+
{ id: 2, type: 'b' },
|
|
151
|
+
{ id: 3, type: 'a' },
|
|
152
|
+
{ id: 4, type: 'b' },
|
|
153
|
+
{ id: 5, type: 'a' }
|
|
154
|
+
];
|
|
155
|
+
var byType = (0, array_utils_mjs_1.groupBy)(function (item) { return item.type; })(items);
|
|
156
|
+
(0, vitest_1.expect)((_a = byType.a) === null || _a === void 0 ? void 0 : _a.map(function (i) { return i.id; })).toEqual([1, 3, 5]);
|
|
157
|
+
(0, vitest_1.expect)((_b = byType.b) === null || _b === void 0 ? void 0 : _b.map(function (i) { return i.id; })).toEqual([2, 4]);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
(0, vitest_1.describe)('findSafe', function () {
|
|
161
|
+
(0, vitest_1.it)('should return success result when item is found', function () {
|
|
162
|
+
var result = (0, array_utils_mjs_1.findSafe)(function (n) { return n > 3; })([1, 2, 3, 4, 5]);
|
|
163
|
+
(0, vitest_1.expect)(result).toEqual({ success: true, data: 4 });
|
|
164
|
+
});
|
|
165
|
+
(0, vitest_1.it)('should return error result when item is not found', function () {
|
|
166
|
+
var result = (0, array_utils_mjs_1.findSafe)(function (n) { return n > 10; })([1, 2, 3]);
|
|
167
|
+
(0, vitest_1.expect)(result).toEqual({ success: false, error: 'Item not found' });
|
|
168
|
+
});
|
|
169
|
+
(0, vitest_1.it)('should handle empty arrays', function () {
|
|
170
|
+
var result = (0, array_utils_mjs_1.findSafe)(function (n) { return n > 0; })([]);
|
|
171
|
+
(0, vitest_1.expect)(result).toEqual({ success: false, error: 'Item not found' });
|
|
172
|
+
});
|
|
173
|
+
(0, vitest_1.it)('should find first matching item', function () {
|
|
174
|
+
var result = (0, array_utils_mjs_1.findSafe)(function (n) { return n % 2 === 0; })([1, 2, 3, 4, 5]);
|
|
175
|
+
(0, vitest_1.expect)(result).toEqual({ success: true, data: 2 });
|
|
176
|
+
});
|
|
177
|
+
(0, vitest_1.it)('should work with objects', function () {
|
|
178
|
+
var users = [
|
|
179
|
+
{ id: 1, email: 'alice@example.com' },
|
|
180
|
+
{ id: 2, email: 'bob@example.com' }
|
|
181
|
+
];
|
|
182
|
+
var result = (0, array_utils_mjs_1.findSafe)(function (u) { return u.email === 'bob@example.com'; })(users);
|
|
183
|
+
(0, vitest_1.expect)(result).toEqual({
|
|
184
|
+
success: true,
|
|
185
|
+
data: { id: 2, email: 'bob@example.com' }
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
(0, vitest_1.it)('should handle falsy values correctly', function () {
|
|
189
|
+
var result = (0, array_utils_mjs_1.findSafe)(function (n) { return n === 0; })([null, undefined, 0, 1, 2]);
|
|
190
|
+
(0, vitest_1.expect)(result).toEqual({ success: true, data: 0 });
|
|
191
|
+
});
|
|
192
|
+
(0, vitest_1.it)('should treat undefined value as found when present', function () {
|
|
193
|
+
var result = (0, array_utils_mjs_1.findSafe)(function (value) { return value === undefined; })([
|
|
194
|
+
'a',
|
|
195
|
+
undefined,
|
|
196
|
+
'b'
|
|
197
|
+
]);
|
|
198
|
+
(0, vitest_1.expect)(result).toEqual({ success: true, data: undefined });
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
(0, vitest_1.describe)('partition', function () {
|
|
202
|
+
(0, vitest_1.it)('should partition based on predicate', function () {
|
|
203
|
+
var _a = (0, array_utils_mjs_1.partition)(function (n) { return n % 2 === 0; })([1, 2, 3, 4, 5]), evens = _a[0], odds = _a[1];
|
|
204
|
+
(0, vitest_1.expect)(evens).toEqual([2, 4]);
|
|
205
|
+
(0, vitest_1.expect)(odds).toEqual([1, 3, 5]);
|
|
206
|
+
});
|
|
207
|
+
(0, vitest_1.it)('should handle empty arrays', function () {
|
|
208
|
+
var _a = (0, array_utils_mjs_1.partition)(function (n) { return n > 0; })([]), left = _a[0], right = _a[1];
|
|
209
|
+
(0, vitest_1.expect)(left).toEqual([]);
|
|
210
|
+
(0, vitest_1.expect)(right).toEqual([]);
|
|
211
|
+
});
|
|
212
|
+
(0, vitest_1.it)('should handle all elements matching predicate', function () {
|
|
213
|
+
var _a = (0, array_utils_mjs_1.partition)(function (n) { return n > 0; })([1, 2, 3, 4, 5]), positive = _a[0], negative = _a[1];
|
|
214
|
+
(0, vitest_1.expect)(positive).toEqual([1, 2, 3, 4, 5]);
|
|
215
|
+
(0, vitest_1.expect)(negative).toEqual([]);
|
|
216
|
+
});
|
|
217
|
+
(0, vitest_1.it)('should handle no elements matching predicate', function () {
|
|
218
|
+
var _a = (0, array_utils_mjs_1.partition)(function (n) { return n > 10; })([1, 2, 3, 4, 5]), positive = _a[0], negative = _a[1];
|
|
219
|
+
(0, vitest_1.expect)(positive).toEqual([]);
|
|
220
|
+
(0, vitest_1.expect)(negative).toEqual([1, 2, 3, 4, 5]);
|
|
221
|
+
});
|
|
222
|
+
(0, vitest_1.it)('should work with objects', function () {
|
|
223
|
+
var data = [
|
|
224
|
+
{ id: 1, valid: true },
|
|
225
|
+
{ id: 2, valid: false },
|
|
226
|
+
{ id: 3, valid: true }
|
|
227
|
+
];
|
|
228
|
+
var _a = (0, array_utils_mjs_1.partition)(function (item) { return item.valid; })(data), valid = _a[0], invalid = _a[1];
|
|
229
|
+
(0, vitest_1.expect)(valid).toEqual([
|
|
230
|
+
{ id: 1, valid: true },
|
|
231
|
+
{ id: 3, valid: true }
|
|
232
|
+
]);
|
|
233
|
+
(0, vitest_1.expect)(invalid).toEqual([
|
|
234
|
+
{ id: 2, valid: false }
|
|
235
|
+
]);
|
|
236
|
+
});
|
|
237
|
+
(0, vitest_1.it)('should preserve order in both arrays', function () {
|
|
238
|
+
var items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
239
|
+
var _a = (0, array_utils_mjs_1.partition)(function (n) { return n % 3 === 0; })(items), multiples = _a[0], others = _a[1];
|
|
240
|
+
(0, vitest_1.expect)(multiples).toEqual([3, 6, 9]);
|
|
241
|
+
(0, vitest_1.expect)(others).toEqual([1, 2, 4, 5, 7, 8, 10]);
|
|
242
|
+
});
|
|
243
|
+
(0, vitest_1.it)('should work with date comparisons', function () {
|
|
244
|
+
var users = [
|
|
245
|
+
{ name: 'Alice', lastLogin: new Date('2024-01-10') },
|
|
246
|
+
{ name: 'Bob', lastLogin: new Date('2023-12-01') },
|
|
247
|
+
{ name: 'Charlie', lastLogin: new Date('2024-01-14') }
|
|
248
|
+
];
|
|
249
|
+
var cutoffDate = new Date('2024-01-01');
|
|
250
|
+
var _a = (0, array_utils_mjs_1.partition)(function (u) { return u.lastLogin > cutoffDate; })(users), active = _a[0], inactive = _a[1];
|
|
251
|
+
(0, vitest_1.expect)(active.map(function (u) { return u.name; })).toEqual(['Alice', 'Charlie']);
|
|
252
|
+
(0, vitest_1.expect)(inactive.map(function (u) { return u.name; })).toEqual(['Bob']);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
//# sourceMappingURL=array-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-utils.test.js","sourceRoot":"","sources":["../src/array-utils.test.ts"],"names":[],"mappings":"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"}
|
package/dist/composition.d.mts
CHANGED
|
@@ -5,6 +5,19 @@
|
|
|
5
5
|
* for pipelines of any length. All functions follow functional programming principles,
|
|
6
6
|
* supporting both synchronous and asynchronous composition patterns.
|
|
7
7
|
*
|
|
8
|
+
* ### For Dummies
|
|
9
|
+
* - Treat these helpers as Lego roads for wiring tiny functions together without writing loops.
|
|
10
|
+
* - `pipe` runs a list of functions on a starting value, `flow` builds the list first and reuses it later.
|
|
11
|
+
* - `compose` is just `flow` read from right to left; `tap` lets you peek without changing the value.
|
|
12
|
+
* - Async variants like `pipeAsync` do the same thing but wait for promises at every hop.
|
|
13
|
+
*
|
|
14
|
+
* ### Decision Tree
|
|
15
|
+
* - Already holding the starting value? Use `pipe(value, step1, step2, ...)`.
|
|
16
|
+
* - Need a reusable function to call many times? Use `flow(step1, step2, ...)`.
|
|
17
|
+
* - Prefer mathematical right-to-left order? Reach for `compose(last, ..., first)`.
|
|
18
|
+
* - Want to debug without altering data? Insert `tap(logFn)` inside the pipeline.
|
|
19
|
+
* - Need to await each step? Use `pipeAsync(step1, step2, ...)` and call the returned async function.
|
|
20
|
+
*
|
|
8
21
|
* @example
|
|
9
22
|
* ```typescript
|
|
10
23
|
* import { pipe, flow, compose, tap, pipeAsync } from './composition.mts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.d.mts","sourceRoot":"","sources":["../src/composition.mts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"composition.d.mts","sourceRoot":"","sources":["../src/composition.mts"],"names":[],"mappings":"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"}
|