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
@@ -1 +1 @@
1
- {"version":3,"file":"non-negative-int16.mjs","sources":["../../../src/number/branded-types/non-negative-int16.mts"],"sourcesContent":["import { type NonNegativeInt16 as TtfImported_NonNegativeInt16 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonNegativeInt16 = TtfImported_NonNegativeInt16;\n\ntype ElementType = NonNegativeInt16;\n\nconst typeNameInMessage = 'a non-negative integer in [0, 2^15)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\n castType,\n clamp,\n div,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n 0,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n MIN_VALUE: 0,\n MAX_VALUE: 2 ** 15 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a NonNegativeInt16 (16-bit non-negative signed integer\n * in the range [0, 2^15)).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonNegativeInt16, `false` otherwise.\n */\nexport const isNonNegativeInt16 = is;\n\n/**\n * Casts a number to a NonNegativeInt16 type.\n *\n * @param value The value to cast.\n * @returns The value as a NonNegativeInt16 type.\n * @throws {TypeError} If the value is not a non-negative integer in [0, 2^15).\n */\nexport const asNonNegativeInt16 = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for 16-bit non-negative\n * integers.\n *\n * All operations automatically clamp results to the valid NonNegativeInt16\n * range [0, 32767]. This ensures that all arithmetic maintains the 16-bit\n * non-negative integer constraint, with negative results clamped to 0 and\n * overflow results clamped to MAX_VALUE.\n */\nexport const NonNegativeInt16 = {\n /**\n * Type guard to check if a value is a NonNegativeInt16.\n *\n * @param value The value to check.\n * @returns `true` if the value is a 16-bit non-negative integer, `false`\n * otherwise.\n */\n is,\n\n /**\n * The minimum value for a 16-bit non-negative integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum value for a 16-bit non-negative integer.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the smaller of two NonNegativeInt16 values.\n *\n * @param a The first NonNegativeInt16.\n * @param b The second NonNegativeInt16.\n * @returns The minimum value as a NonNegativeInt16.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonNegativeInt16 values.\n *\n * @param a The first NonNegativeInt16.\n * @param b The second NonNegativeInt16.\n * @returns The maximum value as a NonNegativeInt16.\n */\n max: max_,\n\n /**\n * Clamps a number to the NonNegativeInt16 range.\n *\n * @param value The number to clamp.\n * @returns The value clamped to [0, 32767] as a NonNegativeInt16.\n */\n clamp,\n\n /**\n * Generates a random NonNegativeInt16 value within the valid range.\n *\n * @returns A random NonNegativeInt16 between 0 and 32767.\n */\n random,\n\n /**\n * Raises a NonNegativeInt16 to the power of another NonNegativeInt16.\n *\n * @param a The base NonNegativeInt16.\n * @param b The exponent NonNegativeInt16.\n * @returns `a ** b` clamped to [0, 32767] as a NonNegativeInt16.\n */\n pow,\n\n /**\n * Adds two NonNegativeInt16 values.\n *\n * @param a The first NonNegativeInt16.\n * @param b The second NonNegativeInt16.\n * @returns `a + b` clamped to [0, 32767] as a NonNegativeInt16.\n */\n add,\n\n /**\n * Subtracts one NonNegativeInt16 from another.\n *\n * @param a The minuend NonNegativeInt16.\n * @param b The subtrahend NonNegativeInt16.\n * @returns `a - b` clamped to [0, 32767] as a NonNegativeInt16 (minimum 0).\n */\n sub,\n\n /**\n * Multiplies two NonNegativeInt16 values.\n *\n * @param a The first NonNegativeInt16.\n * @param b The second NonNegativeInt16.\n * @returns `a * b` clamped to [0, 32767] as a NonNegativeInt16.\n */\n mul,\n\n /**\n * Divides one NonNegativeInt16 by another using floor division.\n *\n * @param a The dividend NonNegativeInt16.\n * @param b The divisor NonNegativeInt16.\n * @returns `⌊a / b⌋` clamped to [0, 32767] as a NonNegativeInt16.\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof NonNegativeInt16,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'non-negative' | 'range'\n >\n>('=');\n\nexpectType<\n typeof NonNegativeInt16,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'non-negative' | 'range'\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,GAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,SAAA,EAAW,CAAA;AAAA,EACX,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AASH,MAAM,kBAAA,GAAqB;AAS3B,MAAM,kBAAA,GAAqB;AAW3B,MAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ9B,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,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}
1
+ {"version":3,"file":"non-negative-int16.mjs","sources":["../../../src/number/branded-types/non-negative-int16.mts"],"sourcesContent":["import { type NonNegativeInt16 as TtfImported_NonNegativeInt16 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonNegativeInt16 = TtfImported_NonNegativeInt16;\n\ntype ElementType = NonNegativeInt16;\n\nconst typeNameInMessage = 'a non-negative integer in [0, 2^15)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\n castType,\n div,\n fromNumber,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n 0,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n MIN_VALUE: 0,\n MAX_VALUE: 2 ** 15 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-negative integer in [0, 2^15).\n *\n * Returns `true` for a non-negative integer in [0, 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-negative integer in [0, 2^15), `false` otherwise\n */\nexport const isNonNegativeInt16 = is;\n\n/**\n * Casts a `number` to the `NonNegativeInt16` branded type.\n *\n * Validates that the value is a non-negative integer in [0, 2^15) and returns\n * it with the `NonNegativeInt16` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonNegativeInt16`\n * @throws {TypeError} If the value is not a non-negative integer in [0, 2^15)\n */\nexport const asNonNegativeInt16 = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonNegativeInt16` branded\n * type.\n *\n * The `NonNegativeInt16` type represents a non-negative integer in [0, 2^15).\n * Division (`div`) uses floor division.\n */\nexport const NonNegativeInt16 = {\n /**\n * Type guard that checks if a value is a non-negative integer in [0, 2^15).\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-negative integer in [0, 2^15), `false` otherwise\n * @see {@link isNonNegativeInt16} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `NonNegativeInt16` (the lower\n * saturation target of `fromNumber`).\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `NonNegativeInt16` (the upper saturation\n * target of `fromNumber`).\n */\n MAX_VALUE,\n\n /**\n * Returns the smallest of the given non-negative integers.\n *\n * @param values - The non-negative integers to compare (at least one required)\n * @returns The smallest value as a `NonNegativeInt16`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-negative integers.\n *\n * @param values - The non-negative integers to compare (at least one required)\n * @returns The largest value as a `NonNegativeInt16`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `NonNegativeInt16`, rounding to the\n * nearest integer and saturating the result into the range `[MIN_VALUE,\n * MAX_VALUE]`.\n *\n * Unlike `asNonNegativeInt16`, this is total: out-of-range inputs are clamped\n * to the nearest representable `NonNegativeInt16` instead of throwing.\n *\n * @param value - The value to convert\n * @returns The value as a `NonNegativeInt16`\n */\n fromNumber,\n\n /**\n * Generates a random `NonNegativeInt16` 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 `NonNegativeInt16` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonNegativeInt16`\n * (floored to an integer).\n *\n * @param a - The base non-negative integer\n * @param b - The exponent non-negative integer\n * @returns `a ** b` as a `NonNegativeInt16`\n */\n pow,\n\n /**\n * Adds two non-negative integers, returning `a + b` as a `NonNegativeInt16`.\n *\n * @param a - The first non-negative integer\n * @param b - The second non-negative integer\n * @returns The sum of `a` and `b` as a `NonNegativeInt16`\n */\n add,\n\n /**\n * Subtracts two non-negative integers, returning `a - b` as a\n * `NonNegativeInt16`.\n *\n * @param a - The first non-negative integer\n * @param b - The second non-negative integer\n * @returns The difference of `a` and `b` as a `NonNegativeInt16`\n */\n sub,\n\n /**\n * Multiplies two non-negative integers, returning `a * b` as a\n * `NonNegativeInt16`.\n *\n * @param a - The first non-negative integer\n * @param b - The second non-negative integer\n * @returns The product of `a` and `b` as a `NonNegativeInt16`\n */\n mul,\n\n /**\n * Divides two non-negative integers using floor division (`⌊a / b⌋`): the\n * result is `a / b` rounded toward negative infinity, as a\n * `NonNegativeInt16`.\n *\n * @param a - The dividend\n * @param b - The divisor (must be non-zero)\n * @returns The floored quotient as a `NonNegativeInt16`\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof NonNegativeInt16,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'non-negative' | 'range'\n >\n>('=');\n\nexpectType<\n typeof NonNegativeInt16,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'non-negative' | 'range'\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,GAAA;AAAA,EACA,UAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,SAAA,EAAW,CAAA;AAAA,EACX,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AAWH,MAAM,kBAAA,GAAqB;AAY3B,MAAM,kBAAA,GAAqB;AAS3B,MAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ9B,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;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA;AACF;;;;"}
@@ -1,19 +1,24 @@
1
1
  import { type NonNegativeInt32 as TtfImported_NonNegativeInt32 } from 'ts-type-forge';
2
2
  export type NonNegativeInt32 = TtfImported_NonNegativeInt32;
3
3
  /**
4
- * Checks if a number is a NonNegativeInt32 (32-bit non-negative signed integer
5
- * in the range [0, 2^31)).
4
+ * Type guard that checks if a value is a non-negative integer in [0, 2^31).
6
5
  *
7
- * @param value The value to check.
8
- * @returns `true` if the value is a NonNegativeInt32, `false` otherwise.
6
+ * Returns `true` for a non-negative integer in [0, 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-negative integer in [0, 2^31), `false` otherwise
9
11
  */
10
12
  export declare const isNonNegativeInt32: (a: number) => a is TtfImported_NonNegativeInt32;
11
13
  /**
12
- * Casts a number to a NonNegativeInt32 type.
14
+ * Casts a `number` to the `NonNegativeInt32` branded type.
15
+ *
16
+ * Validates that the value is a non-negative integer in [0, 2^31) and returns
17
+ * it with the `NonNegativeInt32` brand. Throws a `TypeError` otherwise.
13
18
  *
14
- * @param value The value to cast.
15
- * @returns The value as a NonNegativeInt32 type.
16
- * @throws {TypeError} If the value is not a non-negative integer in [0, 2^31).
19
+ * @param value - The value to cast
20
+ * @returns The value as a `NonNegativeInt32`
21
+ * @throws {TypeError} If the value is not a non-negative integer in [0, 2^31)
17
22
  */
18
23
  export declare const asNonNegativeInt32: <N extends number>(x: N) => number & {
19
24
  readonly "< 2^31": true;
@@ -31,103 +36,110 @@ export declare const asNonNegativeInt32: <N extends number>(x: N) => number & {
31
36
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
32
37
  }> & N;
33
38
  /**
34
- * Namespace providing type-safe arithmetic operations for 32-bit non-negative
35
- * integers.
39
+ * Namespace providing type-safe operations for the `NonNegativeInt32` branded
40
+ * type.
36
41
  *
37
- * All operations automatically clamp results to the valid NonNegativeInt32
38
- * range [0, 2147483647]. This ensures that all arithmetic maintains the 32-bit
39
- * non-negative integer constraint, with negative results clamped to 0 and
40
- * overflow results clamped to MAX_VALUE.
42
+ * The `NonNegativeInt32` type represents a non-negative integer in [0, 2^31).
43
+ * Division (`div`) uses floor division.
41
44
  */
42
45
  export declare const NonNegativeInt32: {
43
46
  /**
44
- * Type guard to check if a value is a NonNegativeInt32.
47
+ * Type guard that checks if a value is a non-negative integer in [0, 2^31).
45
48
  *
46
- * @param value The value to check.
47
- * @returns `true` if the value is a 32-bit non-negative integer, `false`
48
- * otherwise.
49
+ * @param value - The value to check
50
+ * @returns `true` if the value is a non-negative integer in [0, 2^31), `false` otherwise
51
+ * @see {@link isNonNegativeInt32} for usage examples
49
52
  */
50
53
  readonly is: (a: number) => a is TtfImported_NonNegativeInt32;
51
54
  /**
52
- * The minimum value for a 32-bit non-negative integer.
53
- *
54
- * @readonly
55
+ * The smallest value representable as `NonNegativeInt32` (the lower
56
+ * saturation target of `fromNumber`).
55
57
  */
56
58
  readonly MIN_VALUE: 0;
57
59
  /**
58
- * The maximum value for a 32-bit non-negative integer.
59
- *
60
- * @readonly
60
+ * The largest value representable as `NonNegativeInt32` (the upper saturation
61
+ * target of `fromNumber`).
61
62
  */
62
63
  readonly MAX_VALUE: number;
63
64
  /**
64
- * Returns the smaller of two NonNegativeInt32 values.
65
+ * Returns the smallest of the given non-negative integers.
65
66
  *
66
- * @param a The first NonNegativeInt32.
67
- * @param b The second NonNegativeInt32.
68
- * @returns The minimum value as a NonNegativeInt32.
67
+ * @param values - The non-negative integers to compare (at least one required)
68
+ * @returns The smallest value as a `NonNegativeInt32`
69
69
  */
70
70
  readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>[]) => TtfImported_NonNegativeInt32;
71
71
  /**
72
- * Returns the larger of two NonNegativeInt32 values.
72
+ * Returns the largest of the given non-negative integers.
73
73
  *
74
- * @param a The first NonNegativeInt32.
75
- * @param b The second NonNegativeInt32.
76
- * @returns The maximum value as a NonNegativeInt32.
74
+ * @param values - The non-negative integers to compare (at least one required)
75
+ * @returns The largest value as a `NonNegativeInt32`
77
76
  */
78
77
  readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>[]) => TtfImported_NonNegativeInt32;
79
78
  /**
80
- * Clamps a number to the NonNegativeInt32 range.
79
+ * Converts an arbitrary `number` into a `NonNegativeInt32`, rounding to the
80
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
81
+ * MAX_VALUE]`.
82
+ *
83
+ * Unlike `asNonNegativeInt32`, this is total: out-of-range inputs are clamped
84
+ * to the nearest representable `NonNegativeInt32` instead of throwing.
81
85
  *
82
- * @param value The number to clamp.
83
- * @returns The value clamped to [0, 2147483647] as a NonNegativeInt32.
86
+ * @param value - The value to convert
87
+ * @returns The value as a `NonNegativeInt32`
84
88
  */
85
- readonly clamp: (x: number) => TtfImported_NonNegativeInt32;
89
+ readonly fromNumber: (x: number) => TtfImported_NonNegativeInt32;
86
90
  /**
87
- * Generates a random NonNegativeInt32 value within the valid range.
91
+ * Generates a random `NonNegativeInt32` within the given range.
92
+ *
93
+ * The range is inclusive on both ends.
88
94
  *
89
- * @returns A random NonNegativeInt32 between 0 and 2147483647.
95
+ * @param min - The minimum value (inclusive)
96
+ * @param max - The maximum value (inclusive)
97
+ * @returns A random `NonNegativeInt32` in `[min, max]`
90
98
  */
91
99
  readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32> | undefined) => TtfImported_NonNegativeInt32;
92
100
  /**
93
- * Raises a NonNegativeInt32 to the power of another NonNegativeInt32.
101
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonNegativeInt32`
102
+ * (floored to an integer).
94
103
  *
95
- * @param a The base NonNegativeInt32.
96
- * @param b The exponent NonNegativeInt32.
97
- * @returns `a ** b` clamped to [0, 2147483647] as a NonNegativeInt32.
104
+ * @param a - The base non-negative integer
105
+ * @param b - The exponent non-negative integer
106
+ * @returns `a ** b` as a `NonNegativeInt32`
98
107
  */
99
108
  readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>) => TtfImported_NonNegativeInt32;
100
109
  /**
101
- * Adds two NonNegativeInt32 values.
110
+ * Adds two non-negative integers, returning `a + b` as a `NonNegativeInt32`.
102
111
  *
103
- * @param a The first NonNegativeInt32.
104
- * @param b The second NonNegativeInt32.
105
- * @returns `a + b` clamped to [0, 2147483647] as a NonNegativeInt32.
112
+ * @param a - The first non-negative integer
113
+ * @param b - The second non-negative integer
114
+ * @returns The sum of `a` and `b` as a `NonNegativeInt32`
106
115
  */
107
116
  readonly add: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>) => TtfImported_NonNegativeInt32;
