ts-data-forge 1.5.0 → 1.5.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/dist/array/array-utils.d.mts +137 -358
- package/dist/array/array-utils.d.mts.map +1 -1
- package/dist/array/array-utils.mjs +191 -1966
- package/dist/array/array-utils.mjs.map +1 -1
- package/dist/array/tuple-utils.d.mts +9 -23
- package/dist/array/tuple-utils.d.mts.map +1 -1
- package/dist/array/tuple-utils.mjs +10 -56
- package/dist/array/tuple-utils.mjs.map +1 -1
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/functional/match.d.mts +2 -33
- package/dist/functional/match.d.mts.map +1 -1
- package/dist/functional/match.mjs +2 -119
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional.d.mts +34 -197
- package/dist/functional/optional.d.mts.map +1 -1
- package/dist/functional/optional.mjs +40 -312
- package/dist/functional/optional.mjs.map +1 -1
- package/dist/functional/pipe.d.mts +2 -15
- package/dist/functional/pipe.d.mts.map +1 -1
- package/dist/functional/pipe.mjs +2 -110
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result.d.mts +18 -209
- package/dist/functional/result.d.mts.map +1 -1
- package/dist/functional/result.mjs +40 -360
- package/dist/functional/result.mjs.map +1 -1
- package/dist/guard/has-key.d.mts +1 -1
- package/dist/guard/has-key.mjs +1 -1
- package/dist/iterator/range.d.mts +2 -6
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs +2 -93
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts +14 -438
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +14 -438
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/num.d.mts +7 -107
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +7 -122
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +4 -10
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +8 -140
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/map-nullable.d.mts +2 -6
- package/dist/others/map-nullable.d.mts.map +1 -1
- package/dist/others/map-nullable.mjs +2 -146
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/package.json +11 -11
- package/src/array/array-utils.mts +707 -881
- package/src/array/tuple-utils.mts +20 -41
- package/src/functional/match.mts +18 -44
- package/src/functional/optional.mts +93 -248
- package/src/functional/pipe.mts +25 -20
- package/src/functional/result.mts +114 -288
- package/src/guard/has-key.mts +1 -1
- package/src/iterator/range.mts +14 -17
- package/src/json/json.mts +14 -438
- package/src/number/num.mts +20 -113
- package/src/object/object.mts +30 -45
- package/src/others/map-nullable.mts +13 -15
|
@@ -42,39 +42,39 @@ export declare namespace Optional {
|
|
|
42
42
|
* @param maybeOptional The value to check.
|
|
43
43
|
* @returns `true` if the value is an {@link Optional}, otherwise `false`.
|
|
44
44
|
*/
|
|
45
|
-
|
|
45
|
+
const isOptional: (maybeOptional: unknown) => maybeOptional is Optional<unknown>;
|
|
46
46
|
/**
|
|
47
47
|
* Represents an {@link Optional} that contains a value.
|
|
48
48
|
* @template S The type of the contained value.
|
|
49
49
|
*/
|
|
50
|
-
|
|
50
|
+
type Some<S> = Some_<S>;
|
|
51
51
|
/**
|
|
52
52
|
* Represents an {@link Optional} that does not contain a value (is empty).
|
|
53
53
|
*/
|
|
54
|
-
|
|
54
|
+
type None = None_;
|
|
55
55
|
/**
|
|
56
56
|
* Base type for any {@link Optional}, used for generic constraints.
|
|
57
57
|
* Represents an {@link Optional} with an unknown value type.
|
|
58
58
|
*/
|
|
59
|
-
|
|
59
|
+
type Base = Optional<unknown>;
|
|
60
60
|
/**
|
|
61
61
|
* Extracts the value type `S` from an {@link Optional.Some}<S>.
|
|
62
62
|
* If the {@link Optional} is {@link Optional.None}, resolves to `never`.
|
|
63
63
|
* @template O The {@link Optional.Base} type to unwrap.
|
|
64
64
|
*/
|
|
65
|
-
|
|
65
|
+
type Unwrap<O extends Base> = O extends Some<infer S> ? S : never;
|
|
66
66
|
/**
|
|
67
67
|
* Narrows an {@link Optional.Base} type to {@link Optional.Some}<S> if it is a {@link Optional.Some}.
|
|
68
68
|
* If the {@link Optional} is {@link Optional.None}, resolves to `never`.
|
|
69
69
|
* @template O The {@link Optional.Base} type to narrow.
|
|
70
70
|
*/
|
|
71
|
-
|
|
71
|
+
type NarrowToSome<O extends Base> = O extends None ? never : O;
|
|
72
72
|
/**
|
|
73
73
|
* Narrows an {@link Optional.Base} type to {@link Optional.None} if it is a {@link Optional.None}.
|
|
74
74
|
* If the {@link Optional} is {@link Optional.Some}<S>, resolves to `never`.
|
|
75
75
|
* @template O The {@link Optional.Base} type to narrow.
|
|
76
76
|
*/
|
|
77
|
-
|
|
77
|
+
type NarrowToNone<O extends Base> = O extends None ? O : never;
|
|
78
78
|
/**
|
|
79
79
|
* Creates an {@link Optional.Some} containing the given value.
|
|
80
80
|
* @template S The type of the value.
|
|
@@ -83,26 +83,21 @@ export declare namespace Optional {
|
|
|
83
83
|
* @example
|
|
84
84
|
* ```typescript
|
|
85
85
|
* const someValue = Optional.some(42);
|
|
86
|
-
* const someString = Optional.some("hello");
|
|
87
|
-
* const someObject = Optional.some({ name: "Alice", age: 30 });
|
|
88
|
-
*
|
|
89
86
|
* console.log(Optional.isSome(someValue)); // true
|
|
90
87
|
* console.log(Optional.unwrap(someValue)); // 42
|
|
91
88
|
* ```
|
|
92
89
|
*/
|
|
93
|
-
|
|
90
|
+
const some: <S>(value: S) => Some<S>;
|
|
94
91
|
/**
|
|
95
92
|
* The singleton instance representing {@link Optional.None} (an empty Optional).
|
|
96
93
|
* @example
|
|
97
94
|
* ```typescript
|
|
98
95
|
* const emptyValue = Optional.none;
|
|
99
|
-
*
|
|
100
96
|
* console.log(Optional.isNone(emptyValue)); // true
|
|
101
|
-
* console.log(Optional.unwrap(emptyValue)); // undefined
|
|
102
97
|
* console.log(Optional.unwrapOr(emptyValue, "default")); // "default"
|
|
103
98
|
* ```
|
|
104
99
|
*/
|
|
105
|
-
|
|
100
|
+
const none: None;
|
|
106
101
|
/**
|
|
107
102
|
* Checks if an {@link Optional} is {@link Optional.Some}.
|
|
108
103
|
* Acts as a type guard.
|
|
@@ -110,7 +105,7 @@ export declare namespace Optional {
|
|
|
110
105
|
* @param optional The {@link Optional} to check.
|
|
111
106
|
* @returns `true` if the {@link Optional} is {@link Optional.Some}, `false` otherwise.
|
|
112
107
|
*/
|
|
113
|
-
|
|
108
|
+
const isSome: <O extends Base>(optional: O) => optional is NarrowToSome<O>;
|
|
114
109
|
/**
|
|
115
110
|
* Checks if an {@link Optional} is {@link Optional.None}.
|
|
116
111
|
* Acts as a type guard.
|
|
@@ -118,7 +113,7 @@ export declare namespace Optional {
|
|
|
118
113
|
* @param optional The {@link Optional} to check.
|
|
119
114
|
* @returns `true` if the {@link Optional} is {@link Optional.None}, `false` otherwise.
|
|
120
115
|
*/
|
|
121
|
-
|
|
116
|
+
const isNone: <O extends Base>(optional: O) => optional is NarrowToNone<O>;
|
|
122
117
|
/**
|
|
123
118
|
* Unwraps an `Optional`, returning the contained value.
|
|
124
119
|
* Throws an error if the `Optional` is `Optional.None`.
|
|
@@ -133,14 +128,6 @@ export declare namespace Optional {
|
|
|
133
128
|
* @throws {Error} Error with message "`unwrapThrow()` has failed because it is `None`" if the `Optional` is `Optional.None`.
|
|
134
129
|
* @example
|
|
135
130
|
* ```typescript
|
|
136
|
-
* // Safe unwrapping when you know the value exists
|
|
137
|
-
* const config = loadConfig(); // returns Optional<Config>
|
|
138
|
-
* if (Optional.isSome(config)) {
|
|
139
|
-
* const value = Optional.unwrapThrow(config); // Safe to unwrap
|
|
140
|
-
* console.log(value); // Config object
|
|
141
|
-
* }
|
|
142
|
-
*
|
|
143
|
-
* // Unsafe unwrapping - will throw if empty
|
|
144
131
|
* const userInput = Optional.some(42);
|
|
145
132
|
* console.log(Optional.unwrapThrow(userInput)); // 42
|
|
146
133
|
*
|
|
@@ -152,7 +139,7 @@ export declare namespace Optional {
|
|
|
152
139
|
* }
|
|
153
140
|
* ```
|
|
154
141
|
*/
|
|
155
|
-
|
|
142
|
+
const unwrapThrow: <O extends Base>(optional: O) => Unwrap<O>;
|
|
156
143
|
/**
|
|
157
144
|
* Unwraps an `Optional`, returning the contained value or `undefined` if empty.
|
|
158
145
|
*
|
|
@@ -166,27 +153,15 @@ export declare namespace Optional {
|
|
|
166
153
|
* @returns The contained value if `Optional.Some`, otherwise `undefined`.
|
|
167
154
|
* @example
|
|
168
155
|
* ```typescript
|
|
169
|
-
* // With Some - guaranteed to return value
|
|
170
156
|
* const some = Optional.some(42);
|
|
171
|
-
* const value = Optional.unwrap(some); //
|
|
157
|
+
* const value = Optional.unwrap(some); // 42
|
|
172
158
|
*
|
|
173
|
-
*
|
|
174
|
-
* const
|
|
175
|
-
* const result = Optional.unwrap(maybeValue); // Type: string | undefined
|
|
176
|
-
*
|
|
177
|
-
* // Safe pattern for handling both cases
|
|
178
|
-
* const optional = Optional.some("hello");
|
|
179
|
-
* const unwrapped = Optional.unwrap(optional);
|
|
180
|
-
* if (unwrapped !== undefined) {
|
|
181
|
-
* console.log(unwrapped.toUpperCase()); // "HELLO"
|
|
182
|
-
* }
|
|
159
|
+
* const none = Optional.none;
|
|
160
|
+
* const result = Optional.unwrap(none); // undefined
|
|
183
161
|
* ```
|
|
184
162
|
*/
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
<O extends Some<unknown>>(optional: O): Unwrap<O>;
|
|
188
|
-
<O extends Base>(optional: O): Unwrap<O> | undefined;
|
|
189
|
-
};
|
|
163
|
+
function unwrap<O extends Some<unknown>>(optional: O): Unwrap<O>;
|
|
164
|
+
function unwrap<O extends Base>(optional: O): Unwrap<O> | undefined;
|
|
190
165
|
/**
|
|
191
166
|
* Unwraps an `Optional`, returning the contained value or a default value if it's `Optional.None`.
|
|
192
167
|
*
|
|
@@ -201,11 +176,6 @@ export declare namespace Optional {
|
|
|
201
176
|
* @example
|
|
202
177
|
* ```typescript
|
|
203
178
|
* // Direct usage - most common pattern
|
|
204
|
-
* const userAge = Optional.fromNullable(user.age);
|
|
205
|
-
* const displayAge = Optional.unwrapOr(userAge, "Unknown");
|
|
206
|
-
* console.log(`Age: ${displayAge}`); // "Age: 25" or "Age: Unknown"
|
|
207
|
-
*
|
|
208
|
-
* // With different Optional types
|
|
209
179
|
* const some = Optional.some(42);
|
|
210
180
|
* const value1 = Optional.unwrapOr(some, 0);
|
|
211
181
|
* console.log(value1); // 42
|
|
@@ -214,26 +184,14 @@ export declare namespace Optional {
|
|
|
214
184
|
* const value2 = Optional.unwrapOr(none, 0);
|
|
215
185
|
* console.log(value2); // 0
|
|
216
186
|
*
|
|
217
|
-
* // Curried usage
|
|
187
|
+
* // Curried usage
|
|
218
188
|
* const unwrapWithDefault = Optional.unwrapOr("default");
|
|
219
|
-
* const result =
|
|
220
|
-
* .map(unwrapWithDefault)
|
|
221
|
-
* .value;
|
|
189
|
+
* const result = unwrapWithDefault(Optional.some("hello"));
|
|
222
190
|
* console.log(result); // "hello"
|
|
223
|
-
*
|
|
224
|
-
* // Chaining with other Optional operations
|
|
225
|
-
* const processValue = (input: string) =>
|
|
226
|
-
* pipe(Optional.fromNullable(input))
|
|
227
|
-
* .map(Optional.map(s => s.toUpperCase()))
|
|
228
|
-
* .map(Optional.unwrapOr("NO INPUT"))
|
|
229
|
-
* .value;
|
|
230
191
|
* ```
|
|
231
192
|
*/
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
<O extends Base, D>(optional: O, defaultValue: D): D | Unwrap<O>;
|
|
235
|
-
<S, D>(defaultValue: D): (optional: Optional<S>) => D | S;
|
|
236
|
-
};
|
|
193
|
+
function unwrapOr<O extends Base, D>(optional: O, defaultValue: D): D | Unwrap<O>;
|
|
194
|
+
function unwrapOr<S, D>(defaultValue: D): (optional: Optional<S>) => D | S;
|
|
237
195
|
/**
|
|
238
196
|
* Returns the `Optional` if it is `Some`, otherwise returns the alternative.
|
|
239
197
|
*
|
|
@@ -247,42 +205,14 @@ export declare namespace Optional {
|
|
|
247
205
|
* @returns The first `Optional` if `Some`, otherwise the alternative.
|
|
248
206
|
* @example
|
|
249
207
|
* ```typescript
|
|
250
|
-
* // Direct usage - cascading lookups
|
|
251
|
-
* const primaryConfig = loadPrimaryConfig(); // Optional<Config>
|
|
252
|
-
* const fallbackConfig = loadFallbackConfig(); // Optional<Config>
|
|
253
|
-
* const config = Optional.orElse(primaryConfig, fallbackConfig);
|
|
254
|
-
*
|
|
255
|
-
* // Multiple fallbacks
|
|
256
|
-
* const userPreference = getUserPreference(); // Optional<string>
|
|
257
|
-
* const systemDefault = Optional.some("default-theme");
|
|
258
|
-
* const theme = Optional.orElse(userPreference, systemDefault);
|
|
259
|
-
* console.log(Optional.unwrap(theme)); // User's preference or "default-theme"
|
|
260
|
-
*
|
|
261
|
-
* // Regular usage example
|
|
262
208
|
* const primary = Optional.none;
|
|
263
209
|
* const fallback = Optional.some("default");
|
|
264
210
|
* const result = Optional.orElse(primary, fallback);
|
|
265
211
|
* console.log(Optional.unwrap(result)); // "default"
|
|
266
|
-
*
|
|
267
|
-
* // Curried usage for functional composition
|
|
268
|
-
* const withFallback = Optional.orElse(Optional.some("fallback"));
|
|
269
|
-
* const result2 = pipe(Optional.none)
|
|
270
|
-
* .map(withFallback)
|
|
271
|
-
* .value;
|
|
272
|
-
* console.log(Optional.unwrap(result2)); // "fallback"
|
|
273
|
-
*
|
|
274
|
-
* // Chaining multiple orElse operations
|
|
275
|
-
* const finalResult = pipe(Optional.none)
|
|
276
|
-
* .map(Optional.orElse(Optional.none)) // Still none
|
|
277
|
-
* .map(Optional.orElse(Optional.some("last resort")))
|
|
278
|
-
* .value;
|
|
279
212
|
* ```
|
|
280
213
|
*/
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
<O extends Base, const O2 extends Base>(optional: O, alternative: O2): O | O2;
|
|
284
|
-
<S, S2>(alternative: Optional<S2>): (optional: Optional<S>) => Optional<S> | Optional<S2>;
|
|
285
|
-
};
|
|
214
|
+
function orElse<O extends Base, const O2 extends Base>(optional: O, alternative: O2): O | O2;
|
|
215
|
+
function orElse<S, S2>(alternative: Optional<S2>): (optional: Optional<S>) => Optional<S> | Optional<S2>;
|
|
286
216
|
/**
|
|
287
217
|
* Maps an {@link Optional}<S> to {@link Optional}<S2> by applying a function to a contained value.
|
|
288
218
|
* If the {@link Optional} is {@link Optional.None}, it returns {@link Optional.none}.
|
|
@@ -301,25 +231,10 @@ export declare namespace Optional {
|
|
|
301
231
|
* const noneValue = Optional.none;
|
|
302
232
|
* const mappedNone = Optional.map(noneValue, x => x * 2);
|
|
303
233
|
* console.log(Optional.isNone(mappedNone)); // true
|
|
304
|
-
*
|
|
305
|
-
* // Chaining maps
|
|
306
|
-
* const result = Optional.map(
|
|
307
|
-
* Optional.map(Optional.some("hello"), s => s.toUpperCase()),
|
|
308
|
-
* s => s.length
|
|
309
|
-
* );
|
|
310
|
-
* console.log(Optional.unwrap(result)); // 5
|
|
311
|
-
*
|
|
312
|
-
* // Curried version for use with pipe
|
|
313
|
-
* const doubler = Optional.map((x: number) => x * 2);
|
|
314
|
-
* const result2 = pipe(Optional.some(5)).map(doubler).value;
|
|
315
|
-
* console.log(Optional.unwrap(result2)); // 10
|
|
316
234
|
* ```
|
|
317
235
|
*/
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
<O extends Base, S2>(optional: O, mapFn: (value: Unwrap<O>) => S2): Optional<S2>;
|
|
321
|
-
<S, S2>(mapFn: (value: S) => S2): (optional: Optional<S>) => Optional<S2>;
|
|
322
|
-
};
|
|
236
|
+
function map<O extends Base, S2>(optional: O, mapFn: (value: Unwrap<O>) => S2): Optional<S2>;
|
|
237
|
+
function map<S, S2>(mapFn: (value: S) => S2): (optional: Optional<S>) => Optional<S2>;
|
|
323
238
|
/**
|
|
324
239
|
* Applies a function that returns an `Optional` to the value in an `Optional.Some`.
|
|
325
240
|
* If the input is `Optional.None`, returns `Optional.None`.
|
|
@@ -331,7 +246,6 @@ export declare namespace Optional {
|
|
|
331
246
|
* @returns The result of applying the function, or `Optional.None`.
|
|
332
247
|
* @example
|
|
333
248
|
* ```typescript
|
|
334
|
-
* // Regular usage
|
|
335
249
|
* const parseNumber = (s: string): Optional<number> => {
|
|
336
250
|
* const n = Number(s);
|
|
337
251
|
* return isNaN(n) ? Optional.none : Optional.some(n);
|
|
@@ -339,18 +253,10 @@ export declare namespace Optional {
|
|
|
339
253
|
*
|
|
340
254
|
* const result = Optional.flatMap(Optional.some("42"), parseNumber);
|
|
341
255
|
* console.log(Optional.unwrap(result)); // 42
|
|
342
|
-
*
|
|
343
|
-
* // Curried usage for pipe composition
|
|
344
|
-
* const parser = Optional.flatMap(parseNumber);
|
|
345
|
-
* const result2 = pipe(Optional.some("42")).map(parser).value;
|
|
346
|
-
* console.log(Optional.unwrap(result2)); // 42
|
|
347
256
|
* ```
|
|
348
257
|
*/
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
<O extends Base, S2>(optional: O, flatMapFn: (value: Unwrap<O>) => Optional<S2>): Optional<S2>;
|
|
352
|
-
<S, S2>(flatMapFn: (value: S) => Optional<S2>): (optional: Optional<S>) => Optional<S2>;
|
|
353
|
-
};
|
|
258
|
+
function flatMap<O extends Base, S2>(optional: O, flatMapFn: (value: Unwrap<O>) => Optional<S2>): Optional<S2>;
|
|
259
|
+
function flatMap<S, S2>(flatMapFn: (value: S) => Optional<S2>): (optional: Optional<S>) => Optional<S2>;
|
|
354
260
|
/**
|
|
355
261
|
* Filters an `Optional` based on a predicate.
|
|
356
262
|
* If the `Optional` is `Some` and the predicate returns true, returns the original `Optional`.
|
|
@@ -361,22 +267,13 @@ export declare namespace Optional {
|
|
|
361
267
|
* @returns The filtered `Optional`.
|
|
362
268
|
* @example
|
|
363
269
|
* ```typescript
|
|
364
|
-
* // Regular usage
|
|
365
270
|
* const someEven = Optional.some(4);
|
|
366
271
|
* const filtered = Optional.filter(someEven, x => x % 2 === 0);
|
|
367
272
|
* console.log(Optional.unwrap(filtered)); // 4
|
|
368
|
-
*
|
|
369
|
-
* // Curried usage for pipe composition
|
|
370
|
-
* const evenFilter = Optional.filter((x: number) => x % 2 === 0);
|
|
371
|
-
* const result = pipe(Optional.some(4)).map(evenFilter).value;
|
|
372
|
-
* console.log(Optional.unwrap(result)); // 4
|
|
373
273
|
* ```
|
|
374
274
|
*/
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
<O extends Base>(optional: O, predicate: (value: Unwrap<O>) => boolean): Optional<Unwrap<O>>;
|
|
378
|
-
<S>(predicate: (value: S) => boolean): (optional: Optional<S>) => Optional<S>;
|
|
379
|
-
};
|
|
275
|
+
function filter<O extends Base>(optional: O, predicate: (value: Unwrap<O>) => boolean): Optional<Unwrap<O>>;
|
|
276
|
+
function filter<S>(predicate: (value: S) => boolean): (optional: Optional<S>) => Optional<S>;
|
|
380
277
|
/**
|
|
381
278
|
* Unwraps an `Optional`, returning the contained value or throwing an error with the provided message.
|
|
382
279
|
* @template O The `Optional.Base` type to unwrap.
|
|
@@ -386,22 +283,13 @@ export declare namespace Optional {
|
|
|
386
283
|
* @throws Error with the provided message if the `Optional` is `Optional.None`.
|
|
387
284
|
* @example
|
|
388
285
|
* ```typescript
|
|
389
|
-
* // Regular usage
|
|
390
286
|
* const some = Optional.some(42);
|
|
391
287
|
* const value = Optional.expectToBe(some, "Value must exist");
|
|
392
288
|
* console.log(value); // 42
|
|
393
|
-
*
|
|
394
|
-
* // Curried usage for pipe composition
|
|
395
|
-
* const getValue = Optional.expectToBe("Value must exist");
|
|
396
|
-
* const value2 = pipe(Optional.some(42)).map(getValue).value;
|
|
397
|
-
* console.log(value2); // 42
|
|
398
289
|
* ```
|
|
399
290
|
*/
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
<O extends Base>(optional: O, message: string): Unwrap<O>;
|
|
403
|
-
<S>(message: string): (optional: Optional<S>) => S;
|
|
404
|
-
};
|
|
291
|
+
function expectToBe<O extends Base>(optional: O, message: string): Unwrap<O>;
|
|
292
|
+
function expectToBe<S>(message: string): (optional: Optional<S>) => S;
|
|
405
293
|
/**
|
|
406
294
|
* Combines two `Optional` values into a single `Optional` containing a tuple.
|
|
407
295
|
* If either `Optional` is `None`, returns `None`.
|
|
@@ -421,7 +309,7 @@ export declare namespace Optional {
|
|
|
421
309
|
* console.log(Optional.isNone(withNone)); // true
|
|
422
310
|
* ```
|
|
423
311
|
*/
|
|
424
|
-
|
|
312
|
+
const zip: <A, const B>(optionalA: Optional<A>, optionalB: Optional<B>) => Optional<readonly [A, B]>;
|
|
425
313
|
/**
|
|
426
314
|
* Converts a nullable value to an `Optional`.
|
|
427
315
|
*
|
|
@@ -434,42 +322,16 @@ export declare namespace Optional {
|
|
|
434
322
|
* @returns `Optional.Some<NonNullable<T>>` if the value is not null or undefined, otherwise `Optional.None`.
|
|
435
323
|
* @example
|
|
436
324
|
* ```typescript
|
|
437
|
-
* // Basic nullable conversion
|
|
438
325
|
* const value: string | null = "hello";
|
|
439
326
|
* const optional = Optional.fromNullable(value);
|
|
440
327
|
* console.log(Optional.unwrap(optional)); // "hello"
|
|
441
|
-
* console.log(Optional.isSome(optional)); // true
|
|
442
328
|
*
|
|
443
|
-
* // Handling null values
|
|
444
329
|
* const nullValue: string | null = null;
|
|
445
330
|
* const noneOptional = Optional.fromNullable(nullValue);
|
|
446
331
|
* console.log(Optional.isNone(noneOptional)); // true
|
|
447
|
-
*
|
|
448
|
-
* // Handling undefined values
|
|
449
|
-
* const undefinedValue: number | undefined = undefined;
|
|
450
|
-
* const alsoNone = Optional.fromNullable(undefinedValue);
|
|
451
|
-
* console.log(Optional.isNone(alsoNone)); // true
|
|
452
|
-
*
|
|
453
|
-
* // Common use case with API responses
|
|
454
|
-
* interface User {
|
|
455
|
-
* name: string;
|
|
456
|
-
* email?: string; // Optional field
|
|
457
|
-
* }
|
|
458
|
-
*
|
|
459
|
-
* const user: User = { name: "John" };
|
|
460
|
-
* const email = Optional.fromNullable(user.email);
|
|
461
|
-
* const emailDisplay = Optional.unwrapOr(email, "No email provided");
|
|
462
|
-
* console.log(emailDisplay); // "No email provided"
|
|
463
|
-
*
|
|
464
|
-
* // Chaining with other Optional operations
|
|
465
|
-
* const processNullableInput = (input: string | null) =>
|
|
466
|
-
* Optional.fromNullable(input)
|
|
467
|
-
* .map(Optional.map(s => s.trim()))
|
|
468
|
-
* .map(Optional.filter(s => s.length > 0))
|
|
469
|
-
* .map(Optional.unwrapOr("empty input"));
|
|
470
332
|
* ```
|
|
471
333
|
*/
|
|
472
|
-
|
|
334
|
+
const fromNullable: <T>(value: T | null | undefined) => Optional<NonNullable<T>>;
|
|
473
335
|
/**
|
|
474
336
|
* Converts an `Optional` to a nullable value.
|
|
475
337
|
*
|
|
@@ -485,39 +347,14 @@ export declare namespace Optional {
|
|
|
485
347
|
* @returns The contained value if `Some`, otherwise `undefined`.
|
|
486
348
|
* @example
|
|
487
349
|
* ```typescript
|
|
488
|
-
* // Basic conversion
|
|
489
350
|
* const some = Optional.some(42);
|
|
490
351
|
* console.log(Optional.toNullable(some)); // 42
|
|
491
352
|
*
|
|
492
353
|
* const none = Optional.none;
|
|
493
354
|
* console.log(Optional.toNullable(none)); // undefined
|
|
494
|
-
*
|
|
495
|
-
* // Interface with nullable APIs
|
|
496
|
-
* interface ApiResponse {
|
|
497
|
-
* data?: string;
|
|
498
|
-
* }
|
|
499
|
-
*
|
|
500
|
-
* const optionalData: Optional<string> = processData();
|
|
501
|
-
* const response: ApiResponse = {
|
|
502
|
-
* data: Optional.toNullable(optionalData)
|
|
503
|
-
* };
|
|
504
|
-
*
|
|
505
|
-
* // Converting back and forth
|
|
506
|
-
* const original: string | undefined = getValue();
|
|
507
|
-
* const optional = Optional.fromNullable(original);
|
|
508
|
-
* const processed = Optional.map(optional, s => s.toUpperCase());
|
|
509
|
-
* const result: string | undefined = Optional.toNullable(processed);
|
|
510
|
-
*
|
|
511
|
-
* // Useful in conditional logic
|
|
512
|
-
* const maybeUser = findUser(id);
|
|
513
|
-
* const userName = Optional.toNullable(maybeUser);
|
|
514
|
-
* if (userName !== undefined) {
|
|
515
|
-
* console.log(`Found user: ${userName}`);
|
|
516
|
-
* }
|
|
517
355
|
* ```
|
|
518
356
|
*/
|
|
519
|
-
|
|
520
|
-
export {};
|
|
357
|
+
const toNullable: <O extends Base>(optional: O) => Unwrap<O> | undefined;
|
|
521
358
|
}
|
|
522
359
|
export {};
|
|
523
360
|
//# sourceMappingURL=optional.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optional.d.mts","sourceRoot":"","sources":["../../src/functional/optional.mts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,QAAA,MAAM,eAAe,iCAAiC,CAAC;AAEvD,+EAA+E;AAC/E,QAAA,MAAM,eAAe,iCAAiC,CAAC;AAEvD;;;;GAIG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;IACvB;;;OAGG;IACH,KAAK,EAAE,OAAO,eAAe,CAAC;IAE9B,2BAA2B;IAC3B,KAAK,EAAE,CAAC,CAAC;CACV,CAAC,CAAC;AAEH;;;GAGG;AACH,KAAK,KAAK,GAAG,QAAQ,CAAC;IACpB;;;OAGG;IACH,KAAK,EAAE,OAAO,eAAe,CAAC;CAC/B,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3C;;;GAGG;AACH,yBAAiB,QAAQ,CAAC;IACxB;;;;OAIG;
|
|
1
|
+
{"version":3,"file":"optional.d.mts","sourceRoot":"","sources":["../../src/functional/optional.mts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,QAAA,MAAM,eAAe,iCAAiC,CAAC;AAEvD,+EAA+E;AAC/E,QAAA,MAAM,eAAe,iCAAiC,CAAC;AAEvD;;;;GAIG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;IACvB;;;OAGG;IACH,KAAK,EAAE,OAAO,eAAe,CAAC;IAE9B,2BAA2B;IAC3B,KAAK,EAAE,CAAC,CAAC;CACV,CAAC,CAAC;AAEH;;;GAGG;AACH,KAAK,KAAK,GAAG,QAAQ,CAAC;IACpB;;;OAGG;IACH,KAAK,EAAE,OAAO,eAAe,CAAC;CAC/B,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3C;;;GAGG;AACH,yBAAiB,QAAQ,CAAC;IACxB;;;;OAIG;IACI,MAAM,UAAU,GACrB,eAAe,OAAO,KACrB,aAAa,IAAI,QAAQ,CAAC,OAAO,CAKW,CAAC;IAEhD;;;OAGG;IACH,KAAY,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/B;;OAEG;IACH,KAAY,IAAI,GAAG,KAAK,CAAC;IAEzB;;;OAGG;IACH,KAAY,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAErC;;;;OAIG;IACH,KAAY,MAAM,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAEzE;;;;OAIG;IACH,KAAY,YAAY,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtE;;;;OAIG;IACH,KAAY,YAAY,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;IAEtE;;;;;;;;;;;OAWG;IACI,MAAM,IAAI,GAAI,CAAC,EAAG,OAAO,CAAC,KAAG,IAAI,CAAC,CAAC,CAGxC,CAAC;IAEH;;;;;;;;OAQG;IACI,MAAM,IAAI,EAAE,IAA0C,CAAC;IAE9D;;;;;;OAMG;IACI,MAAM,MAAM,GAAI,CAAC,SAAS,IAAI,EACnC,UAAU,CAAC,KACV,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAuC,CAAC;IAErE;;;;;;OAMG;IACI,MAAM,MAAM,GAAI,CAAC,SAAS,IAAI,EACnC,UAAU,CAAC,KACV,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAuC,CAAC;IAErE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,MAAM,WAAW,GAAI,CAAC,SAAS,IAAI,EAAE,UAAU,CAAC,KAAG,MAAM,CAAC,CAAC,CAOjE,CAAC;IAEF;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAgB,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAExE,SAAgB,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAS3E;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,SAAgB,QAAQ,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EACxC,QAAQ,EAAE,CAAC,EACX,YAAY,EAAE,CAAC,GACd,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAGjB,SAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,YAAY,EAAE,CAAC,GACd,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAyBpC;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAgB,MAAM,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,IAAI,EAC1D,QAAQ,EAAE,CAAC,EACX,WAAW,EAAE,EAAE,GACd,CAAC,GAAG,EAAE,CAAC;IAGV,SAAgB,MAAM,CAAC,CAAC,EAAE,EAAE,EAC1B,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,GACxB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAoBzD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAgB,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,EACpC,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,GAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC;IAGhB,SAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,EACvB,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GACtB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;IAqB3C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAgB,OAAO,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE,EACxC,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC,GAC5C,QAAQ,CAAC,EAAE,CAAC,CAAC;IAGhB,SAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC,GACpC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;IAoB3C;;;;;;;;;;;;;;OAcG;IACH,SAAgB,MAAM,CAAC,CAAC,SAAS,IAAI,EACnC,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,GACvC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAGvB,SAAgB,MAAM,CAAC,CAAC,EACtB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAC/B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;IAyB1C;;;;;;;;;;;;;OAaG;IACH,SAAgB,UAAU,CAAC,CAAC,SAAS,IAAI,EACvC,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,CAAC,CAAC,CAAC;IAGb,SAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAyB7E;;;;;;;;;;;;;;;;;;OAkBG;IACI,MAAM,GAAG,GAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAC5B,WAAW,QAAQ,CAAC,CAAC,CAAC,EACtB,WAAW,QAAQ,CAAC,CAAC,CAAC,KACrB,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAGjB,CAAC;IAEX;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,MAAM,YAAY,GAAI,CAAC,EAC5B,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KAC1B,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAyC,CAAC;IAEpE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,MAAM,UAAU,GAAI,CAAC,SAAS,IAAI,EACvC,UAAU,CAAC,KACV,MAAM,CAAC,CAAC,CAAC,GAAG,SAA8D,CAAC;CAC/E"}
|