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
@@ -8,138 +8,138 @@ const { abs, castType, div, is, max: max_, min: min_, mul, pow, randomNonZero: r
8
8
  typeNameInMessage,
9
9
  });
10
10
  const floor = (x) =>
11
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
11
+
12
12
  Math.floor(x);
13
13
  const ceil = (x) =>
14
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
14
+
15
15
  Math.ceil(x);
16
16
  const round = (x) =>
17
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
17
+
18
18
  Math.round(x);
19
19
 
20
20
 
21
- /**
22
- * Type guard that checks if a value is a non-zero finite number.
23
- *
24
- * Returns `true` only for a finite value — never `NaN`, `Infinity`, or
25
- * `-Infinity`.
26
- *
27
- * @param value - The value to check
28
- * @returns `true` if the value is a non-zero finite number, `false` otherwise
29
- */
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
30
  export const isNonZeroFiniteNumber = is;
31
- /**
32
- * Casts a `number` to the `NonZeroFiniteNumber` branded type.
33
- *
34
- * Validates that the value is a non-zero finite number and returns it with the
35
- * `NonZeroFiniteNumber` brand. Throws a `TypeError` otherwise.
36
- *
37
- * @param value - The value to cast
38
- * @returns The value as a `NonZeroFiniteNumber`
39
- * @throws {TypeError} If the value is not a non-zero finite number
40
- */
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
41
  export const asNonZeroFiniteNumber = castType;
42
- /**
43
- * Namespace providing type-safe operations for the `NonZeroFiniteNumber`
44
- * branded type.
45
- *
46
- * The `NonZeroFiniteNumber` type represents a non-zero finite number.
47
- */
42
+
43
+
44
+
45
+
46
+
47
+
48
48
  export const NonZeroFiniteNumber = {
49
- /**
50
- * Type guard that checks if a value is a non-zero finite number.
51
- *
52
- * @param value - The value to check
53
- * @returns `true` if the value is a non-zero finite number, `false` otherwise
54
- * @see {@link isNonZeroFiniteNumber} for usage examples
55
- */
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
56
  is,
57
- /**
58
- * Returns the absolute value of a non-zero finite number.
59
- *
60
- * The result is non-negative and keeps the `NonZeroFiniteNumber` brand.
61
- *
62
- * @param a - The non-zero finite number value
63
- * @returns The absolute value as a non-negative `NonZeroFiniteNumber`
64
- */
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
65
  abs,
66
- /**
67
- * Returns the smallest of the given non-zero finite numbers.
68
- *
69
- * @param values - The non-zero finite numbers to compare (at least one required)
70
- * @returns The smallest value as a `NonZeroFiniteNumber`
71
- */
66
+
67
+
68
+
69
+
70
+
71
+
72
72
  min: min_,
73
- /**
74
- * Returns the largest of the given non-zero finite numbers.
75
- *
76
- * @param values - The non-zero finite numbers to compare (at least one required)
77
- * @returns The largest value as a `NonZeroFiniteNumber`
78
- */
73
+
74
+
75
+
76
+
77
+
78
+
79
79
  max: max_,
80
- /**
81
- * Returns the greatest integer less than or equal to a non-zero finite
82
- * number.
83
- *
84
- * @param a - The non-zero finite number value
85
- * @returns The floored value as an integer
86
- */
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
87
  floor,
88
- /**
89
- * Returns the smallest integer greater than or equal to a non-zero finite
90
- * number.
91
- *
92
- * @param a - The non-zero finite number value
93
- * @returns The ceiled value as an integer
94
- */
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
95
  ceil,
96
- /**
97
- * Returns the value of a non-zero finite number rounded to the nearest
98
- * integer.
99
- *
100
- * @param a - The non-zero finite number value
101
- * @returns The rounded value as an integer
102
- */
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
103
  round,
104
- /**
105
- * Generates a random `NonZeroFiniteNumber` within the given range.
106
- *
107
- * The range is inclusive on both ends.
108
- *
109
- * @param min - The minimum value (inclusive)
110
- * @param max - The maximum value (inclusive)
111
- * @returns A random `NonZeroFiniteNumber` in `[min, max]`
112
- */
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
113
  random,
114
- /**
115
- * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroFiniteNumber`.
116
- *
117
- * @param a - The base non-zero finite number
118
- * @param b - The exponent non-zero finite number
119
- * @returns `a ** b` as a `NonZeroFiniteNumber`
120
- */
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
121
  pow,
122
- /**
123
- * Multiplies two non-zero finite numbers, returning `a * b` as a
124
- * `NonZeroFiniteNumber`.
125
- *
126
- * @param a - The first non-zero finite number
127
- * @param b - The second non-zero finite number
128
- * @returns The product of `a` and `b` as a `NonZeroFiniteNumber`
129
- */
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
130
  mul,
131
- /**
132
- * Divides two non-zero finite numbers, returning `a / b` as a
133
- * `NonZeroFiniteNumber`.
134
- *
135
- * Exact (non-flooring) division of two non-zero finite numbers is always
136
- * non-zero, so this stays closed. For the non-closed operations (`add`/`sub`,
137
- * whose result may be `0`) use {@link Num.add}/{@link Num.sub}.
138
- *
139
- * @param a - The dividend
140
- * @param b - The divisor (must be non-zero)
141
- * @returns `a / b` as a `NonZeroFiniteNumber`
142
- */
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
143
  div,
144
144
  };
