ts-data-forge 14.6.2 → 14.6.3

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 +4 -4
  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 +156 -156
  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,404 +1,404 @@
1
- /**
2
- * Type guard that checks if a value is `undefined`.
3
- *
4
- * **Type Narrowing Behavior:**
5
- *
6
- * - Narrows the input type to `undefined` when `true`
7
- * - Useful for explicit undefined checks
8
- *
9
- * @example
10
- *
11
- * ```ts
12
- * const values: readonly (number | undefined)[] = [1, undefined, 2] as const;
13
- *
14
- * const undefinedValues = values.filter(isUndefined);
15
- *
16
- * assert.deepStrictEqual(undefinedValues, [undefined]);
17
- * ```
18
- *
19
- * @param u - The value to check
20
- * @returns `true` if `u` is `undefined`, `false` otherwise. When `true`,
21
- * TypeScript narrows the type to `undefined`.
22
- */
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
23
  export const isUndefined = (u) => u === undefined;
24
- /**
25
- * Type guard that checks if a value is not `undefined`.
26
- *
27
- * **Type Narrowing Behavior:**
28
- *
29
- * - Excludes `undefined` from the input type when `true`
30
- * - Preserves all other types in the union
31
- * - Commonly used to filter out undefined values
32
- *
33
- * @example
34
- *
35
- * ```ts
36
- * const values: readonly (number | undefined)[] = [1, undefined, 2] as const;
37
- *
38
- * const definedValues = values.filter(isNotUndefined);
39
- *
40
- * assert.deepStrictEqual(definedValues, [1, 2]);
41
- * ```
42
- *
43
- * @template T - The type of the input value
44
- * @param u - The value to check
45
- * @returns `true` if `u` is not `undefined`, `false` otherwise. When `true`,
46
- * TypeScript excludes `undefined` from the type.
47
- */
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
48
  export const isNotUndefined = (u) => u !== undefined;
49
- /**
50
- * Type guard that checks if a value is a boolean.
51
- *
52
- * **Type Narrowing Behavior:**
53
- *
54
- * - Narrows `unknown` to `boolean` when `true`
55
- * - Preserves literal boolean types (`true | false`)
56
- *
57
- * @example
58
- *
59
- * ```ts
60
- * const flags: readonly unknown[] = [true, 'no', false] as const;
61
- *
62
- * const booleans = flags.filter(isBoolean);
63
- *
64
- * assert.deepStrictEqual(booleans, [true, false]);
65
- * ```
66
- *
67
- * @param u - The value to check
68
- * @returns `true` if `u` is a boolean, `false` otherwise. When `true`,
69
- * TypeScript narrows the type to `boolean`.
70
- */
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
71
  export const isBoolean = (u) => typeof u === 'boolean';
72
- /**
73
- * Type guard that checks if a value is not a boolean.
74
- *
75
- * **Type Narrowing Behavior:**
76
- *
77
- * - Excludes `boolean` from the input type when `true`
78
- * - Preserves all other types in the union
79
- *
80
- * @example
81
- *
82
- * ```ts
83
- * const flags: readonly unknown[] = [true, 'no', false] as const;
84
- *
85
- * const nonBooleans = flags.filter(isNotBoolean);
86
- *
87
- * assert.deepStrictEqual(nonBooleans, ['no']);
88
- * ```
89
- *
90
- * @template T - The type of the input value
91
- * @param u - The value to check
92
- * @returns `true` if `u` is not a boolean, `false` otherwise. When `true`,
93
- * TypeScript excludes `boolean` from the type.
94
- */
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
95
  export const isNotBoolean = (u) => typeof u !== 'boolean';
96
- /**
97
- * Type guard that checks if a value is a number.
98
- *
99
- * **Type Narrowing Behavior:**
100
- *
101
- * - Narrows `unknown` to `number` when `true`
102
- * - Includes `NaN`, `Infinity`, and `-Infinity` as valid numbers
103
- * - Preserves literal number types when possible
104
- *
105
- * @example
106
- *
107
- * ```ts
108
- * const mixed: readonly unknown[] = [1, '2', 3] as const;
109
- *
110
- * const numbers = mixed.filter(isNumber);
111
- *
112
- * assert.deepStrictEqual(numbers, [1, 3]);
113
- * ```
114
- *
115
- * @param u - The value to check
116
- * @returns `true` if `u` is a number, `false` otherwise. When `true`,
117
- * TypeScript narrows the type to `number`.
118
- */
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
119
  export const isNumber = (u) => typeof u === 'number';
