ts-data-forge 14.6.2 → 14.6.4

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 (182) hide show
  1. package/dist/array/impl/array-utils-creation.mjs +103 -103
  2. package/dist/array/impl/array-utils-element-access.mjs +46 -46
  3. package/dist/array/impl/array-utils-iterators.mjs +54 -54
  4. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +49 -49
  5. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +40 -40
  6. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +42 -42
  7. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +46 -46
  8. package/dist/array/impl/array-utils-modification.mjs +5 -5
  9. package/dist/array/impl/array-utils-reducing-value.mjs +11 -11
  10. package/dist/array/impl/array-utils-search.mjs +6 -6
  11. package/dist/array/impl/array-utils-set-op.mjs +116 -116
  12. package/dist/array/impl/array-utils-size.mjs +6 -6
  13. package/dist/array/impl/array-utils-slice-clamped.mjs +1 -1
  14. package/dist/array/impl/array-utils-slicing.mjs +56 -56
  15. package/dist/array/impl/array-utils-transformation.mjs +158 -158
  16. package/dist/array/impl/array-utils-validation.mjs +36 -36
  17. package/dist/collections/imap-mapped.mjs +195 -195
  18. package/dist/collections/imap.mjs +143 -143
  19. package/dist/collections/iset-mapped.mjs +320 -320
  20. package/dist/collections/iset.mjs +207 -207
  21. package/dist/collections/queue.mjs +130 -130
  22. package/dist/collections/stack.mjs +125 -125
  23. package/dist/expect-type.mjs +68 -68
  24. package/dist/functional/async-result/impl/async-result-flat-map.mjs +3 -3
  25. package/dist/functional/async-result/impl/async-result-map-err.mjs +2 -2
  26. package/dist/functional/async-result/impl/async-result-map.mjs +2 -2
  27. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +31 -31
  28. package/dist/functional/optional/impl/optional-expect-to-be.mjs +1 -1
  29. package/dist/functional/optional/impl/optional-filter.mjs +1 -1
  30. package/dist/functional/optional/impl/optional-flat-map.mjs +1 -1
  31. package/dist/functional/optional/impl/optional-from-nullable.mjs +24 -24
  32. package/dist/functional/optional/impl/optional-is-none.mjs +19 -19
  33. package/dist/functional/optional/impl/optional-is-optional.mjs +18 -18
  34. package/dist/functional/optional/impl/optional-is-some.mjs +20 -20
  35. package/dist/functional/optional/impl/optional-map.mjs +2 -2
  36. package/dist/functional/optional/impl/optional-match.mjs +2 -2
  37. package/dist/functional/optional/impl/optional-none.mjs +16 -16
  38. package/dist/functional/optional/impl/optional-or-else.mjs +1 -1
  39. package/dist/functional/optional/impl/optional-some.mjs +19 -19
  40. package/dist/functional/optional/impl/optional-to-nullable.mjs +26 -26
  41. package/dist/functional/optional/impl/optional-unwrap-or.mjs +1 -1
  42. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +28 -28
  43. package/dist/functional/optional/impl/optional-unwrap.mjs +1 -1
  44. package/dist/functional/optional/impl/optional-zip.mjs +32 -32
  45. package/dist/functional/optional/impl/tag.mjs +1 -1
  46. package/dist/functional/pipe.mjs +19 -19
  47. package/dist/functional/result/impl/result-err.mjs +25 -25
  48. package/dist/functional/result/impl/result-expect-to-be.mjs +2 -2
  49. package/dist/functional/result/impl/result-flat-map.mjs +4 -4
  50. package/dist/functional/result/impl/result-fold.mjs +4 -4
  51. package/dist/functional/result/impl/result-from-optional.mjs +2 -2
  52. package/dist/functional/result/impl/result-from-promise.mjs +34 -34
  53. package/dist/functional/result/impl/result-from-throwable.mjs +29 -29
  54. package/dist/functional/result/impl/result-is-err.mjs +19 -19
  55. package/dist/functional/result/impl/result-is-ok.mjs +19 -19
  56. package/dist/functional/result/impl/result-is-result.mjs +19 -19
  57. package/dist/functional/result/impl/result-map-err.mjs +4 -4
  58. package/dist/functional/result/impl/result-map.mjs +4 -4
  59. package/dist/functional/result/impl/result-match.mjs +3 -3
  60. package/dist/functional/result/impl/result-ok.mjs +25 -25
  61. package/dist/functional/result/impl/result-or-else.mjs +2 -2
  62. package/dist/functional/result/impl/result-safe-try.mjs +15 -15
  63. package/dist/functional/result/impl/result-safe-unwrap.mjs +33 -33
  64. package/dist/functional/result/impl/result-swap.mjs +20 -20
  65. package/dist/functional/result/impl/result-to-optional.mjs +27 -27
  66. package/dist/functional/result/impl/result-unwrap-err-or.mjs +2 -2
  67. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +31 -31
  68. package/dist/functional/result/impl/result-unwrap-err.mjs +30 -30
  69. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +2 -2
  70. package/dist/functional/result/impl/result-unwrap-ok.mjs +1 -1
  71. package/dist/functional/result/impl/result-unwrap-throw.mjs +31 -31
  72. package/dist/functional/result/impl/result-zip.mjs +29 -29
  73. package/dist/functional/result/impl/tag.mjs +1 -1
  74. package/dist/functional/ternary-result/impl/tag.mjs +2 -2
  75. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +13 -13
  76. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +4 -4
  77. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +4 -4
  78. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +18 -18
  79. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +17 -17
  80. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +17 -17
  81. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +19 -19
  82. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +19 -19
  83. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +18 -18
  84. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +2 -2
  85. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +3 -3
  86. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +4 -4
  87. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +14 -14
  88. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +19 -19
  89. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +19 -19
  90. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +17 -17
  91. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +1 -1
  92. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +20 -20
  93. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +18 -18
  94. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +17 -17
  95. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +16 -16
  96. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +31 -31
  97. package/dist/functional/ternary-result/impl/variant-name.mjs +1 -1
  98. package/dist/guard/has-key.mjs +41 -41
  99. package/dist/guard/is-non-empty-string.mjs +37 -37
  100. package/dist/guard/is-non-null-object.mjs +34 -34
  101. package/dist/guard/is-primitive.mjs +31 -31
  102. package/dist/guard/is-record.mjs +86 -86
  103. package/dist/guard/is-type.mjs +387 -387
  104. package/dist/guard/key-is-in.mjs +40 -40
  105. package/dist/iterator/range.mjs +1 -1
  106. package/dist/json/json.mjs +289 -289
  107. package/dist/number/branded-types/finite-number.mjs +116 -116
  108. package/dist/number/branded-types/int.mjs +223 -223
  109. package/dist/number/branded-types/int16.mjs +116 -116
  110. package/dist/number/branded-types/int32.mjs +116 -116
  111. package/dist/number/branded-types/negative-finite-number.mjs +126 -126
  112. package/dist/number/branded-types/negative-int.mjs +104 -104
  113. package/dist/number/branded-types/negative-safe-int.mjs +104 -104
  114. package/dist/number/branded-types/non-negative-finite-number.mjs +132 -132
  115. package/dist/number/branded-types/non-negative-int16.mjs +113 -113
  116. package/dist/number/branded-types/non-negative-int32.mjs +113 -113
  117. package/dist/number/branded-types/non-positive-finite-number.mjs +116 -116
  118. package/dist/number/branded-types/non-positive-int.mjs +97 -97
  119. package/dist/number/branded-types/non-positive-safe-int.mjs +98 -98
  120. package/dist/number/branded-types/non-zero-finite-number.mjs +112 -112
  121. package/dist/number/branded-types/non-zero-int.mjs +82 -82
  122. package/dist/number/branded-types/non-zero-int16.mjs +95 -95
  123. package/dist/number/branded-types/non-zero-int32.mjs +95 -95
  124. package/dist/number/branded-types/non-zero-safe-int.mjs +99 -99
  125. package/dist/number/branded-types/non-zero-uint16.mjs +95 -95
  126. package/dist/number/branded-types/non-zero-uint32.mjs +95 -95
  127. package/dist/number/branded-types/positive-finite-number.mjs +134 -134
  128. package/dist/number/branded-types/positive-int.mjs +237 -237
  129. package/dist/number/branded-types/positive-int16.mjs +110 -110
  130. package/dist/number/branded-types/positive-int32.mjs +110 -110
  131. package/dist/number/branded-types/positive-safe-int.mjs +268 -268
  132. package/dist/number/branded-types/positive-uint16.mjs +110 -110
  133. package/dist/number/branded-types/positive-uint32.mjs +110 -110
  134. package/dist/number/branded-types/safe-int.mjs +259 -259
  135. package/dist/number/branded-types/safe-uint.mjs +111 -111
  136. package/dist/number/branded-types/uint.mjs +225 -225
  137. package/dist/number/branded-types/uint16.mjs +108 -108
  138. package/dist/number/branded-types/uint32.mjs +108 -108
  139. package/dist/number/enum/int8.mjs +118 -118
  140. package/dist/number/enum/uint8.mjs +109 -109
  141. package/dist/number/num-arithmetic-types.mjs +1 -1
  142. package/dist/number/num.mjs +478 -478
  143. package/dist/number/refined-number-utils.mjs +170 -170
  144. package/dist/object/object.mjs +234 -234
  145. package/dist/others/cast-mutable.mjs +33 -33
  146. package/dist/others/cast-readonly.mjs +32 -32
  147. package/dist/others/debounce-function.mjs +13 -13
  148. package/dist/others/fast-deep-equal.mjs +14 -14
  149. package/dist/others/if-then.mjs +29 -29
  150. package/dist/others/tuple.mjs +50 -50
  151. package/dist/others/unknown-to-string.mjs +38 -38
  152. package/dist/promise/promise.mjs +47 -47
  153. package/dist/string/str.mjs +177 -177
  154. package/dist/types.mjs +1 -1
  155. package/package.json +6 -6
  156. package/src/guard/is-type.test.mts +2 -2
  157. package/src/number/branded-types/finite-number.test.mts +1 -1
  158. package/src/number/branded-types/int.test.mts +1 -1
  159. package/src/number/branded-types/int16.test.mts +1 -1
  160. package/src/number/branded-types/int32.test.mts +1 -1
  161. package/src/number/branded-types/non-negative-finite-number.test.mts +1 -1
  162. package/src/number/branded-types/non-negative-int16.test.mts +1 -1
  163. package/src/number/branded-types/non-negative-int32.test.mts +1 -1
  164. package/src/number/branded-types/non-zero-finite-number.test.mts +1 -1
  165. package/src/number/branded-types/non-zero-int.test.mts +1 -1
  166. package/src/number/branded-types/non-zero-int16.test.mts +1 -1
  167. package/src/number/branded-types/non-zero-int32.test.mts +1 -1
  168. package/src/number/branded-types/non-zero-safe-int.test.mts +1 -1
  169. package/src/number/branded-types/non-zero-uint16.test.mts +1 -1
  170. package/src/number/branded-types/non-zero-uint32.test.mts +1 -1
  171. package/src/number/branded-types/positive-finite-number.test.mts +1 -1
  172. package/src/number/branded-types/positive-int.test.mts +1 -1
  173. package/src/number/branded-types/positive-int16.test.mts +1 -1
  174. package/src/number/branded-types/positive-int32.test.mts +1 -1
  175. package/src/number/branded-types/positive-safe-int.test.mts +1 -1
  176. package/src/number/branded-types/positive-uint16.test.mts +1 -1
  177. package/src/number/branded-types/positive-uint32.test.mts +1 -1
  178. package/src/number/branded-types/safe-int.test.mts +1 -1
  179. package/src/number/branded-types/safe-uint.test.mts +1 -1
  180. package/src/number/branded-types/uint.test.mts +1 -1
  181. package/src/number/branded-types/uint16.test.mts +1 -1
  182. package/src/number/branded-types/uint32.test.mts +1 -1
