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