ts-data-forge 3.2.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 (426) hide show
  1. package/README.md +45 -21
  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 +3 -0
  83. package/dist/entry-point.d.mts.map +1 -0
  84. package/dist/entry-point.mjs +62 -0
  85. package/dist/entry-point.mjs.map +1 -0
  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 +14 -127
  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/dist/types.d.mts +1 -1
  300. package/package.json +54 -50
  301. package/src/array/impl/array-utils-creation.mts +192 -0
  302. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  303. package/src/array/impl/array-utils-element-access.mts +115 -0
  304. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  305. package/src/array/impl/array-utils-iterators.mts +79 -0
  306. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  307. package/src/array/impl/array-utils-modification.mts +434 -0
  308. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  309. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  310. package/src/array/impl/array-utils-reducing-value.mts +551 -0
  311. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
  312. package/src/array/impl/array-utils-search.mts +509 -0
  313. package/src/array/impl/array-utils-search.test.mts +346 -0
  314. package/src/array/impl/array-utils-set-op.mts +166 -0
  315. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  316. package/src/array/impl/array-utils-size.mts +30 -0
  317. package/src/array/impl/array-utils-size.test.mts +9 -0
  318. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  319. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
  320. package/src/array/impl/array-utils-slicing.mts +275 -0
  321. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  322. package/src/array/impl/array-utils-transformation.mts +746 -0
  323. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  324. package/src/array/impl/array-utils-validation.mts +241 -0
  325. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  326. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  327. package/src/array/impl/index.mts +12 -0
  328. package/src/array/index.mts +1 -1
  329. package/src/collections/imap-mapped.mts +99 -265
  330. package/src/collections/imap.mts +477 -174
  331. package/src/collections/imap.test.mts +12 -19
  332. package/src/collections/iset-mapped.mts +892 -358
  333. package/src/collections/iset.mts +429 -213
  334. package/src/collections/queue.mts +174 -200
  335. package/src/collections/stack.mts +172 -245
  336. package/src/collections/stack.test.mts +9 -1
  337. package/src/entry-point.mts +2 -0
  338. package/src/expect-type.mts +43 -172
  339. package/src/functional/match.mts +35 -145
  340. package/src/functional/optional.mts +285 -163
  341. package/src/functional/optional.test.mts +4 -1
  342. package/src/functional/pipe.mts +60 -113
  343. package/src/functional/result.mts +452 -351
  344. package/src/functional/result.test.mts +9 -2
  345. package/src/globals.d.mts +12 -5
  346. package/src/guard/has-key.mts +23 -74
  347. package/src/guard/is-non-empty-string.mts +20 -87
  348. package/src/guard/is-non-null-object.mts +14 -84
  349. package/src/guard/is-non-null-object.test.mts +1 -1
  350. package/src/guard/is-primitive.mts +13 -126
  351. package/src/guard/is-primitive.test.mts +1 -1
  352. package/src/guard/is-record.mts +21 -132
  353. package/src/guard/is-record.test.mts +0 -1
  354. package/src/guard/is-type.mts +201 -238
  355. package/src/guard/is-type.test.mts +7 -7
  356. package/src/guard/key-is-in.mts +22 -139
  357. package/src/index.mts +0 -1
  358. package/src/iterator/range.mts +29 -62
  359. package/src/json/json.mts +202 -134
  360. package/src/json/json.test.mts +1 -3
  361. package/src/number/branded-types/finite-number.mts +27 -159
  362. package/src/number/branded-types/int.mts +122 -120
  363. package/src/number/branded-types/int16.mts +22 -30
  364. package/src/number/branded-types/int16.test.mts +24 -24
  365. package/src/number/branded-types/int32.mts +22 -31
  366. package/src/number/branded-types/int32.test.mts +39 -39
  367. package/src/number/branded-types/non-negative-finite-number.mts +31 -39
  368. package/src/number/branded-types/non-negative-int16.mts +24 -34
  369. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  370. package/src/number/branded-types/non-negative-int32.mts +26 -35
  371. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  372. package/src/number/branded-types/non-zero-finite-number.mts +25 -40
  373. package/src/number/branded-types/non-zero-int.mts +15 -30
  374. package/src/number/branded-types/non-zero-int16.mts +27 -35
  375. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  376. package/src/number/branded-types/non-zero-int32.mts +29 -36
  377. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  378. package/src/number/branded-types/non-zero-safe-int.mts +39 -40
  379. package/src/number/branded-types/non-zero-uint16.mts +24 -35
  380. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  381. package/src/number/branded-types/non-zero-uint32.mts +24 -35
  382. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  383. package/src/number/branded-types/positive-finite-number.mts +29 -43
  384. package/src/number/branded-types/positive-int.mts +134 -124
  385. package/src/number/branded-types/positive-int16.mts +24 -35
  386. package/src/number/branded-types/positive-int16.test.mts +14 -14
  387. package/src/number/branded-types/positive-int32.mts +24 -35
  388. package/src/number/branded-types/positive-int32.test.mts +26 -26
  389. package/src/number/branded-types/positive-safe-int.mts +160 -34
  390. package/src/number/branded-types/positive-uint16.mts +24 -35
  391. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  392. package/src/number/branded-types/positive-uint32.mts +26 -36
  393. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  394. package/src/number/branded-types/safe-int.mts +142 -101
  395. package/src/number/branded-types/safe-uint.mts +25 -34
  396. package/src/number/branded-types/uint.mts +121 -30
  397. package/src/number/branded-types/uint16.mts +26 -34
  398. package/src/number/branded-types/uint16.test.mts +16 -16
  399. package/src/number/branded-types/uint32.mts +26 -68
  400. package/src/number/branded-types/uint32.test.mts +28 -28
  401. package/src/number/enum/int8.mts +39 -170
  402. package/src/number/enum/uint8.mts +46 -155
  403. package/src/number/num.mts +157 -212
  404. package/src/number/num.test.mts +4 -4
  405. package/src/number/refined-number-utils.mts +109 -26
  406. package/src/object/object.mts +130 -212
  407. package/src/object/object.test.mts +29 -0
  408. package/src/others/cast-mutable.mts +13 -89
  409. package/src/others/cast-mutable.test.mts +80 -0
  410. package/src/others/cast-readonly.mts +13 -169
  411. package/src/others/if-then.mts +6 -83
  412. package/src/others/map-nullable.mts +12 -136
  413. package/src/others/map-nullable.test.mts +6 -6
  414. package/src/others/memoize-function.mts +14 -157
  415. package/src/others/tuple.mts +33 -151
  416. package/src/others/unknown-to-string.mts +15 -127
  417. package/src/others/unknown-to-string.test.mts +14 -2
  418. package/src/promise/promise.mts +34 -21
  419. package/src/promise/promise.test.mts +43 -0
  420. package/dist/array/array-utils.d.mts +0 -2956
  421. package/dist/array/array-utils.d.mts.map +0 -1
  422. package/dist/array/array-utils.mjs +0 -1838
  423. package/dist/array/array-utils.mjs.map +0 -1
  424. package/src/array/array-utils-search.test.mts +0 -169
  425. package/src/array/array-utils-slicing.test.mts +0 -274
  426. package/src/array/array-utils.mts +0 -4834
