ts-data-forge 6.13.1 → 7.0.1

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 (257) hide show
  1. package/README.md +2 -2
  2. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  3. package/dist/array/impl/array-utils-creation.mjs +1 -1
  4. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  5. package/dist/array/impl/array-utils-iterators.mjs +7 -1
  6. package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
  7. package/dist/array/impl/array-utils-modification.mjs +6 -0
  8. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  9. package/dist/array/impl/array-utils-reducing-value.d.mts +1 -1
  10. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  11. package/dist/array/impl/array-utils-reducing-value.mjs +6 -1
  12. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-search.d.mts +0 -2
  14. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  15. package/dist/array/impl/array-utils-search.mjs +6 -0
  16. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  17. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  18. package/dist/array/impl/array-utils-set-op.mjs +0 -1
  19. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  20. package/dist/array/impl/array-utils-slice-clamped.mjs +6 -0
  21. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  22. package/dist/array/impl/array-utils-slicing.mjs +6 -0
  23. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  24. package/dist/array/impl/array-utils-transformation.d.mts +1 -1
  25. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  26. package/dist/array/impl/array-utils-transformation.mjs +8 -4
  27. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  28. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  29. package/dist/array/impl/array-utils-validation.mjs +9 -9
  30. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  31. package/dist/collections/imap-mapped.d.mts +622 -3
  32. package/dist/collections/imap-mapped.d.mts.map +1 -1
  33. package/dist/collections/imap-mapped.mjs +117 -18
  34. package/dist/collections/imap-mapped.mjs.map +1 -1
  35. package/dist/collections/imap.d.mts +3 -3
  36. package/dist/collections/imap.d.mts.map +1 -1
  37. package/dist/collections/imap.mjs +12 -5
  38. package/dist/collections/imap.mjs.map +1 -1
  39. package/dist/collections/iset-mapped.d.mts +4 -4
  40. package/dist/collections/iset-mapped.d.mts.map +1 -1
  41. package/dist/collections/iset-mapped.mjs +14 -4
  42. package/dist/collections/iset-mapped.mjs.map +1 -1
  43. package/dist/collections/iset.d.mts +2 -2
  44. package/dist/collections/iset.d.mts.map +1 -1
  45. package/dist/collections/iset.mjs +11 -2
  46. package/dist/collections/iset.mjs.map +1 -1
  47. package/dist/collections/queue.mjs +26 -20
  48. package/dist/collections/queue.mjs.map +1 -1
  49. package/dist/collections/stack.mjs +23 -17
  50. package/dist/collections/stack.mjs.map +1 -1
  51. package/dist/entry-point.mjs +6 -0
  52. package/dist/entry-point.mjs.map +1 -1
  53. package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -2
  54. package/dist/functional/pipe.d.mts.map +1 -1
  55. package/dist/functional/pipe.mjs.map +1 -1
  56. package/dist/functional/result/impl/result-flat-map.d.mts +2 -2
  57. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +5 -3
  58. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +1 -1
  59. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  60. package/dist/guard/has-key.d.mts.map +1 -1
  61. package/dist/guard/has-key.mjs +1 -3
  62. package/dist/guard/has-key.mjs.map +1 -1
  63. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  64. package/dist/guard/is-non-null-object.mjs +1 -3
  65. package/dist/guard/is-non-null-object.mjs.map +1 -1
  66. package/dist/guard/key-is-in.d.mts.map +1 -1
  67. package/dist/guard/key-is-in.mjs +1 -3
  68. package/dist/guard/key-is-in.mjs.map +1 -1
  69. package/dist/index.mjs +6 -0
  70. package/dist/index.mjs.map +1 -1
  71. package/dist/iterator/range.mjs +6 -0
  72. package/dist/iterator/range.mjs.map +1 -1
  73. package/dist/json/json.mjs +11 -7
  74. package/dist/json/json.mjs.map +1 -1
  75. package/dist/number/branded-types/finite-number.d.mts +1 -1
  76. package/dist/number/branded-types/index.d.mts +6 -0
  77. package/dist/number/branded-types/index.d.mts.map +1 -1
  78. package/dist/number/branded-types/index.mjs +6 -0
  79. package/dist/number/branded-types/index.mjs.map +1 -1
  80. package/dist/number/branded-types/int.d.mts +1 -2
  81. package/dist/number/branded-types/int.d.mts.map +1 -1
  82. package/dist/number/branded-types/int16.d.mts +2 -3
  83. package/dist/number/branded-types/int16.d.mts.map +1 -1
  84. package/dist/number/branded-types/int32.d.mts +2 -3
  85. package/dist/number/branded-types/int32.d.mts.map +1 -1
  86. package/dist/number/branded-types/negative-finite-number.d.mts +143 -0
  87. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -0
  88. package/dist/number/branded-types/negative-finite-number.mjs +156 -0
  89. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -0
  90. package/dist/number/branded-types/negative-int.d.mts +120 -0
  91. package/dist/number/branded-types/negative-int.d.mts.map +1 -0
  92. package/dist/number/branded-types/negative-int.mjs +125 -0
  93. package/dist/number/branded-types/negative-int.mjs.map +1 -0
  94. package/dist/number/branded-types/negative-safe-int.d.mts +132 -0
  95. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -0
  96. package/dist/number/branded-types/negative-safe-int.mjs +136 -0
  97. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -0
  98. package/dist/number/branded-types/non-negative-finite-number.d.mts +1 -1
  99. package/dist/number/branded-types/non-negative-int16.d.mts +1 -1
  100. package/dist/number/branded-types/non-negative-int32.d.mts +1 -1
  101. package/dist/number/branded-types/non-positive-finite-number.d.mts +130 -0
  102. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -0
  103. package/dist/number/branded-types/non-positive-finite-number.mjs +134 -0
  104. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -0
  105. package/dist/number/branded-types/non-positive-int.d.mts +224 -0
  106. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -0
  107. package/dist/number/branded-types/non-positive-int.mjs +222 -0
  108. package/dist/number/branded-types/non-positive-int.mjs.map +1 -0
  109. package/dist/number/branded-types/non-positive-safe-int.d.mts +119 -0
  110. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -0
  111. package/dist/number/branded-types/non-positive-safe-int.mjs +116 -0
  112. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -0
  113. package/dist/number/branded-types/non-zero-finite-number.d.mts +5 -17
  114. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  115. package/dist/number/branded-types/non-zero-finite-number.mjs +5 -17
  116. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  117. package/dist/number/branded-types/non-zero-int.d.mts +5 -33
  118. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  119. package/dist/number/branded-types/non-zero-int.mjs +5 -25
  120. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  121. package/dist/number/branded-types/non-zero-int16.d.mts +6 -43
  122. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  123. package/dist/number/branded-types/non-zero-int16.mjs +5 -25
  124. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  125. package/dist/number/branded-types/non-zero-int32.d.mts +6 -39
  126. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  127. package/dist/number/branded-types/non-zero-int32.mjs +5 -25
  128. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  129. package/dist/number/branded-types/non-zero-safe-int.d.mts +5 -37
  130. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  131. package/dist/number/branded-types/non-zero-safe-int.mjs +7 -30
  132. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  133. package/dist/number/branded-types/non-zero-uint16.d.mts +6 -33
  134. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  135. package/dist/number/branded-types/non-zero-uint16.mjs +5 -17
  136. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  137. package/dist/number/branded-types/non-zero-uint32.d.mts +6 -31
  138. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  139. package/dist/number/branded-types/non-zero-uint32.mjs +5 -17
  140. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  141. package/dist/number/branded-types/positive-finite-number.d.mts +4 -2
  142. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  143. package/dist/number/branded-types/positive-int.d.mts +4 -2
  144. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  145. package/dist/number/branded-types/positive-int16.d.mts +4 -2
  146. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  147. package/dist/number/branded-types/positive-int32.d.mts +4 -2
  148. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  149. package/dist/number/branded-types/positive-safe-int.d.mts +4 -2
  150. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  151. package/dist/number/branded-types/positive-safe-int.mjs +1 -1
  152. package/dist/number/branded-types/positive-uint16.d.mts +4 -2
  153. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  154. package/dist/number/branded-types/positive-uint32.d.mts +4 -2
  155. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  156. package/dist/number/branded-types/safe-int.d.mts +1 -2
  157. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  158. package/dist/number/branded-types/safe-int.mjs +2 -2
  159. package/dist/number/branded-types/safe-uint.d.mts +1 -1
  160. package/dist/number/branded-types/safe-uint.mjs +1 -1
  161. package/dist/number/branded-types/uint.d.mts +1 -1
  162. package/dist/number/branded-types/uint16.d.mts +1 -1
  163. package/dist/number/branded-types/uint32.d.mts +1 -1
  164. package/dist/number/index.d.mts +1 -0
  165. package/dist/number/index.d.mts.map +1 -1
  166. package/dist/number/index.mjs +6 -0
  167. package/dist/number/index.mjs.map +1 -1
  168. package/dist/number/num-arithmetic-types.d.mts +74 -0
  169. package/dist/number/num-arithmetic-types.d.mts.map +1 -0
  170. package/dist/number/num-arithmetic-types.mjs +2 -0
  171. package/dist/number/num-arithmetic-types.mjs.map +1 -0
  172. package/dist/number/num.d.mts +53 -9
  173. package/dist/number/num.d.mts.map +1 -1
  174. package/dist/number/num.mjs +67 -15
  175. package/dist/number/num.mjs.map +1 -1
  176. package/dist/number/refined-number-utils.d.mts +12 -9
  177. package/dist/number/refined-number-utils.d.mts.map +1 -1
  178. package/dist/number/refined-number-utils.mjs.map +1 -1
  179. package/dist/object/object.mjs +7 -1
  180. package/dist/object/object.mjs.map +1 -1
  181. package/dist/others/fast-deep-equal.d.mts.map +1 -1
  182. package/dist/others/fast-deep-equal.mjs +0 -1
  183. package/dist/others/fast-deep-equal.mjs.map +1 -1
  184. package/dist/others/unknown-to-string.mjs +2 -2
  185. package/dist/others/unknown-to-string.mjs.map +1 -1
  186. package/package.json +6 -6
  187. package/src/array/impl/array-utils-creation.mts +1 -1
  188. package/src/array/impl/array-utils-iterators.mts +1 -1
  189. package/src/array/impl/array-utils-reducing-value.mts +1 -2
  190. package/src/array/impl/array-utils-search.mts +0 -2
  191. package/src/array/impl/array-utils-set-op.mts +0 -1
  192. package/src/array/impl/array-utils-transformation.mts +8 -6
  193. package/src/array/impl/array-utils-validation.mts +1 -5
  194. package/src/collections/imap-mapped.mts +696 -34
  195. package/src/collections/imap-mapped.test.mts +61 -13
  196. package/src/collections/imap.mts +20 -9
  197. package/src/collections/imap.test.mts +9 -8
  198. package/src/collections/iset-mapped.mts +18 -10
  199. package/src/collections/iset-mapped.test.mts +6 -1
  200. package/src/collections/iset.mts +11 -4
  201. package/src/collections/iset.test.mts +6 -8
  202. package/src/collections/queue.mts +32 -32
  203. package/src/collections/stack.mts +26 -26
  204. package/src/functional/optional/impl/optional-flat-map.mts +2 -2
  205. package/src/functional/optional.test.mts +6 -4
  206. package/src/functional/pipe.mts +0 -1
  207. package/src/functional/pipe.test.mts +2 -1
  208. package/src/functional/result/impl/result-flat-map.mts +2 -2
  209. package/src/functional/result.test.mts +3 -2
  210. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +5 -3
  211. package/src/functional/ternary-result.test.mts +8 -3
  212. package/src/guard/has-key.mts +1 -3
  213. package/src/guard/is-non-null-object.mts +0 -1
  214. package/src/guard/key-is-in.mts +1 -3
  215. package/src/json/json.mts +5 -8
  216. package/src/json/json.test.mts +2 -2
  217. package/src/number/branded-types/index.mts +6 -0
  218. package/src/number/branded-types/negative-finite-number.mts +210 -0
  219. package/src/number/branded-types/negative-finite-number.test.mts +172 -0
  220. package/src/number/branded-types/negative-int.mts +160 -0
  221. package/src/number/branded-types/negative-int.test.mts +146 -0
  222. package/src/number/branded-types/negative-safe-int.mts +173 -0
  223. package/src/number/branded-types/negative-safe-int.test.mts +120 -0
  224. package/src/number/branded-types/non-positive-finite-number.mts +191 -0
  225. package/src/number/branded-types/non-positive-finite-number.test.mts +286 -0
  226. package/src/number/branded-types/non-positive-int.mts +251 -0
  227. package/src/number/branded-types/non-positive-int.test.mts +197 -0
  228. package/src/number/branded-types/non-positive-safe-int.mts +147 -0
  229. package/src/number/branded-types/non-positive-safe-int.test.mts +223 -0
  230. package/src/number/branded-types/non-zero-finite-number.mts +14 -22
  231. package/src/number/branded-types/non-zero-finite-number.test.mts +0 -12
  232. package/src/number/branded-types/non-zero-int.mts +10 -32
  233. package/src/number/branded-types/non-zero-int.test.mts +0 -20
  234. package/src/number/branded-types/non-zero-int16.mts +8 -32
  235. package/src/number/branded-types/non-zero-int16.test.mts +0 -30
  236. package/src/number/branded-types/non-zero-int32.mts +8 -32
  237. package/src/number/branded-types/non-zero-int32.test.mts +0 -30
  238. package/src/number/branded-types/non-zero-safe-int.mts +10 -37
  239. package/src/number/branded-types/non-zero-safe-int.test.mts +0 -32
  240. package/src/number/branded-types/non-zero-uint16.mts +8 -22
  241. package/src/number/branded-types/non-zero-uint16.test.mts +0 -16
  242. package/src/number/branded-types/non-zero-uint32.mts +8 -22
  243. package/src/number/branded-types/non-zero-uint32.test.mts +0 -16
  244. package/src/number/branded-types/positive-safe-int.mts +1 -1
  245. package/src/number/branded-types/safe-int.mts +2 -2
  246. package/src/number/branded-types/safe-uint.mts +1 -1
  247. package/src/number/index.mts +1 -0
  248. package/src/number/num-arithmetic-types.mts +265 -0
  249. package/src/number/num-arithmetic-types.test.mts +130 -0
  250. package/src/number/num-arithmetic.test.mts +102 -0
  251. package/src/number/num.mts +99 -18
  252. package/src/number/num.test.mts +2 -2
  253. package/src/number/refined-number-utils.mts +19 -9
  254. package/src/object/object.mts +2 -2
  255. package/src/others/fast-deep-equal.mts +0 -2
  256. package/src/others/map-nullable.test.mts +4 -3
  257. package/src/others/unknown-to-string.mts +2 -2