108
117
  /**
109
- * Subtracts one NonNegativeInt32 from another.
118
+ * Subtracts two non-negative integers, returning `a - b` as a
119
+ * `NonNegativeInt32`.
110
120
  *
111
- * @param a The minuend NonNegativeInt32.
112
- * @param b The subtrahend NonNegativeInt32.
113
- * @returns `a - b` clamped to [0, 2147483647] as a NonNegativeInt32 (minimum
114
- * 0).
121
+ * @param a - The first non-negative integer
122
+ * @param b - The second non-negative integer
123
+ * @returns The difference of `a` and `b` as a `NonNegativeInt32`
115
124
  */
116
125
  readonly sub: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>) => TtfImported_NonNegativeInt32;
117
126
  /**
118
- * Multiplies two NonNegativeInt32 values.
127
+ * Multiplies two non-negative integers, returning `a * b` as a
128
+ * `NonNegativeInt32`.
119
129
  *
120
- * @param a The first NonNegativeInt32.
121
- * @param b The second NonNegativeInt32.
122
- * @returns `a * b` clamped to [0, 2147483647] as a NonNegativeInt32.
130
+ * @param a - The first non-negative integer
131
+ * @param b - The second non-negative integer
132
+ * @returns The product of `a` and `b` as a `NonNegativeInt32`
123
133
  */