145
145
 
@@ -8,97 +8,97 @@ const { abs, castType, is, max: max_, min: min_, mul, pow, randomNonZero: random
8
8
  MAX_VALUE: Number.MAX_VALUE,
9
9
  typeNameInMessage,
10
10
  });
11
- /**
12
- * Type guard that checks if a value is a non-zero integer.
13
- *
14
- * Returns `true` for a non-zero integer — a value with no fractional component,
15
- * including values outside the safe integer range (unlike `SafeInt`).
16
- *
17
- * @param value - The value to check
18
- * @returns `true` if the value is a non-zero integer, `false` otherwise
19
- */
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
20
  export const isNonZeroInt = is;
21
- /**
22
- * Casts a `number` to the `NonZeroInt` branded type.
23
- *
24
- * Validates that the value is a non-zero integer and returns it with the
25
- * `NonZeroInt` brand. Throws a `TypeError` otherwise.
26
- *
27
- * @param value - The value to cast
28
- * @returns The value as a `NonZeroInt`
29
- * @throws {TypeError} If the value is not a non-zero integer
30
- */
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
31
  export const asNonZeroInt = castType;
32
- /**
33
- * Namespace providing type-safe operations for the `NonZeroInt` branded type.
34
- *
35
- * The `NonZeroInt` type represents a non-zero integer. Division (`div`) uses
36
- * floor division.
37
- *
38
- * Unlike `SafeInt`, `NonZeroInt` allows values outside the safe integer range
39
- * (±2^53 − 1), so very large magnitudes may lose precision in JavaScript's
40
- * `number` type.
41
- */
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
42
  export const NonZeroInt = {
43
- /**
44
- * Type guard that checks if a value is a non-zero integer.
45
- *
46
- * @param value - The value to check
47
- * @returns `true` if the value is a non-zero integer, `false` otherwise
48
- * @see {@link isNonZeroInt} for usage examples
49
- */
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
50
  is,
51
- /**
52
- * Returns the absolute value of a non-zero integer.
53
- *
54
- * The result is non-negative and keeps the `NonZeroInt` brand. Note that
55
- * `Math.abs(Number.MIN_SAFE_INTEGER)` exceeds `Number.MAX_SAFE_INTEGER`, so
56
- * use `SafeInt` for guaranteed precision.
57
- *
58
- * @param a - The non-zero integer value
59
- * @returns The absolute value as a non-negative `NonZeroInt`
60
- */
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
61
  abs,
62
- /**
63
- * Returns the smallest of the given non-zero integers.
64
- *
65
- * @param values - The non-zero integers to compare (at least one required)
66
- * @returns The smallest value as a `NonZeroInt`
67
- */
62
+
63
+
64
+
65
+
66
+
67
+
68
68
  min: min_,
69
- /**
70
- * Returns the largest of the given non-zero integers.
71
- *
72
- * @param values - The non-zero integers to compare (at least one required)
73
- * @returns The largest value as a `NonZeroInt`
74
- */
69
+
70
+
71
+
72
+
73
+
74
+
75
75
  max: max_,
76
- /**
77
- * Generates a random `NonZeroInt` within the given range.
78
- *
79
- * The range is inclusive on both ends.
80
- *
81
- * @param min - The minimum value (inclusive)
82
- * @param max - The maximum value (inclusive)
83
- * @returns A random `NonZeroInt` in `[min, max]`
84
- */
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
85
  random,
86
- /**
87
- * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt` (floored
88
- * to an integer).
89
- *
90
- * @param a - The base non-zero integer
91
- * @param b - The exponent non-zero integer
92
- * @returns `a ** b` as a `NonZeroInt`
93
- */
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
94
  pow,
95
- /**
96
- * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt`.
97
- *
98
- * @param a - The first non-zero integer
99
- * @param b - The second non-zero integer
100
- * @returns The product of `a` and `b` as a `NonZeroInt`
101
- */
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
102
  mul,
103
103
  };