@@ -1,70 +1,70 @@
1
- /**
2
- * Compile-time type assertion utility for TypeScript type testing.
3
- *
4
- * This function performs static type relationship checking at compile-time and
5
- * has no runtime effect. It is primarily used in test files to verify that
6
- * TypeScript's type inference and type relationships work as expected. The
7
- * function will cause TypeScript compilation errors if the specified type
8
- * relationship does not hold.
9
- *
10
- * ## Supported Type Relations
11
- *
12
- * ### Equality Relations
13
- *
14
- * - **`"="` (strict equality)**: Asserts that types `A` and `B` are exactly the
15
- * same type. Uses TypeScript's internal type equality checking.
16
- * - **`"!="` (strict inequality)**: Asserts that types `A` and `B` are not
17
- * exactly the same type.
18
- *
19
- * ### Assignability Relations
20
- *
21
- * - **`"~="` (mutual assignability)**: Asserts that `A` extends `B` AND `B`
22
- * extends `A`. Types are structurally equivalent and mutually assignable.
23
- * - **`"<="` (subtype relation)**: Asserts that type `A` extends (is assignable
24
- * to) type `B`. Type `A` is a subtype of `B`.
25
- * - **`">="` (supertype relation)**: Asserts that type `B` extends (is assignable
26
- * to) type `A`. Type `A` is a supertype of `B`.
27
- *
28
- * ### Negative Assignability Relations
29
- *
30
- * - **`"!<="` (not subtype)**: Asserts that type `A` does NOT extend type `B`.
31
- * - **`"!>="` (not supertype)**: Asserts that type `B` does NOT extend type `A`.
32
- *
33
- * ## Type Parameter Constraints
34
- *
35
- * @since 1.0.0
36
- * @template A - The first type for comparison. Can be any TypeScript type
37
- * including:
38
- *
39
- * - Primitive types (string, number, boolean, etc.)
40
- * - Object types and interfaces
41
- * - Union and intersection types
42
- * - Generic types and type parameters
43
- * - Literal types and branded types
44
- * - Function types and return types
45
- *
46
- * @template B - The second type for comparison. Same constraints as type `A`.
47
- * @param _relation - A string literal representing the expected type
48
- * relationship. TypeScript's type system automatically infers and restricts
49
- * the available operators based on the actual relationship between types `A`
50
- * and `B`. If an invalid relationship is specified, TypeScript will show a
51
- * compilation error.
52
- *
53
- * Combine `expectType` with runtime assertions for comprehensive testing:
54
- *
55
- * ## Important Notes
56
- *
57
- * - **Compile-time only**: This function has no runtime behavior and will be
58
- * optimized away.
59
- * - **Type inference**: The available relation operators are automatically
60
- * inferred by TypeScript based on the actual type relationship between
61
- * `A` and `B`.
62
- * - **Error feedback**: Invalid type relationships will cause clear TypeScript
63
- * compilation errors.
64
- * - **Test organization**: Typically used in `.test.mts` files alongside runtime
65
- * assertions.
66
- * - **Performance**: Has zero runtime overhead as it's purely a compile-time
67
- * construct.
68
- */
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
69
  export const expectType = (_relation) => undefined;