124
134
  readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>) => TtfImported_NonNegativeInt32;
125
135
  /**
126
- * Divides one NonNegativeInt32 by another using floor division.
136
+ * Divides two non-negative integers using floor division (`⌊a / b⌋`): the
137
+ * result is `a / b` rounded toward negative infinity, as a
138
+ * `NonNegativeInt32`.
127
139
  *
128
- * @param a The dividend NonNegativeInt32.
129
- * @param b The divisor NonNegativeInt32.
130
- * @returns `⌊a / b⌋` clamped to [0, 2147483647] as a NonNegativeInt32.
140
+ * @param a - The dividend
141
+ * @param b - The divisor (must be non-zero)
142
+ * @returns The floored quotient as a `NonNegativeInt32`
131
143
  */
132
144
  readonly div: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonNegativeInt32>, y: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | import("ts-type-forge").NormalizeBrandUnion<number & {
133
145
  readonly "!=0": true;
@@ -1 +1 @@
1
- {"version":3,"file":"non-negative-int32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-negative-int32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,IAAI,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAItF,MAAM,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AA+B5D;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,kDAAK,CAAC;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;MAAW,CAAC;AAE3C;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;;;;;;;;;;;;;;;;CAEK,CAAC"}
1
+ {"version":3,"file":"non-negative-int32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-negative-int32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,IAAI,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAItF,MAAM,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AA+B5D;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,kDAAK,CAAC;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;MAAW,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;CAEK,CAAC"}
@@ -6,8 +6,8 @@ const {
6
6
  MIN_VALUE,
7
7
  add,
8
8
  castType,
9
- clamp,
10
9
  div,
10
+ fromNumber,
11
11
  is,
12
12
  max: max_,
13
13
  min: min_,
@@ -25,93 +25,102 @@ const isNonNegativeInt32 = is;
25
25
  const asNonNegativeInt32 = castType;
26
26
  const NonNegativeInt32 = {
27
27
  /**
28
- * Type guard to check if a value is a NonNegativeInt32.
28
+ * Type guard that checks if a value is a non-negative integer in [0, 2^31).
29
29
  *
30
- * @param value The value to check.
31
- * @returns `true` if the value is a 32-bit non-negative integer, `false`
32
- * otherwise.
30
+ * @param value - The value to check
31
+ * @returns `true` if the value is a non-negative integer in [0, 2^31), `false` otherwise
32
+ * @see {@link isNonNegativeInt32} for usage examples
33
33
  */
34
34
  is,
35
35
  /**
36
- * The minimum value for a 32-bit non-negative integer.
37
- *
38
- * @readonly
36
+ * The smallest value representable as `NonNegativeInt32` (the lower
37
+ * saturation target of `fromNumber`).
39
38
  */
40
39
  MIN_VALUE,
41
40
  /**
42
- * The maximum value for a 32-bit non-negative integer.
43
- *
44
- * @readonly
41
+ * The largest value representable as `NonNegativeInt32` (the upper saturation
42
+ * target of `fromNumber`).
45
43
  */
46
44
  MAX_VALUE,
47
45
  /**
48
- * Returns the smaller of two NonNegativeInt32 values.
46
+ * Returns the smallest of the given non-negative integers.
49
47
  *
50
- * @param a The first NonNegativeInt32.
51
- * @param b The second NonNegativeInt32.
52
- * @returns The minimum value as a NonNegativeInt32.
48
+ * @param values - The non-negative integers to compare (at least one required)
49
+ * @returns The smallest value as a `NonNegativeInt32`
53
50
  */
54
51
  min: min_,
55
52
  /**
56
- * Returns the larger of two NonNegativeInt32 values.
53
+ * Returns the largest of the given non-negative integers.
57
54
  *
58
- * @param a The first NonNegativeInt32.
59
- * @param b The second NonNegativeInt32.
60
- * @returns The maximum value as a NonNegativeInt32.
55
+ * @param values - The non-negative integers to compare (at least one required)
56
+ * @returns The largest value as a `NonNegativeInt32`
61
57
  */
62
58
  max: max_,
63
59
  /**
64
- * Clamps a number to the NonNegativeInt32 range.
60
+ * Converts an arbitrary `number` into a `NonNegativeInt32`, rounding to the
61
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
62
+ * MAX_VALUE]`.
65
63
  *
66
- * @param value The number to clamp.
67
- * @returns The value clamped to [0, 2147483647] as a NonNegativeInt32.
64
+ * Unlike `asNonNegativeInt32`, this is total: out-of-range inputs are clamped
65
+ * to the nearest representable `NonNegativeInt32` instead of throwing.
66
+ *
67
+ * @param value - The value to convert
68
+ * @returns The value as a `NonNegativeInt32`
68
69
  */
69
- clamp,
70
+ fromNumber,
70
71
  /**
71
- * Generates a random NonNegativeInt32 value within the valid range.
72
+ * Generates a random `NonNegativeInt32` within the given range.
73
+ *
74
+ * The range is inclusive on both ends.
72
75
  *
73
- * @returns A random NonNegativeInt32 between 0 and 2147483647.
76
+ * @param min - The minimum value (inclusive)
77
+ * @param max - The maximum value (inclusive)
78
+ * @returns A random `NonNegativeInt32` in `[min, max]`
74
79
  */
75
80
  random,
76
81
  /**
77
- * Raises a NonNegativeInt32 to the power of another NonNegativeInt32.
82
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonNegativeInt32`
83
+ * (floored to an integer).
78
84
  *
79
- * @param a The base NonNegativeInt32.
80
- * @param b The exponent NonNegativeInt32.
81
- * @returns `a ** b` clamped to [0, 2147483647] as a NonNegativeInt32.
85
+ * @param a - The base non-negative integer
86
+ * @param b - The exponent non-negative integer
87
+ * @returns `a ** b` as a `NonNegativeInt32`
82
88
  */
83
89
  pow,
84
90
  /**
85
- * Adds two NonNegativeInt32 values.
91
+ * Adds two non-negative integers, returning `a + b` as a `NonNegativeInt32`.
86
92
  *
87
- * @param a The first NonNegativeInt32.
88
- * @param b The second NonNegativeInt32.
89
- * @returns `a + b` clamped to [0, 2147483647] as a NonNegativeInt32.
93
+ * @param a - The first non-negative integer
94
+ * @param b - The second non-negative integer
95
+ * @returns The sum of `a` and `b` as a `NonNegativeInt32`
90
96
  */
91
97
  add,
92
98
  /**
93
- * Subtracts one NonNegativeInt32 from another.
99
+ * Subtracts two non-negative integers, returning `a - b` as a
100
+ * `NonNegativeInt32`.
94
101
  *
95
- * @param a The minuend NonNegativeInt32.
96
- * @param b The subtrahend NonNegativeInt32.
97
- * @returns `a - b` clamped to [0, 2147483647] as a NonNegativeInt32 (minimum
98
- * 0).
102
+ * @param a - The first non-negative integer
103
+ * @param b - The second non-negative integer
104
+ * @returns The difference of `a` and `b` as a `NonNegativeInt32`
99
105
  */
100
106
  sub,
101
107
  /**
102
- * Multiplies two NonNegativeInt32 values.
108
+ * Multiplies two non-negative integers, returning `a * b` as a
109
+ * `NonNegativeInt32`.
103
110
  *
104
- * @param a The first NonNegativeInt32.
105
- * @param b The second NonNegativeInt32.
106
- * @returns `a * b` clamped to [0, 2147483647] as a NonNegativeInt32.
111
+ * @param a - The first non-negative integer
112
+ * @param b - The second non-negative integer
113
+ * @returns The product of `a` and `b` as a `NonNegativeInt32`
107
114
  */
108
115
  mul,
109
116
  /**
110
- * Divides one NonNegativeInt32 by another using floor division.
117
+ * Divides two non-negative integers using floor division (`⌊a / b⌋`): the
118
+ * result is `a / b` rounded toward negative infinity, as a
119
+ * `NonNegativeInt32`.
111
120
  *
112
- * @param a The dividend NonNegativeInt32.
113
- * @param b The divisor NonNegativeInt32.
114
- * @returns `⌊a / b⌋` clamped to [0, 2147483647] as a NonNegativeInt32.
121
+ * @param a - The dividend
122
+ * @param b - The divisor (must be non-zero)
123
+ * @returns The floored quotient as a `NonNegativeInt32`
115
124
  */
116
125
  div
117
126
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-negative-int32.mjs","sources":["../../../src/number/branded-types/non-negative-int32.mts"],"sourcesContent":["import { type NonNegativeInt32 as TtfImported_NonNegativeInt32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonNegativeInt32 = TtfImported_NonNegativeInt32;\n\ntype ElementType = NonNegativeInt32;\n\nconst typeNameInMessage = 'a non-negative integer in [0, 2^31)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\n castType,\n clamp,\n div,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n 0,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n MIN_VALUE: 0,\n MAX_VALUE: 2 ** 31 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a NonNegativeInt32 (32-bit non-negative signed integer\n * in the range [0, 2^31)).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonNegativeInt32, `false` otherwise.\n */\nexport const isNonNegativeInt32 = is;\n\n/**\n * Casts a number to a NonNegativeInt32 type.\n *\n * @param value The value to cast.\n * @returns The value as a NonNegativeInt32 type.\n * @throws {TypeError} If the value is not a non-negative integer in [0, 2^31).\n */\nexport const asNonNegativeInt32 = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for 32-bit non-negative\n * integers.\n *\n * All operations automatically clamp results to the valid NonNegativeInt32\n * range [0, 2147483647]. This ensures that all arithmetic maintains the 32-bit\n * non-negative integer constraint, with negative results clamped to 0 and\n * overflow results clamped to MAX_VALUE.\n */\nexport const NonNegativeInt32 = {\n /**\n * Type guard to check if a value is a NonNegativeInt32.\n *\n * @param value The value to check.\n * @returns `true` if the value is a 32-bit non-negative integer, `false`\n * otherwise.\n */\n is,\n\n /**\n * The minimum value for a 32-bit non-negative integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum value for a 32-bit non-negative integer.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the smaller of two NonNegativeInt32 values.\n *\n * @param a The first NonNegativeInt32.\n * @param b The second NonNegativeInt32.\n * @returns The minimum value as a NonNegativeInt32.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonNegativeInt32 values.\n *\n * @param a The first NonNegativeInt32.\n * @param b The second NonNegativeInt32.\n * @returns The maximum value as a NonNegativeInt32.\n */\n max: max_,\n\n /**\n * Clamps a number to the NonNegativeInt32 range.\n *\n * @param value The number to clamp.\n * @returns The value clamped to [0, 2147483647] as a NonNegativeInt32.\n */\n clamp,\n\n /**\n * Generates a random NonNegativeInt32 value within the valid range.\n *\n * @returns A random NonNegativeInt32 between 0 and 2147483647.\n */\n random,\n\n /**\n * Raises a NonNegativeInt32 to the power of another NonNegativeInt32.\n *\n * @param a The base NonNegativeInt32.\n * @param b The exponent NonNegativeInt32.\n * @returns `a ** b` clamped to [0, 2147483647] as a NonNegativeInt32.\n */\n pow,\n\n /**\n * Adds two NonNegativeInt32 values.\n *\n * @param a The first NonNegativeInt32.\n * @param b The second NonNegativeInt32.\n * @returns `a + b` clamped to [0, 2147483647] as a NonNegativeInt32.\n */\n add,\n\n /**\n * Subtracts one NonNegativeInt32 from another.\n *\n * @param a The minuend NonNegativeInt32.\n * @param b The subtrahend NonNegativeInt32.\n * @returns `a - b` clamped to [0, 2147483647] as a NonNegativeInt32 (minimum\n * 0).\n */\n sub,\n\n /**\n * Multiplies two NonNegativeInt32 values.\n *\n * @param a The first NonNegativeInt32.\n * @param b The second NonNegativeInt32.\n * @returns `a * b` clamped to [0, 2147483647] as a NonNegativeInt32.\n */\n mul,\n\n /**\n * Divides one NonNegativeInt32 by another using floor division.\n *\n * @param a The dividend NonNegativeInt32.\n * @param b The divisor NonNegativeInt32.\n * @returns `⌊a / b⌋` clamped to [0, 2147483647] as a NonNegativeInt32.\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof NonNegativeInt32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'non-negative' | 'range'\n >\n>('=');\n\nexpectType<\n typeof NonNegativeInt32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'non-negative' | 'range'\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,GAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,SAAA,EAAW,CAAA;AAAA,EACX,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AASH,MAAM,kBAAA,GAAqB;AAS3B,MAAM,kBAAA,GAAqB;AAW3B,MAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ9B,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,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}
1
+ {"version":3,"file":"non-negative-int32.mjs","sources":["../../../src/number/branded-types/non-negative-int32.mts"],"sourcesContent":["import { type NonNegativeInt32 as TtfImported_NonNegativeInt32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonNegativeInt32 = TtfImported_NonNegativeInt32;\n\ntype ElementType = NonNegativeInt32;\n\nconst typeNameInMessage = 'a non-negative integer in [0, 2^31)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\n castType,\n div,\n fromNumber,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n 0,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n MIN_VALUE: 0,\n MAX_VALUE: 2 ** 31 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-negative integer in [0, 2^31).\n *\n * Returns `true` for a non-negative integer in [0, 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-negative integer in [0, 2^31), `false` otherwise\n */\nexport const isNonNegativeInt32 = is;\n\n/**\n * Casts a `number` to the `NonNegativeInt32` branded type.\n *\n * Validates that the value is a non-negative integer in [0, 2^31) and returns\n * it with the `NonNegativeInt32` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonNegativeInt32`\n * @throws {TypeError} If the value is not a non-negative integer in [0, 2^31)\n */\nexport const asNonNegativeInt32 = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonNegativeInt32` branded\n * type.\n *\n * The `NonNegativeInt32` type represents a non-negative integer in [0, 2^31).\n * Division (`div`) uses floor division.\n */\nexport const NonNegativeInt32 = {\n /**\n * Type guard that checks if a value is a non-negative integer in [0, 2^31).\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-negative integer in [0, 2^31), `false` otherwise\n * @see {@link isNonNegativeInt32} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `NonNegativeInt32` (the lower\n * saturation target of `fromNumber`).\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `NonNegativeInt32` (the upper saturation\n * target of `fromNumber`).\n */\n MAX_VALUE,\n\n /**\n * Returns the smallest of the given non-negative integers.\n *\n * @param values - The non-negative integers to compare (at least one required)\n * @returns The smallest value as a `NonNegativeInt32`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-negative integers.\n *\n * @param values - The non-negative integers to compare (at least one required)\n * @returns The largest value as a `NonNegativeInt32`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `NonNegativeInt32`, rounding to the\n * nearest integer and saturating the result into the range `[MIN_VALUE,\n * MAX_VALUE]`.\n *\n * Unlike `asNonNegativeInt32`, this is total: out-of-range inputs are clamped\n * to the nearest representable `NonNegativeInt32` instead of throwing.\n *\n * @param value - The value to convert\n * @returns The value as a `NonNegativeInt32`\n */\n fromNumber,\n\n /**\n * Generates a random `NonNegativeInt32` 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 `NonNegativeInt32` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonNegativeInt32`\n * (floored to an integer).\n *\n * @param a - The base non-negative integer\n * @param b - The exponent non-negative integer\n * @returns `a ** b` as a `NonNegativeInt32`\n */\n pow,\n\n /**\n * Adds two non-negative integers, returning `a + b` as a `NonNegativeInt32`.\n *\n * @param a - The first non-negative integer\n * @param b - The second non-negative integer\n * @returns The sum of `a` and `b` as a `NonNegativeInt32`\n */\n add,\n\n /**\n * Subtracts two non-negative integers, returning `a - b` as a\n * `NonNegativeInt32`.\n *\n * @param a - The first non-negative integer\n * @param b - The second non-negative integer\n * @returns The difference of `a` and `b` as a `NonNegativeInt32`\n */\n sub,\n\n /**\n * Multiplies two non-negative integers, returning `a * b` as a\n * `NonNegativeInt32`.\n *\n * @param a - The first non-negative integer\n * @param b - The second non-negative integer\n * @returns The product of `a` and `b` as a `NonNegativeInt32`\n */\n mul,\n\n /**\n * Divides two non-negative integers using floor division (`⌊a / b⌋`): the\n * result is `a / b` rounded toward negative infinity, as a\n * `NonNegativeInt32`.\n *\n * @param a - The dividend\n * @param b - The divisor (must be non-zero)\n * @returns The floored quotient as a `NonNegativeInt32`\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof NonNegativeInt32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'non-negative' | 'range'\n >\n>('=');\n\nexpectType<\n typeof NonNegativeInt32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'non-negative' | 'range'\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,GAAA;AAAA,EACA,UAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,SAAA,EAAW,CAAA;AAAA,EACX,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AAWH,MAAM,kBAAA,GAAqB;AAY3B,MAAM,kBAAA,GAAqB;AAS3B,MAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ9B,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;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA;AACF;;;;"}