120
- /**
121
- * Type guard that checks if a value is not a number.
122
- *
123
- * **Type Narrowing Behavior:**
124
- *
125
- * - Excludes `number` from the input type when `true`
126
- * - Preserves all other types in the union
127
- *
128
- * @example
129
- *
130
- * ```ts
131
- * const mixed: readonly unknown[] = [1, '2', 3] as const;
132
- *
133
- * const nonNumbers = mixed.filter(isNotNumber);
134
- *
135
- * assert.deepStrictEqual(nonNumbers, ['2']);
136
- * ```
137
- *
138
- * @template T - The type of the input value
139
- * @param u - The value to check
140
- * @returns `true` if `u` is not a number, `false` otherwise. When `true`,
141
- * TypeScript excludes `number` from the type.
142
- */
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
143
  export const isNotNumber = (u) => typeof u !== 'number';
144
- /**
145
- * Type guard that checks if a value is a bigint.
146
- *
147
- * **Type Narrowing Behavior:**
148
- *
149
- * - Narrows `unknown` to `bigint` when `true`
150
- * - Identifies values created with `BigInt()` constructor or `n` suffix
151
- *
152
- * @example
153
- *
154
- * ```ts
155
- * const values: readonly unknown[] = [1n, 2, 3n] as const;
156
- *
157
- * const bigints = values.filter(isBigint);
158
- *
159
- * assert.deepStrictEqual(bigints, [1n, 3n]);
160
- * ```
161
- *
162
- * @param u - The value to check
163
- * @returns `true` if `u` is a bigint, `false` otherwise. When `true`,
164
- * TypeScript narrows the type to `bigint`.
165
- */
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
166
  export const isBigint = (u) => typeof u === 'bigint';
167
- /**
168
- * Type guard that checks if a value is not a bigint.
169
- *
170
- * **Type Narrowing Behavior:**
171
- *
172
- * - Excludes `bigint` from the input type when `true`
173
- * - Preserves all other types in the union
174
- *
175
- * @example
176
- *
177
- * ```ts
178
- * const values: readonly unknown[] = [1n, 2, 3n] as const;
179
- *
180
- * const nonBigints = values.filter(isNotBigint);
181
- *
182
- * assert.deepStrictEqual(nonBigints, [2]);
183
- * ```
184
- *
185
- * @template T - The type of the input value
186
- * @param u - The value to check
187
- * @returns `true` if `u` is not a bigint, `false` otherwise. When `true`,
188
- * TypeScript excludes `bigint` from the type.
189
- */
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
190
  export const isNotBigint = (u) => typeof u !== 'bigint';
191
- /**
192
- * Type guard that checks if a value is a string.
193
- *
194
- * **Type Narrowing Behavior:**
195
- *
196
- * - Narrows `unknown` to `string` when `true`
197
- * - Preserves literal string types when possible
198
- * - Includes empty strings
199
- *
200
- * @example
201
- *
202
- * ```ts
203
- * const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;
204
- *
205
- * const strings = values.filter(isString);
206
- *
207
- * assert.deepStrictEqual(strings, ['Ada', 'Lovelace']);
208
- * ```
209
- *
210
- * @param u - The value to check
211
- * @returns `true` if `u` is a string, `false` otherwise. When `true`,
212
- * TypeScript narrows the type to `string`.
213
- */
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
214
  export const isString = (u) => typeof u === 'string';
215
- /**
216
- * Type guard that checks if a value is not a string.
217
- *
218
- * **Type Narrowing Behavior:**
219
- *
220
- * - Excludes `string` from the input type when `true`
221
- * - Preserves all other types in the union
222
- *
223
- * @example
224
- *
225
- * ```ts
226
- * const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;
227
- *
228
- * const nonStrings = values.filter(isNotString);
229
- *
230
- * assert.deepStrictEqual(nonStrings, [42]);
231
- * ```
232
- *
233
- * @template T - The type of the input value
234
- * @param u - The value to check
235
- * @returns `true` if `u` is not a string, `false` otherwise. When `true`,
236
- * TypeScript excludes `string` from the type.
237
- */
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
238
  export const isNotString = (u) => typeof u !== 'string';
239
- /**
240
- * Type guard that checks if a value is a symbol.
241
- *
242
- * **Type Narrowing Behavior:**
243
- *
244
- * - Narrows `unknown` to `symbol` when `true`
245
- * - Identifies values created with `Symbol()` constructor
246
- *
247
- * @example
248
- *
249
- * ```ts
250
- * const id = Symbol('id');
251
- *
252
- * const shared = Symbol.for('shared');
253
- *
254
- * const tokens: readonly unknown[] = [id, 'shared', shared] as const;
255
- *
256
- * const symbols = tokens.filter(isSymbol);
257
- *
258
- * assert.deepStrictEqual(symbols, [id, shared]);
259
- * ```
260
- *
261
- * @param u - The value to check
262
- * @returns `true` if `u` is a symbol, `false` otherwise. When `true`,
263
- * TypeScript narrows the type to `symbol`.
264
- */
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
265
  export const isSymbol = (u) => typeof u === 'symbol';
