ts-data-forge 3.3.0 → 3.3.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 (424) hide show
  1. package/README.md +37 -13
  2. package/dist/array/impl/array-utils-creation.d.mts +116 -0
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
  4. package/dist/array/impl/array-utils-creation.mjs +110 -0
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -0
  6. package/dist/array/impl/array-utils-element-access.d.mts +61 -0
  7. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
  8. package/dist/array/impl/array-utils-element-access.mjs +66 -0
  9. package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
  10. package/dist/array/impl/array-utils-iterators.d.mts +59 -0
  11. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
  12. package/dist/array/impl/array-utils-iterators.mjs +104 -0
  13. package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
  14. package/dist/array/impl/array-utils-modification.d.mts +154 -0
  15. package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
  16. package/dist/array/impl/array-utils-modification.mjs +139 -0
  17. package/dist/array/impl/array-utils-modification.mjs.map +1 -0
  18. package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
  19. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
  20. package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
  21. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
  22. package/dist/array/impl/array-utils-search.d.mts +179 -0
  23. package/dist/array/impl/array-utils-search.d.mts.map +1 -0
  24. package/dist/array/impl/array-utils-search.mjs +153 -0
  25. package/dist/array/impl/array-utils-search.mjs.map +1 -0
  26. package/dist/array/impl/array-utils-set-op.d.mts +100 -0
  27. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
  28. package/dist/array/impl/array-utils-set-op.mjs +137 -0
  29. package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
  30. package/dist/array/impl/array-utils-size.d.mts +24 -0
  31. package/dist/array/impl/array-utils-size.d.mts.map +1 -0
  32. package/dist/array/impl/array-utils-size.mjs +28 -0
  33. package/dist/array/impl/array-utils-size.mjs.map +1 -0
  34. package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
  35. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
  36. package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
  37. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
  38. package/dist/array/impl/array-utils-slicing.d.mts +120 -0
  39. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
  40. package/dist/array/impl/array-utils-slicing.mjs +140 -0
  41. package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
  42. package/dist/array/impl/array-utils-transformation.d.mts +348 -0
  43. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
  44. package/dist/array/impl/array-utils-transformation.mjs +331 -0
  45. package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
  46. package/dist/array/impl/array-utils-validation.d.mts +149 -0
  47. package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
  48. package/dist/array/impl/array-utils-validation.mjs +166 -0
  49. package/dist/array/impl/array-utils-validation.mjs.map +1 -0
  50. package/dist/array/impl/index.d.mts +13 -0
  51. package/dist/array/impl/index.d.mts.map +1 -0
  52. package/dist/array/impl/index.mjs +13 -0
  53. package/dist/array/impl/index.mjs.map +1 -0
  54. package/dist/array/index.d.mts +1 -1
  55. package/dist/array/index.d.mts.map +1 -1
  56. package/dist/array/index.mjs +2 -1
  57. package/dist/array/index.mjs.map +1 -1
  58. package/dist/collections/imap-mapped.d.mts +83 -253
  59. package/dist/collections/imap-mapped.d.mts.map +1 -1
  60. package/dist/collections/imap-mapped.mjs +33 -164
  61. package/dist/collections/imap-mapped.mjs.map +1 -1
  62. package/dist/collections/imap.d.mts +436 -163
  63. package/dist/collections/imap.d.mts.map +1 -1
  64. package/dist/collections/imap.mjs +74 -94
  65. package/dist/collections/imap.mjs.map +1 -1
  66. package/dist/collections/iset-mapped.d.mts +828 -345
  67. package/dist/collections/iset-mapped.d.mts.map +1 -1
  68. package/dist/collections/iset-mapped.mjs +200 -242
  69. package/dist/collections/iset-mapped.mjs.map +1 -1
  70. package/dist/collections/iset.d.mts +397 -205
  71. package/dist/collections/iset.d.mts.map +1 -1
  72. package/dist/collections/iset.mjs +102 -184
  73. package/dist/collections/iset.mjs.map +1 -1
  74. package/dist/collections/queue.d.mts +155 -135
  75. package/dist/collections/queue.d.mts.map +1 -1
  76. package/dist/collections/queue.mjs +55 -156
  77. package/dist/collections/queue.mjs.map +1 -1
  78. package/dist/collections/stack.d.mts +154 -154
  79. package/dist/collections/stack.d.mts.map +1 -1
  80. package/dist/collections/stack.mjs +54 -203
  81. package/dist/collections/stack.mjs.map +1 -1
  82. package/dist/entry-point.d.mts +1 -0
  83. package/dist/entry-point.d.mts.map +1 -1
  84. package/dist/entry-point.mjs +2 -1
  85. package/dist/entry-point.mjs.map +1 -1
  86. package/dist/expect-type.d.mts +43 -172
  87. package/dist/expect-type.d.mts.map +1 -1
  88. package/dist/expect-type.mjs +43 -172
  89. package/dist/expect-type.mjs.map +1 -1
  90. package/dist/functional/match.d.mts +35 -140
  91. package/dist/functional/match.d.mts.map +1 -1
  92. package/dist/functional/match.mjs.map +1 -1
  93. package/dist/functional/optional.d.mts +282 -160
  94. package/dist/functional/optional.d.mts.map +1 -1
  95. package/dist/functional/optional.mjs +131 -71
  96. package/dist/functional/optional.mjs.map +1 -1
  97. package/dist/functional/pipe.d.mts +59 -113
  98. package/dist/functional/pipe.d.mts.map +1 -1
  99. package/dist/functional/pipe.mjs.map +1 -1
  100. package/dist/functional/result.d.mts +433 -332
  101. package/dist/functional/result.d.mts.map +1 -1
  102. package/dist/functional/result.mjs +233 -239
  103. package/dist/functional/result.mjs.map +1 -1
  104. package/dist/globals.d.mts +12 -5
  105. package/dist/guard/has-key.d.mts +23 -74
  106. package/dist/guard/has-key.d.mts.map +1 -1
  107. package/dist/guard/has-key.mjs +23 -74
  108. package/dist/guard/has-key.mjs.map +1 -1
  109. package/dist/guard/is-non-empty-string.d.mts +20 -87
  110. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  111. package/dist/guard/is-non-empty-string.mjs +20 -87
  112. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  113. package/dist/guard/is-non-null-object.d.mts +14 -84
  114. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  115. package/dist/guard/is-non-null-object.mjs +14 -84
  116. package/dist/guard/is-non-null-object.mjs.map +1 -1
  117. package/dist/guard/is-primitive.d.mts +13 -126
  118. package/dist/guard/is-primitive.d.mts.map +1 -1
  119. package/dist/guard/is-primitive.mjs +13 -126
  120. package/dist/guard/is-primitive.mjs.map +1 -1
  121. package/dist/guard/is-record.d.mts +21 -132
  122. package/dist/guard/is-record.d.mts.map +1 -1
  123. package/dist/guard/is-record.mjs +21 -132
  124. package/dist/guard/is-record.mjs.map +1 -1
  125. package/dist/guard/is-type.d.mts +201 -238
  126. package/dist/guard/is-type.d.mts.map +1 -1
  127. package/dist/guard/is-type.mjs +201 -238
  128. package/dist/guard/is-type.mjs.map +1 -1
  129. package/dist/guard/key-is-in.d.mts +22 -139
  130. package/dist/guard/key-is-in.d.mts.map +1 -1
  131. package/dist/guard/key-is-in.mjs +22 -139
  132. package/dist/guard/key-is-in.mjs.map +1 -1
  133. package/dist/index.d.mts +0 -1
  134. package/dist/index.d.mts.map +1 -1
  135. package/dist/index.mjs +0 -1
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/iterator/range.d.mts +29 -62
  138. package/dist/iterator/range.d.mts.map +1 -1
  139. package/dist/iterator/range.mjs.map +1 -1
  140. package/dist/json/json.d.mts +191 -121
  141. package/dist/json/json.d.mts.map +1 -1
  142. package/dist/json/json.mjs +238 -136
  143. package/dist/json/json.mjs.map +1 -1
  144. package/dist/number/branded-types/finite-number.d.mts +24 -156
  145. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  146. package/dist/number/branded-types/finite-number.mjs +27 -159
  147. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  148. package/dist/number/branded-types/int.d.mts +122 -120
  149. package/dist/number/branded-types/int.d.mts.map +1 -1
  150. package/dist/number/branded-types/int.mjs +122 -120
  151. package/dist/number/branded-types/int.mjs.map +1 -1
  152. package/dist/number/branded-types/int16.d.mts +22 -30
  153. package/dist/number/branded-types/int16.d.mts.map +1 -1
  154. package/dist/number/branded-types/int16.mjs +22 -30
  155. package/dist/number/branded-types/int16.mjs.map +1 -1
  156. package/dist/number/branded-types/int32.d.mts +22 -31
  157. package/dist/number/branded-types/int32.d.mts.map +1 -1
  158. package/dist/number/branded-types/int32.mjs +22 -31
  159. package/dist/number/branded-types/int32.mjs.map +1 -1
  160. package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
  161. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  162. package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
  163. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  164. package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
  165. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  166. package/dist/number/branded-types/non-negative-int16.mjs +24 -34
  167. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  168. package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
  169. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  170. package/dist/number/branded-types/non-negative-int32.mjs +26 -35
  171. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  172. package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
  173. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  174. package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
  175. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  176. package/dist/number/branded-types/non-zero-int.d.mts +15 -30
  177. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  178. package/dist/number/branded-types/non-zero-int.mjs +15 -30
  179. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  180. package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
  181. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  182. package/dist/number/branded-types/non-zero-int16.mjs +27 -35
  183. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  184. package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
  185. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  186. package/dist/number/branded-types/non-zero-int32.mjs +29 -36
  187. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  188. package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
  189. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  190. package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
  191. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  192. package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
  193. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  194. package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
  195. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  196. package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
  197. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  198. package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
  199. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  200. package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
  201. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  202. package/dist/number/branded-types/positive-finite-number.mjs +29 -43
  203. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  204. package/dist/number/branded-types/positive-int.d.mts +133 -123
  205. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  206. package/dist/number/branded-types/positive-int.mjs +133 -123
  207. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  208. package/dist/number/branded-types/positive-int16.d.mts +24 -35
  209. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  210. package/dist/number/branded-types/positive-int16.mjs +24 -35
  211. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  212. package/dist/number/branded-types/positive-int32.d.mts +24 -35
  213. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  214. package/dist/number/branded-types/positive-int32.mjs +24 -35
  215. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  216. package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
  217. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  218. package/dist/number/branded-types/positive-safe-int.mjs +160 -34
  219. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  220. package/dist/number/branded-types/positive-uint16.d.mts +24 -35
  221. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  222. package/dist/number/branded-types/positive-uint16.mjs +24 -35
  223. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  224. package/dist/number/branded-types/positive-uint32.d.mts +26 -36
  225. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  226. package/dist/number/branded-types/positive-uint32.mjs +26 -36
  227. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  228. package/dist/number/branded-types/safe-int.d.mts +140 -99
  229. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  230. package/dist/number/branded-types/safe-int.mjs +142 -101
  231. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  232. package/dist/number/branded-types/safe-uint.d.mts +24 -33
  233. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  234. package/dist/number/branded-types/safe-uint.mjs +25 -34
  235. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  236. package/dist/number/branded-types/uint.d.mts +121 -30
  237. package/dist/number/branded-types/uint.d.mts.map +1 -1
  238. package/dist/number/branded-types/uint.mjs +121 -30
  239. package/dist/number/branded-types/uint.mjs.map +1 -1
  240. package/dist/number/branded-types/uint16.d.mts +26 -34
  241. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  242. package/dist/number/branded-types/uint16.mjs +26 -34
  243. package/dist/number/branded-types/uint16.mjs.map +1 -1
  244. package/dist/number/branded-types/uint32.d.mts +26 -68
  245. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  246. package/dist/number/branded-types/uint32.mjs +26 -68
  247. package/dist/number/branded-types/uint32.mjs.map +1 -1
  248. package/dist/number/enum/int8.d.mts +37 -101
  249. package/dist/number/enum/int8.d.mts.map +1 -1
  250. package/dist/number/enum/int8.mjs +39 -170
  251. package/dist/number/enum/int8.mjs.map +1 -1
  252. package/dist/number/enum/uint8.d.mts +45 -55
  253. package/dist/number/enum/uint8.d.mts.map +1 -1
  254. package/dist/number/enum/uint8.mjs +46 -155
  255. package/dist/number/enum/uint8.mjs.map +1 -1
  256. package/dist/number/num.d.mts +145 -206
  257. package/dist/number/num.d.mts.map +1 -1
  258. package/dist/number/num.mjs +143 -199
  259. package/dist/number/num.mjs.map +1 -1
  260. package/dist/number/refined-number-utils.d.mts +97 -21
  261. package/dist/number/refined-number-utils.d.mts.map +1 -1
  262. package/dist/number/refined-number-utils.mjs +91 -20
  263. package/dist/number/refined-number-utils.mjs.map +1 -1
  264. package/dist/object/object.d.mts +126 -208
  265. package/dist/object/object.d.mts.map +1 -1
  266. package/dist/object/object.mjs +68 -102
  267. package/dist/object/object.mjs.map +1 -1
  268. package/dist/others/cast-mutable.d.mts +12 -88
  269. package/dist/others/cast-mutable.d.mts.map +1 -1
  270. package/dist/others/cast-mutable.mjs +13 -89
  271. package/dist/others/cast-mutable.mjs.map +1 -1
  272. package/dist/others/cast-readonly.d.mts +12 -168
  273. package/dist/others/cast-readonly.d.mts.map +1 -1
  274. package/dist/others/cast-readonly.mjs +13 -169
  275. package/dist/others/cast-readonly.mjs.map +1 -1
  276. package/dist/others/if-then.d.mts +6 -83
  277. package/dist/others/if-then.d.mts.map +1 -1
  278. package/dist/others/if-then.mjs +6 -83
  279. package/dist/others/if-then.mjs.map +1 -1
  280. package/dist/others/map-nullable.d.mts +12 -136
  281. package/dist/others/map-nullable.d.mts.map +1 -1
  282. package/dist/others/map-nullable.mjs.map +1 -1
  283. package/dist/others/memoize-function.d.mts +14 -157
  284. package/dist/others/memoize-function.d.mts.map +1 -1
  285. package/dist/others/memoize-function.mjs +14 -157
  286. package/dist/others/memoize-function.mjs.map +1 -1
  287. package/dist/others/tuple.d.mts +33 -151
  288. package/dist/others/tuple.d.mts.map +1 -1
  289. package/dist/others/tuple.mjs +33 -151
  290. package/dist/others/tuple.mjs.map +1 -1
  291. package/dist/others/unknown-to-string.d.mts +11 -125
  292. package/dist/others/unknown-to-string.d.mts.map +1 -1
  293. package/dist/others/unknown-to-string.mjs +12 -126
  294. package/dist/others/unknown-to-string.mjs.map +1 -1
  295. package/dist/promise/promise.d.mts +33 -20
  296. package/dist/promise/promise.d.mts.map +1 -1
  297. package/dist/promise/promise.mjs +34 -21
  298. package/dist/promise/promise.mjs.map +1 -1
  299. package/package.json +47 -39
  300. package/src/array/impl/array-utils-creation.mts +192 -0
  301. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  302. package/src/array/impl/array-utils-element-access.mts +115 -0
  303. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  304. package/src/array/impl/array-utils-iterators.mts +79 -0
  305. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  306. package/src/array/impl/array-utils-modification.mts +434 -0
  307. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  308. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  309. package/src/array/impl/array-utils-reducing-value.mts +551 -0
  310. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
  311. package/src/array/impl/array-utils-search.mts +509 -0
  312. package/src/array/impl/array-utils-search.test.mts +346 -0
  313. package/src/array/impl/array-utils-set-op.mts +166 -0
  314. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  315. package/src/array/impl/array-utils-size.mts +30 -0
  316. package/src/array/impl/array-utils-size.test.mts +9 -0
  317. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  318. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
  319. package/src/array/impl/array-utils-slicing.mts +275 -0
  320. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  321. package/src/array/impl/array-utils-transformation.mts +746 -0
  322. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  323. package/src/array/impl/array-utils-validation.mts +241 -0
  324. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  325. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  326. package/src/array/impl/index.mts +12 -0
  327. package/src/array/index.mts +1 -1
  328. package/src/collections/imap-mapped.mts +99 -265
  329. package/src/collections/imap.mts +477 -174
  330. package/src/collections/imap.test.mts +12 -19
  331. package/src/collections/iset-mapped.mts +892 -358
  332. package/src/collections/iset.mts +429 -213
  333. package/src/collections/queue.mts +174 -200
  334. package/src/collections/stack.mts +172 -245
  335. package/src/collections/stack.test.mts +9 -1
  336. package/src/entry-point.mts +1 -0
  337. package/src/expect-type.mts +43 -172
  338. package/src/functional/match.mts +35 -145
  339. package/src/functional/optional.mts +285 -163
  340. package/src/functional/optional.test.mts +4 -1
  341. package/src/functional/pipe.mts +60 -113
  342. package/src/functional/result.mts +452 -351
  343. package/src/functional/result.test.mts +9 -2
  344. package/src/globals.d.mts +12 -5
  345. package/src/guard/has-key.mts +23 -74
  346. package/src/guard/is-non-empty-string.mts +20 -87
  347. package/src/guard/is-non-null-object.mts +14 -84
  348. package/src/guard/is-non-null-object.test.mts +1 -1
  349. package/src/guard/is-primitive.mts +13 -126
  350. package/src/guard/is-primitive.test.mts +1 -1
  351. package/src/guard/is-record.mts +21 -132
  352. package/src/guard/is-type.mts +201 -238
  353. package/src/guard/is-type.test.mts +7 -7
  354. package/src/guard/key-is-in.mts +22 -139
  355. package/src/index.mts +0 -1
  356. package/src/iterator/range.mts +29 -62
  357. package/src/json/json.mts +202 -134
  358. package/src/json/json.test.mts +1 -3
  359. package/src/number/branded-types/finite-number.mts +27 -159
  360. package/src/number/branded-types/int.mts +122 -120
  361. package/src/number/branded-types/int16.mts +22 -30
  362. package/src/number/branded-types/int16.test.mts +24 -24
  363. package/src/number/branded-types/int32.mts +22 -31
  364. package/src/number/branded-types/int32.test.mts +39 -39
  365. package/src/number/branded-types/non-negative-finite-number.mts +31 -39
  366. package/src/number/branded-types/non-negative-int16.mts +24 -34
  367. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  368. package/src/number/branded-types/non-negative-int32.mts +26 -35
  369. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  370. package/src/number/branded-types/non-zero-finite-number.mts +25 -40
  371. package/src/number/branded-types/non-zero-int.mts +15 -30
  372. package/src/number/branded-types/non-zero-int16.mts +27 -35
  373. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  374. package/src/number/branded-types/non-zero-int32.mts +29 -36
  375. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  376. package/src/number/branded-types/non-zero-safe-int.mts +39 -40
  377. package/src/number/branded-types/non-zero-uint16.mts +24 -35
  378. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  379. package/src/number/branded-types/non-zero-uint32.mts +24 -35
  380. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  381. package/src/number/branded-types/positive-finite-number.mts +29 -43
  382. package/src/number/branded-types/positive-int.mts +134 -124
  383. package/src/number/branded-types/positive-int16.mts +24 -35
  384. package/src/number/branded-types/positive-int16.test.mts +14 -14
  385. package/src/number/branded-types/positive-int32.mts +24 -35
  386. package/src/number/branded-types/positive-int32.test.mts +26 -26
  387. package/src/number/branded-types/positive-safe-int.mts +160 -34
  388. package/src/number/branded-types/positive-uint16.mts +24 -35
  389. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  390. package/src/number/branded-types/positive-uint32.mts +26 -36
  391. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  392. package/src/number/branded-types/safe-int.mts +142 -101
  393. package/src/number/branded-types/safe-uint.mts +25 -34
  394. package/src/number/branded-types/uint.mts +121 -30
  395. package/src/number/branded-types/uint16.mts +26 -34
  396. package/src/number/branded-types/uint16.test.mts +16 -16
  397. package/src/number/branded-types/uint32.mts +26 -68
  398. package/src/number/branded-types/uint32.test.mts +28 -28
  399. package/src/number/enum/int8.mts +39 -170
  400. package/src/number/enum/uint8.mts +46 -155
  401. package/src/number/num.mts +157 -212
  402. package/src/number/num.test.mts +4 -4
  403. package/src/number/refined-number-utils.mts +109 -26
  404. package/src/object/object.mts +130 -212
  405. package/src/object/object.test.mts +29 -0
  406. package/src/others/cast-mutable.mts +13 -89
  407. package/src/others/cast-mutable.test.mts +80 -0
  408. package/src/others/cast-readonly.mts +13 -169
  409. package/src/others/if-then.mts +6 -83
  410. package/src/others/map-nullable.mts +12 -136
  411. package/src/others/map-nullable.test.mts +6 -6
  412. package/src/others/memoize-function.mts +14 -157
  413. package/src/others/tuple.mts +33 -151
  414. package/src/others/unknown-to-string.mts +12 -126
  415. package/src/others/unknown-to-string.test.mts +13 -1
  416. package/src/promise/promise.mts +34 -21
  417. package/src/promise/promise.test.mts +43 -0
  418. package/dist/array/array-utils.d.mts +0 -2956
  419. package/dist/array/array-utils.d.mts.map +0 -1
  420. package/dist/array/array-utils.mjs +0 -1838
  421. package/dist/array/array-utils.mjs.map +0 -1
  422. package/src/array/array-utils-search.test.mts +0 -169
  423. package/src/array/array-utils-slicing.test.mts +0 -274
  424. package/src/array/array-utils.mts +0 -4834
