ts-data-forge 11.0.0 → 12.0.0

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 (185) hide show
  1. package/README.md +2 -2
  2. package/dist/number/branded-types/finite-number.d.mts +47 -61
  3. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  4. package/dist/number/branded-types/finite-number.mjs +37 -41
  5. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  6. package/dist/number/branded-types/int.d.mts +40 -46
  7. package/dist/number/branded-types/int.d.mts.map +1 -1
  8. package/dist/number/branded-types/int.mjs +29 -31
  9. package/dist/number/branded-types/int.mjs.map +1 -1
  10. package/dist/number/branded-types/int16.d.mts +71 -59
  11. package/dist/number/branded-types/int16.d.mts.map +1 -1
  12. package/dist/number/branded-types/int16.mjs +56 -47
  13. package/dist/number/branded-types/int16.mjs.map +1 -1
  14. package/dist/number/branded-types/int32.d.mts +71 -59
  15. package/dist/number/branded-types/int32.d.mts.map +1 -1
  16. package/dist/number/branded-types/int32.mjs +56 -47
  17. package/dist/number/branded-types/int32.mjs.map +1 -1
  18. package/dist/number/branded-types/negative-finite-number.d.mts +76 -60
  19. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  20. package/dist/number/branded-types/negative-finite-number.mjs +62 -49
  21. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  22. package/dist/number/branded-types/negative-int.d.mts +66 -49
  23. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  24. package/dist/number/branded-types/negative-int.mjs +48 -39
  25. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  26. package/dist/number/branded-types/negative-safe-int.d.mts +64 -57
  27. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  28. package/dist/number/branded-types/negative-safe-int.mjs +49 -44
  29. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  30. package/dist/number/branded-types/non-negative-finite-number.d.mts +80 -65
  31. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  32. package/dist/number/branded-types/non-negative-finite-number.mjs +65 -53
  33. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  34. package/dist/number/branded-types/non-negative-int16.d.mts +71 -58
  35. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  36. package/dist/number/branded-types/non-negative-int16.mjs +55 -45
  37. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  38. package/dist/number/branded-types/non-negative-int32.d.mts +71 -59
  39. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  40. package/dist/number/branded-types/non-negative-int32.mjs +55 -46
  41. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  42. package/dist/number/branded-types/non-positive-finite-number.d.mts +70 -55
  43. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  44. package/dist/number/branded-types/non-positive-finite-number.mjs +55 -43
  45. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  46. package/dist/number/branded-types/non-positive-int.d.mts +46 -146
  47. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
  48. package/dist/number/branded-types/non-positive-int.mjs +33 -108
  49. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  50. package/dist/number/branded-types/non-positive-safe-int.d.mts +62 -54
  51. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
  52. package/dist/number/branded-types/non-positive-safe-int.mjs +46 -41
  53. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  54. package/dist/number/branded-types/non-zero-finite-number.d.mts +62 -49
  55. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  56. package/dist/number/branded-types/non-zero-finite-number.mjs +46 -37
  57. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  58. package/dist/number/branded-types/non-zero-int.d.mts +51 -38
  59. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  60. package/dist/number/branded-types/non-zero-int.mjs +31 -27
  61. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  62. package/dist/number/branded-types/non-zero-int16.d.mts +59 -54
  63. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  64. package/dist/number/branded-types/non-zero-int16.mjs +44 -41
  65. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  66. package/dist/number/branded-types/non-zero-int32.d.mts +59 -55
  67. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  68. package/dist/number/branded-types/non-zero-int32.mjs +44 -42
  69. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  70. package/dist/number/branded-types/non-zero-safe-int.d.mts +60 -55
  71. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  72. package/dist/number/branded-types/non-zero-safe-int.mjs +44 -42
  73. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  74. package/dist/number/branded-types/non-zero-uint16.d.mts +59 -54
  75. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  76. package/dist/number/branded-types/non-zero-uint16.mjs +43 -41
  77. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  78. package/dist/number/branded-types/non-zero-uint32.d.mts +59 -54
  79. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  80. package/dist/number/branded-types/non-zero-uint32.mjs +43 -41
  81. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  82. package/dist/number/branded-types/positive-finite-number.d.mts +82 -64
  83. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  84. package/dist/number/branded-types/positive-finite-number.mjs +67 -52
  85. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  86. package/dist/number/branded-types/positive-int.d.mts +53 -70
  87. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  88. package/dist/number/branded-types/positive-int.mjs +42 -52
  89. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  90. package/dist/number/branded-types/positive-int16.d.mts +68 -58
  91. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  92. package/dist/number/branded-types/positive-int16.mjs +52 -45
  93. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  94. package/dist/number/branded-types/positive-int32.d.mts +68 -58
  95. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  96. package/dist/number/branded-types/positive-int32.mjs +52 -45
  97. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  98. package/dist/number/branded-types/positive-safe-int.d.mts +72 -61
  99. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  100. package/dist/number/branded-types/positive-safe-int.mjs +56 -48
  101. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  102. package/dist/number/branded-types/positive-uint16.d.mts +68 -58
  103. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  104. package/dist/number/branded-types/positive-uint16.mjs +52 -45
  105. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  106. package/dist/number/branded-types/positive-uint32.d.mts +68 -59
  107. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  108. package/dist/number/branded-types/positive-uint32.mjs +52 -46
  109. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  110. package/dist/number/branded-types/safe-int.d.mts +52 -66
  111. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  112. package/dist/number/branded-types/safe-int.mjs +45 -47
  113. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  114. package/dist/number/branded-types/safe-uint.d.mts +68 -58
  115. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  116. package/dist/number/branded-types/safe-uint.mjs +53 -46
  117. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  118. package/dist/number/branded-types/uint.d.mts +72 -55
  119. package/dist/number/branded-types/uint.d.mts.map +1 -1
  120. package/dist/number/branded-types/uint.mjs +52 -45
  121. package/dist/number/branded-types/uint.mjs.map +1 -1
  122. package/dist/number/branded-types/uint16.d.mts +66 -59
  123. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  124. package/dist/number/branded-types/uint16.mjs +51 -45
  125. package/dist/number/branded-types/uint16.mjs.map +1 -1
  126. package/dist/number/branded-types/uint32.d.mts +66 -57
  127. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  128. package/dist/number/branded-types/uint32.mjs +50 -45
  129. package/dist/number/branded-types/uint32.mjs.map +1 -1
  130. package/dist/number/enum/int8.d.mts +62 -66
  131. package/dist/number/enum/int8.d.mts.map +1 -1
  132. package/dist/number/enum/int8.mjs +57 -51
  133. package/dist/number/enum/int8.mjs.map +1 -1
  134. package/dist/number/enum/uint8.d.mts +66 -59
  135. package/dist/number/enum/uint8.d.mts.map +1 -1
  136. package/dist/number/enum/uint8.mjs +57 -51
  137. package/dist/number/enum/uint8.mjs.map +1 -1
  138. package/dist/number/refined-number-utils.d.mts +9 -9
  139. package/dist/number/refined-number-utils.d.mts.map +1 -1
  140. package/dist/number/refined-number-utils.mjs +7 -7
  141. package/dist/number/refined-number-utils.mjs.map +1 -1
  142. package/package.json +2 -1
  143. package/src/number/branded-types/finite-number.mts +47 -61
  144. package/src/number/branded-types/int.mts +40 -46
  145. package/src/number/branded-types/int16.mts +72 -60
  146. package/src/number/branded-types/int32.mts +72 -60
  147. package/src/number/branded-types/negative-finite-number.mts +78 -71
  148. package/src/number/branded-types/negative-finite-number.test.mts +4 -4
  149. package/src/number/branded-types/negative-int.mts +68 -60
  150. package/src/number/branded-types/negative-int.test.mts +5 -5
  151. package/src/number/branded-types/negative-safe-int.mts +66 -68
  152. package/src/number/branded-types/negative-safe-int.test.mts +4 -4
  153. package/src/number/branded-types/non-negative-finite-number.mts +81 -66
  154. package/src/number/branded-types/non-negative-int16.mts +72 -59
  155. package/src/number/branded-types/non-negative-int32.mts +72 -60
  156. package/src/number/branded-types/non-positive-finite-number.mts +71 -56
  157. package/src/number/branded-types/non-positive-finite-number.test.mts +7 -7
  158. package/src/number/branded-types/non-positive-int.mts +47 -147
  159. package/src/number/branded-types/non-positive-int.test.mts +7 -7
  160. package/src/number/branded-types/non-positive-safe-int.mts +63 -55
  161. package/src/number/branded-types/non-positive-safe-int.test.mts +7 -7
  162. package/src/number/branded-types/non-zero-finite-number.mts +62 -51
  163. package/src/number/branded-types/non-zero-int.mts +51 -38
  164. package/src/number/branded-types/non-zero-int16.mts +60 -55
  165. package/src/number/branded-types/non-zero-int32.mts +60 -56
  166. package/src/number/branded-types/non-zero-safe-int.mts +61 -56
  167. package/src/number/branded-types/non-zero-uint16.mts +60 -55
  168. package/src/number/branded-types/non-zero-uint32.mts +60 -55
  169. package/src/number/branded-types/positive-finite-number.mts +83 -65
  170. package/src/number/branded-types/positive-int.mts +54 -71
  171. package/src/number/branded-types/positive-int16.mts +69 -59
  172. package/src/number/branded-types/positive-int32.mts +69 -59
  173. package/src/number/branded-types/positive-safe-int.mts +73 -62
  174. package/src/number/branded-types/positive-uint16.mts +69 -59
  175. package/src/number/branded-types/positive-uint32.mts +69 -60
  176. package/src/number/branded-types/safe-int.mts +53 -67
  177. package/src/number/branded-types/safe-uint.mts +69 -59
  178. package/src/number/branded-types/uint.mts +73 -56
  179. package/src/number/branded-types/uint16.mts +67 -60
  180. package/src/number/branded-types/uint32.mts +67 -58
  181. package/src/number/enum/int8.mts +70 -73
  182. package/src/number/enum/int8.test.mts +7 -4
  183. package/src/number/enum/uint8.mts +74 -66
  184. package/src/number/enum/uint8.test.mts +7 -4
  185. package/src/number/refined-number-utils.mts +22 -19