104
104
 
@@ -8,113 +8,113 @@ const { MAX_VALUE, MIN_VALUE, abs, castType, fromNumber, is, max: max_, min: min
8
8
  MAX_VALUE: 2 ** 15 - 1,
9
9
  typeNameInMessage,
10
10
  });
11
- /**
12
- * Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).
13
- *
14
- * Returns `true` for a non-zero integer in [-2^15, 2^15) — a value with no
15
- * fractional component.
16
- *
17
- * @param value - The value to check
18
- * @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
19
- */
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
20
  export const isNonZeroInt16 = is;
21
- /**
22
- * Casts a `number` to the `NonZeroInt16` branded type.
23
- *
24
- * Validates that the value is a non-zero integer in [-2^15, 2^15) and returns
25
- * it with the `NonZeroInt16` brand. Throws a `TypeError` otherwise.
26
- *
27
- * @param value - The value to cast
28
- * @returns The value as a `NonZeroInt16`
29
- * @throws {TypeError} If the value is not a non-zero integer in [-2^15, 2^15)
30
- */
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
31
  export const asNonZeroInt16 = castType;
32
- /**
33
- * Namespace providing type-safe operations for the `NonZeroInt16` branded type.
34
- *
35
- * The `NonZeroInt16` type represents a non-zero integer in [-2^15, 2^15).
36
- * Division (`div`) uses floor division.
37
- */
32
+
33
+
34
+
35
+
36
+
37
+
38
38
  export const NonZeroInt16 = {
39
- /**
40
- * Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).
41
- *
42
- * @param value - The value to check
43
- * @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
44
- * @see {@link isNonZeroInt16} for usage examples
45
- */
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
46
  is,
47
- /**
48
- * The smallest value representable as `NonZeroInt16` (the lower saturation
49
- * target of `fromNumber`).
50
- */
47
+
48
+
49
+
50
+
51
51
  MIN_VALUE,
52
- /**
53
- * The largest value representable as `NonZeroInt16` (the upper saturation
54
- * target of `fromNumber`).
55
- */
52
+
53
+
54
+
55
+
56
56
  MAX_VALUE,
57
- /**
58
- * Returns the absolute value of a non-zero integer in [-2^15, 2^15).
59
- *
60
- * The result is non-negative and keeps the `NonZeroInt16` brand.
61
- *
62
- * @param a - The non-zero integer value
63
- * @returns The absolute value as a non-negative `NonZeroInt16`
64
- */
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
65
  abs,
66
- /**
67
- * Returns the smallest of the given non-zero integers.
68
- *
69
- * @param values - The non-zero integers to compare (at least one required)
70
- * @returns The smallest value as a `NonZeroInt16`
71
- */
66
+
67
+
68
+
69
+
70
+
71
+
72
72
  min: min_,
73
- /**
74
- * Returns the largest of the given non-zero integers.
75
- *
76
- * @param values - The non-zero integers to compare (at least one required)
77
- * @returns The largest value as a `NonZeroInt16`
78
- */
73
+
74
+
75
+
76
+
77
+
78
+
79
79
  max: max_,
80
- /**
81
- * Converts an arbitrary `number` into a `NonZeroInt16`, rounding to the
82
- * nearest integer and saturating the result into the range `[MIN_VALUE,
83
- * MAX_VALUE]`.
84
- *
85
- * Unlike `asNonZeroInt16`, this is total: out-of-range inputs are clamped to
86
- * the nearest representable `NonZeroInt16` instead of throwing.
87
- *
88
- * @param value - The value to convert
89
- * @returns The value as a `NonZeroInt16`
90
- */
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
91
  fromNumber,
92
- /**
93
- * Generates a random `NonZeroInt16` within the given range.
94
- *
95
- * The range is inclusive on both ends.
96
- *
97
- * @param min - The minimum value (inclusive)
98
- * @param max - The maximum value (inclusive)
99
- * @returns A random `NonZeroInt16` in `[min, max]`
100
- */
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
101
  random,
102
- /**
103
- * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt16`
104
- * (floored to an integer).
105
- *
106
- * @param a - The base non-zero integer
107
- * @param b - The exponent non-zero integer
108
- * @returns `a ** b` as a `NonZeroInt16`
109
- */
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
110
  pow,
111
- /**
112
- * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt16`.
113
- *
114
- * @param a - The first non-zero integer
115
- * @param b - The second non-zero integer
116
- * @returns The product of `a` and `b` as a `NonZeroInt16`
117
- */
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
118
  mul,
119
119
  };
120
120