@@ -5,41 +5,37 @@ import { TsDataForgeInternals } from '../refined-number-utils.mjs';
5
5
  * A safe integer is an integer that can be exactly represented in JavaScript
6
6
  * without precision loss. The range is [±(2^53 - 1)].
7
7
  *
8
- * @param value - The value to check
9
- * @returns `true` if the value is a safe integer, `false` otherwise
10
- *
11
8
  * @example
12
- * ```typescript
13
- * isSafeInt(42); // true
14
- * isSafeInt(Number.MAX_SAFE_INTEGER); // true
15
- * isSafeInt(Number.MAX_SAFE_INTEGER + 1); // false
16
- * isSafeInt(3.14); // false
17
- * isSafeInt(NaN); // false
9
+ *
10
+ * ```ts
11
+ * assert.ok(isSafeInt(Number.MAX_SAFE_INTEGER));
12
+ * assert.notOk(isSafeInt(Number.MAX_SAFE_INTEGER + 0.5));
13
+ * assert.ok(SafeInt.is(Number.MIN_SAFE_INTEGER));
18
14
  * ```
15
+ *
16
+ * @param value - The value to check
17
+ * @returns `true` if the value is a safe integer, `false` otherwise
19
18
  */
20
19
  export declare const isSafeInt: (a: number) => a is SafeInt;
21
20
  /**
22
21
  * Casts a number to a SafeInt branded type.
23
22
  *
24
23
  * This function validates that the input is a safe integer (within ±(2^53 - 1))
25
- * and returns it with the SafeInt brand. This ensures type safety for operations
26
- * that require precise integer arithmetic.
27
- *
28
- * @param value - The value to cast
29
- * @returns The value as a SafeInt branded type
30
- * @throws {TypeError} If the value is not a safe integer
24
+ * and returns it with the SafeInt brand. This ensures type safety for
25
+ * operations that require precise integer arithmetic.
31
26
  *
32
27
  * @example
33
- * ```typescript
34
- * const x = asSafeInt(5); // SafeInt
35
- * const y = asSafeInt(-1000); // SafeInt
36
- * const z = asSafeInt(2**50); // SafeInt (within range)
37
28
  *
