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
@@ -7,244 +7,244 @@ const { MIN_VALUE, add, castType, div, fromNumber, is, max: max_, min: min_, mul
7
7
  MAX_VALUE: Number.MAX_VALUE,
8
8
  typeNameInMessage,
9
9
  });
10
- /**
11
- * Type guard that checks if a value is a non-negative integer.
12
- *
13
- * Returns `true` for a non-negative integer — a value with no fractional
14
- * component, including values outside the safe integer range (unlike
15
- * `SafeInt`).
16
- *
17
- * @example
18
- *
19
- * ```ts
20
- * assert.isTrue(isUint(4));
21
- *
22
- * assert.isFalse(isUint(-1));
23
- *
24
- * assert.isTrue(Uint.is(0));
25
- * ```
26
- *
27
- * @param value - The value to check
28
- * @returns `true` if the value is a non-negative integer, `false` otherwise
29
- */
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
30
  export const isUint = is;
31
- /**
32
- * Casts a `number` to the `Uint` branded type.
33
- *
34
- * Validates that the value is a non-negative integer and returns it with the
35
- * `Uint` brand. Throws a `TypeError` otherwise.
36
- *
37
- * @example
38
- *
39
- * ```ts
40
- * const branded = asUint(12);
41
- *
42
- * assert.isTrue(branded === 12);
43
- *
44
- * assert.isTrue(Uint.is(branded));
45
- * ```
46
- *
47
- * @param value - The value to cast
48
- * @returns The value as an `Uint`
49
- * @throws {TypeError} If the value is not a non-negative integer
50
- */
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
51
  export const asUint = castType;
