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.
Files changed (68) hide show
  1. package/dist/array/array-utils.d.mts +137 -358
  2. package/dist/array/array-utils.d.mts.map +1 -1
  3. package/dist/array/array-utils.mjs +191 -1966
  4. package/dist/array/array-utils.mjs.map +1 -1
  5. package/dist/array/tuple-utils.d.mts +9 -23
  6. package/dist/array/tuple-utils.d.mts.map +1 -1
  7. package/dist/array/tuple-utils.mjs +10 -56
  8. package/dist/array/tuple-utils.mjs.map +1 -1
  9. package/dist/collections/imap-mapped.mjs.map +1 -1
  10. package/dist/collections/imap.mjs.map +1 -1
  11. package/dist/collections/iset-mapped.mjs.map +1 -1
  12. package/dist/collections/iset.mjs.map +1 -1
  13. package/dist/collections/queue.mjs.map +1 -1
  14. package/dist/collections/stack.mjs.map +1 -1
  15. package/dist/functional/match.d.mts +2 -33
  16. package/dist/functional/match.d.mts.map +1 -1
  17. package/dist/functional/match.mjs +2 -119
  18. package/dist/functional/match.mjs.map +1 -1
  19. package/dist/functional/optional.d.mts +34 -197
  20. package/dist/functional/optional.d.mts.map +1 -1
  21. package/dist/functional/optional.mjs +40 -312
  22. package/dist/functional/optional.mjs.map +1 -1
  23. package/dist/functional/pipe.d.mts +2 -15
  24. package/dist/functional/pipe.d.mts.map +1 -1
  25. package/dist/functional/pipe.mjs +2 -110
  26. package/dist/functional/pipe.mjs.map +1 -1
  27. package/dist/functional/result.d.mts +18 -209
  28. package/dist/functional/result.d.mts.map +1 -1
  29. package/dist/functional/result.mjs +40 -360
  30. package/dist/functional/result.mjs.map +1 -1
  31. package/dist/guard/has-key.d.mts +1 -1
  32. package/dist/guard/has-key.mjs +1 -1
  33. package/dist/iterator/range.d.mts +2 -6
  34. package/dist/iterator/range.d.mts.map +1 -1
  35. package/dist/iterator/range.mjs +2 -93
  36. package/dist/iterator/range.mjs.map +1 -1
  37. package/dist/json/json.d.mts +14 -438
  38. package/dist/json/json.d.mts.map +1 -1
  39. package/dist/json/json.mjs +14 -438
  40. package/dist/json/json.mjs.map +1 -1
  41. package/dist/number/num.d.mts +7 -107
  42. package/dist/number/num.d.mts.map +1 -1
  43. package/dist/number/num.mjs +7 -122
  44. package/dist/number/num.mjs.map +1 -1
  45. package/dist/number/refined-number-utils.mjs.map +1 -1
  46. package/dist/object/object.d.mts +4 -10
  47. package/dist/object/object.d.mts.map +1 -1
  48. package/dist/object/object.mjs +8 -140
  49. package/dist/object/object.mjs.map +1 -1
  50. package/dist/others/map-nullable.d.mts +2 -6
  51. package/dist/others/map-nullable.d.mts.map +1 -1
  52. package/dist/others/map-nullable.mjs +2 -146
  53. package/dist/others/map-nullable.mjs.map +1 -1
  54. package/dist/others/memoize-function.mjs.map +1 -1
  55. package/dist/others/unknown-to-string.mjs.map +1 -1
  56. package/package.json +11 -11
  57. package/src/array/array-utils.mts +707 -881
  58. package/src/array/tuple-utils.mts +20 -41
  59. package/src/functional/match.mts +18 -44
  60. package/src/functional/optional.mts +93 -248
  61. package/src/functional/pipe.mts +25 -20
  62. package/src/functional/result.mts +114 -288
  63. package/src/guard/has-key.mts +1 -1
  64. package/src/iterator/range.mts +14 -17
  65. package/src/json/json.mts +14 -438
  66. package/src/number/num.mts +20 -113
  67. package/src/object/object.mts +30 -45
  68. 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
- export const isOptional: (maybeOptional: unknown) => maybeOptional is Optional<unknown>;
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
- export type Some<S> = Some_<S>;
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
- export type None = None_;
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
- export type Base = Optional<unknown>;
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
- export type Unwrap<O extends Base> = O extends Some<infer S> ? S : never;
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
- export type NarrowToSome<O extends Base> = O extends None ? never : O;
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
- export type NarrowToNone<O extends Base> = O extends None ? O : never;
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
- export const some: <S>(value: S) => Some<S>;
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
- export const none: None;
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
- export const isSome: <O extends Base>(optional: O) => optional is NarrowToSome<O>;
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
- export const isNone: <O extends Base>(optional: O) => optional is NarrowToNone<O>;
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
- export const unwrapThrow: <O extends Base>(optional: O) => Unwrap<O>;
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); // Type: number, Value: 42
157
+ * const value = Optional.unwrap(some); // 42
172
158
  *
173
- * // With general Optional - may return undefined
174
- * const maybeValue: Optional<string> = getOptionalString();
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
- export const unwrap: UnwrapFnOverload;
186
- type UnwrapFnOverload = {
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 for functional composition
187
+ * // Curried usage
218
188
  * const unwrapWithDefault = Optional.unwrapOr("default");
219
- * const result = pipe(Optional.some("hello"))
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
- export const unwrapOr: UnwrapOrFnOverload;
233
- type UnwrapOrFnOverload = {
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
- export const orElse: OrElseFnOverload;
282
- type OrElseFnOverload = {
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
- export const map: MapFnOverload;
319
- type MapFnOverload = {
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
- export const flatMap: FlatMapFnOverload;
350
- type FlatMapFnOverload = {
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
- export const filter: FilterFnOverload;
376
- type FilterFnOverload = {
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
- export const expectToBe: ExpectToBeFnOverload;
401
- type ExpectToBeFnOverload = {
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
- export const zip: <A, const B>(optionalA: Optional<A>, optionalB: Optional<B>) => Optional<readonly [A, B]>;
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
- export const fromNullable: <T>(value: T | null | undefined) => Optional<NonNullable<T>>;
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
- export const toNullable: <O extends Base>(optional: O) => Unwrap<O> | undefined;
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":"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"}
1
+ {"version":3,"file":"optional.d.mts","sourceRoot":"","sources":["../../src/functional/optional.mts"],"names":[],"mappings":"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"}