38
- * // These throw TypeError:
39
- * // asSafeInt(1.5); // Not an integer
40
- * // asSafeInt(Number.MAX_SAFE_INTEGER + 1); // Exceeds safe range
41
- * // asSafeInt(2**53); // Loss of precision
29
+ * ```ts
30
+ * const branded = asSafeInt(123);
31
+ *
32
+ * assert(branded === 123);
33
+ * assert.ok(SafeInt.is(branded));
42
34
  * ```
35
+ *
36
+ * @param value - The value to cast
37
+ * @returns The value as a SafeInt branded type
38
+ * @throws {TypeError} If the value is not a safe integer
43
39
  */
44
40
  export declare const asSafeInt: <N extends number>(x: N) => number & {
45
41
  readonly NaNValue: false;
@@ -57,132 +53,149 @@ export declare const asSafeInt: <N extends number>(x: N) => number & {
57
53
  * approximately ±9 quadrillion.
58
54
  *
59
55
  * All operations automatically clamp results to stay within the safe range,
60
- * preventing precision loss that occurs with larger integers. This makes SafeInt
61
- * ideal for:
56
+ * preventing precision loss that occurs with larger integers. This makes
57
+ * SafeInt ideal for:
58
+ *
62
59
  * - Financial calculations requiring exact cents
63
60
  * - Database IDs and counters
64
61
  * - Array indices and sizes
65
62
  * - Any integer arithmetic requiring precision guarantees
66
- *
67
- * @example
68
- * ```typescript
69
- * // Near the boundary
70
- * const nearMax = asSafeInt(9007199254740990);
71
- * const increment = asSafeInt(10);
72
- *
73
- * // Automatic clamping prevents precision loss
74
- * const sum = SafeInt.add(nearMax, increment); // Clamped to MAX_SAFE_INTEGER
75
- * const product = SafeInt.mul(nearMax, increment); // Clamped to MAX_SAFE_INTEGER
76
- *
77
- * // Safe operations
78
- * const a = asSafeInt(1000000);
79
- * const b = asSafeInt(500);
80
- *
81
- * const diff = SafeInt.sub(a, b); // SafeInt (999500)
82
- * const quotient = SafeInt.div(a, b); // SafeInt (2000)
83
- * const power = SafeInt.pow(b, asSafeInt(2)); // SafeInt (250000)
84
- *
85
- * // Utility operations
86
- * const absolute = SafeInt.abs(asSafeInt(-42)); // SafeInt (42)
87
- * const clamped = SafeInt.clamp(2**60); // SafeInt (MAX_SAFE_INTEGER)
88
- *
89
- * // Random generation
90
- * const die = SafeInt.random(asSafeInt(1), asSafeInt(6)); // Random 1-6
91
- * ```
92
63
  */
93
64
  export declare const SafeInt: {
94
65
  /**
95
66
  * Type guard that checks if a value is a safe integer.
96
67
  *
68
+ * @example
69
+ *
70
+ * ```ts
71
+ * assert.ok(isSafeInt(Number.MAX_SAFE_INTEGER));
72
+ * assert.notOk(isSafeInt(Number.MAX_SAFE_INTEGER + 0.5));
73
+ * assert.ok(SafeInt.is(Number.MIN_SAFE_INTEGER));
74
+ * ```
75
+ *
97
76
  * @param value - The value to check
98
77
  * @returns `true` if the value is a safe integer, `false` otherwise
99
- *
100
78
  * @see {@link isSafeInt} for usage examples
101
79
  */
102
80
  readonly is: (a: number) => a is SafeInt;
103
81
  /**
104
82
  * The minimum safe integer value (-(2^53 - 1)).
83
+ *
105
84
  * @readonly
106
85
  */
107
86
  readonly MIN_VALUE: SafeInt;
108
87
  /**
109
88
  * The maximum safe integer value (2^53 - 1).
89
+ *
110
90
  * @readonly
111
91
  */
112
92
  readonly MAX_VALUE: SafeUint;
113
93
  /**
114
94
  * Returns the absolute value of a safe integer.
115
95
  *
116
- * Note: `Math.abs(MIN_SAFE_INTEGER)` would exceed `MAX_SAFE_INTEGER`,
117
- * so this function clamps the result to maintain the safe integer guarantee.
118
- *
119
- * @param a - The safe integer value
120
- * @returns The absolute value as a SafeInt, clamped if necessary
96
+ * Note: `Math.abs(MIN_SAFE_INTEGER)` would exceed `MAX_SAFE_INTEGER`, so this
97
+ * function clamps the result to maintain the safe integer guarantee.
121
98
  *
122
99
  * @example
123
- * ```typescript
124
- * SafeInt.abs(asSafeInt(-42)); // SafeInt (42)
125
- * SafeInt.abs(asSafeInt(42)); // SafeInt (42)
126
- * SafeInt.abs(SafeInt.MIN_VALUE); // SafeInt (MAX_SAFE_INTEGER)
100
+ *
101
+ * ```ts
102
+ * const negative = asSafeInt(-900);
103
+ * const absolute = SafeInt.abs(negative);
104
+ *
105
+ * assert(absolute === 900);
106
+ * assert.ok(SafeInt.is(absolute));
127
107
  * ```
108
+ *
109
+ * @param a - The safe integer value
110
+ * @returns The absolute value as a SafeInt, clamped if necessary
128
111
  */
129
112
  readonly abs: (x: WithSmallInt<SafeInt, 40>) => TsDataForgeInternals.RefinedNumberUtils.ToNonNegative<SafeInt>;
130
113
  /**
131
114
  * Returns the minimum value from a list of safe integers.
132
115
  *
133
- * @param values - The safe integers to compare (at least one required)
134
- * @returns The smallest value as a SafeInt
135
- *
136
116
  * @example
137
- * ```typescript
138
- * SafeInt.min(asSafeInt(5), asSafeInt(3)); // SafeInt (3)
139
- * SafeInt.min(asSafeInt(-10), asSafeInt(0), asSafeInt(10)); // SafeInt (-10)
117
+ *
118
+ * ```ts
119
+ * const smallest = SafeInt.min(asSafeInt(25), asSafeInt(-14), asSafeInt(99));
120
+ *
121
+ * assert(smallest === -14);
140
122
  * ```
123
+ *
124
+ * @param values - The safe integers to compare (at least one required)
125
+ * @returns The smallest value as a SafeInt
141
126
  */
142
127
  readonly min: (...values: readonly WithSmallInt<SafeInt, 40>[]) => SafeInt;
143
128
  /**
144
129
  * Returns the maximum value from a list of safe integers.
145
130
  *
146
- * @param values - The safe integers to compare (at least one required)
147
- * @returns The largest value as a SafeInt
148
- *
149
131
  * @example
150
- * ```typescript
151
- * SafeInt.max(asSafeInt(5), asSafeInt(3)); // SafeInt (5)
152
- * SafeInt.max(asSafeInt(-10), asSafeInt(0), asSafeInt(10)); // SafeInt (10)
132
+ *
133
+ * ```ts
134
+ * const largest = SafeInt.max(asSafeInt(25), asSafeInt(-14), asSafeInt(99));
135
+ *
136
+ * assert(largest === 99);
153
137
  * ```
138
+ *
139
+ * @param values - The safe integers to compare (at least one required)
140
+ * @returns The largest value as a SafeInt
154
141
  */
155
142
  readonly max: (...values: readonly WithSmallInt<SafeInt, 40>[]) => SafeInt;
156
143
  /**
157
144
  * Clamps a number to the safe integer range.
145
+ *
146
+ * @example
147
+ *
148
+ * ```ts
149
+ * const aboveRange = SafeInt.clamp(1e20);
150
+ * const withinRange = SafeInt.clamp(123);
151
+ * const belowRange = SafeInt.clamp(-1e20);
152
+ *
153
+ * assert(aboveRange === Number.MAX_SAFE_INTEGER);
154
+ * assert(withinRange === 123);
155
+ * assert(belowRange === Number.MIN_SAFE_INTEGER);
156
+ * ```
157
+ *
158
158
  * @param value The number to clamp.
159
- * @returns The value clamped to [MIN_SAFE_INTEGER, MAX_SAFE_INTEGER] as a SafeInt.
159
+ * @returns The value clamped to [MIN_SAFE_INTEGER, MAX_SAFE_INTEGER] as a
160
+ * SafeInt.
160
161
  */
161
162
  readonly clamp: (x: number) => SafeInt;
162
163
  /**
163
164
  * Generates a random safe integer within the specified range (inclusive).
164
165
  *
165
- * The range is inclusive on both ends. If min > max, they are automatically swapped.
166
- *
167
- * @param min - The minimum value (inclusive)
168
- * @param max - The maximum value (inclusive)
169
- * @returns A random SafeInt in the range [min, max]
166
+ * The range is inclusive on both ends. If min > max, they are automatically
167
+ * swapped.
170
168
  *
171
169
  * @example
172
- * ```typescript
173
- * // Dice roll
174
- * const d20 = SafeInt.random(asSafeInt(1), asSafeInt(20));
175
170
  *
176
- * // Random index for large array
177
- * const index = SafeInt.random(asSafeInt(0), asSafeInt(1000000));
171
+ * ```ts
172
+ * const min = asSafeInt(-10);
173
+ * const max = asSafeInt(10);
174
+ * const randomValue = SafeInt.random(min, max);
178
175
  *
179
- * // Can use full safe range
180
- * const any = SafeInt.random(SafeInt.MIN_VALUE, SafeInt.MAX_VALUE);
176
+ * assert.ok(SafeInt.is(randomValue));
177
+ * assert.ok(randomValue >= -10 && randomValue <= 10);
181
178
  * ```
179
+ *
180
+ * @param min - The minimum value (inclusive)
181
+ * @param max - The maximum value (inclusive)
182
+ * @returns A random SafeInt in the range [min, max]
182
183
  */
183
184
  readonly random: (min?: WithSmallInt<SafeInt, 40> | undefined, max?: WithSmallInt<SafeInt, 40> | undefined) => SafeInt;
184
185
  /**
185
186
  * Raises a SafeInt to the power of another SafeInt.
187
+ *
188
+ * @example
189
+ *
190
+ * ```ts
191
+ * const base = asSafeInt(3);
192
+ * const exponent = asSafeInt(5);
193
+ * const power = SafeInt.pow(base, exponent);
194
+ *
195
+ * assert(power === 243);
196
+ * assert.ok(SafeInt.is(power));
197
+ * ```
198
+ *
186
199
  * @param a The base SafeInt.
187
200
  * @param b The exponent SafeInt.
188
201
  * @returns `a ** b` clamped to safe integer range as a SafeInt.
@@ -190,6 +203,16 @@ export declare const SafeInt: {
190
203
  readonly pow: (x: WithSmallInt<SafeInt, 40>, y: WithSmallInt<SafeInt, 40>) => SafeInt;
191
204
  /**
192
205
  * Adds two SafeInt values.
206
+ *
207
+ * @example
208
+ *
209
+ * ```ts
210
+ * const sum = SafeInt.add(asSafeInt(9), asSafeInt(4));
211
+ *
212
+ * assert(sum === 13);
213
+ * assert.ok(SafeInt.is(sum));
214
+ * ```
215
+ *
193
216
  * @param a The first SafeInt.
194
217
  * @param b The second SafeInt.
195
218
  * @returns `a + b` clamped to safe integer range as a SafeInt.
@@ -197,6 +220,16 @@ export declare const SafeInt: {
197
220
  readonly add: (x: WithSmallInt<SafeInt, 40>, y: WithSmallInt<SafeInt, 40>) => SafeInt;
198
221
  /**
199
222
  * Subtracts one SafeInt from another.
223
+ *
224
+ * @example
225
+ *
226
+ * ```ts
227
+ * const difference = SafeInt.sub(asSafeInt(9), asSafeInt(14));
228
+ *
229
+ * assert(difference === -5);
230
+ * assert.ok(SafeInt.is(difference));
231
+ * ```
232
+ *
200
233
  * @param a The minuend SafeInt.
201
234
  * @param b The subtrahend SafeInt.
202
235
  * @returns `a - b` clamped to safe integer range as a SafeInt.
@@ -204,6 +237,16 @@ export declare const SafeInt: {
204
237
  readonly sub: (x: WithSmallInt<SafeInt, 40>, y: WithSmallInt<SafeInt, 40>) => SafeInt;
205
238
  /**
206
239
  * Multiplies two SafeInt values.
240
+ *
241
+ * @example
242
+ *
243
+ * ```ts
244
+ * const product = SafeInt.mul(asSafeInt(-8), asSafeInt(7));
245
+ *
246
+ * assert(product === -56);
247
+ * assert.ok(SafeInt.is(product));
248
+ * ```
249
+ *
207
250
  * @param a The first SafeInt.
208
251
  * @param b The second SafeInt.
209
252
  * @returns `a * b` clamped to safe integer range as a SafeInt.
@@ -212,23 +255,21 @@ export declare const SafeInt: {
212
255
  /**
213
256
  * Divides one SafeInt by another using floor division.
214
257
  *
215
- * Performs mathematical floor division: `⌊a / b⌋`.
216
- * The divisor must be non-zero (enforced by type constraints).
258
+ * Performs mathematical floor division: `⌊a / b⌋`. The divisor must be
259
+ * non-zero (enforced by type constraints).
260
+ *
261
+ * @example
262
+ *
263
+ * ```ts
264
+ * const quotient = SafeInt.div(asSafeInt(-17), asSafeInt(5));
265
+ *
266
+ * assert(quotient === -4);
267
+ * assert.ok(SafeInt.is(quotient));
268
+ * ```
217
269
  *
218
270
  * @param a - The dividend
219
271
  * @param b - The divisor (must be non-zero)
220
272
  * @returns The integer quotient as a SafeInt
221
- *
222
- * @example
223
- * ```typescript
224
- * SafeInt.div(asSafeInt(10), asSafeInt(3)); // SafeInt (3)
225
- * SafeInt.div(asSafeInt(-10), asSafeInt(3)); // SafeInt (-4)
226
- *
227
- * // Large number division
228
- * const large = asSafeInt(1000000000000);
229
- * const divisor = asSafeInt(1000000);
230
- * SafeInt.div(large, divisor); // SafeInt (1000000)
231
- * ```
232
273
  */
233
274
  readonly div: (x: WithSmallInt<SafeInt, 40>, y: 1 | 2 | 3 | 32 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 10 | 24 | 14 | 34 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 33 | 35 | 36 | 37 | 38 | 39 | -1 | -2 | -3 | -32 | -4 | -5 | -6 | -7 | -8 | -9 | -11 | -10 | -24 | -14 | -34 | -12 | -13 | -15 | -16 | -17 | -18 | -19 | -20 | -21 | -22 | -23 | -25 | -26 | -27 | -28 | -29 | -30 | -31 | -33 | -35 | -36 | -37 | -38 | -39 | -40 | NormalizeBrandUnion<number & {
234
275
  readonly NaNValue: false;
@@ -1 +1 @@
1
- {"version":3,"file":"safe-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/safe-int.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAkCnE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,SAAS,6BAAK,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,SAAS;;;;;;;MAAW,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,OAAO;IAClB;;;;;;;OAOG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;;;;;;;;;;;OAeG;;IAGH;;;;;;;;;;;OAWG;;IAGH;;;;;;;;;;;OAWG;;IAGH;;;;OAIG;;IAGH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;;;;;;;;;;;OAoBG;;;;;;;;;;CAEK,CAAC"}
1
+ {"version":3,"file":"safe-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/safe-int.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAkCnE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS,6BAAK,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,SAAS;;;;;;;MAAW,CAAC;AAElC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,OAAO;IAClB;;;;;;;;;;;;;;OAcG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;;;;;;;;;;;;;OAkBG;;IAGH;;;;;;;;;;;;;OAaG;;IAGH;;;;;;;;;;;;;OAaG;;IAGH;;;;;;;;;;;;;;;;;;OAkBG;;IAGH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAGH;;;;;;;;;;;;;;;;;OAiBG;;IAGH;;;;;;;;;;;;;;;OAeG;;IAGH;;;;;;;;;;;;;;;OAeG;;IAGH;;;;;;;;;;;;;;;OAeG;;IAGH;;;;;;;;;;;;;;;;;;OAkBG;;;;;;;;;;CAEK,CAAC"}