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
@@ -0,0 +1,275 @@
1
+ import { Uint32 } from '../../number/index.mjs';
2
+ import { size } from './array-utils-size.mjs';
3
+ import { sliceClamped } from './array-utils-slice-clamped.mjs';
4
+ import { isEmpty } from './array-utils-validation.mjs';
5
+
6
+ /**
7
+ * Returns all elements of an array except the first one.
8
+ *
9
+ * @example
10
+ *
11
+ * ```ts
12
+ * {
13
+ * const scientists = ['Ada', 'Grace', 'Katherine'] as const;
14
+ * const remainder = Arr.tail(scientists);
15
+ *
16
+ * assert.deepStrictEqual(remainder, ['Grace', 'Katherine']);
17
+ * assert(remainder.length === 2);
18
+ * }
19
+ * {
20
+ * const values = [1, 2, 3] as const;
21
+ *
22
+ * const remainder = Arr.rest(values);
23
+ * const emptyRemainder = Arr.rest([1] as const);
24
+ *
25
+ * assert.deepStrictEqual(remainder, [2, 3] as const);
26
+ * assert.deepStrictEqual(emptyRemainder, [] as const);
27
+ * }
28
+ * ```
29
+ */
30
+ export const tail = <const Ar extends readonly unknown[]>(
31
+ array: Ar,
32
+ ): List.Tail<Ar> =>
33
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
34
+ array.slice(1) as unknown as List.Tail<Ar>;
35
+
36
+ /**
37
+ * Returns all elements of an array except the last one.
38
+ *
39
+ * @example
40
+ *
41
+ * ```ts
42
+ * const queue = ['task-1', 'task-2', 'task-3'] as const;
43
+ * const withoutLast = Arr.butLast(queue);
44
+ *
45
+ * assert.deepStrictEqual(withoutLast, ['task-1', 'task-2']);
46
+ * assert(withoutLast.length === 2);
47
+ * ```
48
+ */
49
+ export const butLast = <const Ar extends readonly unknown[]>(
50
+ array: Ar,
51
+ ): List.ButLast<Ar> =>
52
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
53
+ (isEmpty(array) ? [] : array.slice(0, -1)) as unknown as List.ButLast<Ar>;
54
+
55
+ /**
56
+ * Takes the first N elements from an array.
57
+ *
58
+ * @example
59
+ *
60
+ * ```ts
61
+ * const values = [1, 2, 3, 4];
62
+ *
63
+ * const firstTwo = Arr.take(values, 2);
64
+ * const firstThree = Arr.take(3)(values);
65
+ *
66
+ * assert.deepStrictEqual(firstTwo, [1, 2]);
67
+ * assert.deepStrictEqual(firstThree, [1, 2, 3]);
68
+ * ```
69
+ */
70
+ export function take<
71
+ const Ar extends readonly unknown[],
72
+ N extends SizeType.ArgArr,
73
+ >(
74
+ array: Ar,
75
+ num: N,
76
+ ): N extends SmallUint
77
+ ? List.Take<N, Ar>
78
+ : N extends SizeType.ArgArrPositive
79
+ ? Ar extends NonEmptyArray<unknown>
80
+ ? NonEmptyArray<Ar[number]>
81
+ : readonly Ar[number][]
82
+ : readonly Ar[number][];
83
+
84
+ export function take<N extends SizeType.ArgArr>(
85
+ num: N,
86
+ ): <const Ar extends readonly unknown[]>(
87
+ array: Ar,
88
+ ) => N extends SmallUint
89
+ ? List.Take<N, Ar>
90
+ : N extends SizeType.ArgArrPositive
91
+ ? Ar extends NonEmptyArray<unknown>
92
+ ? NonEmptyArray<Ar[number]>
93
+ : readonly Ar[number][]
94
+ : readonly Ar[number][];
95
+
96
+ export function take<E>(
97
+ ...args:
98
+ | readonly [array: readonly E[], num: SizeType.ArgArr]
99
+ | readonly [num: SizeType.ArgArr]
100
+ ): readonly E[] | ((array: readonly E[]) => readonly E[]) {
101
+ switch (args.length) {
102
+ case 2: {
103
+ const [array, num] = args;
104
+ return sliceClamped(array, 0, num);
105
+ }
106
+ case 1: {
107
+ const [num] = args;
108
+ return (array) => take(array, num);
109
+ }
110
+ }
111
+ }
112
+
113
+ /**
114
+ * Takes the last N elements from an array.
115
+ *
116
+ * @example
117
+ *
118
+ * ```ts
119
+ * const values = [1, 2, 3, 4];
120
+ *
121
+ * const lastTwo = Arr.takeLast(values, 2);
122
+ * const lastThree = Arr.takeLast(3)(values);
123
+ *
124
+ * assert.deepStrictEqual(lastTwo, [3, 4]);
125
+ * assert.deepStrictEqual(lastThree, [2, 3, 4]);
126
+ * ```
127
+ */
128
+ export function takeLast<
129
+ const Ar extends readonly unknown[],
130
+ N extends SizeType.ArgArr,
131
+ >(
132
+ array: Ar,
133
+ num: N,
134
+ ): N extends SmallUint
135
+ ? List.TakeLast<N, Ar>
136
+ : N extends SizeType.ArgArrPositive
137
+ ? Ar extends NonEmptyArray<unknown>
138
+ ? NonEmptyArray<Ar[number]>
139
+ : readonly Ar[number][]
140
+ : readonly Ar[number][];
141
+
142
+ export function takeLast<N extends SizeType.ArgArr>(
143
+ num: N,
144
+ ): <const Ar extends readonly unknown[]>(
145
+ array: Ar,
146
+ ) => N extends SmallUint
147
+ ? List.TakeLast<N, Ar>
148
+ : N extends SizeType.ArgArrPositive
149
+ ? Ar extends NonEmptyArray<unknown>
150
+ ? NonEmptyArray<Ar[number]>
151
+ : readonly Ar[number][]
152
+ : readonly Ar[number][];
153
+
154
+ export function takeLast<E>(
155
+ ...args:
156
+ | readonly [array: readonly E[], num: SizeType.ArgArr]
157
+ | readonly [num: SizeType.ArgArr]
158
+ ): readonly E[] | ((array: readonly E[]) => readonly E[]) {
159
+ switch (args.length) {
160
+ case 2: {
161
+ const [array, num] = args;
162
+ return sliceClamped(array, Uint32.sub(size(array), num), size(array));
163
+ }
164
+ case 1: {
165
+ const [num] = args;
166
+ return (array) => takeLast(array, num);
167
+ }
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Skips the first N elements of an array.
173
+ *
174
+ * @example
175
+ *
176
+ * ```ts
177
+ * const values = ['a', 'b', 'c', 'd'] as const;
178
+ *
179
+ * const withoutFirstTwo = Arr.skip(values, 2);
180
+ * const withoutFirstThree = Arr.skip(3)(values);
181
+ *
182
+ * assert.deepStrictEqual(withoutFirstTwo, ['c', 'd']);
183
+ * assert.deepStrictEqual(withoutFirstThree, ['d']);
184
+ * ```
185
+ */
186
+ export function skip<
187
+ const Ar extends readonly unknown[],
188
+ N extends SizeType.ArgArr,
189
+ >(
190
+ array: Ar,
191
+ num: N,
192
+ ): N extends SmallUint ? List.Skip<N, Ar> : readonly Ar[number][];
193
+
194
+ // curried version
195
+ export function skip<N extends SizeType.ArgArr>(
196
+ num: N,
197
+ ): <const Ar extends readonly unknown[]>(
198
+ array: Ar,
199
+ ) => N extends SmallUint ? List.Skip<N, Ar> : readonly Ar[number][];
200
+
201
+ export function skip<E>(
202
+ ...args: readonly [readonly E[], SizeType.ArgArr] | readonly [SizeType.ArgArr]
203
+ ): readonly E[] | ((array: readonly E[]) => readonly E[]) {
204
+ switch (args.length) {
205
+ case 2: {
206
+ const [array, num] = args;
207
+ return sliceClamped(array, num, size(array));
208
+ }
209
+ case 1: {
210
+ const [num] = args;
211
+ return (array) => skip(array, num);
212
+ }
213
+ }
214
+ }
215
+
216
+ /**
217
+ * Skips the last N elements of an array.
218
+ *
219
+ * @example
220
+ *
221
+ * ```ts
222
+ * const values = ['a', 'b', 'c', 'd'];
223
+ *
224
+ * const withoutLastTwo = Arr.skipLast(values, 2);
225
+ * const withoutLastThree = Arr.skipLast(3)(values);
226
+ *
227
+ * assert.deepStrictEqual(withoutLastTwo, ['a', 'b']);
228
+ * assert.deepStrictEqual(withoutLastThree, ['a']);
229
+ * ```
230
+ */
231
+ export function skipLast<
232
+ const Ar extends readonly unknown[],
233
+ N extends SizeType.ArgArr,
234
+ >(
235
+ array: Ar,
236
+ num: N,
237
+ ): N extends SmallUint ? List.SkipLast<N, Ar> : readonly Ar[number][];
238
+
239
+ // curried version
240
+ export function skipLast<N extends SizeType.ArgArr>(
241
+ num: N,
242
+ ): <const Ar extends readonly unknown[]>(
243
+ array: Ar,
244
+ ) => N extends SmallUint ? List.SkipLast<N, Ar> : readonly Ar[number][];
245
+
246
+ export function skipLast<E>(
247
+ ...args:
248
+ | readonly [array: readonly E[], num: SizeType.ArgArr]
249
+ | readonly [num: SizeType.ArgArr]
250
+ ): readonly E[] | ((array: readonly E[]) => readonly E[]) {
251
+ switch (args.length) {
252
+ case 2: {
253
+ const [array, num] = args;
254
+ return sliceClamped(array, 0, Uint32.sub(size(array), num));
255
+ }
256
+ case 1: {
257
+ const [num] = args;
258
+ return (array) => skipLast(array, num);
259
+ }
260
+ }
261
+ }
262
+
263
+ /**
264
+ * Alias for `tail`.
265
+ *
266
+ * @see {@link tail}
267
+ */
268
+ export const rest = tail;
269
+
270
+ /**
271
+ * Alias for `skip`.
272
+ *
273
+ * @see {@link skip}
274
+ */
275
+ export const drop = skip;
@@ -0,0 +1,158 @@
1
+ import { expectType } from '../../expect-type.mjs';
2
+ import {
3
+ butLast,
4
+ skip,
5
+ skipLast,
6
+ tail,
7
+ take,
8
+ takeLast,
9
+ } from './array-utils-slicing.mjs';
10
+
11
+ describe('Arr slicing', () => {
12
+ describe('tail', () => {
13
+ test('should return all elements except the first', () => {
14
+ const array = [1, 2, 3, 4] as const;
15
+ const result = tail(array);
16
+ expectType<typeof result, readonly [2, 3, 4]>('=');
17
+ expect(result).toStrictEqual([2, 3, 4]);
18
+ });
19
+
20
+ test('should work with single element array', () => {
21
+ const array = [1] as const;
22
+ const result = tail(array);
23
+ expectType<typeof result, readonly []>('=');
24
+ expect(result).toStrictEqual([]);
25
+ });
26
+
27
+ test('should work with empty array', () => {
28
+ const array = [] as const;
29
+ const result = tail(array);
30
+ expectType<typeof result, readonly []>('=');
31
+ expect(result).toStrictEqual([]);
32
+ });
33
+ });
34
+
35
+ describe('butLast', () => {
36
+ test('readonly number[] type', () => {
37
+ const xs: readonly number[] = [1, 2, 3];
38
+ const bl = butLast(xs);
39
+
40
+ expectType<typeof bl, readonly number[]>('=');
41
+
42
+ expect(bl).toStrictEqual([1, 2]);
43
+ });
44
+
45
+ test('should return all elements except the last', () => {
46
+ const array = [1, 2, 3, 4] as const;
47
+ const result = butLast(array);
48
+ expectType<typeof result, readonly [1, 2, 3]>('=');
49
+ expect(result).toStrictEqual([1, 2, 3]);
50
+ });
51
+
52
+ test('should work with single element array', () => {
53
+ const array = [1] as const;
54
+ const result = butLast(array);
55
+ expectType<typeof result, readonly []>('=');
56
+ expect(result).toStrictEqual([]);
57
+ });
58
+
59
+ test('should work with empty array', () => {
60
+ const array = [] as const;
61
+ const result = butLast(array);
62
+ expectType<typeof result, readonly []>('=');
63
+ expect(result).toStrictEqual([]);
64
+ });
65
+ });
66
+
67
+ describe('take', () => {
68
+ {
69
+ const xs = [1, 2, 3] as const;
70
+ const t = take(xs, 2);
71
+
72
+ expectType<typeof t, readonly [1, 2]>('=');
73
+
74
+ test('case 1', () => {
75
+ expect(t).toStrictEqual([1, 2]);
76
+ });
77
+ }
78
+ {
79
+ const xs: readonly number[] = [1, 2, 3];
80
+ const t = take(xs, 2);
81
+
82
+ expectType<typeof t, readonly number[]>('=');
83
+
84
+ test('case 2', () => {
85
+ expect(t).toStrictEqual([1, 2]);
86
+ });
87
+ }
88
+ });
89
+
90
+ describe('takeLast', () => {
91
+ {
92
+ const xs = [1, 2, 3] as const;
93
+ const t = takeLast(xs, 2);
94
+
95
+ expectType<typeof t, readonly [2, 3]>('=');
96
+
97
+ test('case 1', () => {
98
+ expect(t).toStrictEqual([2, 3]);
99
+ });
100
+ }
101
+ {
102
+ const xs: readonly number[] = [1, 2, 3];
103
+ const t = takeLast(xs, 2);
104
+
105
+ expectType<typeof t, readonly number[]>('=');
106
+
107
+ test('case 2', () => {
108
+ expect(t).toStrictEqual([2, 3]);
109
+ });
110
+ }
111
+ });
112
+
113
+ describe('skip', () => {
114
+ {
115
+ const xs = [1, 2, 3] as const;
116
+ const t = skip(xs, 2);
117
+
118
+ expectType<typeof t, readonly [3]>('=');
119
+
120
+ test('case 1', () => {
121
+ expect(t).toStrictEqual([3]);
122
+ });
123
+ }
124
+ {
125
+ const xs: readonly number[] = [1, 2, 3];
126
+ const t = skip(xs, 2);
127
+
128
+ expectType<typeof t, readonly number[]>('=');
129
+
130
+ test('case 2', () => {
131
+ expect(t).toStrictEqual([3]);
132
+ });
133
+ }
134
+ });
135
+
136
+ describe('skipLast', () => {
137
+ {
138
+ const xs = [1, 2, 3] as const;
139
+ const t = skipLast(xs, 2);
140
+
141
+ expectType<typeof t, readonly [1]>('=');
142
+
143
+ test('case 1', () => {
144
+ expect(t).toStrictEqual([1]);
145
+ });
146
+ }
147
+ {
148
+ const xs: readonly number[] = [1, 2, 3];
149
+ const t = skipLast(xs, 2);
150
+
151
+ expectType<typeof t, readonly number[]>('=');
152
+
153
+ test('case 2', () => {
154
+ expect(t).toStrictEqual([1]);
155
+ });
156
+ }
157
+ });
158
+ });