@@ -139,7 +139,7 @@ describe('isNumber', () => {
139
139
  expect(isNumber('123')).toBe(false);
140
140
  expect(isNumber(true)).toBe(false);
141
141
  expect(isNumber(null)).toBe(false);
142
- expect(isNumber(BigInt(123))).toBe(false);
142
+ expect(isNumber(123n)).toBe(false);
143
143
  // eslint-disable-next-line no-new-wrappers, unicorn/new-for-builtins
144
144
  expect(isNumber(new Number(42))).toBe(false);
145
145
  });
@@ -155,7 +155,7 @@ describe('isNumber', () => {
155
155
 
156
156
  describe('isBigint', () => {
157
157
  test('should return true for bigints', () => {
158
- expect(isBigint(BigInt(0))).toBe(true);
158
+ expect(isBigint(0n)).toBe(true);
159
159
  expect(isBigint(123n)).toBe(true);
160
160
  expect(isBigint(-456n)).toBe(true);
161
161
  });
@@ -265,7 +265,7 @@ describe('isNotNumber', () => {
265
265
  expect(isNotNumber(false)).toBe(true);
266
266
  expect(isNotNumber(null)).toBe(true);
267
267
  expect(isNotNumber(undefined)).toBe(true);
268
- expect(isNotNumber(BigInt(123))).toBe(true);
268
+ expect(isNotNumber(123n)).toBe(true);
269
269
  expect(isNotNumber({})).toBe(true);
270
270
  expect(isNotNumber([])).toBe(true);
271
271
  expect(isNotNumber(Symbol('test'))).toBe(true);
@@ -284,7 +284,7 @@ describe('isNotNumber', () => {
284
284
 
285
285
  describe('isNotBigint', () => {
286
286
  test('should return false for bigint values', () => {
287
- expect(isNotBigint(BigInt(0))).toBe(false);
287
+ expect(isNotBigint(0n)).toBe(false);
288
288
  expect(isNotBigint(123n)).toBe(false);
289
289
  expect(isNotBigint(-456n)).toBe(false);
290
290
  });
@@ -326,7 +326,7 @@ describe('isNotString', () => {
326
326
  expect(isNotString({})).toBe(true);
327
327
  expect(isNotString([])).toBe(true);
328
328
  expect(isNotString(Symbol('test'))).toBe(true);
329
- expect(isNotString(BigInt(123))).toBe(true);
329
+ expect(isNotString(123n)).toBe(true);
330
330
  });
331
331
 
332
332
  test('should act as a type guard', () => {
@@ -356,7 +356,7 @@ describe('isNotSymbol', () => {
356
356
  expect(isNotSymbol(undefined)).toBe(true);
357
357
  expect(isNotSymbol({})).toBe(true);
358
358
  expect(isNotSymbol([])).toBe(true);
359
- expect(isNotSymbol(BigInt(123))).toBe(true);
359
+ expect(isNotSymbol(123n)).toBe(true);
360
360
  });
361
361
 
362
362
  test('should act as a type guard', () => {
@@ -417,7 +417,7 @@ describe('isNonNullish', () => {
417
417
  expect(isNonNullish([])).toBe(true);
418
418
  expect(isNonNullish(Number.NaN)).toBe(true);
419
419
  expect(isNonNullish(Symbol('test'))).toBe(true);
420
- expect(isNonNullish(BigInt(123))).toBe(true);
420
+ expect(isNonNullish(123n)).toBe(true);
421
421
  });
422
422
 
423
423
  test('should act as a type guard', () => {
@@ -1,157 +1,40 @@
1
1
  /**
2
2
  * Type guard that checks if a key exists as an own property in an object.
3
3
  *
4
- * This function is similar to `hasKey()` but with reversed parameter order and different
5
- * type narrowing behavior. While `hasKey()` narrows the object type, `keyIsIn()` narrows
6
- * the key type to be a valid key of the given object.
4
+ * This function is similar to `hasKey()` but with reversed parameter order and
5
+ * different type narrowing behavior. While `hasKey()` narrows the object type,
6
+ * `keyIsIn()` narrows the key type to be a valid key of the given object.
7
7
  *
8
8
  * **Type Narrowing Behavior:**
9
+ *
9
10
  * - Narrows the key type to be a key that exists in the object (`K & keyof R`)
10
- * - Useful when you have a dynamic key and want to ensure it's valid for a specific object
11
+ * - Useful when you have a dynamic key and want to ensure it's valid for a
12
+ * specific object
11
13
  * - The object type remains unchanged
12
14
  *
13
- * **Implementation:** Uses `Object.hasOwn()` to check for own properties (not inherited).
14
- *
15
- * @template K - The type of the key to check, must extend PropertyKey (string | number | symbol)
16
- * @template R - The type of the record (object), must extend UnknownRecord
17
- * @param key - The key to check for
18
- * @param obj - The object to check within
19
- * @returns `true` if `key` is an own property of `obj`, `false` otherwise.
20
- * When `true`, TypeScript narrows the key type to be a valid key of the object.
21
- *
22
- * @example
23
- * Basic usage with known object structure:
24
- * ```typescript
25
- * const obj = { a: 1, b: 2, c: 3 };
26
- * const userInput: string = getUserInput(); // Could be any string
27
- *
28
- * if (keyIsIn(userInput, obj)) {
29
- * // userInput is now narrowed to 'a' | 'b' | 'c'
30
- * const value = obj[userInput]; // Type-safe access, value is number
31
- * console.log(`Value for ${userInput}:`, value);
32
- * } else {
33
- * console.log(`Key '${userInput}' not found in object`);
34
- * }
35
- * ```
36
- *
37
- * @example
38
- * Dynamic key validation for safe property access:
39
- * ```typescript
40
- * const config = {
41
- * apiUrl: 'https://api.example.com',
42
- * timeout: 5000,
43
- * retries: 3
44
- * } as const;
45
- *
46
- * function getConfigValue(key: string): unknown {
47
- * if (keyIsIn(key, config)) {
48
- * // key is now narrowed to 'apiUrl' | 'timeout' | 'retries'
49
- * return config[key]; // Safe access with proper typing
50
- * }
51
- *
52
- * throw new Error(`Invalid config key: ${key}`);
53
- * }
54
- *
55
- * // Usage
56
- * const apiUrl = getConfigValue('apiUrl'); // Returns string
57
- * const timeout = getConfigValue('timeout'); // Returns number
58
- * // getConfigValue('invalid') would throw an error
59
- * ```
15
+ * **Implementation:** Uses `Object.hasOwn()` to check for own properties (not
16
+ * inherited).
60
17
  *
61
18
  * @example
62
- * Form field validation:
63
- * ```typescript
64
- * interface FormData {
65
- * name: string;
66
- * email: string;
67
- * age: number;
68
- * }
69
- *
70
- * const formData: FormData = getFormData();
71
- * const requiredFields: readonly string[] = ['name', 'email'] as const;
72
- *
73
- * function validateRequiredFields(data: FormData): string[] {
74
- * const errors: string[] = [];
75
19
  *
76
- * for (const field of requiredFields) {
77
- * if (keyIsIn(field, data)) {
78
- * // field is now narrowed to keyof FormData
79
- * const value = data[field];
20
+ * ```ts
21
+ * const user = { id: 1, name: 'Ada' } as const;
22
+ * const maybeKey: string = 'name';
80
23
  *
81
- * if (typeof value === 'string' && value.trim() === '') {
82
- * errors.push(`${field} is required`);
83
- * }
84
- * }
85
- * }
86
- *
87
- * return errors;
88
- * }
89
- * ```
90
- *
91
- * @example
92
- * Safe object property iteration:
93
- * ```typescript
94
- * const userPreferences = {
95
- * theme: 'dark',
96
- * language: 'en',
97
- * notifications: true
98
- * };
99
- *
100
- * const settingsToUpdate: string[] = getSettingsFromUser();
101
- *
102
- * function updatePreferences(updates: Record<string, unknown>) {
103
- * const validUpdates: Partial<typeof userPreferences> = {};
104
- *
105
- * for (const [key, value] of Object.entries(updates)) {
106
- * if (keyIsIn(key, userPreferences)) {
107
- * // key is now narrowed to valid preference keys
108
- * validUpdates[key] = value as typeof userPreferences[typeof key];
109
- * } else {
110
- * console.warn(`Unknown preference key: ${key}`);
111
- * }
112
- * }
113
- *
114
- * return { ...userPreferences, ...validUpdates };
115
- * }
116
- * ```
117
- *
118
- * @example
119
- * Comparison with hasKey() - different narrowing behavior:
120
- * ```typescript
121
- * const obj = { x: 10, y: 20 };
122
- * const key: string = 'x';
123
- *
124
- * // Using keyIsIn - narrows the key type
125
- * if (keyIsIn(key, obj)) {
126
- * // key is now 'x' | 'y'
127
- * const value = obj[key]; // Safe access
128
- * }
129
- *
130
- * // Using hasKey - narrows the object type
131
- * if (hasKey(obj, key)) {
132
- * // obj type is narrowed to guarantee the key exists
133
- * const value = obj.x; // Direct access
134
- * }
135
- * ```
136
- *
137
- * @example
138
- * Working with union types:
139
- * ```typescript
140
- * type Config =
141
- * | { type: 'database'; host: string; port: number }
142
- * | { type: 'file'; path: string }
143
- * | { type: 'memory'; maxSize: number };
144
- *
145
- * function getConfigProperty(config: Config, propName: string): unknown {
146
- * if (keyIsIn(propName, config)) {
147
- * // propName is narrowed to valid keys for the specific config type
148
- * return config[propName];
149
- * }
150
- *
151
- * return undefined;
24
+ * if (keyIsIn(maybeKey, user)) {
25
+ * assert(user[maybeKey] === 'Ada');
26
+ * } else {
27
+ * assert.fail('Expected a known key.');
152
28
  * }
153
29
  * ```
154
30
  *
31
+ * @template K - The type of the key to check, must extend PropertyKey (string |
32
+ * number | symbol)
33
+ * @template R - The type of the record (object), must extend UnknownRecord
34
+ * @param key - The key to check for
35
+ * @param obj - The object to check within
36
+ * @returns `true` if `key` is an own property of `obj`, `false` otherwise. When
37
+ * `true`, TypeScript narrows the key type to be a valid key of the object.
155
38
  * @see {@link hasKey} - Similar function that narrows the object type instead of the key type
156
39
  */
157
40
  export const keyIsIn = <
package/src/index.mts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './array/index.mjs';
2
1
  export * from './collections/index.mjs';
3
2
  export * from './expect-type.mjs';
4
3
  export * from './functional/index.mjs';
@@ -1,94 +1,61 @@
1
1
  import { SafeInt, asSafeInt } from '../number/index.mjs';
2
2
 
3
3
  /**
4
- * Generates a sequence of numbers within a specified range using a generator function.
4
+ * Generates a sequence of numbers within a specified range using a generator
5
+ * function.
5
6
  *
6
- * This function creates a generator that yields numbers from `start` (inclusive) to `end` (exclusive)
7
- * with the specified `step` increment/decrement. The function implements the JavaScript iterator protocol,
8
- * making it compatible with for-of loops, spread operator, Array.from(), and other iterator consumers.
7
+ * This function creates a generator that yields numbers from `start`
8
+ * (inclusive) to `end` (exclusive) with the specified `step`
9
+ * increment/decrement. The function implements the JavaScript iterator
10
+ * protocol, making it compatible with for-of loops, spread operator,
11
+ * Array.from(), and other iterator consumers.
9
12
  *
10
13
  * The function has two overloaded signatures:
11
- * 1. For non-negative ranges: accepts SafeUint parameters and optional positive step
14
+ *
15
+ * 1. For non-negative ranges: accepts SafeUint parameters and optional positive
16
+ * step
12
17
  * 2. For general ranges: accepts SafeInt parameters and optional non-zero step
13
18
  *
14
19
  * **Generator Behavior:**
20
+ *
15
21
  * - Yields values lazily (computed on-demand)
16
22
  * - Returns `void` when iteration completes
17
23
  * - Does not accept sent values (next parameter is ignored)
18
24
  * - Automatically handles direction based on step sign and start/end relationship
19
25
  *
20
26
  * **Step Parameter Behavior:**
27
+ *
21
28
  * - Positive step: iterates from start toward end (start < end expected)
22
29
  * - Negative step: iterates from start toward end (start > end expected)
23
30
  * - Zero step: not allowed (NonZeroSafeInt constraint)
24
31
  * - Default step: 1 (positive direction)
25
32
  *
26
33
  * **Edge Cases:**
34
+ *
27
35
  * - When start equals end: yields no values (empty sequence)
28
36
  * - When step direction conflicts with start/end relationship: yields no values
29
37
  * - All parameters must be safe integers (within JavaScript's safe integer range)
30
38
  *
31
- * @template T - The specific SafeInt or SafeUint type being generated
32
- * @param start - The starting number of the sequence (inclusive). Must be a safe integer.
33
- * @param end - The end number of the sequence (exclusive). Must be a safe integer.
34
- * @param step - The increment or decrement value. Defaults to 1. Must be non-zero safe integer.
35
- * @returns A Generator object that yields safe integers in the specified range.
36
- *
37
39
  * @example
38
- * ```typescript
39
- * // Basic ascending range
40
- * for (const n of range(0, 5)) {
41
- * console.log(n); // Outputs: 0, 1, 2, 3, 4
42
- * }
43
- *
44
- * // Range with custom step
45
- * for (const n of range(0, 10, 2)) {
46
- * console.log(n); // Outputs: 0, 2, 4, 6, 8
47
- * }
48
- *
49
- * // Descending range with negative step
50
- * for (const n of range(10, 0, -1)) {
51
- * console.log(n); // Outputs: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
52
- * }
53
40
  *
54
- * // Negative numbers with negative step
55
- * for (const n of range(0, -10, -1)) {
56
- * console.log(n); // Outputs: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9
57
- * }
41
+ * ```ts
42
+ * const zeroToThree = Array.from(range(0, 3));
43
+ * const threeToZero = Array.from(range(3, 0, -1));
44
+ * const defaultEnd = Array.from(range(4));
58
45
  *
59
- * // Convert generator to array
60
- * const numbers = Array.from(range(1, 4)); // [1, 2, 3]
61
- * const evens = [...range(0, 11, 2)]; // [0, 2, 4, 6, 8, 10]
62
- *
63
- * // Empty ranges
64
- * Array.from(range(5, 5)); // [] (start equals end)
65
- * Array.from(range(5, 3)); // [] (positive step, start > end)
66
- * Array.from(range(3, 5, -1)); // [] (negative step, start < end)
67
- *
68
- * // Using with iterator protocol manually
69
- * const gen = range(1, 4);
70
- * console.log(gen.next()); // { value: 1, done: false }
71
- * console.log(gen.next()); // { value: 2, done: false }
72
- * console.log(gen.next()); // { value: 3, done: false }
73
- * console.log(gen.next()); // { value: undefined, done: true }
74
- *
75
- * // Practical usage patterns
76
- * // Create index sequences
77
- * const indices = Array.from(range(0, items.length));
78
- *
79
- * // Generate test data
80
- * const testIds = [...range(1, 101)]; // [1, 2, ..., 100]
81
- *
82
- * // Iterate with step intervals
83
- * for (const minute of range(0, 60, 5)) {
84
- * scheduleTask(minute); // Every 5 minutes
85
- * }
86
- *
87
- * // Countdown sequences
88
- * for (const count of range(10, 0, -1)) {
89
- * console.log(`T-minus ${count}`);
90
- * }
46
+ * assert.deepStrictEqual(zeroToThree, [0, 1, 2]);
47
+ * assert.deepStrictEqual(threeToZero, [3, 2, 1]);
48
+ * assert.deepStrictEqual(defaultEnd, [0, 1, 2, 3]);
91
49
  * ```
50
+ *
51
+ * @template T - The specific SafeInt or SafeUint type being generated
52
+ * @param start - The starting number of the sequence (inclusive). Must be a
53
+ * safe integer.
54
+ * @param end - The end number of the sequence (exclusive). Must be a safe
55
+ * integer.
56
+ * @param step - The increment or decrement value. Defaults to 1. Must be
57
+ * non-zero safe integer.
58
+ * @returns A Generator object that yields safe integers in the specified range.
92
59
  */
93
60
  export function range(
94
61
  end: WithSmallInt<SafeUint, MaxInt>,