@@ -130,12 +130,12 @@ export declare const SafeUint: {
130
130
  readonly NaNValue: false;
131
131
  readonly Finite: true;
132
132
  readonly Int: true;
133
- readonly "!=0": true;
134
133
  readonly "> -2^16": true;
135
134
  readonly "> -2^32": true;
136
135
  readonly ">= -2^15": true;
137
136
  readonly ">= -2^31": true;
138
137
  readonly ">=0": true;
138
+ readonly "!=0": true;
139
139
  readonly SafeInt: true;
140
140
  } & Readonly<{
141
141
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
@@ -4,7 +4,7 @@ const typeNameInMessage = 'a non-negative safe integer';
4
4
  const { MAX_VALUE, MIN_VALUE, add, castType, clamp, div, is, max: max_, min: min_, mul, pow, random, sub, } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger({
5
5
  integerOrSafeInteger: 'SafeInteger',
6
6
  MIN_VALUE: 0,
7
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer, ts-data-forge/prefer-as-int
7
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
8
8
  MAX_VALUE: Number.MAX_SAFE_INTEGER,
9
9
  typeNameInMessage,
10
10
  });
@@ -236,12 +236,12 @@ export declare const Uint: {
236
236
  readonly NaNValue: false;
237
237
  readonly Finite: true;
238
238
  readonly Int: true;
239
- readonly "!=0": true;
240
239
  readonly "> -2^16": true;
241
240
  readonly "> -2^32": true;
242
241
  readonly ">= -2^15": true;
243
242
  readonly ">= -2^31": true;
244
243
  readonly ">=0": true;
244
+ readonly "!=0": true;
245
245
  } & Readonly<{
246
246
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
247
247
  }>>) => import("ts-type-forge").NonNegativeInt;
