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