266
- /**
267
- * Type guard that checks if a value is not a symbol.
268
- *
269
- * **Type Narrowing Behavior:**
270
- *
271
- * - Excludes `symbol` from the input type when `true`
272
- * - Preserves all other types in the union
273
- *
274
- * @example
275
- *
276
- * ```ts
277
- * const id = Symbol('id');
278
- *
279
- * const tokens: readonly unknown[] = [id, 'shared'] as const;
280
- *
281
- * const nonSymbols = tokens.filter(isNotSymbol);
282
- *
283
- * assert.deepStrictEqual(nonSymbols, ['shared']);
284
- * ```
285
- *
286
- * @template T - The type of the input value
287
- * @param u - The value to check
288
- * @returns `true` if `u` is not a symbol, `false` otherwise. When `true`,
289
- * TypeScript excludes `symbol` from the type.
290
- */
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
291
  export const isNotSymbol = (u) => typeof u !== 'symbol';
292
- /**
293
- * Type guard that checks if a value is `null`.
294
- *
295
- * **Type Narrowing Behavior:**
296
- *
297
- * - Narrows the input type to `null` when `true`
298
- * - Useful for explicit null checks
299
- *
300
- * @example
301
- *
302
- * ```ts
303
- * const values: readonly (number | null)[] = [null, 5] as const;
304
- *
305
- * const nullValues = values.filter(isNull);
306
- *
307
- * assert.deepStrictEqual(nullValues, [null]);
308
- * ```
309
- *
310
- * @param u - The value to check
311
- * @returns `true` if `u` is `null`, `false` otherwise. When `true`, TypeScript
312
- * narrows the type to `null`.
313
- */
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
314
  export const isNull = (u) => u === null;
315
- /**
316
- * Type guard that checks if a value is not `null`.
317
- *
318
- * **Type Narrowing Behavior:**
319
- *
320
- * - Excludes `null` from the input type when `true`
321
- * - Preserves all other types including `undefined`
322
- * - Commonly used to filter out null values
323
- *
324
- * @example
325
- *
326
- * ```ts
327
- * const values: readonly (number | null)[] = [null, 5] as const;
328
- *
329
- * const nonNullValues = values.filter(isNotNull);
330
- *
331
- * assert.deepStrictEqual(nonNullValues, [5]);
332
- * ```
333
- *
334
- * @template T - The type of the input value (which could be `null`)
335
- * @param u - The value to check
336
- * @returns `true` if `u` is not `null`, `false` otherwise. When `true`,
337
- * TypeScript excludes `null` from the type.
338
- */
315
+
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
339
  export const isNotNull = (u) => u !== null;
340
- /**
341
- * Type guard that checks if a value is `null` or `undefined` (nullish).
342
- *
343
- * This function uses the loose equality operator (`==`) to check for both
344
- * `null` and `undefined` in a single comparison, which is the standard
345
- * JavaScript idiom for nullish checks.
346
- *
347
- * **Type Narrowing Behavior:**
348
- *
349
- * - Narrows the input type to `null | undefined` when `true`
350
- * - Useful for checking if a value is "nullish" (either null or undefined)
351
- *
352
- * @example
353
- *
354
- * ```ts
355
- * const values: readonly (string | null | undefined)[] = [
356
- * 'Ada',
357
- * null,
358
- * undefined,
359
- * ] as const;
360
- *
361
- * const nullishValues = values.filter(isNullish);
362
- *
363
- * assert.deepStrictEqual(nullishValues, [null, undefined]);
364
- * ```
365
- *
366
- * @param u - The value to check
367
- * @returns `true` if `u` is `null` or `undefined`, `false` otherwise. When
368
- * `true`, TypeScript narrows the type to `null | undefined`.
369
- */
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
370
  export const isNullish = (u) => u == null;
371
- /**
372
- * Type guard that checks if a value is not `null` or `undefined` (non-nullish).
373
- *
374
- * This function uses the loose inequality operator (`!=`) to check that a value
375
- * is neither `null` nor `undefined` in a single comparison. This is equivalent
376
- * to TypeScript's `NonNullable<T>` utility type.
377
- *
378
- * **Type Narrowing Behavior:**
379
- *
380
- * - Excludes both `null` and `undefined` from the input type when `true`
381
- * - Equivalent to applying TypeScript's `NonNullable<T>` utility type
382
- * - Commonly used to filter out nullish values from arrays
383
- *
384
- * @example
385
- *
386
- * ```ts
387
- * const values: readonly (string | null | undefined)[] = [
388
- * 'Ada',
389
- * null,
390
- * undefined,
391
- * ] as const;
392
- *
393
- * const definedValues = values.filter(isNonNullish);
394
- *
395
- * assert.deepStrictEqual(definedValues, ['Ada']);
396
- * ```
397
- *
398
- * @template T - The type of the input value
399
- * @param u - The value to check
400
- * @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.
401
- * When `true`, TypeScript narrows the type to `NonNullable<T>`.
402
- */
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
403
  export const isNonNullish = (u) => u != null;
404
404
  //# sourceMappingURL=is-type.mjs.map