@@ -134,12 +134,12 @@ export declare const Uint16: {
134
134
  readonly NaNValue: false;
135
135
  readonly Finite: true;
136
136
  readonly Int: true;
137
- readonly "!=0": true;
138
137
  readonly "> -2^16": true;
139
138
  readonly "> -2^32": true;
140
139
  readonly ">= -2^15": true;
141
140
  readonly ">= -2^31": true;
142
141
  readonly ">=0": true;
142
+ readonly "!=0": true;
143
143
  readonly "< 2^16": true;
144
144
  readonly "< 2^31": true;
145
145
  readonly "< 2^32": true;
@@ -130,12 +130,12 @@ export declare const Uint32: {
130
130
  readonly NaNValue: false;
131
131
  readonly Finite: true;
132
132
  readonly Int: true;
133
- readonly "!=0": true;
134
133
  readonly "> -2^16": true;
135
134
  readonly "> -2^32": true;
136
135
  readonly ">= -2^15": true;
137
136
  readonly ">= -2^31": true;
138
137
  readonly ">=0": true;
138
+ readonly "!=0": true;
139
139
  readonly "< 2^32": true;
140
140
  readonly SafeInt: true;
141
141
  } & Readonly<{
@@ -1,5 +1,6 @@
1
1
  export * from './branded-types/index.mjs';
2
2
  export * from './enum/index.mjs';
3
+ export * from './num-arithmetic-types.mjs';
3
4
  export * from './num.mjs';
4
5
  export * from './refined-number-utils.mjs';
5
6
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/number/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/number/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC"}
@@ -2,9 +2,15 @@ export { FiniteNumber, asFiniteNumber, isFiniteNumber } from './branded-types/fi
2
2
  export { Int, asInt, isInt } from './branded-types/int.mjs';
3
3
  export { Int16, asInt16, isInt16 } from './branded-types/int16.mjs';
4
4
  export { Int32, asInt32, isInt32 } from './branded-types/int32.mjs';
5
+ export { NegativeFiniteNumber, asNegativeFiniteNumber, isNegativeFiniteNumber } from './branded-types/negative-finite-number.mjs';
6
+ export { NegativeInt, asNegativeInt, isNegativeInt } from './branded-types/negative-int.mjs';
7
+ export { NegativeSafeInt, asNegativeSafeInt, isNegativeSafeInt } from './branded-types/negative-safe-int.mjs';
5
8
  export { NonNegativeFiniteNumber, asNonNegativeFiniteNumber, isNonNegativeFiniteNumber } from './branded-types/non-negative-finite-number.mjs';
6
9
  export { NonNegativeInt16, asNonNegativeInt16, isNonNegativeInt16 } from './branded-types/non-negative-int16.mjs';
7
10
  export { NonNegativeInt32, asNonNegativeInt32, isNonNegativeInt32 } from './branded-types/non-negative-int32.mjs';
11
+ export { NonPositiveFiniteNumber, asNonPositiveFiniteNumber, isNonPositiveFiniteNumber } from './branded-types/non-positive-finite-number.mjs';
12
+ export { NonPositiveInt, asNonPositiveInt, isNonPositiveInt } from './branded-types/non-positive-int.mjs';
13
+ export { NonPositiveSafeInt, asNonPositiveSafeInt, isNonPositiveSafeInt } from './branded-types/non-positive-safe-int.mjs';
8
14
  export { NonZeroFiniteNumber, asNonZeroFiniteNumber, isNonZeroFiniteNumber } from './branded-types/non-zero-finite-number.mjs';
9
15
  export { NonZeroInt, asNonZeroInt, isNonZeroInt } from './branded-types/non-zero-int.mjs';
10
16
  export { NonZeroInt16, asNonZeroInt16, isNonZeroInt16 } from './branded-types/non-zero-int16.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,74 @@
1
+ import { type FiniteNumber, type Int, type NegativeFiniteNumber, type NegativeInt, type NegativeNumber, type NegativeSafeInt, type NonNegativeFiniteNumber, type NonNegativeNumber, type NonPositiveFiniteNumber, type NonPositiveInt, type NonPositiveNumber, type NonPositiveSafeInt, type NonZeroFiniteNumber, type NonZeroInt, type NonZeroNumber, type NonZeroSafeInt, type PositiveFiniteNumber, type PositiveInt, type PositiveNumber, type PositiveSafeInt, type SafeInt, type SafeUint, type Uint } from 'ts-type-forge';
2
+ /**
3
+ * Internal type-level arithmetic for {@link Num}'s `add`/`sub`/`mul`/`div`.
4
+ *
5
+ * The result type of a binary operation is computed from two independent axes of
6
+ * each operand:
7
+ *
8
+ * - **Sign** — `pos | neg | nonneg | nonpos | nonzero | any`, derived from the
9
+ * brand's sign keys and combined with a small boolean algebra over the facts
10
+ * `>= 0`, `<= 0`, `!= 0`.
11
+ * - **Level** — `safeint | int | finite | number`, derived from the brand's
12
+ * level keys.
13
+ *
14
+ * The sign is always computed exactly (so e.g. `neg * neg` becomes `pos`). The
15
+ * level widens on possible overflow (`safeint` results of `+`/`-`/`*` become
16
+ * `int`, since the magnitude may exceed the safe-integer range). No runtime
17
+ * clamping is performed — saturating "stay in the type" behavior is provided by
18
+ * the branded namespaces instead.
19
+ *
20
+ * @internal
21
+ */
22
+ /** Sign classification of a numeric brand. */
23
+ type Sign = 'any' | 'neg' | 'nonneg' | 'nonpos' | 'nonzero' | 'pos';
24
+ /** Level (integer/finite) classification of a numeric brand. */
25
+ type Level = 'finite' | 'int' | 'number' | 'safeint';
26
+ /** Classifies a numeric type's sign. */
27
+ export type SignOf<N> = [N] extends [PositiveNumber] ? 'pos' : [N] extends [NegativeNumber] ? 'neg' : [N] extends [NonNegativeNumber] ? 'nonneg' : [N] extends [NonPositiveNumber] ? 'nonpos' : [N] extends [NonZeroNumber] ? 'nonzero' : 'any';
28
+ /** Classifies a numeric type's level. */
29
+ export type LevelOf<N> = [N] extends [SafeInt] ? 'safeint' : [N] extends [Int] ? 'int' : [N] extends [FiniteNumber] ? 'finite' : 'number';
30
+ type And<A extends boolean, B extends boolean> = [A, B] extends [true, true] ? true : false;
31
+ type Or<A extends boolean, B extends boolean> = true extends A | B ? true : false;
32
+ /** Whether the value is guaranteed `>= 0`. */
33
+ type Ge0<S extends Sign> = S extends 'pos' | 'nonneg' ? true : false;
34
+ /** Whether the value is guaranteed `<= 0`. */
35
+ type Le0<S extends Sign> = S extends 'neg' | 'nonpos' ? true : false;
36
+ /** Whether the value is guaranteed `!= 0`. */
37
+ type Ne0<S extends Sign> = S extends 'pos' | 'neg' | 'nonzero' ? true : false;
38
+ /** Rebuilds a {@link Sign} from the three facts. */
39
+ type FromFacts<ge0 extends boolean, le0 extends boolean, ne0 extends boolean> = ge0 extends true ? ne0 extends true ? 'pos' : 'nonneg' : le0 extends true ? ne0 extends true ? 'neg' : 'nonpos' : ne0 extends true ? 'nonzero' : 'any';
40
+ type NegateSign<S extends Sign> = FromFacts<Le0<S>, Ge0<S>, Ne0<S>>;
41
+ type AddSign<A extends Sign, B extends Sign> = FromFacts<And<Ge0<A>, Ge0<B>>, And<Le0<A>, Le0<B>>, Or<And<And<Ge0<A>, Ge0<B>>, Or<Ne0<A>, Ne0<B>>>, And<And<Le0<A>, Le0<B>>, Or<Ne0<A>, Ne0<B>>>>>;
42
+ type SubSign<A extends Sign, B extends Sign> = AddSign<A, NegateSign<B>>;
43
+ /** Sign of a product/quotient, parameterized by the `!= 0` fact of the result. */
44
+ type MulSignWithNe0<A extends Sign, B extends Sign, ne0 extends boolean> = FromFacts<Or<And<Ge0<A>, Ge0<B>>, And<Le0<A>, Le0<B>>>, Or<And<Ge0<A>, Le0<B>>, And<Le0<A>, Ge0<B>>>, ne0>;
45
+ type MulSign<A extends Sign, B extends Sign> = MulSignWithNe0<A, B, And<Ne0<A>, Ne0<B>>>;
46
+ /** Exact division: nonzero dividend over nonzero divisor stays nonzero. */
47
+ type DivSign<A extends Sign, B extends Sign> = MulSignWithNe0<A, B, Ne0<A>>;
48
+ /** Floor division: flooring can land on `0`, so the result is never `!= 0`. */
49
+ type DivIntSign<A extends Sign, B extends Sign> = MulSignWithNe0<A, B, false>;
50
+ /** Looser of two levels (number > finite > int > safeint). */
51
+ type LooserLevel<LA extends Level, LB extends Level> = 'number' extends LA | LB ? 'number' : 'finite' extends LA | LB ? 'finite' : 'int' extends LA | LB ? 'int' : 'safeint';
52
+ /** `+`/`-`/`*`: looser level, widening `safeint -> int` (overflow may occur). */
53
+ type AddMulLevel<LA extends Level, LB extends Level> = LooserLevel<LA, LB> extends 'safeint' ? 'int' : LooserLevel<LA, LB>;
54
+ /** Exact division yields a (possibly fractional) finite number. */
55
+ type DivLevel<LA extends Level, LB extends Level> = 'number' extends LA | LB ? 'number' : 'finite';
56
+ /** Floor division yields an integer; the safe range is preserved. */
57
+ type DivIntLevel<LA extends Level, LB extends Level> = 'number' extends LA | LB ? 'number' : [LA, LB] extends ['safeint', 'safeint'] ? 'safeint' : 'int';
58
+ type ReconstructNumber<S extends Sign> = S extends 'pos' ? PositiveNumber : S extends 'neg' ? NegativeNumber : S extends 'nonneg' ? NonNegativeNumber : S extends 'nonpos' ? NonPositiveNumber : S extends 'nonzero' ? NonZeroNumber : number;
59
+ type ReconstructFinite<S extends Sign> = S extends 'pos' ? PositiveFiniteNumber : S extends 'neg' ? NegativeFiniteNumber : S extends 'nonneg' ? NonNegativeFiniteNumber : S extends 'nonpos' ? NonPositiveFiniteNumber : S extends 'nonzero' ? NonZeroFiniteNumber : FiniteNumber;
60
+ type ReconstructInt<S extends Sign> = S extends 'pos' ? PositiveInt : S extends 'neg' ? NegativeInt : S extends 'nonneg' ? Uint : S extends 'nonpos' ? NonPositiveInt : S extends 'nonzero' ? NonZeroInt : Int;
61
+ type ReconstructSafeInt<S extends Sign> = S extends 'pos' ? PositiveSafeInt : S extends 'neg' ? NegativeSafeInt : S extends 'nonneg' ? SafeUint : S extends 'nonpos' ? NonPositiveSafeInt : S extends 'nonzero' ? NonZeroSafeInt : SafeInt;
62
+ type Reconstruct<S extends Sign, L extends Level> = L extends 'safeint' ? ReconstructSafeInt<S> : L extends 'int' ? ReconstructInt<S> : L extends 'finite' ? ReconstructFinite<S> : ReconstructNumber<S>;
63
+ /** Result type of {@link Num.add} applied to operands of type `A` and `B`. */
64
+ export type AddResult<A, B> = Reconstruct<AddSign<SignOf<A>, SignOf<B>>, AddMulLevel<LevelOf<A>, LevelOf<B>>>;
65
+ /** Result type of {@link Num.sub} applied to operands of type `A` and `B`. */
66
+ export type SubResult<A, B> = Reconstruct<SubSign<SignOf<A>, SignOf<B>>, AddMulLevel<LevelOf<A>, LevelOf<B>>>;
67
+ /** Result type of {@link Num.mul} applied to operands of type `A` and `B`. */
68
+ export type MulResult<A, B> = Reconstruct<MulSign<SignOf<A>, SignOf<B>>, AddMulLevel<LevelOf<A>, LevelOf<B>>>;
69
+ /** Result type of {@link Num.div} (exact) applied to operands of type `A` and `B`. */
70
+ export type DivResult<A, B> = Reconstruct<DivSign<SignOf<A>, SignOf<B>>, DivLevel<LevelOf<A>, LevelOf<B>>>;
71
+ /** Result type of {@link Num.divInt} (floor) applied to operands of type `A` and `B`. */
72
+ export type DivIntResult<A, B> = Reconstruct<DivIntSign<SignOf<A>, SignOf<B>>, DivIntLevel<LevelOf<A>, LevelOf<B>>>;
73
+ export {};
74
+ //# sourceMappingURL=num-arithmetic-types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"num-arithmetic-types.d.mts","sourceRoot":"","sources":["../../src/number/num-arithmetic-types.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=num-arithmetic-types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"num-arithmetic-types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,6 +1,7 @@
1
1
  import { type Decrement, type FiniteNumber, type Increment, type Index, type Int, type Min, type NaNType, type NegativeIndex, type NonNegativeNumber, type NonZeroNumber, type PositiveNumber, type PositiveSafeIntWithSmallInt, type RelaxedExclude, type SmallInt, type SmallUint } from 'ts-type-forge';
2
2
  import { Result } from '../functional/index.mjs';
3
3
  import { type SmallPositiveInt } from '../types.mjs';
4
+ import { type AddResult, type DivIntResult, type DivResult, type MulResult, type SubResult } from './num-arithmetic-types.mjs';
4
5
  /**
5
6
  * Namespace providing utility functions for number manipulation and validation.
6
7
  *
@@ -395,17 +396,60 @@ export declare namespace Num {
395
396
  export function clamp(target: number, lowerBound: number, upperBound: number): number;
396
397
  export function clamp(lowerBound: number, upperBound: number): (target: number) => number;
397
398
  /**
398
- * Performs type-safe division with compile-time zero-check.
399
+ * Adds two numbers, returning the tightest sound branded result type.
400
+ *
401
+ * The sign of the result is computed exactly (e.g. a non-negative plus a
402
+ * non-negative is non-negative); the integer/finite level is preserved, with
403
+ * `SafeInt` operands widening to `Int` because the sum may exceed the safe
404
+ * range. No clamping is performed — for a result that stays inside a bounded
405
+ * type, use that type's branded `add` instead.
406
+ *
407
+ * @param a - The first addend.
408
+ * @param b - The second addend.
409
+ * @returns `a + b`, typed as the tightest branded type guaranteed to contain
410
+ * it.
411
+ */
412
+ export const add: <A extends number, B extends number>(a: A, b: B) => AddResult<A, B>;
413
+ /**
414
+ * Subtracts `b` from `a`, returning the tightest sound branded result type.
399
415
  *
400
- * This function leverages TypeScript's type system to prevent division by
401
- * zero at compile time. The divisor must be typed as NonZeroNumber or a
402
- * non-zero numeric literal.
416
+ * The sign is computed exactly; the level is preserved (with `SafeInt`
417
+ * widening to `Int`). No clamping — for saturating subtraction that stays in a
418
+ * bounded type (e.g. `Uint.sub` clamping at `0`), use that type's branded
419
+ * `sub`.
403
420
  *
404
- * @param a - The dividend
405
- * @param b - The divisor (must be non-zero, enforced by types)
406
- * @returns The quotient of a / b
421
+ * @param a - The minuend.
422
+ * @param b - The subtrahend.
423
+ * @returns `a - b`, typed as the tightest branded type guaranteed to contain
424
+ * it.
425
+ */
426
+ export const sub: <A extends number, B extends number>(a: A, b: B) => SubResult<A, B>;
427
+ /**
428
+ * Multiplies two numbers, returning the tightest sound branded result type.
429
+ *
430
+ * The sign follows the usual product rule (e.g. negative times negative is
431
+ * positive); the level is preserved (with `SafeInt` widening to `Int`). No
432
+ * clamping.
433
+ *
434
+ * @param a - The first factor.
435
+ * @param b - The second factor.
436
+ * @returns `a * b`, typed as the tightest branded type guaranteed to contain
437
+ * it.
438
+ */
439
+ export const mul: <A extends number, B extends number>(a: A, b: B) => MulResult<A, B>;
440
+ /**
441
+ * Performs type-safe exact division with a compile-time zero-check.
442
+ *
443
+ * The divisor must be typed as `NonZeroNumber` or a non-zero numeric literal.
444
+ * The result sign follows the quotient rule; because exact division can be
445
+ * fractional, the level is `finite` (or `number`).
446
+ *
447
+ * @param a - The dividend.
448
+ * @param b - The divisor (must be non-zero, enforced by types).
449
+ * @returns `a / b`, typed as the tightest branded type guaranteed to contain
450
+ * it.
407
451
  */
408
- export const div: (a: number, b: NonZeroNumber | SmallInt<"!=0">) => number;
452
+ export const div: <A extends number, B extends NonZeroNumber | SmallInt<"!=0">>(a: A, b: B) => DivResult<A, B>;
409
453
  /**
410
454
  * Performs integer division using floor division.
411
455
  *
@@ -419,7 +463,7 @@ export declare namespace Num {
419
463
  * @param b - The divisor
420
464
  * @returns The integer quotient, or `NaN` if b is zero
421
465
  */
422
- export const divInt: (a: number, b: NonZeroNumber | SmallInt<"!=0">) => number;
466
+ export const divInt: <A extends number, B extends NonZeroNumber | SmallInt<"!=0">>(a: A, b: B) => DivIntResult<A, B>;
423
467
  /**
424
468
  * Rounds a number to a specified number of decimal places.
425
469
  *
@@ -1 +1 @@
1
- {"version":3,"file":"num.d.mts","sourceRoot":"","sources":["../../src/number/num.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"num.d.mts","sourceRoot":"","sources":["../../src/number/num.mts"],"names":[],"mappings":"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"}
@@ -106,7 +106,7 @@ var Num;
106
106
  // 有効な場合のみ採用することで空文字・空白のみ・末尾不正をまとめて弾く。
107
107
  return Number.isNaN(viaNumber) || Number.isNaN(Number.parseInt(s, 10))
108
108
  ? err(new Error(`safeParseInt: "${s}" is not a valid base-10 integer`))
109
- : // eslint-disable-next-line total-functions/no-unsafe-type-assertion, ts-data-forge/prefer-as-int
109
+ : // eslint-disable-next-line total-functions/no-unsafe-type-assertion
110
110
  ok(Math.trunc(viaNumber));
111
111
  };
112
112
  /**
@@ -182,7 +182,7 @@ var Num;
182
182
  !Number.isFinite(viaNumber) ||
183
183
  Number.isNaN(Number.parseFloat(s))
184
184
  ? err(new Error(`safeParseFloat: "${s}" is not a valid finite number`))
185
- : // eslint-disable-next-line total-functions/no-unsafe-type-assertion, ts-data-forge/prefer-as-int
185
+ : // eslint-disable-next-line total-functions/no-unsafe-type-assertion
186
186
  ok(viaNumber);
187
187
  };
188
188
  /**
@@ -381,19 +381,68 @@ var Num;
381
381
  }
382
382
  Num.clamp = clamp;
383
383
  /**
384
- * Performs type-safe division with compile-time zero-check.
384
+ * Adds two numbers, returning the tightest sound branded result type.
385
+ *
386
+ * The sign of the result is computed exactly (e.g. a non-negative plus a
387
+ * non-negative is non-negative); the integer/finite level is preserved, with
388
+ * `SafeInt` operands widening to `Int` because the sum may exceed the safe
389
+ * range. No clamping is performed — for a result that stays inside a bounded
390
+ * type, use that type's branded `add` instead.
391
+ *
392
+ * @param a - The first addend.
393
+ * @param b - The second addend.
394
+ * @returns `a + b`, typed as the tightest branded type guaranteed to contain
395
+ * it.
396
+ */
397
+ Num.add = (a, b) =>
398
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
399
+ (a + b);
400
+ /**
401
+ * Subtracts `b` from `a`, returning the tightest sound branded result type.
385
402
  *
386
- * This function leverages TypeScript's type system to prevent division by
387
- * zero at compile time. The divisor must be typed as NonZeroNumber or a
388
- * non-zero numeric literal.
403
+ * The sign is computed exactly; the level is preserved (with `SafeInt`
404
+ * widening to `Int`). No clamping — for saturating subtraction that stays in a
405
+ * bounded type (e.g. `Uint.sub` clamping at `0`), use that type's branded
406
+ * `sub`.
389
407
  *
390
- * @param a - The dividend
391
- * @param b - The divisor (must be non-zero, enforced by types)
392
- * @returns The quotient of a / b
408
+ * @param a - The minuend.
409
+ * @param b - The subtrahend.
410
+ * @returns `a - b`, typed as the tightest branded type guaranteed to contain
411
+ * it.
412
+ */
413
+ Num.sub = (a, b) =>
414
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
415
+ (a - b);
416
+ /**
417
+ * Multiplies two numbers, returning the tightest sound branded result type.
418
+ *
419
+ * The sign follows the usual product rule (e.g. negative times negative is
420
+ * positive); the level is preserved (with `SafeInt` widening to `Int`). No
421
+ * clamping.
422
+ *
423
+ * @param a - The first factor.
424
+ * @param b - The second factor.
425
+ * @returns `a * b`, typed as the tightest branded type guaranteed to contain
426
+ * it.
427
+ */
428
+ Num.mul = (a, b) =>
429
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
430
+ (a * b);
431
+ /**
432
+ * Performs type-safe exact division with a compile-time zero-check.
433
+ *
434
+ * The divisor must be typed as `NonZeroNumber` or a non-zero numeric literal.
435
+ * The result sign follows the quotient rule; because exact division can be
436
+ * fractional, the level is `finite` (or `number`).
437
+ *
438
+ * @param a - The dividend.
439
+ * @param b - The divisor (must be non-zero, enforced by types).
440
+ * @returns `a / b`, typed as the tightest branded type guaranteed to contain
441
+ * it.
393
442
  */
394
443
  Num.div = (a, b) =>
395
- // eslint-disable-next-line total-functions/no-partial-division
396
- a / b;
444
+ // eslint-disable-next-line total-functions/no-partial-division, total-functions/no-unsafe-type-assertion
445
+ (a / b);
397
446
  /**
398
447
  * Performs integer division using floor division.
399
448
  *
@@ -407,9 +456,12 @@ var Num;
407
456
  * @param b - The divisor
408
457
  * @returns The integer quotient, or `NaN` if b is zero
409
458
  */
410
- Num.divInt = (a, b) =>
411
- // eslint-disable-next-line total-functions/no-partial-division
412
- Math.floor(Math.floor(a) / Math.floor(b));
459
+ Num.divInt = (a, b) => {
460
+ // eslint-disable-next-line total-functions/no-partial-division
461
+ const quotient = Math.floor(Math.floor(a) / Math.floor(b));
462
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
463
+ return quotient;
464
+ };
413
465
  /**
414
466
  * Rounds a number to a specified number of decimal places.
415
467
  *
@@ -435,7 +487,7 @@ var Num;
435
487
  * @param num - The number to round
436
488
  * @returns The rounded integer as an Int branded type
437
489
  */
438
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, ts-data-forge/prefer-as-int
490
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
439
491
  Num.roundToInt = (num) => Math.trunc(num + 0.5);
440
492
  /**
441
493
  * Creates a reusable rounding function with a fixed precision.
@@ -1 +1 @@
1
- {"version":3,"file":"num.mjs","sources":["../../src/number/num.mts"],"sourcesContent":[null],"names":["Result.err","Result.ok"],"mappings":";;;;AAsBA;;;;;;;;;;;;;;AAcG;IACc;AAAjB,CAAA,UAAiB,GAAG,EAAA;AAClB;;;;;;;;;;;;;;;AAeG;IACU,GAAA,CAAA,IAAI,GAA2B,MAAM;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DG;AACU,IAAA,GAAA,CAAA,YAAY,GAAG,CAAC,CAAS,KAAwB;AAC5D,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC;;;;AAK3B,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AACnE,cAAEA,GAAU,CACR,IAAI,KAAK,CAAC,CAAA,eAAA,EAAkB,CAAC,CAAA,gCAAA,CAAkC,CAAC;AAEpE;gBACEC,EAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAQ,CAAC;AAC7C,IAAA,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DG;AACU,IAAA,GAAA,CAAA,cAAc,GAAG,CAAC,CAAS,KAAiC;AACvE,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC;;;;;AAM3B,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5B,YAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AACjC,cAAED,GAAU,CACR,IAAI,KAAK,CAAC,CAAA,iBAAA,EAAoB,CAAC,CAAA,8BAAA,CAAgC,CAAC;AAEpE;AACE,gBAAAC,EAAS,CAAC,SAAyB,CAAC;AAC1C,IAAA,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;IACU,GAAA,CAAA,SAAS,GAAG,CACvB,GAAM,KAC0C,GAAG,KAAK,CAAC;AAI3D;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;IACU,GAAA,CAAA,aAAa,GAAG,CAC3B,GAAM,KAEN,GAAG,IAAI,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;AAsBG;IACU,GAAA,CAAA,UAAU,GAAG,CACxB,GAAM,KAEN,GAAG,GAAG,CAAC;AAET;;;;;;;;;;;;;;;;;;AAkBG;IACU,GAAA,CAAA,SAAS,GACpB,CAAC,UAAkB,EAAE,UAAkB,KACvC,CAAC,CAAS,KACR,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU;AAErC;;;;;;;;;;;;;;;;;;AAkBG;IACU,GAAA,CAAA,kBAAkB,GAC7B,CAAC,UAAkB,EAAE,UAAkB,KACvC,CAAC,CAAS,KACR,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU;AA0BtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;IACU,GAAA,CAAA,aAAa,GACxB,CAA2C,UAAa,EAAE,UAAa,KACvE,CAAC,CAAS,KACR,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;IACU,GAAA,CAAA,sBAAsB,GACjC,CAA2C,UAAa,EAAE,UAAa,KACvE,CAAC,CAAS,KACR,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU;IAsCjE,SAAgB,KAAK,CACnB,GAAG,IAEkD,EAAA;AAErD,QAAA,QAAQ,IAAI,CAAC,MAAM;YACjB,KAAK,CAAC,EAAE;gBACN,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,IAAI;AAE7C,gBAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;AAC5B,sBAAE;AACF,sBAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;YAGxD,KAAK,CAAC,EAAE;AACN,gBAAA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,IAAI;AAErC,gBAAA,OAAO,CAAC,MAAc,KACpB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC;;;;AAlB7B,IAAA,GAAA,CAAA,KAAK,QAqBpB;AAED;;;;;;;;;;AAUG;AACU,IAAA,GAAA,CAAA,GAAG,GAAG,CAAC,CAAS,EAAE,CAAkC;;IAE/D,CAAC,GAAG,CAAC;AAEP;;;;;;;;;;;;AAYG;AACU,IAAA,GAAA,CAAA,MAAM,GAAG,CACpB,CAAS,EACT,CAAkC;;AAGlC,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3C;;;;;;;;;AASG;AACU,IAAA,GAAA,CAAA,OAAO,GAAG,CACrB,GAAW,EACX,SAAsC,KAC5B;AACV,QAAA,MAAM,KAAK,GAAG,EAAE,IAAI,SAAS;;QAG7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK;AACxC,IAAA,CAAC;AAED;;;;;;;;;AASG;;AAEU,IAAA,GAAA,CAAA,UAAU,GAAG,CAAC,GAAW,KAAU,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAQ;AAE5E;;;;;;;;;AASG;AACU,IAAA,GAAA,CAAA,KAAK,GAAG,CACnB,KAAkC,KACL;AAC7B,QAAA,MAAM,SAAS,GAAG,EAAE,IAAI,KAAK;QAE7B,OAAO,CAAC,MAAc;;QAEpB,GAAA,CAAA,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,SAAS;AAC9C,IAAA,CAAC;AAED;;;;;;;;;;AAUG;IACU,GAAA,CAAA,gBAAgB,GAAG,CAC9B,GAAM,KAEN,MAAM,CAAC,KAAK,CAAC,GAAG;AACd,UAAE;AACF;AACG,YAAA,GAAkC;AAEzC;;;;;;;;;;AAUG;AACU,IAAA,GAAA,CAAA,SAAS,GAAG,CAAsB,CAAI;;AAEjD,KAAC,CAAC,GAAG,CAAC,CAAiB;AAEzB;;;;;;;;;;AAUG;AACU,IAAA,GAAA,CAAA,SAAS,GAAG,CAA6B,CAAI;;AAExD,KAAC,CAAC,GAAG,CAAC,CAAiB;AAC3B,CAAC,EA5lBgB,GAAG,KAAH,GAAG,GAAA,EAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"num.mjs","sources":["../../src/number/num.mts"],"sourcesContent":[null],"names":["Result.err","Result.ok"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type Brand, type ChangeBaseBrand, type GetBrandValuePart, type Int, type IntersectBrand, type NonNegativeNumber, type NonZeroNumber, type RelaxedExclude, type TypeEq, type UnknownBrand, type UnwrapBrandFalseKeys, type UnwrapBrandTrueKeys, type WithSmallInt } from 'ts-type-forge';
1
+ import { type Brand, type ChangeBaseBrand, type GetBrandValuePart, type Int, type IntersectBrand, type NonNegativeNumber, type NonZeroNumber, type PositiveNumber, type RelaxedExclude, type TypeEq, type UnknownBrand, type UnwrapBrandFalseKeys, type UnwrapBrandTrueKeys, type WithSmallInt } from 'ts-type-forge';
2
2
  /** @internal */
3
3
  export declare namespace TsDataForgeInternals {
4
4
  /**
@@ -40,7 +40,7 @@ export declare namespace TsDataForgeInternals {
40
40
  * @template N - A branded number type
41
41
  * @internal
42
42
  */
43
- export type ToNonNegative<N extends UnknownNumberBrand> = IntersectBrand<N, NonNegativeNumber>;
43
+ export type ToNonNegative<N extends UnknownNumberBrand> = '!=0' extends UnwrapBrandTrueKeys<N> ? IntersectBrand<N, PositiveNumber> : IntersectBrand<N, NonNegativeNumber>;
44
44
  /**
45
45
  * Removes the non-zero brand constraint from a branded number type. Used
46
46
  * when operations may produce zero values.
@@ -48,7 +48,7 @@ export declare namespace TsDataForgeInternals {
48
48
  * @template N - A branded number type
49
49
  * @internal
50
50
  */
51
- export type RemoveNonZeroBrandKey<N extends UnknownNumberBrand> = Brand<GetBrandValuePart<N>, RelaxedExclude<UnwrapBrandTrueKeys<N>, '!=0'> & string, UnwrapBrandFalseKeys<N> & string>;
51
+ export type RemoveNonZeroBrandKey<N extends UnknownNumberBrand> = Brand<GetBrandValuePart<N>, RelaxedExclude<UnwrapBrandTrueKeys<N>, '!=0'> & string, RelaxedExclude<UnwrapBrandFalseKeys<N>, '<=0' | '>=0'> & string>;
52
52
  type CastToInt<N> = N extends Int ? N : never;
53
53
  /**
54
54
  * Generates a type-safe API for a branded number type based on its
@@ -66,7 +66,9 @@ export declare namespace TsDataForgeInternals {
66
66
  * 'positive' | 'range'
67
67
  * @internal
68
68
  */
69
- export type NumberClass<N extends UnknownNumberBrand, classes extends 'int' | 'non-negative' | 'positive' | 'range'> = ('int' extends classes ? unknown : 'positive' extends classes ? Readonly<{
69
+ /** The closed binary arithmetic operations a branded namespace may expose. */
70
+ export type NumberClassBinOp = 'add' | 'div' | 'mul' | 'sub';
71
+ export type NumberClass<N extends UnknownNumberBrand, classes extends 'int' | 'non-negative' | 'positive' | 'range', binOps extends NumberClassBinOp = NumberClassBinOp> = ('int' extends classes ? unknown : 'positive' extends classes ? Readonly<{
70
72
  floor: (x: N, y: N) => RemoveNonZeroBrandKey<ToInt<N>>;
71
73
  ceil: (x: N, y: N) => ToInt<N>;
72
74
  round: (x: N, y: N) => RemoveNonZeroBrandKey<ToInt<N>>;
@@ -86,16 +88,17 @@ export declare namespace TsDataForgeInternals {
86
88
  MIN_VALUE: number;
87
89
  MAX_VALUE: number;
88
90
  clamp: (a: number) => N;
89
- }> : unknown) & Readonly<{
91
+ }> : unknown) & Pick<Readonly<{
92
+ add: (x: N, y: N) => N;
93
+ sub: (x: N, y: N) => N;
94
+ mul: (x: N, y: N) => N;
95
+ div: (x: N, y: ToNonZero<N>) => N;
96
+ }>, binOps> & Readonly<{
90
97
  is: (a: number) => a is N;
91
98
  min: (...values: readonly N[]) => N;
92
99
  max: (...values: readonly N[]) => N;
93
100
  random: (min: N, max: N) => N;
94
101
  pow: (x: N, y: N) => N;
95
- add: (x: N, y: N) => N;
96
- sub: (x: N, y: N) => N;
97
- mul: (x: N, y: N) => N;
98
- div: (x: N, y: ToNonZero<N>) => N;
99
102
  }>;
100
103
  type OperatorsForInteger<ElementType extends Int, MIN_VALUE extends number, MAX_VALUE extends number, ElementTypeWithSmallInt extends WithSmallInt<ElementType> = WithSmallInt<ElementType>> = Readonly<{
101
104
  MIN_VALUE: MIN_VALUE;
@@ -1 +1 @@
1
- {"version":3,"file":"refined-number-utils.d.mts","sourceRoot":"","sources":["../../src/number/refined-number-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,GAAG,EACR,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAKvB,gBAAgB;AAChB,yBAAiB,oBAAoB,CAAC;IACpC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAiB,kBAAkB,CAAC;QAclC,KAAK,kBAAkB,GAAG,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAEhE;;;;;WAKG;QACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,kBAAkB,IAAI,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEzE,KAAK,SAAS,CAAC,CAAC,SAAS,kBAAkB,IAAI,cAAc,CAC3D,CAAC,EACD,aAAa,CACd,CAAC;QAMF,KAAK,wBAAwB,CAAC,CAAC,SAAS,GAAG,IAAI,YAAY,CACzD,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CACxB,CAAC;QAEF;;;;;WAKG;QACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,kBAAkB,IAAI,cAAc,CACtE,CAAC,EACD,iBAAiB,CAClB,CAAC;QAEF;;;;;;WAMG;QACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,IAAI,KAAK,CACrE,iBAAiB,CAAC,CAAC,CAAC,EACpB,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EACtD,oBAAoB,CAAC,CAAC,CAAC,GAAG,MAAM,CACjC,CAAC;QAEF,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;QAE9C;;;;;;;;;;;;;;;WAeG;QACH,MAAM,MAAM,WAAW,CACrB,CAAC,SAAS,kBAAkB,EAC5B,OAAO,SAAS,KAAK,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,IAC3D,CAAC,KAAK,SAAS,OAAO,GACtB,OAAO,GACP,UAAU,SAAS,OAAO,GACxB,QAAQ,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACxD,CAAC,GACF,QAAQ,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;SACjC,CAAC,CAAC,GACP,CAAC,cAAc,SAAS,OAAO,GAC3B,QAAQ,CAAC;YACP,SAAS,EAAE,MAAM,CAAC;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;SACzB,CAAC,GACF,OAAO,CAAC,GACZ,CAAC,cAAc,SAAS,OAAO,GAC3B,OAAO,GACP,UAAU,SAAS,OAAO,GACxB,OAAO,GACP,QAAQ,CAAC;YACP,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;SACjC,CAAC,CAAC,GACT,CAAC,UAAU,SAAS,OAAO,GACvB,QAAQ,CAAC;YACP,SAAS,EAAE,MAAM,CAAC;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;SACzB,CAAC,GACF,OAAO,CAAC,GACZ,CAAC,OAAO,SAAS,OAAO,GACpB,QAAQ,CAAC;YACP,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;SACzB,CAAC,GACF,OAAO,CAAC,GACZ,QAAQ,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;YACpC,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACvB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACvB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACvB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACvB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACnC,CAAC,CAAC;QA+DL,KAAK,mBAAmB,CACtB,WAAW,SAAS,GAAG,EACvB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,MAAM,EACxB,uBAAuB,SAAS,YAAY,CAAC,WAAW,CAAC,GACvD,YAAY,CAAC,WAAW,CAAC,IACzB,QAAQ,CAAC;YACX,SAAS,EAAE,SAAS,CAAC;YACrB,SAAS,EAAE,SAAS,CAAC;YAErB,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC;YAEpC,GAAG,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC;YAEhE,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,uBAAuB,EAAE,KAAK,WAAW,CAAC;YAEpE,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,uBAAuB,EAAE,KAAK,WAAW,CAAC;YAEpE,GAAG,EAAE,CACH,CAAC,EAAE,uBAAuB,EAC1B,CAAC,EAAE,uBAAuB,KACvB,WAAW,CAAC;YAEjB,GAAG,EAAE,CACH,CAAC,EAAE,uBAAuB,EAC1B,CAAC,EAAE,uBAAuB,KACvB,WAAW,CAAC;YAEjB,GAAG,EAAE,CACH,CAAC,EAAE,uBAAuB,EAC1B,CAAC,EAAE,uBAAuB,KACvB,WAAW,CAAC;YAEjB,GAAG,EAAE,CACH,CAAC,EAAE,uBAAuB,EAC1B,CAAC,EAAE,uBAAuB,KACvB,WAAW,CAAC;YAEjB,GAAG,EAAE,CACH,CAAC,EAAE,uBAAuB,EAC1B,CAAC,EAAE,wBAAwB,CAAC,WAAW,CAAC,KACrC,WAAW,CAAC;YAEjB,MAAM,EAAE,CACN,GAAG,CAAC,EAAE,uBAAuB,EAC7B,GAAG,CAAC,EAAE,uBAAuB,KAC1B,WAAW,CAAC;YAEjB,aAAa,EAAE,CACb,GAAG,CAAC,EAAE,uBAAuB,EAC7B,GAAG,CAAC,EAAE,uBAAuB,KAC1B,WAAW,CAAC;YAEjB,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC;YAEtD,KAAK,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,GACxD,SAAS,GACT,CAAC,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;SAChC,CAAC,CAAC;QAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAsEG;QACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,WAAW,SAAS,GAAG,EACvB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,MAAM,EACxB,6EAMC,QAAQ,CAAC;YACV,oBAAoB,EAAE,SAAS,GAAG,aAAa,CAAC;YAChD,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,SAAS,EAAE,SAAS,CAAC;YACrB,SAAS,EAAE,SAAS,CAAC;YACrB,iBAAiB,EAAE,MAAM,CAAC;SAC3B,CAAC,KAAG,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CA8GzD,CAAC;QAEF,KAAK,iBAAiB,CACpB,WAAW,SAAS,kBAAkB,EACtC,SAAS,SAAS,MAAM,GAAG,SAAS,EACpC,SAAS,SAAS,MAAM,GAAG,SAAS,IAClC,QAAQ,CAAC;YACX,SAAS,EAAE,SAAS,CAAC;YACrB,SAAS,EAAE,SAAS,CAAC;YAErB,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC;YAEpC,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC;YACpD,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,WAAW,EAAE,KAAK,WAAW,CAAC;YACxD,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,WAAW,EAAE,KAAK,WAAW,CAAC;YACxD,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,KAAK,WAAW,CAAC;YACrD,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,KAAK,WAAW,CAAC;YACrD,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,KAAK,WAAW,CAAC;YACrD,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,KAAK,WAAW,CAAC;YACrD,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,WAAW,CAAC;YAChE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,WAAW,KAAK,WAAW,CAAC;YAC9D,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,WAAW,KAAK,WAAW,CAAC;YAErE,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC;YAEtD,KAAK,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,GACxD,SAAS,GACT,CAAC,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;SAChC,CAAC,CAAC;QAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAoEG;QACH,MAAM,CAAC,MAAM,iBAAiB,GAC5B,WAAW,SAAS,kBAAkB,EACtC,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,MAAM,EACxB,uDAKC,QAAQ,CAAC;YACV,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,SAAS,EAAE,SAAS,CAAC;YACrB,SAAS,EAAE,SAAS,CAAC;YACrB,iBAAiB,EAAE,MAAM,CAAC;SAC3B,CAAC,KAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAoFvD,CAAC;;KACH;CACF"}
1
+ {"version":3,"file":"refined-number-utils.d.mts","sourceRoot":"","sources":["../../src/number/refined-number-utils.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"refined-number-utils.mjs","sources":["../../src/number/refined-number-utils.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refined-number-utils.mjs","sources":["../../src/number/refined-number-utils.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -2,9 +2,15 @@ import '../number/branded-types/finite-number.mjs';
2
2
  import '../number/branded-types/int.mjs';
3
3
  import '../number/branded-types/int16.mjs';
4
4
  import '../number/branded-types/int32.mjs';
5
+ import '../number/branded-types/negative-finite-number.mjs';
6
+ import '../number/branded-types/negative-int.mjs';
7
+ import '../number/branded-types/negative-safe-int.mjs';
5
8
  import '../number/branded-types/non-negative-finite-number.mjs';
6
9
  import '../number/branded-types/non-negative-int16.mjs';
7
10
  import '../number/branded-types/non-negative-int32.mjs';
11
+ import '../number/branded-types/non-positive-finite-number.mjs';
12
+ import '../number/branded-types/non-positive-int.mjs';
13
+ import '../number/branded-types/non-positive-safe-int.mjs';
8
14
  import '../number/branded-types/non-zero-finite-number.mjs';
9
15
  import '../number/branded-types/non-zero-int.mjs';
10
16
  import '../number/branded-types/non-zero-int16.mjs';
@@ -257,9 +263,9 @@ const deepOmitImpl = (record, path) => {
257
263
  if (!isNonEmpty(path))
258
264
  return record;
259
265
  const head = path[0];
260
- const tail = path.slice(1);
261
266
  if (!hasKey(record, head))
262
267
  return record;
268
+ const tail = path.slice(1);
263
269
  if (!isNonEmpty(tail)) {
264
270
  return Object.fromEntries(Object.entries(record).filter(([k]) => k !== head));
265
271
  }