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
  add,
8
8
  castType,
9
- clamp,
9
+ fromNumber,
10
10
  is,
11
11
  max: max_,
12
12
  min: min_,
@@ -24,80 +24,82 @@ const isNonZeroUint16 = is;
24
24
  const asNonZeroUint16 = castType;
25
25
  const NonZeroUint16 = {
26
26
  /**
27
- * Type guard to check if a value is a NonZeroUint16.
27
+ * Type guard that checks if a value is a non-zero integer in [1, 2^16).
28
28
  *
29
- * @param value The value to check.
30
- * @returns `true` if the value is a 16-bit non-zero unsigned integer, `false`
31
- * otherwise.
29
+ * @param value - The value to check
30
+ * @returns `true` if the value is a non-zero integer in [1, 2^16), `false` otherwise
31
+ * @see {@link isNonZeroUint16} for usage examples
32
32
  */
33
33
  is,
34
34
  /**
35
- * The minimum value for a 16-bit non-zero unsigned integer.
36
- *
37
- * @readonly
35
+ * The smallest value representable as `NonZeroUint16` (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 unsigned integer.
42
- *
43
- * @readonly
40
+ * The largest value representable as `NonZeroUint16` (the upper saturation
41
+ * target of `fromNumber`).
44
42
  */
45
43
  MAX_VALUE,
46
44
  /**
47
- * Returns the smaller of two NonZeroUint16 values.
45
+ * Returns the smallest of the given non-zero integers.
48
46
  *
49
- * @param a The first NonZeroUint16.
50
- * @param b The second NonZeroUint16.
51
- * @returns The minimum value as a NonZeroUint16.
47
+ * @param values - The non-zero integers to compare (at least one required)
48
+ * @returns The smallest value as a `NonZeroUint16`
52
49
  */
53
50
  min: min_,
54
51
  /**
55
- * Returns the larger of two NonZeroUint16 values.
52
+ * Returns the largest of the given non-zero integers.
56
53
  *
57
- * @param a The first NonZeroUint16.
58
- * @param b The second NonZeroUint16.
59
- * @returns The maximum value as a NonZeroUint16.
54
+ * @param values - The non-zero integers to compare (at least one required)
55
+ * @returns The largest value as a `NonZeroUint16`
60
56
  */
61
57
  max: max_,
62
58
  /**
63
- * Clamps a number to the NonZeroUint16 range.
59
+ * Converts an arbitrary `number` into a `NonZeroUint16`, rounding to the
60
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
61
+ * MAX_VALUE]`.
62
+ *
63
+ * Unlike `asNonZeroUint16`, this is total: out-of-range inputs are clamped to
64
+ * the nearest representable `NonZeroUint16` instead of throwing.
64
65
  *
65
- * @param value The number to clamp.
66
- * @returns The value clamped to [1, 65535] as a NonZeroUint16.
66
+ * @param value - The value to convert
67
+ * @returns The value as a `NonZeroUint16`
67
68
  */
68
- clamp,
69
+ fromNumber,
69
70
  /**
70
- * Generates a random NonZeroUint16 value within the valid range.
71
+ * Generates a random `NonZeroUint16` within the given range.
71
72
  *
72
- * @returns A random NonZeroUint16 between 1 and 65535.
73
+ * The range is inclusive on both ends.
74
+ *
75
+ * @param min - The minimum value (inclusive)
76
+ * @param max - The maximum value (inclusive)
77
+ * @returns A random `NonZeroUint16` in `[min, max]`
73
78
  */
74
79
  random,
75
80
  /**
76
- * Raises a NonZeroUint16 to the power of another NonZeroUint16.
81
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroUint16`
82
+ * (floored to an integer).
77
83
  *
78
- * @param a The base NonZeroUint16.
79
- * @param b The exponent NonZeroUint16.
80
- * @returns `a ** b` clamped to [1, 65535] as a NonZeroUint16.
84
+ * @param a - The base non-zero integer
85
+ * @param b - The exponent non-zero integer
86
+ * @returns `a ** b` as a `NonZeroUint16`
81
87
  */
82
88
  pow,
83
89
  /**
84
- * Adds two NonZeroUint16 values.
90
+ * Adds two non-zero integers, returning `a + b` as a `NonZeroUint16`.
85
91
  *
86
- * @param a The first NonZeroUint16.
87
- * @param b The second NonZeroUint16.
88
- * @returns `a + b` clamped to [1, 65535] as a NonZeroUint16.
92
+ * @param a - The first non-zero integer
93
+ * @param b - The second non-zero integer
94
+ * @returns The sum of `a` and `b` as a `NonZeroUint16`
89
95
  */
90
96
  add,
91
97
  /**
92
- * Multiplies two NonZeroUint16 values.
93
- *
94
- * Both `add` and `mul` stay within `[1, 65535]`. For the non-closed
95
- * operations (`sub`/`div`, whose result may be `0`) use {@link Num.sub} /
96
- * {@link Num.divInt}.
98
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroUint16`.
97
99
  *
98
- * @param a The first NonZeroUint16.
99
- * @param b The second NonZeroUint16.
100
- * @returns `a * b` clamped to [1, 65535] as a NonZeroUint16.
100
+ * @param a - The first non-zero integer
101
+ * @param b - The second non-zero integer
102
+ * @returns The product of `a` and `b` as a `NonZeroUint16`
101
103
  */
102
104
  mul
103
105
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-uint16.mjs","sources":["../../../src/number/branded-types/non-zero-uint16.mts"],"sourcesContent":["import { type NonZeroUint16 as TtfImported_NonZeroUint16 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroUint16 = TtfImported_NonZeroUint16;\n\ntype ElementType = NonZeroUint16;\n\nconst typeNameInMessage = 'a non-zero integer in [1, 2^16)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\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 1,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: 1,\n MAX_VALUE: 2 ** 16 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a NonZeroUint16 (16-bit non-zero unsigned integer in\n * the range [1, 2^16)).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonZeroUint16, `false` otherwise.\n */\nexport const isNonZeroUint16 = is;\n\n/**\n * Casts a number to a NonZeroUint16 type.\n *\n * @param value The value to cast.\n * @returns The value as a NonZeroUint16 type.\n * @throws {TypeError} If the value is not a non-zero integer in [1, 2^16).\n */\nexport const asNonZeroUint16 = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for 16-bit non-zero\n * unsigned integers.\n *\n * All operations automatically clamp results to the valid NonZeroUint16 range\n * [1, 65535]. This ensures that all arithmetic maintains the 16-bit non-zero\n * unsigned integer constraint, with results below 1 clamped to MIN_VALUE and\n * overflow results clamped to MAX_VALUE.\n */\nexport const NonZeroUint16 = {\n /**\n * Type guard to check if a value is a NonZeroUint16.\n *\n * @param value The value to check.\n * @returns `true` if the value is a 16-bit non-zero unsigned integer, `false`\n * otherwise.\n */\n is,\n\n /**\n * The minimum value for a 16-bit non-zero unsigned integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum value for a 16-bit non-zero unsigned integer.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the smaller of two NonZeroUint16 values.\n *\n * @param a The first NonZeroUint16.\n * @param b The second NonZeroUint16.\n * @returns The minimum value as a NonZeroUint16.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonZeroUint16 values.\n *\n * @param a The first NonZeroUint16.\n * @param b The second NonZeroUint16.\n * @returns The maximum value as a NonZeroUint16.\n */\n max: max_,\n\n /**\n * Clamps a number to the NonZeroUint16 range.\n *\n * @param value The number to clamp.\n * @returns The value clamped to [1, 65535] as a NonZeroUint16.\n */\n clamp,\n\n /**\n * Generates a random NonZeroUint16 value within the valid range.\n *\n * @returns A random NonZeroUint16 between 1 and 65535.\n */\n random,\n\n /**\n * Raises a NonZeroUint16 to the power of another NonZeroUint16.\n *\n * @param a The base NonZeroUint16.\n * @param b The exponent NonZeroUint16.\n * @returns `a ** b` clamped to [1, 65535] as a NonZeroUint16.\n */\n pow,\n\n /**\n * Adds two NonZeroUint16 values.\n *\n * @param a The first NonZeroUint16.\n * @param b The second NonZeroUint16.\n * @returns `a + b` clamped to [1, 65535] as a NonZeroUint16.\n */\n add,\n\n /**\n * Multiplies two NonZeroUint16 values.\n *\n * Both `add` and `mul` stay within `[1, 65535]`. For the non-closed\n * operations (`sub`/`div`, whose result may be `0`) use {@link Num.sub} /\n * {@link Num.divInt}.\n *\n * @param a The first NonZeroUint16.\n * @param b The second NonZeroUint16.\n * @returns `a * b` clamped to [1, 65535] as a NonZeroUint16.\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroUint16,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range',\n 'add' | 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroUint16,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range',\n 'add' | 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,iCAAA;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,CAAA;AAAA,EACX,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AASH,MAAM,eAAA,GAAkB;AASxB,MAAM,eAAA,GAAkB;AAWxB,MAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;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,EAOA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;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-uint16.mjs","sources":["../../../src/number/branded-types/non-zero-uint16.mts"],"sourcesContent":["import { type NonZeroUint16 as TtfImported_NonZeroUint16 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroUint16 = TtfImported_NonZeroUint16;\n\ntype ElementType = NonZeroUint16;\n\nconst typeNameInMessage = 'a non-zero integer in [1, 2^16)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\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 1,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: 1,\n MAX_VALUE: 2 ** 16 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-zero integer in [1, 2^16).\n *\n * Returns `true` for a non-zero integer in [1, 2^16) — 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 [1, 2^16), `false` otherwise\n */\nexport const isNonZeroUint16 = is;\n\n/**\n * Casts a `number` to the `NonZeroUint16` branded type.\n *\n * Validates that the value is a non-zero integer in [1, 2^16) and returns it\n * with the `NonZeroUint16` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroUint16`\n * @throws {TypeError} If the value is not a non-zero integer in [1, 2^16)\n */\nexport const asNonZeroUint16 = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroUint16` branded\n * type.\n *\n * The `NonZeroUint16` type represents a non-zero integer in [1, 2^16). Division\n * (`div`) uses floor division.\n */\nexport const NonZeroUint16 = {\n /**\n * Type guard that checks if a value is a non-zero integer in [1, 2^16).\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer in [1, 2^16), `false` otherwise\n * @see {@link isNonZeroUint16} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `NonZeroUint16` (the lower saturation\n * target of `fromNumber`).\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `NonZeroUint16` (the upper saturation\n * target of `fromNumber`).\n */\n MAX_VALUE,\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 `NonZeroUint16`\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 `NonZeroUint16`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `NonZeroUint16`, rounding to the\n * nearest integer and saturating the result into the range `[MIN_VALUE,\n * MAX_VALUE]`.\n *\n * Unlike `asNonZeroUint16`, this is total: out-of-range inputs are clamped to\n * the nearest representable `NonZeroUint16` instead of throwing.\n *\n * @param value - The value to convert\n * @returns The value as a `NonZeroUint16`\n */\n fromNumber,\n\n /**\n * Generates a random `NonZeroUint16` 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 `NonZeroUint16` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroUint16`\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 `NonZeroUint16`\n */\n pow,\n\n /**\n * Adds two non-zero integers, returning `a + b` as a `NonZeroUint16`.\n *\n * @param a - The first non-zero integer\n * @param b - The second non-zero integer\n * @returns The sum of `a` and `b` as a `NonZeroUint16`\n */\n add,\n\n /**\n * Multiplies two non-zero integers, returning `a * b` as a `NonZeroUint16`.\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 `NonZeroUint16`\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroUint16,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range',\n 'add' | 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroUint16,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range',\n 'add' | 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,iCAAA;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,CAAA;AAAA,EACX,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AAWH,MAAM,eAAA,GAAkB;AAYxB,MAAM,eAAA,GAAkB;AASxB,MAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;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,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}
@@ -1,19 +1,24 @@
1
1
  import { type NonZeroUint32 as TtfImported_NonZeroUint32 } from 'ts-type-forge';
2
2
  export type NonZeroUint32 = TtfImported_NonZeroUint32;
3
3
  /**
4
- * Checks if a number is a NonZeroUint32 (32-bit non-zero unsigned integer in
5
- * the range [1, 2^32)).
4
+ * Type guard that checks if a value is a non-zero integer in [1, 2^32).
6
5
  *
7
- * @param value The value to check.
8
- * @returns `true` if the value is a NonZeroUint32, `false` otherwise.
6
+ * Returns `true` for a non-zero integer in [1, 2^32) — 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 [1, 2^32), `false` otherwise
9
11
  */
10
12
  export declare const isNonZeroUint32: (a: number) => a is import("ts-type-forge").PositiveUint32;
11
13
  /**
12
- * Casts a number to a NonZeroUint32 type.
14
+ * Casts a `number` to the `NonZeroUint32` branded type.
15
+ *
16
+ * Validates that the value is a non-zero integer in [1, 2^32) and returns it
17
+ * with the `NonZeroUint32` brand. Throws a `TypeError` otherwise.
13
18
  *
14
- * @param value The value to cast.
15
- * @returns The value as a NonZeroUint32 type.
16
- * @throws {TypeError} If the value is not a non-zero integer in [1, 2^32).
19
+ * @param value - The value to cast
20
+ * @returns The value as a `NonZeroUint32`
21
+ * @throws {TypeError} If the value is not a non-zero integer in [1, 2^32)
17
22
  */
18
23
  export declare const asNonZeroUint32: <N extends number>(x: N) => number & {
19
24
  readonly "!=0": true;
@@ -32,90 +37,90 @@ export declare const asNonZeroUint32: <N extends number>(x: N) => number & {
32
37
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
33
38
  }> & N;
34
39
  /**
35
- * Namespace providing type-safe arithmetic operations for 32-bit non-zero
36
- * unsigned integers.
40
+ * Namespace providing type-safe operations for the `NonZeroUint32` branded
41
+ * type.
37
42
  *
38
- * All operations automatically clamp results to the valid NonZeroUint32 range
39
- * [1, 4294967295]. This ensures that all arithmetic maintains the 32-bit
40
- * non-zero unsigned integer constraint, with results below 1 clamped to
41
- * MIN_VALUE and overflow results clamped to MAX_VALUE.
43
+ * The `NonZeroUint32` type represents a non-zero integer in [1, 2^32). Division
44
+ * (`div`) uses floor division.
42
45
  */
43
46
  export declare const NonZeroUint32: {
44
47
  /**
45
- * Type guard to check if a value is a NonZeroUint32.
48
+ * Type guard that checks if a value is a non-zero integer in [1, 2^32).
46
49
  *
47
- * @param value The value to check.
48
- * @returns `true` if the value is a 32-bit non-zero unsigned integer, `false`
49
- * otherwise.
50
+ * @param value - The value to check
51
+ * @returns `true` if the value is a non-zero integer in [1, 2^32), `false` otherwise
52
+ * @see {@link isNonZeroUint32} for usage examples
50
53
  */
51
54
  readonly is: (a: number) => a is import("ts-type-forge").PositiveUint32;
52
55
  /**
53
- * The minimum value for a 32-bit non-zero unsigned integer.
54
- *
55
- * @readonly
56
+ * The smallest value representable as `NonZeroUint32` (the lower saturation
57
+ * target of `fromNumber`).
56
58
  */
57
59
  readonly MIN_VALUE: 1;
58
60
  /**
59
- * The maximum value for a 32-bit non-zero unsigned integer.
60
- *
61
- * @readonly
61
+ * The largest value representable as `NonZeroUint32` (the upper saturation
62
+ * target of `fromNumber`).
62
63
  */
63
64
  readonly MAX_VALUE: number;
64
65
  /**
65
- * Returns the smaller of two NonZeroUint32 values.
66
+ * Returns the smallest of the given non-zero integers.
66
67
  *
67
- * @param a The first NonZeroUint32.
68
- * @param b The second NonZeroUint32.
69
- * @returns The minimum value as a NonZeroUint32.
68
+ * @param values - The non-zero integers to compare (at least one required)
69
+ * @returns The smallest value as a `NonZeroUint32`
70
70
  */
71
71
  readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32>[]) => import("ts-type-forge").PositiveUint32;
72
72
  /**
73
- * Returns the larger of two NonZeroUint32 values.
73
+ * Returns the largest of the given non-zero integers.
74
74
  *
75
- * @param a The first NonZeroUint32.
76
- * @param b The second NonZeroUint32.
77
- * @returns The maximum value as a NonZeroUint32.
75
+ * @param values - The non-zero integers to compare (at least one required)
76
+ * @returns The largest value as a `NonZeroUint32`
78
77
  */
79
78
  readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32>[]) => import("ts-type-forge").PositiveUint32;
80
79
  /**
81
- * Clamps a number to the NonZeroUint32 range.
80
+ * Converts an arbitrary `number` into a `NonZeroUint32`, rounding to the
81
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
82
+ * MAX_VALUE]`.
82
83
  *
83
- * @param value The number to clamp.
84
- * @returns The value clamped to [1, 4294967295] as a NonZeroUint32.
84
+ * Unlike `asNonZeroUint32`, this is total: out-of-range inputs are clamped to
85
+ * the nearest representable `NonZeroUint32` instead of throwing.
86
+ *
87
+ * @param value - The value to convert
88
+ * @returns The value as a `NonZeroUint32`
85
89
  */
86
- readonly clamp: (x: number) => import("ts-type-forge").PositiveUint32;
90
+ readonly fromNumber: (x: number) => import("ts-type-forge").PositiveUint32;
87
91
  /**
88
- * Generates a random NonZeroUint32 value within the valid range.
92
+ * Generates a random `NonZeroUint32` within the given range.
93
+ *
94
+ * The range is inclusive on both ends.
89
95
  *
90
- * @returns A random NonZeroUint32 between 1 and 4294967295.
96
+ * @param min - The minimum value (inclusive)
97
+ * @param max - The maximum value (inclusive)
98
+ * @returns A random `NonZeroUint32` in `[min, max]`
91
99
  */
92
100
  readonly random: (min?: import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32> | undefined, max?: import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32> | undefined) => import("ts-type-forge").PositiveUint32;
93
101
  /**
94
- * Raises a NonZeroUint32 to the power of another NonZeroUint32.
102
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroUint32`
103
+ * (floored to an integer).
95
104
  *
96
- * @param a The base NonZeroUint32.
97
- * @param b The exponent NonZeroUint32.
98
- * @returns `a ** b` clamped to [1, 4294967295] as a NonZeroUint32.
105
+ * @param a - The base non-zero integer
106
+ * @param b - The exponent non-zero integer
107
+ * @returns `a ** b` as a `NonZeroUint32`
99
108
  */
100
109
  readonly pow: (x: import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32>, y: import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32>) => import("ts-type-forge").PositiveUint32;
101
110
  /**
102
- * Adds two NonZeroUint32 values.
111
+ * Adds two non-zero integers, returning `a + b` as a `NonZeroUint32`.
103
112
  *
104
- * @param a The first NonZeroUint32.
105
- * @param b The second NonZeroUint32.
106
- * @returns `a + b` clamped to [1, 4294967295] as a NonZeroUint32.
113
+ * @param a - The first non-zero integer
114
+ * @param b - The second non-zero integer
115
+ * @returns The sum of `a` and `b` as a `NonZeroUint32`
107
116
  */
108
117
  readonly add: (x: import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32>, y: import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32>) => import("ts-type-forge").PositiveUint32;
109
118
  /**
110
- * Multiplies two NonZeroUint32 values.
111
- *
112
- * Both `add` and `mul` stay within `[1, 4294967295]`. For the non-closed
113
- * operations (`sub`/`div`, whose result may be `0`) use {@link Num.sub} /
114
- * {@link Num.divInt}.
119
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroUint32`.
115
120
  *
116
- * @param a The first NonZeroUint32.
117
- * @param b The second NonZeroUint32.
118
- * @returns `a * b` clamped to [1, 4294967295] as a NonZeroUint32.
121
+ * @param a - The first non-zero integer
122
+ * @param b - The second non-zero integer
123
+ * @returns The product of `a` and `b` as a `NonZeroUint32`
119
124
  */
120
125
  readonly mul: (x: import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32>, y: import("ts-type-forge").WithSmallInt<import("ts-type-forge").PositiveUint32>) => import("ts-type-forge").PositiveUint32;
121
126
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-uint32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-uint32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,IAAI,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAIhF,MAAM,MAAM,aAAa,GAAG,yBAAyB,CAAC;AA8BtD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,4DAAK,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;MAAW,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;IACxB;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;;;;OAUG;;CAEK,CAAC"}
1
+ {"version":3,"file":"non-zero-uint32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-uint32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,IAAI,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAIhF,MAAM,MAAM,aAAa,GAAG,yBAAyB,CAAC;AA8BtD;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,4DAAK,CAAC;AAElC;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;MAAW,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;IACxB;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;CAEK,CAAC"}
@@ -6,7 +6,7 @@ const {
6
6
  MIN_VALUE,
7
7
  add,
8
8
  castType,
9
- clamp,
9
+ fromNumber,
10
10
  is,
11
11
  max: max_,
12
12
  min: min_,
@@ -24,80 +24,82 @@ const isNonZeroUint32 = is;
24
24
  const asNonZeroUint32 = castType;
25
25
  const NonZeroUint32 = {
26
26
  /**
27
- * Type guard to check if a value is a NonZeroUint32.
27
+ * Type guard that checks if a value is a non-zero integer in [1, 2^32).
28
28
  *
29
- * @param value The value to check.
30
- * @returns `true` if the value is a 32-bit non-zero unsigned integer, `false`
31
- * otherwise.
29
+ * @param value - The value to check
30
+ * @returns `true` if the value is a non-zero integer in [1, 2^32), `false` otherwise
31
+ * @see {@link isNonZeroUint32} for usage examples
32
32
  */
33
33
  is,
34
34
  /**
35
- * The minimum value for a 32-bit non-zero unsigned integer.
36
- *
37
- * @readonly
35
+ * The smallest value representable as `NonZeroUint32` (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 unsigned integer.
42
- *
43
- * @readonly
40
+ * The largest value representable as `NonZeroUint32` (the upper saturation
41
+ * target of `fromNumber`).
44
42
  */
45
43
  MAX_VALUE,
46
44
  /**
47
- * Returns the smaller of two NonZeroUint32 values.
45
+ * Returns the smallest of the given non-zero integers.
48
46
  *
49
- * @param a The first NonZeroUint32.
50
- * @param b The second NonZeroUint32.
51
- * @returns The minimum value as a NonZeroUint32.
47
+ * @param values - The non-zero integers to compare (at least one required)
48
+ * @returns The smallest value as a `NonZeroUint32`
52
49
  */
53
50
  min: min_,
54
51
  /**
55
- * Returns the larger of two NonZeroUint32 values.
52
+ * Returns the largest of the given non-zero integers.
56
53
  *
57
- * @param a The first NonZeroUint32.
58
- * @param b The second NonZeroUint32.
59
- * @returns The maximum value as a NonZeroUint32.
54
+ * @param values - The non-zero integers to compare (at least one required)
55
+ * @returns The largest value as a `NonZeroUint32`
60
56
  */
61
57
  max: max_,
62
58
  /**
63
- * Clamps a number to the NonZeroUint32 range.
59
+ * Converts an arbitrary `number` into a `NonZeroUint32`, rounding to the
60
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
61
+ * MAX_VALUE]`.
62
+ *
63
+ * Unlike `asNonZeroUint32`, this is total: out-of-range inputs are clamped to
64
+ * the nearest representable `NonZeroUint32` instead of throwing.
64
65
  *
65
- * @param value The number to clamp.
66
- * @returns The value clamped to [1, 4294967295] as a NonZeroUint32.
66
+ * @param value - The value to convert
67
+ * @returns The value as a `NonZeroUint32`
67
68
  */
68
- clamp,
69
+ fromNumber,
69
70
  /**
70
- * Generates a random NonZeroUint32 value within the valid range.
71
+ * Generates a random `NonZeroUint32` within the given range.
71
72
  *
72
- * @returns A random NonZeroUint32 between 1 and 4294967295.
73
+ * The range is inclusive on both ends.
74
+ *
75
+ * @param min - The minimum value (inclusive)
76
+ * @param max - The maximum value (inclusive)
77
+ * @returns A random `NonZeroUint32` in `[min, max]`
73
78
  */
74
79
  random,
75
80
  /**
76
- * Raises a NonZeroUint32 to the power of another NonZeroUint32.
81
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroUint32`
82
+ * (floored to an integer).
77
83
  *
78
- * @param a The base NonZeroUint32.
79
- * @param b The exponent NonZeroUint32.
80
- * @returns `a ** b` clamped to [1, 4294967295] as a NonZeroUint32.
84
+ * @param a - The base non-zero integer
85
+ * @param b - The exponent non-zero integer
86
+ * @returns `a ** b` as a `NonZeroUint32`
81
87
  */
82
88
  pow,
83
89
  /**
84
- * Adds two NonZeroUint32 values.
90
+ * Adds two non-zero integers, returning `a + b` as a `NonZeroUint32`.
85
91
  *
86
- * @param a The first NonZeroUint32.
87
- * @param b The second NonZeroUint32.
88
- * @returns `a + b` clamped to [1, 4294967295] as a NonZeroUint32.
92
+ * @param a - The first non-zero integer
93
+ * @param b - The second non-zero integer
94
+ * @returns The sum of `a` and `b` as a `NonZeroUint32`
89
95
  */
90
96
  add,
91
97
  /**
92
- * Multiplies two NonZeroUint32 values.
93
- *
94
- * Both `add` and `mul` stay within `[1, 4294967295]`. For the non-closed
95
- * operations (`sub`/`div`, whose result may be `0`) use {@link Num.sub} /
96
- * {@link Num.divInt}.
98
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroUint32`.
97
99
  *
98
- * @param a The first NonZeroUint32.
99
- * @param b The second NonZeroUint32.
100
- * @returns `a * b` clamped to [1, 4294967295] as a NonZeroUint32.
100
+ * @param a - The first non-zero integer
101
+ * @param b - The second non-zero integer
102
+ * @returns The product of `a` and `b` as a `NonZeroUint32`
101
103
  */
102
104
  mul
103
105
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-uint32.mjs","sources":["../../../src/number/branded-types/non-zero-uint32.mts"],"sourcesContent":["import { type NonZeroUint32 as TtfImported_NonZeroUint32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroUint32 = TtfImported_NonZeroUint32;\n\ntype ElementType = NonZeroUint32;\n\nconst typeNameInMessage = 'a non-zero integer in [1, 2^32)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\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 1,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: 1,\n MAX_VALUE: 2 ** 32 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a NonZeroUint32 (32-bit non-zero unsigned integer in\n * the range [1, 2^32)).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonZeroUint32, `false` otherwise.\n */\nexport const isNonZeroUint32 = is;\n\n/**\n * Casts a number to a NonZeroUint32 type.\n *\n * @param value The value to cast.\n * @returns The value as a NonZeroUint32 type.\n * @throws {TypeError} If the value is not a non-zero integer in [1, 2^32).\n */\nexport const asNonZeroUint32 = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for 32-bit non-zero\n * unsigned integers.\n *\n * All operations automatically clamp results to the valid NonZeroUint32 range\n * [1, 4294967295]. This ensures that all arithmetic maintains the 32-bit\n * non-zero unsigned integer constraint, with results below 1 clamped to\n * MIN_VALUE and overflow results clamped to MAX_VALUE.\n */\nexport const NonZeroUint32 = {\n /**\n * Type guard to check if a value is a NonZeroUint32.\n *\n * @param value The value to check.\n * @returns `true` if the value is a 32-bit non-zero unsigned integer, `false`\n * otherwise.\n */\n is,\n\n /**\n * The minimum value for a 32-bit non-zero unsigned integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum value for a 32-bit non-zero unsigned integer.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the smaller of two NonZeroUint32 values.\n *\n * @param a The first NonZeroUint32.\n * @param b The second NonZeroUint32.\n * @returns The minimum value as a NonZeroUint32.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonZeroUint32 values.\n *\n * @param a The first NonZeroUint32.\n * @param b The second NonZeroUint32.\n * @returns The maximum value as a NonZeroUint32.\n */\n max: max_,\n\n /**\n * Clamps a number to the NonZeroUint32 range.\n *\n * @param value The number to clamp.\n * @returns The value clamped to [1, 4294967295] as a NonZeroUint32.\n */\n clamp,\n\n /**\n * Generates a random NonZeroUint32 value within the valid range.\n *\n * @returns A random NonZeroUint32 between 1 and 4294967295.\n */\n random,\n\n /**\n * Raises a NonZeroUint32 to the power of another NonZeroUint32.\n *\n * @param a The base NonZeroUint32.\n * @param b The exponent NonZeroUint32.\n * @returns `a ** b` clamped to [1, 4294967295] as a NonZeroUint32.\n */\n pow,\n\n /**\n * Adds two NonZeroUint32 values.\n *\n * @param a The first NonZeroUint32.\n * @param b The second NonZeroUint32.\n * @returns `a + b` clamped to [1, 4294967295] as a NonZeroUint32.\n */\n add,\n\n /**\n * Multiplies two NonZeroUint32 values.\n *\n * Both `add` and `mul` stay within `[1, 4294967295]`. For the non-closed\n * operations (`sub`/`div`, whose result may be `0`) use {@link Num.sub} /\n * {@link Num.divInt}.\n *\n * @param a The first NonZeroUint32.\n * @param b The second NonZeroUint32.\n * @returns `a * b` clamped to [1, 4294967295] as a NonZeroUint32.\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroUint32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range',\n 'add' | 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroUint32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range',\n 'add' | 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,iCAAA;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,CAAA;AAAA,EACX,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AASH,MAAM,eAAA,GAAkB;AASxB,MAAM,eAAA,GAAkB;AAWxB,MAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;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,EAOA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;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-uint32.mjs","sources":["../../../src/number/branded-types/non-zero-uint32.mts"],"sourcesContent":["import { type NonZeroUint32 as TtfImported_NonZeroUint32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroUint32 = TtfImported_NonZeroUint32;\n\ntype ElementType = NonZeroUint32;\n\nconst typeNameInMessage = 'a non-zero integer in [1, 2^32)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\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 1,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: 1,\n MAX_VALUE: 2 ** 32 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-zero integer in [1, 2^32).\n *\n * Returns `true` for a non-zero integer in [1, 2^32) — 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 [1, 2^32), `false` otherwise\n */\nexport const isNonZeroUint32 = is;\n\n/**\n * Casts a `number` to the `NonZeroUint32` branded type.\n *\n * Validates that the value is a non-zero integer in [1, 2^32) and returns it\n * with the `NonZeroUint32` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroUint32`\n * @throws {TypeError} If the value is not a non-zero integer in [1, 2^32)\n */\nexport const asNonZeroUint32 = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroUint32` branded\n * type.\n *\n * The `NonZeroUint32` type represents a non-zero integer in [1, 2^32). Division\n * (`div`) uses floor division.\n */\nexport const NonZeroUint32 = {\n /**\n * Type guard that checks if a value is a non-zero integer in [1, 2^32).\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer in [1, 2^32), `false` otherwise\n * @see {@link isNonZeroUint32} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `NonZeroUint32` (the lower saturation\n * target of `fromNumber`).\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `NonZeroUint32` (the upper saturation\n * target of `fromNumber`).\n */\n MAX_VALUE,\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 `NonZeroUint32`\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 `NonZeroUint32`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `NonZeroUint32`, rounding to the\n * nearest integer and saturating the result into the range `[MIN_VALUE,\n * MAX_VALUE]`.\n *\n * Unlike `asNonZeroUint32`, this is total: out-of-range inputs are clamped to\n * the nearest representable `NonZeroUint32` instead of throwing.\n *\n * @param value - The value to convert\n * @returns The value as a `NonZeroUint32`\n */\n fromNumber,\n\n /**\n * Generates a random `NonZeroUint32` 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 `NonZeroUint32` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroUint32`\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 `NonZeroUint32`\n */\n pow,\n\n /**\n * Adds two non-zero integers, returning `a + b` as a `NonZeroUint32`.\n *\n * @param a - The first non-zero integer\n * @param b - The second non-zero integer\n * @returns The sum of `a` and `b` as a `NonZeroUint32`\n */\n add,\n\n /**\n * Multiplies two non-zero integers, returning `a * b` as a `NonZeroUint32`.\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 `NonZeroUint32`\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroUint32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range',\n 'add' | 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroUint32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range',\n 'add' | 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,iCAAA;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,CAAA;AAAA,EACX,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AAWH,MAAM,eAAA,GAAkB;AAYxB,MAAM,eAAA,GAAkB;AASxB,MAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;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,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}