52
- /**
53
- * Namespace providing type-safe operations for the `Uint` branded type.
54
- *
55
- * The `Uint` type represents a non-negative integer. Division (`div`) uses
56
- * floor division.
57
- *
58
- * Unlike `SafeInt`, `Uint` allows values outside the safe integer range (±2^53
59
- * − 1), so very large magnitudes may lose precision in JavaScript's `number`
60
- * type.
61
- */
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
62
  export const Uint = {
63
- /**
64
- * Type guard that checks if a value is a non-negative integer.
65
- *
66
- * @example
67
- *
68
- * ```ts
69
- * assert.isTrue(isUint(4));
70
- *
71
- * assert.isFalse(isUint(-1));
72
- *
73
- * assert.isTrue(Uint.is(0));
74
- * ```
75
- *
76
- * @param value - The value to check
77
- * @returns `true` if the value is a non-negative integer, `false` otherwise
78
- * @see {@link isUint} for usage examples
79
- */
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
80
  is,
81
- /**
82
- * The smallest value representable as `Uint` (the lower saturation target of
83
- * `fromNumber`).
84
- */
81
+
82
+
83
+
84
+
85
85
  MIN_VALUE,
86
- /**
87
- * Returns the smallest of the given non-negative integers.
88
- *
89
- * @example
90
- *
91
- * ```ts
92
- * const smallest = Uint.min(asUint(7), asUint(3));
93
- *
94
- * assert.isTrue(smallest === 3);
95
- * ```
96
- *
97
- * @param values - The non-negative integers to compare (at least one required)
98
- * @returns The smallest value as an `Uint`
99
- */
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
100
  min: min_,
101
- /**
102
- * Returns the largest of the given non-negative integers.
103
- *
104
- * @example
105
- *
106
- * ```ts
107
- * const largest = Uint.max(asUint(7), asUint(3));
108
- *
109
- * assert.isTrue(largest === 7);
110
- * ```
111
- *
112
- * @param values - The non-negative integers to compare (at least one required)
113
- * @returns The largest value as an `Uint`
114
- */
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
115
  max: max_,
116
- /**
117
- * Converts an arbitrary `number` into an `Uint`, rounding to the nearest
118
- * integer and saturating the result into the range `[MIN_VALUE, MAX_VALUE]`.
119
- *
120
- * Unlike `asUint`, this is total: out-of-range inputs are clamped to the
121
- * nearest representable `Uint` instead of throwing.
122
- *
123
- * @example
124
- *
125
- * ```ts
126
- * const fromNegative = Uint.fromNumber(-5);
127
- *
128
- * const fromPositive = Uint.fromNumber(42);
129
- *
130
- * assert.isTrue(fromNegative === 0);
131
- *
132
- * assert.isTrue(fromPositive === 42);
133
- * ```
134
- *
135
- * @param value - The value to convert
136
- * @returns The value as an `Uint`
137
- */
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
138
  fromNumber,
139
- /**
140
- * Generates a random `Uint` within the given range.
141
- *
142
- * The range is inclusive on both ends.
143
- *
144
- * @example
145
- *
146
- * ```ts
147
- * const min = asUint(0);
148
- *
149
- * const max = asUint(3);
150
- *
151
- * const randomValue = Uint.random(min, max);
152
- *
153
- * assert.isTrue(Uint.is(randomValue));
154
- *
155
- * assert.isTrue(randomValue >= 0 && randomValue <= 3);
156
- * ```
157
- *
158
- * @param min - The minimum value (inclusive)
159
- * @param max - The maximum value (inclusive)
160
- * @returns A random `Uint` in `[min, max]`
161
- */
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
162
  random,
163
- /**
164
- * Raises `a` to the power `b`, returning `a ** b` as an `Uint` (floored to an
165
- * integer).
166
- *
167
- * @example
168
- *
169
- * ```ts
170
- * const base = asUint(2);
171
- *
172
- * const exponent = asUint(5);
173
- *
174
- * const power = Uint.pow(base, exponent);
175
- *
176
- * assert.isTrue(power === 32);
177
- * ```
178
- *
179
- * @param a - The base non-negative integer
180
- * @param b - The exponent non-negative integer
181
- * @returns `a ** b` as an `Uint`
182
- */
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
183
  pow,
184
- /**
185
- * Adds two non-negative integers, returning `a + b` as an `Uint`.
186
- *
187
- * @example
188
- *
189
- * ```ts
190
- * const sum = Uint.add(asUint(5), asUint(8));
191
- *
192
- * assert.isTrue(sum === 13);
193
- * ```
194
- *
195
- * @param a - The first non-negative integer
196
- * @param b - The second non-negative integer
197
- * @returns The sum of `a` and `b` as an `Uint`
198
- */
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
199
  add,
200
- /**
201
- * Subtracts two non-negative integers, returning `a - b` as an `Uint`.
202
- *
203
- * @example
204
- *
205
- * ```ts
206
- * const difference = Uint.sub(asUint(5), asUint(8));
207
- *
208
- * assert.isTrue(difference === 0);
209
- * ```
210
- *
211
- * @param a - The first non-negative integer
212
- * @param b - The second non-negative integer
213
- * @returns The difference of `a` and `b` as an `Uint`
214
- */
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
215
  sub,
216
- /**
217
- * Multiplies two non-negative integers, returning `a * b` as an `Uint`.
218
- *
219
- * @example
220
- *
221
- * ```ts
222
- * const product = Uint.mul(asUint(7), asUint(6));
223
- *
224
- * assert.isTrue(product === 42);
225
- * ```
226
- *
227
- * @param a - The first non-negative integer
228
- * @param b - The second non-negative integer
229
- * @returns The product of `a` and `b` as an `Uint`
230
- */
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
231
  mul,
232
- /**
233
- * Divides two non-negative integers using floor division (`⌊a / b⌋`): the
234
- * result is `a / b` rounded toward negative infinity, as an `Uint`.
235
- *
236
- * @example
237
- *
238
- * ```ts
239
- * const quotient = Uint.div(asUint(10), asUint(4));
240
- *
241
- * assert.isTrue(quotient === 2);
242
- * ```
243
- *
244
- * @param a - The dividend
245
- * @param b - The divisor (must be non-zero)
246
- * @returns The floored quotient as an `Uint`
247
- */
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
248
  div,
249
249
  };
250
250