70
70
  //# sourceMappingURL=expect-type.mjs.map
@@ -2,12 +2,12 @@ import { Result } from '../../result/index.mjs';
2
2
  export function flatMap(...args) {
3
3
  switch (args.length) {
4
4
  case 2: {
5
- // Direct version: first argument is asyncResult
5
+
6
6
  const [asyncResult, flatMapFn] = args;
7
7
  return flatMapImpl(asyncResult, flatMapFn);
8
8
  }
9
9
  case 1: {
10
- // Curried version
10
+
11
11
  const [flatMapFn] = args;
12
12
  return (asyncResult) => flatMapImpl(asyncResult, flatMapFn);
13
13
  }
@@ -17,7 +17,7 @@ const flatMapImpl = async (asyncResult, flatMapFn) => {
17
17
  const result = await asyncResult;
18
18
  return Result.isErr(result)
19
19
  ? result
20
- : // eslint-disable-next-line total-functions/no-unsafe-type-assertion
20
+ :
21
21
  (await flatMapFn(result.value));
22
22
  };
23
23
  //# sourceMappingURL=async-result-flat-map.mjs.map
@@ -2,12 +2,12 @@ import { Result } from '../../result/index.mjs';
2
2
  export function mapErr(...args) {
3
3
  switch (args.length) {
4
4
  case 2: {
5
- // Direct version: first argument is asyncResult
5
+
6
6
  const [asyncResult, mapFn] = args;
7
7
  return mapErrImpl(asyncResult, mapFn);
8
8
  }
9
9
  case 1: {
10
- // Curried version: first argument is mapping function
10
+
11
11
  const [mapFn] = args;
12
12
  return (asyncResult) => mapErrImpl(asyncResult, mapFn);
13
13
  }
@@ -2,12 +2,12 @@ import { Result } from '../../result/index.mjs';
2
2
  export function map(...args) {
3
3
  switch (args.length) {
4
4
  case 2: {
5
- // Direct version: first argument is asyncResult
5
+
6
6
  const [asyncResult, mapFn] = args;
7
7
  return mapImpl(asyncResult, mapFn);
8
8
  }
9
9
  case 1: {
10
- // Curried version
10
+
11
11
  const [mapFn] = args;
12
12
  return (asyncResult) => mapImpl(asyncResult, mapFn);
13
13
  }
@@ -1,35 +1,35 @@
1
1
  import { Result } from '../../result/index.mjs';
2
- /**
3
- * Unwraps an `AsyncResult`, resolving to the success value or a default value
4
- * if it resolves to `Err`.
5
- *
6
- * @example
7
- *
8
- * ```ts
9
- * const okValue = AsyncResult.fromPromise(
10
- * Promise.resolve(10),
11
- * () => 'failed',
12
- * );
13
- *
14
- * const errValue = AsyncResult.fromPromise(
15
- * Promise.reject(new Error('boom')),
16
- * () => 'failed',
17
- * );
18
- *
19
- * assert.isTrue((await AsyncResult.unwrapOr(okValue, 0)) === 10);
20
- *
21
- * assert.isTrue((await AsyncResult.unwrapOr(errValue, 0)) === 0);
22
- * ```
23
- *
24
- * @template S The type of the success value.
25
- * @template E The type of the error value.
26
- * @template D The type of the default value.
27
- * @param asyncResult The `AsyncResult` to unwrap.
28
- * @param defaultValue The value to resolve to if `asyncResult` resolves to
29
- * `Err`.
30
- * @returns A Promise of the success value if `Ok`, otherwise of
31
- * `defaultValue`.
32
- */
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
33
  export const unwrapOr = async (asyncResult, defaultValue) => {
34
34
  const result = await asyncResult;
35
35
  return Result.isOk(result) ? result.value : defaultValue;
@@ -7,7 +7,7 @@ export function expectToBe(...args) {
7
7
  return expectToBeImpl(optional, message);
8
8
  }
9
9
  case 1: {
10
- // Curried version: first argument is message
10
+
11
11
  const [message] = args;
12
12
  return (optional) => expectToBeImpl(optional, message);
13
13
  }
@@ -9,7 +9,7 @@ export function filter(...args) {
9
9
  return filterImpl(optional, predicate);
10
10
  }
11
11
  case 1: {
12
- // Curried version: first argument is predicate function
12
+
13
13
  const [predicate] = args;
14
14
  return (optional) => filterImpl(optional, predicate);
15
15
  }
@@ -8,7 +8,7 @@ export function flatMap(...args) {
8
8
  return flatMapImpl(optional, flatMapFn);
9
9
  }
10
10
  case 1: {
11
- // Curried version
11
+
12
12
  const [flatMapFn] = args;
13
13
  return (optional) => flatMapImpl(optional, flatMapFn);
14
14
  }
@@ -1,28 +1,28 @@
1
1
  import { none } from './optional-none.mjs';
2
2
  import { some } from './optional-some.mjs';
3
- /**
4
- * Converts a nullable value to an `Optional`.
5
- *
6
- * This is the primary way to lift nullable values (null or undefined) into
7
- * the Optional type system. The function treats both `null` and `undefined`
8
- * as empty values, converting them to `None`.
9
- *
10
- * @example
11
- *
12
- * ```ts
13
- * const present = Optional.fromNullable('hello');
14
- *
15
- * const absent = Optional.fromNullable<string | null>(null);
16
- *
17
- * assert.deepStrictEqual(present, Optional.some('hello'));
18
- *
19
- * assert.deepStrictEqual(absent, Optional.none);
20
- * ```
21
- *
22
- * @template T The type of the nullable value.
23
- * @param value The nullable value to convert.
24
- * @returns `Some<NonNullable<T>>` if the value is not null or
25
- * undefined, otherwise `None`.
26
- */
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
27
  export const fromNullable = (value) => (value == null ? none : some(value));
28
28
  //# sourceMappingURL=optional-from-nullable.mjs.map
@@ -1,22 +1,22 @@
1
1
  import { NoneTypeTagName } from './tag.mjs';
2
- /**
3
- * Checks if an {@link Optional} is {@link None}. Acts as a type guard.
4
- *
5
- * @example
6
- *
7
- * ```ts
8
- * const optionalValue = Optional.none as Optional<number>;
9
- *
10
- * if (Optional.isNone(optionalValue)) {
11
- * // Type narrowed to None
12
- * expectType<typeof optionalValue, None>('=');
13
- * }
14
- * ```
15
- *
16
- * @template O The {@link UnknownOptional} type to check.
17
- * @param optional The {@link Optional} to check.
18
- * @returns `true` if the {@link Optional} is {@link None}, `false`
19
- * otherwise.
20
- */
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
21
  export const isNone = (optional) => optional.$$tag === NoneTypeTagName;
22
22
  //# sourceMappingURL=optional-is-none.mjs.map
@@ -1,23 +1,23 @@
1
1
  import { hasKey, isRecord } from '../../../guard/index.mjs';
2
2
  import { NoneTypeTagName, SomeTypeTagName } from './tag.mjs';
3
- /**
4
- * Checks if the given value is an {@link Optional}.
5
- *
6
- * @example
7
- *
8
- * ```ts
9
- * const maybeOptional = Optional.some('value');
10
- *
11
- * const notOptional = { $$tag: 'ts-data-forge::Optional.some' } as const;
12
- *
13
- * assert.isTrue(Optional.isOptional(maybeOptional));
14
- *
15
- * assert.isFalse(Optional.isOptional(notOptional));
16
- * ```
17
- *
18
- * @param maybeOptional The value to check.
19
- * @returns `true` if the value is an {@link Optional}, otherwise `false`.
20
- */
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
21
  export const isOptional = (maybeOptional) => isRecord(maybeOptional) &&
22
22
  hasKey(maybeOptional, '$$tag') &&
23
23
  ((maybeOptional.$$tag === SomeTypeTagName &&
@@ -1,23 +1,23 @@
1
1
  import { SomeTypeTagName } from './tag.mjs';
2
- /**
3
- * Checks if an {@link Optional} is {@link Some}. Acts as a type guard.
4
- *
5
- * @example
6
- *
7
- * ```ts
8
- * const optionalNumber = Optional.some(42);
9
- *
10
- * if (Optional.isSome(optionalNumber)) {
11
- * const value: number = optionalNumber.value;
12
- *
13
- * assert.isTrue(value === 42);
14
- * }
15
- * ```
16
- *
17
- * @template O The {@link UnknownOptional} type to check.
18
- * @param optional The {@link Optional} to check.
19
- * @returns `true` if the {@link Optional} is {@link Some}, `false`
20
- * otherwise.
21
- */
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
22
  export const isSome = (optional) => optional.$$tag === SomeTypeTagName;
23
23
  //# sourceMappingURL=optional-is-some.mjs.map
@@ -9,14 +9,14 @@ export function map(...args) {
9
9
  return mapImpl(optional, mapFn);
10
10
  }
11
11
  case 1: {
12
- // Curried version: first argument is mapping function
12
+
13
13
  const [mapFn] = args;
14
14
  return (optional) => mapImpl(optional, mapFn);
15
15
  }
16
16
  }
17
17
  }
18
18
  const mapImpl = (optional, mapFn) => isSome(optional)
19
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
19
+ ?
20
20
  some(mapFn(unwrap(optional)))
21
21
  : none;
22
22
  //# sourceMappingURL=optional-map.mjs.map
@@ -7,14 +7,14 @@ export function match(...args) {
7
7
  return matchImpl(optional, cases);
8
8
  }
9
9
  case 1: {
10
- // Curried version: the only argument is the case handlers
10
+
11
11
  const [cases] = args;
12
12
  return (optional) => matchImpl(optional, cases);
13
13
  }
14
14
  }
15
15
  }
16
16
  const matchImpl = (optional, cases) => isSome(optional)
17
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
17
+ ?
18
18
  cases.some(unwrap(optional))
19
19
  : cases.none();
20
20
  //# sourceMappingURL=optional-match.mjs.map
@@ -1,19 +1,19 @@
1
1
  import { NoneTypeTagName } from './tag.mjs';
2
- /**
3
- * The singleton instance representing {@link None} (an empty
4
- * Optional).
5
- *
6
- * @example
7
- *
8
- * ```ts
9
- * const someValue = Optional.some({ id: 1 });
10
- *
11
- * const noneValue = Optional.none;
12
- *
13
- * assert.isTrue(Optional.isSome(someValue));
14
- *
15
- * assert.isTrue(Optional.isNone(noneValue));
16
- * ```
17
- */
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
18
  export const none = { $$tag: NoneTypeTagName };
19
19
  //# sourceMappingURL=optional-none.mjs.map
@@ -6,7 +6,7 @@ export function orElse(...args) {
6
6
  return orElseImpl(optional, alternative);
7
7
  }
8
8
  case 1: {
9
- // Curried version
9
+
10
10
  const [alternative] = args;
11
11
  return (optional) => orElseImpl(optional, alternative);
12
12
  }
@@ -1,23 +1,23 @@
1
1
  import { SomeTypeTagName } from './tag.mjs';
2
- /**
3
- * Creates an {@link Some} containing the given value.
4
- *
5
- * @example
6
- *
7
- * ```ts
8
- * const someValue = Optional.some({ id: 1 });
9
- *
10
- * const noneValue = Optional.none;
11
- *
12
- * assert.isTrue(Optional.isSome(someValue));
13
- *
14
- * assert.isTrue(Optional.isNone(noneValue));
15
- * ```
16
- *
17
- * @template S The type of the value.
18
- * @param value The value to wrap in an {@link Some}.
19
- * @returns An {@link Some}<S> containing the value.
20
- */
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
21
  export const some = (value) => ({
22
22
  $$tag: SomeTypeTagName,
23
23
  value,
@@ -1,30 +1,30 @@
1
1
  import { isSome } from './optional-is-some.mjs';
2
2
  import { unwrap } from './optional-unwrap.mjs';
3
- /**
4
- * Converts an `Optional` to a nullable value.
5
- *
6
- * This function extracts the value from an Optional, returning `undefined`
7
- * for empty Optionals. This is useful when interfacing with APIs or systems
8
- * that expect nullable values rather than Optional types.
9
- *
10
- * Note: This returns `undefined` (not `null`) for consistency with
11
- * JavaScript's undefined semantics and TypeScript's optional properties.
12
- *
13
- * @example
14
- *
15
- * ```ts
16
- * const someNumber = Optional.some(42);
17
- *
18
- * const noneNumber = Optional.none as Optional<number>;
19
- *
20
- * assert.isTrue(Optional.toNullable(someNumber) === 42);
21
- *
22
- * assert.isTrue(Optional.toNullable(noneNumber) === undefined);
23
- * ```
24
- *
25
- * @template O The `UnknownOptional` type to convert.
26
- * @param optional The `Optional` to convert.
27
- * @returns The contained value if `Some`, otherwise `undefined`.
28
- */
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
29
  export const toNullable = (optional) => (isSome(optional) ? unwrap(optional) : undefined);
30
30
  //# sourceMappingURL=optional-to-nullable.mjs.map
@@ -6,7 +6,7 @@ export function unwrapOr(...args) {
6
6
  return unwrapOrImpl(optional, defaultValue);
7
7
  }
8
8
  case 1: {
9
- // Curried version: first argument is default value
9
+
10
10
  const [defaultValue] = args;
11
11
  return (optional) => unwrapOrImpl(optional, defaultValue);
12
12
  }