@@ -6,7 +6,7 @@ const {
6
6
  MIN_VALUE,
7
7
  abs,
8
8
  castType,
9
- clamp,
9
+ fromNumber,
10
10
  is,
11
11
  max: max_,
12
12
  min: min_,
@@ -24,80 +24,83 @@ const isNonZeroInt16 = is;
24
24
  const asNonZeroInt16 = castType;
25
25
  const NonZeroInt16 = {
26
26
  /**
27
- * Type guard to check if a value is a NonZeroInt16.
27
+ * Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).
28
28
  *
29
- * @param value The value to check.
30
- * @returns `true` if the value is a 16-bit non-zero signed integer, `false`
31
- * otherwise.
29
+ * @param value - The value to check
30
+ * @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
31
+ * @see {@link isNonZeroInt16} for usage examples
32
32
  */
33
33
  is,
34
34
  /**
35
- * The minimum value for a 16-bit non-zero signed integer.
36
- *
37
- * @readonly
35
+ * The smallest value representable as `NonZeroInt16` (the lower saturation
36
+ * target of `fromNumber`).
38
37
  */
39
38
  MIN_VALUE,
40
39
  /**
41
- * The maximum value for a 16-bit non-zero signed integer.
42
- *
43
- * @readonly
40
+ * The largest value representable as `NonZeroInt16` (the upper saturation
41
+ * target of `fromNumber`).
44
42
  */
45
43
  MAX_VALUE,
46
44
  /**
47
- * Returns the absolute value of a 16-bit non-zero signed integer.
45
+ * Returns the absolute value of a non-zero integer in [-2^15, 2^15).
46
+ *
47
+ * The result is non-negative and keeps the `NonZeroInt16` brand.
48
48
  *
49
- * @param a The NonZeroInt16 value.
50
- * @returns The absolute value as a NonZeroInt16, clamped to valid range.
49
+ * @param a - The non-zero integer value
50
+ * @returns The absolute value as a non-negative `NonZeroInt16`
51
51
  */
52
52
  abs,
53
53
  /**
54
- * Returns the smaller of two NonZeroInt16 values.
54
+ * Returns the smallest of the given non-zero integers.
55
55
  *
56
- * @param a The first NonZeroInt16.
57
- * @param b The second NonZeroInt16.
58
- * @returns The minimum value as a NonZeroInt16.
56
+ * @param values - The non-zero integers to compare (at least one required)
57
+ * @returns The smallest value as a `NonZeroInt16`
59
58
  */
60
59
  min: min_,
61
60
  /**
62
- * Returns the larger of two NonZeroInt16 values.
61
+ * Returns the largest of the given non-zero integers.
63
62
  *
64
- * @param a The first NonZeroInt16.
65
- * @param b The second NonZeroInt16.
66
- * @returns The maximum value as a NonZeroInt16.
63
+ * @param values - The non-zero integers to compare (at least one required)
64
+ * @returns The largest value as a `NonZeroInt16`
67
65
  */
68
66
  max: max_,
69
67
  /**
70
- * Clamps a number to the NonZeroInt16 range (avoiding zero).
68
+ * Converts an arbitrary `number` into a `NonZeroInt16`, rounding to the
69
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
70
+ * MAX_VALUE]`.
71
71
  *
72
- * @param value The number to clamp.
73
- * @returns The value clamped to [-32768, 32767] \ {0} as a NonZeroInt16.
72
+ * Unlike `asNonZeroInt16`, this is total: out-of-range inputs are clamped to
73
+ * the nearest representable `NonZeroInt16` instead of throwing.
74
+ *
75
+ * @param value - The value to convert
76
+ * @returns The value as a `NonZeroInt16`
74
77
  */
75
- clamp,
78
+ fromNumber,
76
79
  /**
77
- * Generates a random NonZeroInt16 value within the valid range.
80
+ * Generates a random `NonZeroInt16` within the given range.
81
+ *
82
+ * The range is inclusive on both ends.
78
83
  *
79
- * @returns A random NonZeroInt16 between MIN_VALUE and MAX_VALUE (excluding
80
- * 0).
84
+ * @param min - The minimum value (inclusive)
85
+ * @param max - The maximum value (inclusive)
86
+ * @returns A random `NonZeroInt16` in `[min, max]`
81
87
  */
82
88
  random,
83
89
  /**
84
- * Raises a NonZeroInt16 to the power of another NonZeroInt16.
90
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt16`
91
+ * (floored to an integer).
85
92
  *
86
- * @param a The base NonZeroInt16.
87
- * @param b The exponent NonZeroInt16.
88
- * @returns `a ** b` clamped to [-32768, 32767] as a NonZeroInt16.
93
+ * @param a - The base non-zero integer
94
+ * @param b - The exponent non-zero integer
95
+ * @returns `a ** b` as a `NonZeroInt16`
89
96
  */
90
97
  pow,
91
98
  /**
92
- * Multiplies two NonZeroInt16 values.
93
- *
94
- * The product of two non-zero integers is always non-zero, so this stays
95
- * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
96
- * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
99
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt16`.
97
100
  *
98
- * @param a The first NonZeroInt16.
99
- * @param b The second NonZeroInt16.
100
- * @returns `a * b` clamped to [-32768, 32767] as a NonZeroInt16.
101
+ * @param a - The first non-zero integer
102
+ * @param b - The second non-zero integer
103
+ * @returns The product of `a` and `b` as a `NonZeroInt16`
101
104
  */
102
105
  mul
103
106
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-int16.mjs","sources":["../../../src/number/branded-types/non-zero-int16.mts"],"sourcesContent":["import { type NonZeroInt16 as TtfImported_NonZeroInt16 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroInt16 = TtfImported_NonZeroInt16;\n\ntype ElementType = NonZeroInt16;\n\nconst typeNameInMessage = 'a non-zero integer in [-2^15, 2^15)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n castType,\n clamp,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: -(2 ** 15),\n MAX_VALUE: 2 ** 15 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a NonZeroInt16 (16-bit non-zero signed integer in the\n * range [-2^15, 2^15) excluding 0).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonZeroInt16, `false` otherwise.\n */\nexport const isNonZeroInt16 = is;\n\n/**\n * Casts a number to a NonZeroInt16 type.\n *\n * @param value The value to cast.\n * @returns The value as a NonZeroInt16 type.\n * @throws {TypeError} If the value is not a non-zero integer in [-2^15, 2^15).\n */\nexport const asNonZeroInt16 = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for 16-bit non-zero\n * signed integers.\n *\n * All operations automatically clamp results to the valid NonZeroInt16 range\n * [-32768, 32767] excluding 0. This ensures that all arithmetic maintains the\n * 16-bit non-zero signed integer constraint, preventing zero results and\n * overflow.\n */\nexport const NonZeroInt16 = {\n /**\n * Type guard to check if a value is a NonZeroInt16.\n *\n * @param value The value to check.\n * @returns `true` if the value is a 16-bit non-zero signed integer, `false`\n * otherwise.\n */\n is,\n\n /**\n * The minimum value for a 16-bit non-zero signed integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum value for a 16-bit non-zero signed integer.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a 16-bit non-zero signed integer.\n *\n * @param a The NonZeroInt16 value.\n * @returns The absolute value as a NonZeroInt16, clamped to valid range.\n */\n abs,\n\n /**\n * Returns the smaller of two NonZeroInt16 values.\n *\n * @param a The first NonZeroInt16.\n * @param b The second NonZeroInt16.\n * @returns The minimum value as a NonZeroInt16.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonZeroInt16 values.\n *\n * @param a The first NonZeroInt16.\n * @param b The second NonZeroInt16.\n * @returns The maximum value as a NonZeroInt16.\n */\n max: max_,\n\n /**\n * Clamps a number to the NonZeroInt16 range (avoiding zero).\n *\n * @param value The number to clamp.\n * @returns The value clamped to [-32768, 32767] \\ {0} as a NonZeroInt16.\n */\n clamp,\n\n /**\n * Generates a random NonZeroInt16 value within the valid range.\n *\n * @returns A random NonZeroInt16 between MIN_VALUE and MAX_VALUE (excluding\n * 0).\n */\n random,\n\n /**\n * Raises a NonZeroInt16 to the power of another NonZeroInt16.\n *\n * @param a The base NonZeroInt16.\n * @param b The exponent NonZeroInt16.\n * @returns `a ** b` clamped to [-32768, 32767] as a NonZeroInt16.\n */\n pow,\n\n /**\n * Multiplies two NonZeroInt16 values.\n *\n * The product of two non-zero integers is always non-zero, so this stays\n * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may\n * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.\n *\n * @param a The first NonZeroInt16.\n * @param b The second NonZeroInt16.\n * @returns `a * b` clamped to [-32768, 32767] as a NonZeroInt16.\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroInt16,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroInt16,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,qCAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,MAAO;AAAA,EAClB,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AASH,MAAM,cAAA,GAAiB;AASvB,MAAM,cAAA,GAAiB;AAWvB,MAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA;AACF;;;;"}
1
+ {"version":3,"file":"non-zero-int16.mjs","sources":["../../../src/number/branded-types/non-zero-int16.mts"],"sourcesContent":["import { type NonZeroInt16 as TtfImported_NonZeroInt16 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroInt16 = TtfImported_NonZeroInt16;\n\ntype ElementType = NonZeroInt16;\n\nconst typeNameInMessage = 'a non-zero integer in [-2^15, 2^15)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n castType,\n fromNumber,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: -(2 ** 15),\n MAX_VALUE: 2 ** 15 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).\n *\n * Returns `true` for a non-zero integer in [-2^15, 2^15) — a value with no\n * fractional component.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise\n */\nexport const isNonZeroInt16 = is;\n\n/**\n * Casts a `number` to the `NonZeroInt16` branded type.\n *\n * Validates that the value is a non-zero integer in [-2^15, 2^15) and returns\n * it with the `NonZeroInt16` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroInt16`\n * @throws {TypeError} If the value is not a non-zero integer in [-2^15, 2^15)\n */\nexport const asNonZeroInt16 = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroInt16` branded type.\n *\n * The `NonZeroInt16` type represents a non-zero integer in [-2^15, 2^15).\n * Division (`div`) uses floor division.\n */\nexport const NonZeroInt16 = {\n /**\n * Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise\n * @see {@link isNonZeroInt16} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `NonZeroInt16` (the lower saturation\n * target of `fromNumber`).\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `NonZeroInt16` (the upper saturation\n * target of `fromNumber`).\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a non-zero integer in [-2^15, 2^15).\n *\n * The result is non-negative and keeps the `NonZeroInt16` brand.\n *\n * @param a - The non-zero integer value\n * @returns The absolute value as a non-negative `NonZeroInt16`\n */\n abs,\n\n /**\n * Returns the smallest of the given non-zero integers.\n *\n * @param values - The non-zero integers to compare (at least one required)\n * @returns The smallest value as a `NonZeroInt16`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-zero integers.\n *\n * @param values - The non-zero integers to compare (at least one required)\n * @returns The largest value as a `NonZeroInt16`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `NonZeroInt16`, rounding to the\n * nearest integer and saturating the result into the range `[MIN_VALUE,\n * MAX_VALUE]`.\n *\n * Unlike `asNonZeroInt16`, this is total: out-of-range inputs are clamped to\n * the nearest representable `NonZeroInt16` instead of throwing.\n *\n * @param value - The value to convert\n * @returns The value as a `NonZeroInt16`\n */\n fromNumber,\n\n /**\n * Generates a random `NonZeroInt16` within the given range.\n *\n * The range is inclusive on both ends.\n *\n * @param min - The minimum value (inclusive)\n * @param max - The maximum value (inclusive)\n * @returns A random `NonZeroInt16` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt16`\n * (floored to an integer).\n *\n * @param a - The base non-zero integer\n * @param b - The exponent non-zero integer\n * @returns `a ** b` as a `NonZeroInt16`\n */\n pow,\n\n /**\n * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt16`.\n *\n * @param a - The first non-zero integer\n * @param b - The second non-zero integer\n * @returns The product of `a` and `b` as a `NonZeroInt16`\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroInt16,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroInt16,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,qCAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,MAAO;AAAA,EAClB,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AAWH,MAAM,cAAA,GAAiB;AAYvB,MAAM,cAAA,GAAiB;AAQvB,MAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaL,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}
@@ -1,19 +1,24 @@
1
1
  import { type NonZeroInt32 as TtfImported_NonZeroInt32 } from 'ts-type-forge';
2
2
  export type NonZeroInt32 = TtfImported_NonZeroInt32;
3
3
  /**
4
- * Checks if a number is a NonZeroInt32 (32-bit non-zero signed integer in the
5
- * range [-2^31, 2^31) excluding 0).
4
+ * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).
6
5
  *
7
- * @param value The value to check.
8
- * @returns `true` if the value is a NonZeroInt32, `false` otherwise.
6
+ * Returns `true` for a non-zero integer in [-2^31, 2^31) — a value with no
7
+ * fractional component.
8
+ *
9
+ * @param value - The value to check
10
+ * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise
9
11
  */
10
12
  export declare const isNonZeroInt32: (a: number) => a is TtfImported_NonZeroInt32;
11
13
  /**
12
- * Casts a number to a NonZeroInt32 type.
14
+ * Casts a `number` to the `NonZeroInt32` branded type.
15
+ *
16
+ * Validates that the value is a non-zero integer in [-2^31, 2^31) and returns
17
+ * it with the `NonZeroInt32` brand. Throws a `TypeError` otherwise.
13
18
  *
14
- * @param value The value to cast.
15
- * @returns The value as a NonZeroInt32 type.
16
- * @throws {TypeError} If the value is not a non-zero integer in [-2^31, 2^31).
19
+ * @param value - The value to cast
20
+ * @returns The value as a `NonZeroInt32`
21
+ * @throws {TypeError} If the value is not a non-zero integer in [-2^31, 2^31)
17
22
  */
18
23
  export declare const asNonZeroInt32: <N extends number>(x: N) => number & {
19
24
  readonly "!=0": true;
@@ -29,91 +34,90 @@ export declare const asNonZeroInt32: <N extends number>(x: N) => number & {
29
34
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
30
35
  }> & N;
31
36
  /**
32
- * Namespace providing type-safe arithmetic operations for 32-bit non-zero
33
- * signed integers.
37
+ * Namespace providing type-safe operations for the `NonZeroInt32` branded type.
34
38
  *
35
- * All operations automatically clamp results to the valid NonZeroInt32 range
36
- * [-2147483648, 2147483647] excluding 0. This ensures that all arithmetic
37
- * maintains the 32-bit non-zero signed integer constraint, preventing zero
38
- * results and overflow.
39
+ * The `NonZeroInt32` type represents a non-zero integer in [-2^31, 2^31).
40
+ * Division (`div`) uses floor division.
39
41
  */
40
42
  export declare const NonZeroInt32: {
41
43
  /**
42
- * Type guard to check if a value is a NonZeroInt32.
44
+ * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).
43
45
  *
44
- * @param value The value to check.
45
- * @returns `true` if the value is a 32-bit non-zero signed integer, `false`
46
- * otherwise.
46
+ * @param value - The value to check
47
+ * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise
48
+ * @see {@link isNonZeroInt32} for usage examples
47
49
  */
48
50
  readonly is: (a: number) => a is TtfImported_NonZeroInt32;
49
51
  /**
50
- * The minimum value for a 32-bit non-zero signed integer.
51
- *
52
- * @readonly
52
+ * The smallest value representable as `NonZeroInt32` (the lower saturation
53
+ * target of `fromNumber`).
53
54
  */
54
55
  readonly MIN_VALUE: number;
55
56
  /**
56
- * The maximum value for a 32-bit non-zero signed integer.
57
- *
58
- * @readonly
57
+ * The largest value representable as `NonZeroInt32` (the upper saturation
58
+ * target of `fromNumber`).
59
59
  */
60
60
  readonly MAX_VALUE: number;
61
61
  /**
62
- * Returns the absolute value of a 32-bit non-zero signed integer.
62
+ * Returns the absolute value of a non-zero integer in [-2^31, 2^31).
63
63
  *
64
- * @param a The NonZeroInt32 value.
65
- * @returns The absolute value as a NonZeroInt32, clamped to valid range.
64
+ * The result is non-negative and keeps the `NonZeroInt32` brand.
65
+ *
66
+ * @param a - The non-zero integer value
67
+ * @returns The absolute value as a non-negative `NonZeroInt32`
66
68
  */
67
69
  readonly abs: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32>) => import("ts-type-forge").IntersectBrand<TtfImported_NonZeroInt32, import("ts-type-forge").PositiveNumber>;
68
70
  /**
69
- * Returns the smaller of two NonZeroInt32 values.
71
+ * Returns the smallest of the given non-zero integers.
70
72
  *
71
- * @param a The first NonZeroInt32.
72
- * @param b The second NonZeroInt32.
73
- * @returns The minimum value as a NonZeroInt32.
73
+ * @param values - The non-zero integers to compare (at least one required)
74
+ * @returns The smallest value as a `NonZeroInt32`
74
75
  */
75
76
  readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32>[]) => TtfImported_NonZeroInt32;
76
77
  /**
77
- * Returns the larger of two NonZeroInt32 values.
78
+ * Returns the largest of the given non-zero integers.
78
79
  *
79
- * @param a The first NonZeroInt32.
80
- * @param b The second NonZeroInt32.
81
- * @returns The maximum value as a NonZeroInt32.
80
+ * @param values - The non-zero integers to compare (at least one required)
81
+ * @returns The largest value as a `NonZeroInt32`
82
82
  */
83
83
  readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32>[]) => TtfImported_NonZeroInt32;
84
84
  /**
85
- * Clamps a number to the NonZeroInt32 range (avoiding zero).
85
+ * Converts an arbitrary `number` into a `NonZeroInt32`, rounding to the
86
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
87
+ * MAX_VALUE]`.
88
+ *
89
+ * Unlike `asNonZeroInt32`, this is total: out-of-range inputs are clamped to
90
+ * the nearest representable `NonZeroInt32` instead of throwing.
86
91
  *
87
- * @param value The number to clamp.
88
- * @returns The value clamped to [-2147483648, 2147483647] \ {0} as a
89
- * NonZeroInt32.
92
+ * @param value - The value to convert
93
+ * @returns The value as a `NonZeroInt32`
90
94
  */
91
- readonly clamp: (x: number) => TtfImported_NonZeroInt32;
95
+ readonly fromNumber: (x: number) => TtfImported_NonZeroInt32;
92
96
  /**
93
- * Generates a random NonZeroInt32 value within the valid range.
97
+ * Generates a random `NonZeroInt32` within the given range.
94
98
  *
95
- * @returns A random NonZeroInt32 between MIN_VALUE and MAX_VALUE (excluding
96
- * 0).
99
+ * The range is inclusive on both ends.
100
+ *
101
+ * @param min - The minimum value (inclusive)
102
+ * @param max - The maximum value (inclusive)
103
+ * @returns A random `NonZeroInt32` in `[min, max]`
97
104
  */
98
105
  readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32> | undefined) => TtfImported_NonZeroInt32;
99
106
  /**
100
- * Raises a NonZeroInt32 to the power of another NonZeroInt32.
107
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt32`
108
+ * (floored to an integer).
101
109
  *
102
- * @param a The base NonZeroInt32.
103
- * @param b The exponent NonZeroInt32.
104
- * @returns `a ** b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.
110
+ * @param a - The base non-zero integer
111
+ * @param b - The exponent non-zero integer
112
+ * @returns `a ** b` as a `NonZeroInt32`
105
113
  */
106
114
  readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32>) => TtfImported_NonZeroInt32;
107
115
  /**
108
- * Multiplies two NonZeroInt32 values.
109
- *
110
- * The product of two non-zero integers is always non-zero, so this stays
111
- * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
112
- * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
116
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt32`.
113
117
  *
114
- * @param a The first NonZeroInt32.
115
- * @param b The second NonZeroInt32.
116
- * @returns `a * b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.
118
+ * @param a - The first non-zero integer
119
+ * @param b - The second non-zero integer
120
+ * @returns The product of `a` and `b` as a `NonZeroInt32`
117
121
  */
118
122
  readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt32>) => TtfImported_NonZeroInt32;
119
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-int32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAI9E,MAAM,MAAM,YAAY,GAAG,wBAAwB,CAAC;AA8BpD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,8CAAK,CAAC;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;MAAW,CAAC;AAEvC;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;IACvB;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;OAKG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;;;;OAUG;;CAEK,CAAC"}
1
+ {"version":3,"file":"non-zero-int32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAI9E,MAAM,MAAM,YAAY,GAAG,wBAAwB,CAAC;AA8BpD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,8CAAK,CAAC;AAEjC;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;MAAW,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,YAAY;IACvB;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;;;OAOG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;CAEK,CAAC"}
@@ -6,7 +6,7 @@ const {
6
6
  MIN_VALUE,
7
7
  abs,
8
8
  castType,
9
- clamp,
9
+ fromNumber,
10
10
  is,
11
11
  max: max_,
12
12
  min: min_,
@@ -24,81 +24,83 @@ const isNonZeroInt32 = is;
24
24
  const asNonZeroInt32 = castType;
25
25
  const NonZeroInt32 = {
26
26
  /**
27
- * Type guard to check if a value is a NonZeroInt32.
27
+ * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).
28
28
  *
29
- * @param value The value to check.
30
- * @returns `true` if the value is a 32-bit non-zero signed integer, `false`
31
- * otherwise.
29
+ * @param value - The value to check
30
+ * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise
31
+ * @see {@link isNonZeroInt32} for usage examples
32
32
  */
33
33
  is,
34
34
  /**
35
- * The minimum value for a 32-bit non-zero signed integer.
36
- *
37
- * @readonly
35
+ * The smallest value representable as `NonZeroInt32` (the lower saturation
36
+ * target of `fromNumber`).
38
37
  */
39
38
  MIN_VALUE,
40
39
  /**
41
- * The maximum value for a 32-bit non-zero signed integer.
42
- *
43
- * @readonly
40
+ * The largest value representable as `NonZeroInt32` (the upper saturation
41
+ * target of `fromNumber`).
44
42
  */
45
43
  MAX_VALUE,
46
44
  /**
47
- * Returns the absolute value of a 32-bit non-zero signed integer.
45
+ * Returns the absolute value of a non-zero integer in [-2^31, 2^31).
46
+ *
47
+ * The result is non-negative and keeps the `NonZeroInt32` brand.
48
48
  *
49
- * @param a The NonZeroInt32 value.
50
- * @returns The absolute value as a NonZeroInt32, clamped to valid range.
49
+ * @param a - The non-zero integer value
50
+ * @returns The absolute value as a non-negative `NonZeroInt32`
51
51
  */
52
52
  abs,
53
53
  /**
54
- * Returns the smaller of two NonZeroInt32 values.
54
+ * Returns the smallest of the given non-zero integers.
55
55
  *
56
- * @param a The first NonZeroInt32.
57
- * @param b The second NonZeroInt32.
58
- * @returns The minimum value as a NonZeroInt32.
56
+ * @param values - The non-zero integers to compare (at least one required)
57
+ * @returns The smallest value as a `NonZeroInt32`
59
58
  */
60
59
  min: min_,
61
60
  /**
62
- * Returns the larger of two NonZeroInt32 values.
61
+ * Returns the largest of the given non-zero integers.
63
62
  *
64
- * @param a The first NonZeroInt32.
65
- * @param b The second NonZeroInt32.
66
- * @returns The maximum value as a NonZeroInt32.
63
+ * @param values - The non-zero integers to compare (at least one required)
64
+ * @returns The largest value as a `NonZeroInt32`
67
65
  */
68
66
  max: max_,
69
67
  /**
70
- * Clamps a number to the NonZeroInt32 range (avoiding zero).
68
+ * Converts an arbitrary `number` into a `NonZeroInt32`, rounding to the
69
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
70
+ * MAX_VALUE]`.
71
71
  *
72
- * @param value The number to clamp.
73
- * @returns The value clamped to [-2147483648, 2147483647] \ {0} as a
74
- * NonZeroInt32.
72
+ * Unlike `asNonZeroInt32`, this is total: out-of-range inputs are clamped to
73
+ * the nearest representable `NonZeroInt32` instead of throwing.
74
+ *
75
+ * @param value - The value to convert
76
+ * @returns The value as a `NonZeroInt32`
75
77
  */
76
- clamp,
78
+ fromNumber,
77
79
  /**
78
- * Generates a random NonZeroInt32 value within the valid range.
80
+ * Generates a random `NonZeroInt32` within the given range.
81
+ *
82
+ * The range is inclusive on both ends.
79
83
  *
80
- * @returns A random NonZeroInt32 between MIN_VALUE and MAX_VALUE (excluding
81
- * 0).
84
+ * @param min - The minimum value (inclusive)
85
+ * @param max - The maximum value (inclusive)
86
+ * @returns A random `NonZeroInt32` in `[min, max]`
82
87
  */
83
88
  random,
84
89
  /**
85
- * Raises a NonZeroInt32 to the power of another NonZeroInt32.
90
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt32`
91
+ * (floored to an integer).
86
92
  *
87
- * @param a The base NonZeroInt32.
88
- * @param b The exponent NonZeroInt32.
89
- * @returns `a ** b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.
93
+ * @param a - The base non-zero integer
94
+ * @param b - The exponent non-zero integer
95
+ * @returns `a ** b` as a `NonZeroInt32`
90
96
  */
91
97
  pow,
92
98
  /**
93
- * Multiplies two NonZeroInt32 values.
94
- *
95
- * The product of two non-zero integers is always non-zero, so this stays
96
- * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
97
- * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
99
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt32`.
98
100
  *
99
- * @param a The first NonZeroInt32.
100
- * @param b The second NonZeroInt32.
101
- * @returns `a * b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.
101
+ * @param a - The first non-zero integer
102
+ * @param b - The second non-zero integer
103
+ * @returns The product of `a` and `b` as a `NonZeroInt32`
102
104
  */
103
105
  mul
104
106
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-int32.mjs","sources":["../../../src/number/branded-types/non-zero-int32.mts"],"sourcesContent":["import { type NonZeroInt32 as TtfImported_NonZeroInt32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroInt32 = TtfImported_NonZeroInt32;\n\ntype ElementType = NonZeroInt32;\n\nconst typeNameInMessage = 'a non-zero integer in [-2^31, 2^31)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n castType,\n clamp,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: -(2 ** 31),\n MAX_VALUE: 2 ** 31 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a NonZeroInt32 (32-bit non-zero signed integer in the\n * range [-2^31, 2^31) excluding 0).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonZeroInt32, `false` otherwise.\n */\nexport const isNonZeroInt32 = is;\n\n/**\n * Casts a number to a NonZeroInt32 type.\n *\n * @param value The value to cast.\n * @returns The value as a NonZeroInt32 type.\n * @throws {TypeError} If the value is not a non-zero integer in [-2^31, 2^31).\n */\nexport const asNonZeroInt32 = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for 32-bit non-zero\n * signed integers.\n *\n * All operations automatically clamp results to the valid NonZeroInt32 range\n * [-2147483648, 2147483647] excluding 0. This ensures that all arithmetic\n * maintains the 32-bit non-zero signed integer constraint, preventing zero\n * results and overflow.\n */\nexport const NonZeroInt32 = {\n /**\n * Type guard to check if a value is a NonZeroInt32.\n *\n * @param value The value to check.\n * @returns `true` if the value is a 32-bit non-zero signed integer, `false`\n * otherwise.\n */\n is,\n\n /**\n * The minimum value for a 32-bit non-zero signed integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum value for a 32-bit non-zero signed integer.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a 32-bit non-zero signed integer.\n *\n * @param a The NonZeroInt32 value.\n * @returns The absolute value as a NonZeroInt32, clamped to valid range.\n */\n abs,\n\n /**\n * Returns the smaller of two NonZeroInt32 values.\n *\n * @param a The first NonZeroInt32.\n * @param b The second NonZeroInt32.\n * @returns The minimum value as a NonZeroInt32.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonZeroInt32 values.\n *\n * @param a The first NonZeroInt32.\n * @param b The second NonZeroInt32.\n * @returns The maximum value as a NonZeroInt32.\n */\n max: max_,\n\n /**\n * Clamps a number to the NonZeroInt32 range (avoiding zero).\n *\n * @param value The number to clamp.\n * @returns The value clamped to [-2147483648, 2147483647] \\ {0} as a\n * NonZeroInt32.\n */\n clamp,\n\n /**\n * Generates a random NonZeroInt32 value within the valid range.\n *\n * @returns A random NonZeroInt32 between MIN_VALUE and MAX_VALUE (excluding\n * 0).\n */\n random,\n\n /**\n * Raises a NonZeroInt32 to the power of another NonZeroInt32.\n *\n * @param a The base NonZeroInt32.\n * @param b The exponent NonZeroInt32.\n * @returns `a ** b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.\n */\n pow,\n\n /**\n * Multiplies two NonZeroInt32 values.\n *\n * The product of two non-zero integers is always non-zero, so this stays\n * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may\n * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.\n *\n * @param a The first NonZeroInt32.\n * @param b The second NonZeroInt32.\n * @returns `a * b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroInt32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroInt32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,qCAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,WAAO;AAAA,EAClB,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AASH,MAAM,cAAA,GAAiB;AASvB,MAAM,cAAA,GAAiB;AAWvB,MAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA;AACF;;;;"}
1
+ {"version":3,"file":"non-zero-int32.mjs","sources":["../../../src/number/branded-types/non-zero-int32.mts"],"sourcesContent":["import { type NonZeroInt32 as TtfImported_NonZeroInt32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroInt32 = TtfImported_NonZeroInt32;\n\ntype ElementType = NonZeroInt32;\n\nconst typeNameInMessage = 'a non-zero integer in [-2^31, 2^31)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n castType,\n fromNumber,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: -(2 ** 31),\n MAX_VALUE: 2 ** 31 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).\n *\n * Returns `true` for a non-zero integer in [-2^31, 2^31) — a value with no\n * fractional component.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise\n */\nexport const isNonZeroInt32 = is;\n\n/**\n * Casts a `number` to the `NonZeroInt32` branded type.\n *\n * Validates that the value is a non-zero integer in [-2^31, 2^31) and returns\n * it with the `NonZeroInt32` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroInt32`\n * @throws {TypeError} If the value is not a non-zero integer in [-2^31, 2^31)\n */\nexport const asNonZeroInt32 = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroInt32` branded type.\n *\n * The `NonZeroInt32` type represents a non-zero integer in [-2^31, 2^31).\n * Division (`div`) uses floor division.\n */\nexport const NonZeroInt32 = {\n /**\n * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise\n * @see {@link isNonZeroInt32} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `NonZeroInt32` (the lower saturation\n * target of `fromNumber`).\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `NonZeroInt32` (the upper saturation\n * target of `fromNumber`).\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a non-zero integer in [-2^31, 2^31).\n *\n * The result is non-negative and keeps the `NonZeroInt32` brand.\n *\n * @param a - The non-zero integer value\n * @returns The absolute value as a non-negative `NonZeroInt32`\n */\n abs,\n\n /**\n * Returns the smallest of the given non-zero integers.\n *\n * @param values - The non-zero integers to compare (at least one required)\n * @returns The smallest value as a `NonZeroInt32`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-zero integers.\n *\n * @param values - The non-zero integers to compare (at least one required)\n * @returns The largest value as a `NonZeroInt32`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `NonZeroInt32`, rounding to the\n * nearest integer and saturating the result into the range `[MIN_VALUE,\n * MAX_VALUE]`.\n *\n * Unlike `asNonZeroInt32`, this is total: out-of-range inputs are clamped to\n * the nearest representable `NonZeroInt32` instead of throwing.\n *\n * @param value - The value to convert\n * @returns The value as a `NonZeroInt32`\n */\n fromNumber,\n\n /**\n * Generates a random `NonZeroInt32` within the given range.\n *\n * The range is inclusive on both ends.\n *\n * @param min - The minimum value (inclusive)\n * @param max - The maximum value (inclusive)\n * @returns A random `NonZeroInt32` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt32`\n * (floored to an integer).\n *\n * @param a - The base non-zero integer\n * @param b - The exponent non-zero integer\n * @returns `a ** b` as a `NonZeroInt32`\n */\n pow,\n\n /**\n * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt32`.\n *\n * @param a - The first non-zero integer\n * @param b - The second non-zero integer\n * @returns The product of `a` and `b` as a `NonZeroInt32`\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroInt32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroInt32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,qCAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,WAAO;AAAA,EAClB,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AAWH,MAAM,cAAA,GAAiB;AAYvB,MAAM,cAAA,GAAiB;AAQvB,MAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaL,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}