ts-data-forge 3.3.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (664) 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 +60 -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 +213 -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 +162 -0
  21. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
  22. package/dist/array/impl/array-utils-search.d.mts +178 -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 +329 -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 -254
  59. package/dist/collections/imap-mapped.d.mts.map +1 -1
  60. package/dist/collections/imap-mapped.mjs +40 -170
  61. package/dist/collections/imap-mapped.mjs.map +1 -1
  62. package/dist/collections/imap.d.mts +436 -164
  63. package/dist/collections/imap.d.mts.map +1 -1
  64. package/dist/collections/imap.mjs +83 -101
  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 -136
  75. package/dist/collections/queue.d.mts.map +1 -1
  76. package/dist/collections/queue.mjs +59 -160
  77. package/dist/collections/queue.mjs.map +1 -1
  78. package/dist/collections/stack.d.mts +154 -155
  79. package/dist/collections/stack.d.mts.map +1 -1
  80. package/dist/collections/stack.mjs +58 -207
  81. package/dist/collections/stack.mjs.map +1 -1
  82. package/dist/entry-point.d.mts +2 -0
  83. package/dist/entry-point.d.mts.map +1 -1
  84. package/dist/entry-point.mjs +8 -5
  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/index.d.mts +2 -2
  91. package/dist/functional/index.d.mts.map +1 -1
  92. package/dist/functional/index.mjs +4 -2
  93. package/dist/functional/index.mjs.map +1 -1
  94. package/dist/functional/match.d.mts +35 -140
  95. package/dist/functional/match.d.mts.map +1 -1
  96. package/dist/functional/match.mjs.map +1 -1
  97. package/dist/functional/optional/impl/index.d.mts +18 -0
  98. package/dist/functional/optional/impl/index.d.mts.map +1 -0
  99. package/dist/functional/optional/impl/index.mjs +17 -0
  100. package/dist/functional/optional/impl/index.mjs.map +1 -0
  101. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +29 -0
  102. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -0
  103. package/dist/functional/optional/impl/optional-expect-to-be.mjs +25 -0
  104. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -0
  105. package/dist/functional/optional/impl/optional-filter.d.mts +29 -0
  106. package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -0
  107. package/dist/functional/optional/impl/optional-filter.mjs +28 -0
  108. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -0
  109. package/dist/functional/optional/impl/optional-flat-map.d.mts +33 -0
  110. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -0
  111. package/dist/functional/optional/impl/optional-flat-map.mjs +21 -0
  112. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -0
  113. package/dist/functional/optional/impl/optional-from-nullable.d.mts +24 -0
  114. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -0
  115. package/dist/functional/optional/impl/optional-from-nullable.mjs +29 -0
  116. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -0
  117. package/dist/functional/optional/impl/optional-is-none.d.mts +22 -0
  118. package/dist/functional/optional/impl/optional-is-none.d.mts.map +1 -0
  119. package/dist/functional/optional/impl/optional-is-none.mjs +25 -0
  120. package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -0
  121. package/dist/functional/optional/impl/optional-is-optional.d.mts +18 -0
  122. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -0
  123. package/dist/functional/optional/impl/optional-is-optional.mjs +27 -0
  124. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -0
  125. package/dist/functional/optional/impl/optional-is-some.d.mts +22 -0
  126. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -0
  127. package/dist/functional/optional/impl/optional-is-some.mjs +25 -0
  128. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -0
  129. package/dist/functional/optional/impl/optional-map.d.mts +31 -0
  130. package/dist/functional/optional/impl/optional-map.d.mts.map +1 -0
  131. package/dist/functional/optional/impl/optional-map.mjs +25 -0
  132. package/dist/functional/optional/impl/optional-map.mjs.map +1 -0
  133. package/dist/functional/optional/impl/optional-none.d.mts +16 -0
  134. package/dist/functional/optional/impl/optional-none.d.mts.map +1 -0
  135. package/dist/functional/optional/impl/optional-none.mjs +20 -0
  136. package/dist/functional/optional/impl/optional-none.mjs.map +1 -0
  137. package/dist/functional/optional/impl/optional-or-else.d.mts +35 -0
  138. package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -0
  139. package/dist/functional/optional/impl/optional-or-else.mjs +19 -0
  140. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -0
  141. package/dist/functional/optional/impl/optional-some.d.mts +19 -0
  142. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -0
  143. package/dist/functional/optional/impl/optional-some.mjs +26 -0
  144. package/dist/functional/optional/impl/optional-some.mjs.map +1 -0
  145. package/dist/functional/optional/impl/optional-to-nullable.d.mts +27 -0
  146. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -0
  147. package/dist/functional/optional/impl/optional-to-nullable.mjs +31 -0
  148. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -0
  149. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +33 -0
  150. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -0
  151. package/dist/functional/optional/impl/optional-unwrap-or.mjs +19 -0
  152. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -0
  153. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +29 -0
  154. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -0
  155. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +38 -0
  156. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -0
  157. package/dist/functional/optional/impl/optional-unwrap.d.mts +28 -0
  158. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -0
  159. package/dist/functional/optional/impl/optional-unwrap.mjs +11 -0
  160. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -0
  161. package/dist/functional/optional/impl/optional-zip.d.mts +31 -0
  162. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -0
  163. package/dist/functional/optional/impl/optional-zip.mjs +39 -0
  164. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -0
  165. package/dist/functional/optional/impl/tag.d.mts +5 -0
  166. package/dist/functional/optional/impl/tag.d.mts.map +1 -0
  167. package/dist/functional/optional/impl/tag.mjs +7 -0
  168. package/dist/functional/optional/impl/tag.mjs.map +1 -0
  169. package/dist/functional/optional/impl/types.d.mts +22 -0
  170. package/dist/functional/optional/impl/types.d.mts.map +1 -0
  171. package/dist/functional/optional/impl/types.mjs +2 -0
  172. package/dist/functional/optional/impl/types.mjs.map +1 -0
  173. package/dist/functional/optional/index.d.mts +2 -0
  174. package/dist/functional/optional/index.d.mts.map +1 -0
  175. package/dist/functional/optional/index.mjs +3 -0
  176. package/dist/functional/optional/index.mjs.map +1 -0
  177. package/dist/functional/pipe.d.mts +63 -117
  178. package/dist/functional/pipe.d.mts.map +1 -1
  179. package/dist/functional/pipe.mjs +4 -3
  180. package/dist/functional/pipe.mjs.map +1 -1
  181. package/dist/functional/result/impl/index.d.mts +24 -0
  182. package/dist/functional/result/impl/index.d.mts.map +1 -0
  183. package/dist/functional/result/impl/index.mjs +23 -0
  184. package/dist/functional/result/impl/index.mjs.map +1 -0
  185. package/dist/functional/result/impl/result-err.d.mts +25 -0
  186. package/dist/functional/result/impl/result-err.d.mts.map +1 -0
  187. package/dist/functional/result/impl/result-err.mjs +32 -0
  188. package/dist/functional/result/impl/result-err.mjs.map +1 -0
  189. package/dist/functional/result/impl/result-expect-to-be.d.mts +27 -0
  190. package/dist/functional/result/impl/result-expect-to-be.d.mts.map +1 -0
  191. package/dist/functional/result/impl/result-expect-to-be.mjs +26 -0
  192. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -0
  193. package/dist/functional/result/impl/result-flat-map.d.mts +39 -0
  194. package/dist/functional/result/impl/result-flat-map.d.mts.map +1 -0
  195. package/dist/functional/result/impl/result-flat-map.mjs +24 -0
  196. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -0
  197. package/dist/functional/result/impl/result-fold.d.mts +45 -0
  198. package/dist/functional/result/impl/result-fold.d.mts.map +1 -0
  199. package/dist/functional/result/impl/result-fold.mjs +26 -0
  200. package/dist/functional/result/impl/result-fold.mjs.map +1 -0
  201. package/dist/functional/result/impl/result-from-promise.d.mts +32 -0
  202. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -0
  203. package/dist/functional/result/impl/result-from-promise.mjs +32 -0
  204. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -0
  205. package/dist/functional/result/impl/result-from-throwable.d.mts +29 -0
  206. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -0
  207. package/dist/functional/result/impl/result-from-throwable.mjs +46 -0
  208. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -0
  209. package/dist/functional/result/impl/result-is-err.d.mts +20 -0
  210. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -0
  211. package/dist/functional/result/impl/result-is-err.mjs +23 -0
  212. package/dist/functional/result/impl/result-is-err.mjs.map +1 -0
  213. package/dist/functional/result/impl/result-is-ok.d.mts +20 -0
  214. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -0
  215. package/dist/functional/result/impl/result-is-ok.mjs +23 -0
  216. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -0
  217. package/dist/functional/result/impl/result-is-result.d.mts +17 -0
  218. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -0
  219. package/dist/functional/result/impl/result-is-result.mjs +26 -0
  220. package/dist/functional/result/impl/result-is-result.mjs.map +1 -0
  221. package/dist/functional/result/impl/result-map-err.d.mts +33 -0
  222. package/dist/functional/result/impl/result-map-err.d.mts.map +1 -0
  223. package/dist/functional/result/impl/result-map-err.mjs +25 -0
  224. package/dist/functional/result/impl/result-map-err.mjs.map +1 -0
  225. package/dist/functional/result/impl/result-map.d.mts +34 -0
  226. package/dist/functional/result/impl/result-map.d.mts.map +1 -0
  227. package/dist/functional/result/impl/result-map.mjs +25 -0
  228. package/dist/functional/result/impl/result-map.mjs.map +1 -0
  229. package/dist/functional/result/impl/result-ok.d.mts +25 -0
  230. package/dist/functional/result/impl/result-ok.d.mts.map +1 -0
  231. package/dist/functional/result/impl/result-ok.mjs +32 -0
  232. package/dist/functional/result/impl/result-ok.mjs.map +1 -0
  233. package/dist/functional/result/impl/result-or-else.d.mts +32 -0
  234. package/dist/functional/result/impl/result-or-else.d.mts.map +1 -0
  235. package/dist/functional/result/impl/result-or-else.mjs +20 -0
  236. package/dist/functional/result/impl/result-or-else.mjs.map +1 -0
  237. package/dist/functional/result/impl/result-swap.d.mts +20 -0
  238. package/dist/functional/result/impl/result-swap.d.mts.map +1 -0
  239. package/dist/functional/result/impl/result-swap.mjs +28 -0
  240. package/dist/functional/result/impl/result-swap.mjs.map +1 -0
  241. package/dist/functional/result/impl/result-to-optional.d.mts +28 -0
  242. package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -0
  243. package/dist/functional/result/impl/result-to-optional.mjs +34 -0
  244. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -0
  245. package/dist/functional/result/impl/result-unwrap-err-or.d.mts +29 -0
  246. package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +1 -0
  247. package/dist/functional/result/impl/result-unwrap-err-or.mjs +20 -0
  248. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -0
  249. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +30 -0
  250. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -0
  251. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +47 -0
  252. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -0
  253. package/dist/functional/result/impl/result-unwrap-err.d.mts +31 -0
  254. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -0
  255. package/dist/functional/result/impl/result-unwrap-err.mjs +36 -0
  256. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -0
  257. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +29 -0
  258. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +1 -0
  259. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +20 -0
  260. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -0
  261. package/dist/functional/result/impl/result-unwrap-ok.d.mts +23 -0
  262. package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +1 -0
  263. package/dist/functional/result/impl/result-unwrap-ok.mjs +11 -0
  264. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -0
  265. package/dist/functional/result/impl/result-unwrap-throw.d.mts +30 -0
  266. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -0
  267. package/dist/functional/result/impl/result-unwrap-throw.mjs +41 -0
  268. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -0
  269. package/dist/functional/result/impl/result-zip.d.mts +29 -0
  270. package/dist/functional/result/impl/result-zip.d.mts.map +1 -0
  271. package/dist/functional/result/impl/result-zip.mjs +38 -0
  272. package/dist/functional/result/impl/result-zip.mjs.map +1 -0
  273. package/dist/functional/result/impl/tag.d.mts +5 -0
  274. package/dist/functional/result/impl/tag.d.mts.map +1 -0
  275. package/dist/functional/result/impl/tag.mjs +7 -0
  276. package/dist/functional/result/impl/tag.mjs.map +1 -0
  277. package/dist/functional/result/impl/types.d.mts +29 -0
  278. package/dist/functional/result/impl/types.d.mts.map +1 -0
  279. package/dist/functional/result/impl/types.mjs +2 -0
  280. package/dist/functional/result/impl/types.mjs.map +1 -0
  281. package/dist/functional/result/index.d.mts +2 -0
  282. package/dist/functional/result/index.d.mts.map +1 -0
  283. package/dist/functional/result/index.mjs +3 -0
  284. package/dist/functional/result/index.mjs.map +1 -0
  285. package/dist/globals.d.mts +95 -5
  286. package/dist/guard/has-key.d.mts +23 -74
  287. package/dist/guard/has-key.d.mts.map +1 -1
  288. package/dist/guard/has-key.mjs +23 -74
  289. package/dist/guard/has-key.mjs.map +1 -1
  290. package/dist/guard/is-non-empty-string.d.mts +20 -87
  291. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  292. package/dist/guard/is-non-empty-string.mjs +20 -87
  293. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  294. package/dist/guard/is-non-null-object.d.mts +14 -84
  295. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  296. package/dist/guard/is-non-null-object.mjs +14 -84
  297. package/dist/guard/is-non-null-object.mjs.map +1 -1
  298. package/dist/guard/is-primitive.d.mts +13 -126
  299. package/dist/guard/is-primitive.d.mts.map +1 -1
  300. package/dist/guard/is-primitive.mjs +13 -126
  301. package/dist/guard/is-primitive.mjs.map +1 -1
  302. package/dist/guard/is-record.d.mts +21 -132
  303. package/dist/guard/is-record.d.mts.map +1 -1
  304. package/dist/guard/is-record.mjs +21 -132
  305. package/dist/guard/is-record.mjs.map +1 -1
  306. package/dist/guard/is-type.d.mts +201 -238
  307. package/dist/guard/is-type.d.mts.map +1 -1
  308. package/dist/guard/is-type.mjs +201 -238
  309. package/dist/guard/is-type.mjs.map +1 -1
  310. package/dist/guard/key-is-in.d.mts +22 -139
  311. package/dist/guard/key-is-in.d.mts.map +1 -1
  312. package/dist/guard/key-is-in.mjs +22 -139
  313. package/dist/guard/key-is-in.mjs.map +1 -1
  314. package/dist/index.d.mts +0 -2
  315. package/dist/index.d.mts.map +1 -1
  316. package/dist/index.mjs +0 -5
  317. package/dist/index.mjs.map +1 -1
  318. package/dist/iterator/range.d.mts +29 -62
  319. package/dist/iterator/range.d.mts.map +1 -1
  320. package/dist/iterator/range.mjs.map +1 -1
  321. package/dist/json/json.d.mts +191 -122
  322. package/dist/json/json.d.mts.map +1 -1
  323. package/dist/json/json.mjs +246 -144
  324. package/dist/json/json.mjs.map +1 -1
  325. package/dist/number/branded-types/finite-number.d.mts +24 -156
  326. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  327. package/dist/number/branded-types/finite-number.mjs +28 -160
  328. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  329. package/dist/number/branded-types/int.d.mts +122 -120
  330. package/dist/number/branded-types/int.d.mts.map +1 -1
  331. package/dist/number/branded-types/int.mjs +123 -121
  332. package/dist/number/branded-types/int.mjs.map +1 -1
  333. package/dist/number/branded-types/int16.d.mts +22 -30
  334. package/dist/number/branded-types/int16.d.mts.map +1 -1
  335. package/dist/number/branded-types/int16.mjs +23 -31
  336. package/dist/number/branded-types/int16.mjs.map +1 -1
  337. package/dist/number/branded-types/int32.d.mts +22 -31
  338. package/dist/number/branded-types/int32.d.mts.map +1 -1
  339. package/dist/number/branded-types/int32.mjs +23 -32
  340. package/dist/number/branded-types/int32.mjs.map +1 -1
  341. package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
  342. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  343. package/dist/number/branded-types/non-negative-finite-number.mjs +32 -40
  344. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  345. package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
  346. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  347. package/dist/number/branded-types/non-negative-int16.mjs +25 -35
  348. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  349. package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
  350. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  351. package/dist/number/branded-types/non-negative-int32.mjs +27 -36
  352. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  353. package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
  354. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  355. package/dist/number/branded-types/non-zero-finite-number.mjs +26 -41
  356. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  357. package/dist/number/branded-types/non-zero-int.d.mts +15 -30
  358. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  359. package/dist/number/branded-types/non-zero-int.mjs +16 -31
  360. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  361. package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
  362. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  363. package/dist/number/branded-types/non-zero-int16.mjs +28 -36
  364. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  365. package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
  366. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  367. package/dist/number/branded-types/non-zero-int32.mjs +30 -37
  368. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  369. package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
  370. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  371. package/dist/number/branded-types/non-zero-safe-int.mjs +40 -41
  372. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  373. package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
  374. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  375. package/dist/number/branded-types/non-zero-uint16.mjs +25 -36
  376. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  377. package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
  378. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  379. package/dist/number/branded-types/non-zero-uint32.mjs +25 -36
  380. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  381. package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
  382. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  383. package/dist/number/branded-types/positive-finite-number.mjs +30 -44
  384. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  385. package/dist/number/branded-types/positive-int.d.mts +133 -123
  386. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  387. package/dist/number/branded-types/positive-int.mjs +134 -124
  388. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  389. package/dist/number/branded-types/positive-int16.d.mts +24 -35
  390. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  391. package/dist/number/branded-types/positive-int16.mjs +25 -36
  392. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  393. package/dist/number/branded-types/positive-int32.d.mts +24 -35
  394. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  395. package/dist/number/branded-types/positive-int32.mjs +25 -36
  396. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  397. package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
  398. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  399. package/dist/number/branded-types/positive-safe-int.mjs +161 -35
  400. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  401. package/dist/number/branded-types/positive-uint16.d.mts +24 -35
  402. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  403. package/dist/number/branded-types/positive-uint16.mjs +25 -36
  404. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  405. package/dist/number/branded-types/positive-uint32.d.mts +26 -36
  406. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  407. package/dist/number/branded-types/positive-uint32.mjs +27 -37
  408. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  409. package/dist/number/branded-types/safe-int.d.mts +140 -99
  410. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  411. package/dist/number/branded-types/safe-int.mjs +143 -102
  412. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  413. package/dist/number/branded-types/safe-uint.d.mts +24 -33
  414. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  415. package/dist/number/branded-types/safe-uint.mjs +26 -35
  416. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  417. package/dist/number/branded-types/uint.d.mts +121 -30
  418. package/dist/number/branded-types/uint.d.mts.map +1 -1
  419. package/dist/number/branded-types/uint.mjs +122 -31
  420. package/dist/number/branded-types/uint.mjs.map +1 -1
  421. package/dist/number/branded-types/uint16.d.mts +26 -34
  422. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  423. package/dist/number/branded-types/uint16.mjs +27 -35
  424. package/dist/number/branded-types/uint16.mjs.map +1 -1
  425. package/dist/number/branded-types/uint32.d.mts +26 -68
  426. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  427. package/dist/number/branded-types/uint32.mjs +27 -69
  428. package/dist/number/branded-types/uint32.mjs.map +1 -1
  429. package/dist/number/enum/int8.d.mts +37 -101
  430. package/dist/number/enum/int8.d.mts.map +1 -1
  431. package/dist/number/enum/int8.mjs +40 -171
  432. package/dist/number/enum/int8.mjs.map +1 -1
  433. package/dist/number/enum/uint8.d.mts +45 -55
  434. package/dist/number/enum/uint8.d.mts.map +1 -1
  435. package/dist/number/enum/uint8.mjs +47 -156
  436. package/dist/number/enum/uint8.mjs.map +1 -1
  437. package/dist/number/num.d.mts +145 -206
  438. package/dist/number/num.d.mts.map +1 -1
  439. package/dist/number/num.mjs +143 -199
  440. package/dist/number/num.mjs.map +1 -1
  441. package/dist/number/refined-number-utils.d.mts +97 -21
  442. package/dist/number/refined-number-utils.d.mts.map +1 -1
  443. package/dist/number/refined-number-utils.mjs +91 -22
  444. package/dist/number/refined-number-utils.mjs.map +1 -1
  445. package/dist/object/object.d.mts +126 -208
  446. package/dist/object/object.d.mts.map +1 -1
  447. package/dist/object/object.mjs +68 -102
  448. package/dist/object/object.mjs.map +1 -1
  449. package/dist/others/cast-mutable.d.mts +12 -88
  450. package/dist/others/cast-mutable.d.mts.map +1 -1
  451. package/dist/others/cast-mutable.mjs +13 -89
  452. package/dist/others/cast-mutable.mjs.map +1 -1
  453. package/dist/others/cast-readonly.d.mts +12 -168
  454. package/dist/others/cast-readonly.d.mts.map +1 -1
  455. package/dist/others/cast-readonly.mjs +13 -169
  456. package/dist/others/cast-readonly.mjs.map +1 -1
  457. package/dist/others/if-then.d.mts +6 -83
  458. package/dist/others/if-then.d.mts.map +1 -1
  459. package/dist/others/if-then.mjs +6 -83
  460. package/dist/others/if-then.mjs.map +1 -1
  461. package/dist/others/map-nullable.d.mts +12 -136
  462. package/dist/others/map-nullable.d.mts.map +1 -1
  463. package/dist/others/map-nullable.mjs.map +1 -1
  464. package/dist/others/memoize-function.d.mts +14 -157
  465. package/dist/others/memoize-function.d.mts.map +1 -1
  466. package/dist/others/memoize-function.mjs +14 -157
  467. package/dist/others/memoize-function.mjs.map +1 -1
  468. package/dist/others/tuple.d.mts +33 -151
  469. package/dist/others/tuple.d.mts.map +1 -1
  470. package/dist/others/tuple.mjs +33 -151
  471. package/dist/others/tuple.mjs.map +1 -1
  472. package/dist/others/unknown-to-string.d.mts +11 -125
  473. package/dist/others/unknown-to-string.d.mts.map +1 -1
  474. package/dist/others/unknown-to-string.mjs +12 -126
  475. package/dist/others/unknown-to-string.mjs.map +1 -1
  476. package/dist/promise/promise.d.mts +33 -21
  477. package/dist/promise/promise.d.mts.map +1 -1
  478. package/dist/promise/promise.mjs +36 -24
  479. package/dist/promise/promise.mjs.map +1 -1
  480. package/package.json +58 -44
  481. package/src/array/impl/array-utils-creation.mts +192 -0
  482. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  483. package/src/array/impl/array-utils-element-access.mts +115 -0
  484. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  485. package/src/array/impl/array-utils-iterators.mts +79 -0
  486. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  487. package/src/array/impl/array-utils-modification.mts +434 -0
  488. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  489. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  490. package/src/array/impl/array-utils-reducing-value.mts +535 -0
  491. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +53 -58
  492. package/src/array/impl/array-utils-search.mts +509 -0
  493. package/src/array/impl/array-utils-search.test.mts +346 -0
  494. package/src/array/impl/array-utils-set-op.mts +166 -0
  495. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  496. package/src/array/impl/array-utils-size.mts +30 -0
  497. package/src/array/impl/array-utils-size.test.mts +9 -0
  498. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  499. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +13 -13
  500. package/src/array/impl/array-utils-slicing.mts +275 -0
  501. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  502. package/src/array/impl/array-utils-transformation.mts +746 -0
  503. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  504. package/src/array/impl/array-utils-validation.mts +241 -0
  505. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  506. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  507. package/src/array/impl/index.mts +12 -0
  508. package/src/array/index.mts +1 -1
  509. package/src/collections/imap-mapped.mts +99 -265
  510. package/src/collections/imap.mts +477 -174
  511. package/src/collections/imap.test.mts +12 -19
  512. package/src/collections/iset-mapped.mts +892 -358
  513. package/src/collections/iset.mts +429 -213
  514. package/src/collections/queue.mts +174 -200
  515. package/src/collections/stack.mts +172 -245
  516. package/src/collections/stack.test.mts +9 -1
  517. package/src/entry-point.mts +2 -0
  518. package/src/expect-type.mts +43 -172
  519. package/src/functional/index.mts +2 -2
  520. package/src/functional/match.mts +35 -145
  521. package/src/functional/optional/impl/index.mts +17 -0
  522. package/src/functional/optional/impl/optional-expect-to-be.mts +65 -0
  523. package/src/functional/optional/impl/optional-filter.mts +71 -0
  524. package/src/functional/optional/impl/optional-flat-map.mts +67 -0
  525. package/src/functional/optional/impl/optional-from-nullable.mts +28 -0
  526. package/src/functional/optional/impl/optional-is-none.mts +25 -0
  527. package/src/functional/optional/impl/optional-is-optional.mts +27 -0
  528. package/src/functional/optional/impl/optional-is-some.mts +25 -0
  529. package/src/functional/optional/impl/optional-map.mts +69 -0
  530. package/src/functional/optional/impl/optional-none.mts +17 -0
  531. package/src/functional/optional/impl/optional-or-else.mts +73 -0
  532. package/src/functional/optional/impl/optional-some.mts +23 -0
  533. package/src/functional/optional/impl/optional-to-nullable.mts +31 -0
  534. package/src/functional/optional/impl/optional-unwrap-or.mts +64 -0
  535. package/src/functional/optional/impl/optional-unwrap-throw.mts +39 -0
  536. package/src/functional/optional/impl/optional-unwrap.mts +41 -0
  537. package/src/functional/optional/impl/optional-zip.mts +40 -0
  538. package/src/functional/optional/impl/tag.mts +6 -0
  539. package/src/functional/optional/impl/types.mts +28 -0
  540. package/src/functional/optional/index.mts +1 -0
  541. package/src/functional/optional.test.mts +11 -9
  542. package/src/functional/pipe.mts +65 -118
  543. package/src/functional/pipe.test.mts +1 -1
  544. package/src/functional/result/impl/index.mts +23 -0
  545. package/src/functional/result/impl/result-err.mts +29 -0
  546. package/src/functional/result/impl/result-expect-to-be.mts +63 -0
  547. package/src/functional/result/impl/result-flat-map.mts +79 -0
  548. package/src/functional/result/impl/result-fold.mts +95 -0
  549. package/src/functional/result/impl/result-from-promise.mts +39 -0
  550. package/src/functional/result/impl/result-from-throwable.mts +42 -0
  551. package/src/functional/result/impl/result-is-err.mts +23 -0
  552. package/src/functional/result/impl/result-is-ok.mts +23 -0
  553. package/src/functional/result/impl/result-is-result.mts +23 -0
  554. package/src/functional/result/impl/result-map-err.mts +72 -0
  555. package/src/functional/result/impl/result-map.mts +73 -0
  556. package/src/functional/result/impl/result-ok.mts +29 -0
  557. package/src/functional/result/impl/result-or-else.mts +63 -0
  558. package/src/functional/result/impl/result-swap.mts +28 -0
  559. package/src/functional/result/impl/result-to-optional.mts +34 -0
  560. package/src/functional/result/impl/result-unwrap-err-or.mts +60 -0
  561. package/src/functional/result/impl/result-unwrap-err-throw.mts +53 -0
  562. package/src/functional/result/impl/result-unwrap-err.mts +36 -0
  563. package/src/functional/result/impl/result-unwrap-ok-or.mts +60 -0
  564. package/src/functional/result/impl/result-unwrap-ok.mts +35 -0
  565. package/src/functional/result/impl/result-unwrap-throw.mts +43 -0
  566. package/src/functional/result/impl/result-zip.mts +39 -0
  567. package/src/functional/result/impl/tag.mts +6 -0
  568. package/src/functional/result/impl/types.mts +35 -0
  569. package/src/functional/result/index.mts +1 -0
  570. package/src/functional/result.test.mts +14 -6
  571. package/src/globals.d.mts +95 -5
  572. package/src/guard/has-key.mts +23 -74
  573. package/src/guard/is-non-empty-string.mts +20 -87
  574. package/src/guard/is-non-empty-string.test.mts +1 -1
  575. package/src/guard/is-non-null-object.mts +14 -84
  576. package/src/guard/is-non-null-object.test.mts +4 -4
  577. package/src/guard/is-primitive.mts +13 -126
  578. package/src/guard/is-primitive.test.mts +4 -4
  579. package/src/guard/is-record.mts +21 -132
  580. package/src/guard/is-type.mts +201 -238
  581. package/src/guard/is-type.test.mts +10 -10
  582. package/src/guard/key-is-in.mts +22 -139
  583. package/src/index.mts +0 -2
  584. package/src/iterator/range.mts +29 -62
  585. package/src/json/json.mts +202 -134
  586. package/src/json/json.test.mts +1 -3
  587. package/src/number/branded-types/finite-number.mts +34 -166
  588. package/src/number/branded-types/int.mts +129 -127
  589. package/src/number/branded-types/int16.mts +31 -39
  590. package/src/number/branded-types/int16.test.mts +24 -24
  591. package/src/number/branded-types/int32.mts +31 -40
  592. package/src/number/branded-types/int32.test.mts +39 -39
  593. package/src/number/branded-types/non-negative-finite-number.mts +39 -47
  594. package/src/number/branded-types/non-negative-int16.mts +33 -43
  595. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  596. package/src/number/branded-types/non-negative-int32.mts +35 -44
  597. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  598. package/src/number/branded-types/non-zero-finite-number.mts +32 -47
  599. package/src/number/branded-types/non-zero-int.mts +22 -37
  600. package/src/number/branded-types/non-zero-int16.mts +36 -44
  601. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  602. package/src/number/branded-types/non-zero-int32.mts +38 -45
  603. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  604. package/src/number/branded-types/non-zero-safe-int.mts +48 -49
  605. package/src/number/branded-types/non-zero-uint16.mts +33 -44
  606. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  607. package/src/number/branded-types/non-zero-uint32.mts +33 -44
  608. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  609. package/src/number/branded-types/positive-finite-number.mts +37 -51
  610. package/src/number/branded-types/positive-int.mts +142 -132
  611. package/src/number/branded-types/positive-int16.mts +33 -44
  612. package/src/number/branded-types/positive-int16.test.mts +14 -14
  613. package/src/number/branded-types/positive-int32.mts +33 -44
  614. package/src/number/branded-types/positive-int32.test.mts +26 -26
  615. package/src/number/branded-types/positive-safe-int.mts +169 -43
  616. package/src/number/branded-types/positive-uint16.mts +33 -44
  617. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  618. package/src/number/branded-types/positive-uint32.mts +35 -45
  619. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  620. package/src/number/branded-types/safe-int.mts +151 -110
  621. package/src/number/branded-types/safe-uint.mts +34 -43
  622. package/src/number/branded-types/uint.mts +129 -38
  623. package/src/number/branded-types/uint16.mts +35 -43
  624. package/src/number/branded-types/uint16.test.mts +16 -16
  625. package/src/number/branded-types/uint32.mts +35 -77
  626. package/src/number/branded-types/uint32.test.mts +28 -28
  627. package/src/number/enum/int8.mts +42 -173
  628. package/src/number/enum/int8.test.mts +9 -9
  629. package/src/number/enum/uint8.mts +49 -158
  630. package/src/number/enum/uint8.test.mts +8 -8
  631. package/src/number/num.mts +157 -212
  632. package/src/number/num.test.mts +4 -4
  633. package/src/number/refined-number-utils.mts +109 -26
  634. package/src/object/object.mts +130 -212
  635. package/src/object/object.test.mts +29 -0
  636. package/src/others/cast-mutable.mts +13 -89
  637. package/src/others/cast-mutable.test.mts +80 -0
  638. package/src/others/cast-readonly.mts +13 -169
  639. package/src/others/if-then.mts +6 -83
  640. package/src/others/map-nullable.mts +12 -136
  641. package/src/others/map-nullable.test.mts +6 -6
  642. package/src/others/memoize-function.mts +14 -157
  643. package/src/others/tuple.mts +33 -151
  644. package/src/others/unknown-to-string.mts +12 -126
  645. package/src/others/unknown-to-string.test.mts +13 -1
  646. package/src/promise/promise.mts +34 -21
  647. package/src/promise/promise.test.mts +43 -0
  648. package/dist/array/array-utils.d.mts +0 -2956
  649. package/dist/array/array-utils.d.mts.map +0 -1
  650. package/dist/array/array-utils.mjs +0 -1838
  651. package/dist/array/array-utils.mjs.map +0 -1
  652. package/dist/functional/optional.d.mts +0 -360
  653. package/dist/functional/optional.d.mts.map +0 -1
  654. package/dist/functional/optional.mjs +0 -268
  655. package/dist/functional/optional.mjs.map +0 -1
  656. package/dist/functional/result.d.mts +0 -611
  657. package/dist/functional/result.d.mts.map +0 -1
  658. package/dist/functional/result.mjs +0 -545
  659. package/dist/functional/result.mjs.map +0 -1
  660. package/src/array/array-utils-search.test.mts +0 -169
  661. package/src/array/array-utils-slicing.test.mts +0 -274
  662. package/src/array/array-utils.mts +0 -4834
  663. package/src/functional/optional.mts +0 -591
  664. package/src/functional/result.mts +0 -986
@@ -0,0 +1,434 @@
1
+ import { asPositiveUint32 } from '../../number/index.mjs';
2
+ import { castMutable } from '../../others/index.mjs';
3
+ import { copy, create } from './array-utils-creation.mjs';
4
+
5
+ /**
6
+ * Returns a new array with an element at the specified index replaced.
7
+ *
8
+ * @example
9
+ *
10
+ * ```ts
11
+ * const scores: number[] = [10, 20, 30];
12
+ *
13
+ * const updated = Arr.set(scores, 1, 25);
14
+ *
15
+ * assert.deepStrictEqual(updated, [10, 25, 30]);
16
+ * ```
17
+ */
18
+ export function set<const Ar extends readonly unknown[], const V = Ar[number]>(
19
+ array: Ar,
20
+ index: ArgArrayIndex<Ar>,
21
+ newValue: V,
22
+ ): IsFixedLengthList<Ar> extends true
23
+ ? Readonly<{ [K in keyof Ar]: Ar[K] | V }>
24
+ : Ar extends NonEmptyArray<unknown>
25
+ ? NonEmptyArray<Ar[number] | V>
26
+ : readonly (Ar[number] | V)[];
27
+
28
+ // curried version
29
+ export function set<const V>(
30
+ index: SizeType.ArgArr,
31
+ newValue: V,
32
+ ): <const Ar extends readonly unknown[]>(
33
+ array: Ar,
34
+ ) => IsFixedLengthList<Ar> extends true
35
+ ? Readonly<{ [K in keyof Ar]: Ar[K] | V }>
36
+ : Ar extends NonEmptyArray<unknown>
37
+ ? NonEmptyArray<Ar[number] | V>
38
+ : readonly (Ar[number] | V)[];
39
+
40
+ export function set<E, const V = E>(
41
+ ...args:
42
+ | readonly [array: readonly E[], index: SizeType.ArgArr, newValue: V]
43
+ | readonly [index: SizeType.ArgArr, newValue: V]
44
+ ): readonly (E | V)[] | ((array: readonly E[]) => readonly (E | V)[]) {
45
+ switch (args.length) {
46
+ case 3: {
47
+ const [array, index, newValue] = args;
48
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
49
+ return (array as (E | V)[]).with(index, newValue);
50
+ }
51
+ case 2: {
52
+ const [index, newValue] = args;
53
+ return (array) => set(array, index, newValue);
54
+ }
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Returns a new array with an element at the specified index updated by applying a function.
60
+ *
61
+ * @example
62
+ *
63
+ * ```ts
64
+ * const temperatures: number[] = [20, 21, 22];
65
+ *
66
+ * const increased = Arr.toUpdated(temperatures, 1, (value) => value + 5);
67
+ * const incrementLast = Arr.toUpdated<number>(
68
+ * 2,
69
+ * (value) => value + 1,
70
+ * )(temperatures);
71
+ *
72
+ * assert.deepStrictEqual(increased, [20, 26, 22]);
73
+ * assert.deepStrictEqual(incrementLast, [20, 21, 23]);
74
+ * ```
75
+ */
76
+ export function toUpdated<
77
+ const Ar extends readonly unknown[],
78
+ const V = Ar[number],
79
+ >(
80
+ array: Ar,
81
+ index: ArgArrayIndex<Ar>,
82
+ updater: (prev: Ar[number]) => V,
83
+ ): IsFixedLengthList<Ar> extends true
84
+ ? Readonly<{ [K in keyof Ar]: Ar[K] | V }>
85
+ : Ar extends NonEmptyArray<unknown>
86
+ ? NonEmptyArray<Ar[number] | V>
87
+ : readonly (Ar[number] | V)[];
88
+
89
+ // curried version
90
+ export function toUpdated<E, const V = E>(
91
+ index: SizeType.ArgArr,
92
+ updater: (prev: E) => V,
93
+ ): <const Ar extends readonly E[]>(
94
+ array: Ar,
95
+ ) => IsFixedLengthList<Ar> extends true
96
+ ? Readonly<{ [K in keyof Ar]: Ar[K] | V }>
97
+ : Ar extends NonEmptyArray<unknown>
98
+ ? NonEmptyArray<Ar[number] | V>
99
+ : readonly (Ar[number] | V)[];
100
+
101
+ export function toUpdated<E, V = E>(
102
+ ...args:
103
+ | readonly [
104
+ array: readonly E[],
105
+ index: SizeType.ArgArr,
106
+ updater: (prev: E) => V,
107
+ ]
108
+ | readonly [index: SizeType.ArgArr, updater: (prev: E) => V]
109
+ ): readonly (E | V)[] | ((array: readonly E[]) => readonly (E | V)[]) {
110
+ switch (args.length) {
111
+ case 3: {
112
+ const [array, index, updater] = args;
113
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, total-functions/no-unsafe-type-assertion
114
+ return (array as (E | V)[]).with(index, updater(array[index]!));
115
+ }
116
+ case 2: {
117
+ const [index, updater] = args;
118
+ return (array) => toUpdated(array, index, updater);
119
+ }
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Returns a new array with a value inserted at the specified index.
125
+ *
126
+ * @example
127
+ *
128
+ * ```ts
129
+ * const numbers = [1, 2, 4] as const;
130
+ *
131
+ * const withThree = Arr.toInserted(numbers, 2, 3);
132
+ * const appendFive = Arr.toInserted(3, 5)(numbers);
133
+ *
134
+ * assert.deepStrictEqual(withThree, [1, 2, 3, 4]);
135
+ * assert.deepStrictEqual(appendFive, [1, 2, 4, 5]);
136
+ * ```
137
+ */
138
+ export function toInserted<
139
+ const Ar extends readonly unknown[],
140
+ const V = Ar[number],
141
+ >(
142
+ array: Ar,
143
+ index: ArgArrayIndexWithNegative<Ar>,
144
+ newValue: V,
145
+ ): IsFixedLengthList<Ar> extends true
146
+ ? ArrayOfLength<CastToNumber<Increment<Ar['length']>>, Ar[number] | V>
147
+ : NonEmptyArray<Ar[number] | V>;
148
+
149
+ // curried version
150
+ export function toInserted<const V>(
151
+ index: SizeType.ArgArrWithNegative,
152
+ newValue: V,
153
+ ): <const Ar extends readonly unknown[]>(
154
+ array: Ar,
155
+ ) => IsFixedLengthList<Ar> extends true
156
+ ? ArrayOfLength<CastToNumber<Increment<Ar['length']>>, Ar[number] | V>
157
+ : NonEmptyArray<Ar[number] | V>;
158
+
159
+ export function toInserted<E, const V = E>(
160
+ ...args:
161
+ | readonly [
162
+ array: readonly E[],
163
+ index: SizeType.ArgArrWithNegative,
164
+ newValue: V,
165
+ ]
166
+ | readonly [index: SizeType.ArgArrWithNegative, newValue: V]
167
+ ): NonEmptyArray<E | V> | ((array: readonly E[]) => NonEmptyArray<E | V>) {
168
+ switch (args.length) {
169
+ case 3: {
170
+ const [array, index, newValue] = args;
171
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
172
+ return (array as readonly (E | V)[]).toSpliced(
173
+ index,
174
+ 0,
175
+ newValue,
176
+ ) as unknown as NonEmptyArray<E | V>;
177
+ }
178
+ case 2: {
179
+ const [index, newValue] = args;
180
+ return (array) => toInserted(array, index, newValue);
181
+ }
182
+ }
183
+ }
184
+
185
+ type CastToNumber<T> = T extends number ? T : never;
186
+
187
+ /**
188
+ * Returns a new array with the element at the specified index removed.
189
+ *
190
+ * @example
191
+ *
192
+ * ```ts
193
+ * const letters = ['a', 'b', 'c', 'd'] as const;
194
+ *
195
+ * const withoutSecond = Arr.toRemoved(letters, 1);
196
+ * const withoutFirstCurried = Arr.toRemoved(0)(letters);
197
+ *
198
+ * assert.deepStrictEqual(withoutSecond, ['a', 'c', 'd']);
199
+ * assert.deepStrictEqual(withoutFirstCurried, ['b', 'c', 'd']);
200
+ * ```
201
+ */
202
+ export function toRemoved<const Ar extends readonly unknown[]>(
203
+ array: Ar,
204
+ index: ArgArrayIndexWithNegative<Ar>,
205
+ ): readonly Ar[number][];
206
+
207
+ export function toRemoved(
208
+ index: SizeType.ArgArrWithNegative,
209
+ ): <E>(array: readonly E[]) => readonly E[];
210
+
211
+ export function toRemoved<E>(
212
+ ...args:
213
+ | readonly [array: readonly E[], index: SizeType.ArgArrWithNegative]
214
+ | readonly [index: SizeType.ArgArrWithNegative]
215
+ ): readonly E[] | ((array: readonly E[]) => readonly E[]) {
216
+ switch (args.length) {
217
+ case 2: {
218
+ const [array, index] = args;
219
+ return array.toSpliced(index, 1);
220
+ }
221
+ case 1: {
222
+ const [index] = args;
223
+ return (array) => toRemoved(array, index);
224
+ }
225
+ }
226
+ }
227
+
228
+ /**
229
+ * Returns a new array with a value appended to the end.
230
+ *
231
+ * @example
232
+ *
233
+ * ```ts
234
+ * const base = [1, 2] as const;
235
+ *
236
+ * const appended = Arr.toPushed(base, 3);
237
+ * const appendedCurried = Arr.toPushed(4)(base);
238
+ *
239
+ * assert.deepStrictEqual(appended, [1, 2, 3]);
240
+ * assert.deepStrictEqual(appendedCurried, [1, 2, 4]);
241
+ * ```
242
+ */
243
+ export function toPushed<const Ar extends readonly unknown[], const V>(
244
+ array: Ar,
245
+ newValue: V,
246
+ ): readonly [...Ar, V];
247
+
248
+ export function toPushed<const V>(
249
+ newValue: V,
250
+ ): <const Ar extends readonly unknown[]>(array: Ar) => readonly [...Ar, V];
251
+
252
+ export function toPushed<const Ar extends readonly unknown[], const V>(
253
+ ...args: readonly [array: Ar, newValue: V] | readonly [newValue: V]
254
+ ): readonly [...Ar, V] | ((array: Ar) => readonly [...Ar, V]) {
255
+ switch (args.length) {
256
+ case 2: {
257
+ const [array, newValue] = args;
258
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
259
+ return array.toSpliced(array.length, 0, newValue) as unknown as readonly [
260
+ ...Ar,
261
+ V,
262
+ ];
263
+ }
264
+ case 1: {
265
+ const [newValue] = args;
266
+ return (array) => toPushed(array, newValue);
267
+ }
268
+ }
269
+ }
270
+
271
+ /**
272
+ * Returns a new array with a value prepended to the beginning.
273
+ *
274
+ * @example
275
+ *
276
+ * ```ts
277
+ * const base = [2, 3] as const;
278
+ *
279
+ * const prefixed = Arr.toUnshifted(base, 1);
280
+ * const prefixedCurried = Arr.toUnshifted(0)(base);
281
+ *
282
+ * assert.deepStrictEqual(prefixed, [1, 2, 3]);
283
+ * assert.deepStrictEqual(prefixedCurried, [0, 2, 3]);
284
+ * ```
285
+ */
286
+ export function toUnshifted<const Ar extends readonly unknown[], const V>(
287
+ array: Ar,
288
+ newValue: V,
289
+ ): readonly [V, ...Ar];
290
+
291
+ export function toUnshifted<const V>(
292
+ newValue: V,
293
+ ): <const Ar extends readonly unknown[]>(array: Ar) => readonly [V, ...Ar];
294
+
295
+ export function toUnshifted<Ar extends readonly unknown[], const V>(
296
+ ...args: readonly [array: Ar, newValue: V] | readonly [newValue: V]
297
+ ): readonly [V, ...Ar] | ((array: Ar) => readonly [V, ...Ar]) {
298
+ switch (args.length) {
299
+ case 2: {
300
+ const [array, newValue] = args;
301
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
302
+ return array.toSpliced(0, 0, newValue) as unknown as readonly [V, ...Ar];
303
+ }
304
+ case 1: {
305
+ const [newValue] = args;
306
+ return (array) => toUnshifted(array, newValue);
307
+ }
308
+ }
309
+ }
310
+
311
+ /**
312
+ * Returns a new array with all elements replaced by the specified value.
313
+ *
314
+ * @example
315
+ *
316
+ * ```ts
317
+ * const base = [1, 2, 3];
318
+ *
319
+ * const filled = Arr.toFilled(base, 0);
320
+ * const filledCurried = Arr.toFilled('x')(base);
321
+ *
322
+ * assert.deepStrictEqual(filled, [0, 0, 0]);
323
+ * assert.deepStrictEqual(filledCurried, ['x', 'x', 'x']);
324
+ * ```
325
+ */
326
+ export function toFilled<const Ar extends readonly unknown[], const V>(
327
+ array: Ar,
328
+ value: V,
329
+ ): IsFixedLengthList<Ar> extends true
330
+ ? ArrayOfLength<Ar['length'], V>
331
+ : Ar extends NonEmptyArray<unknown>
332
+ ? NonEmptyArray<V>
333
+ : readonly V[];
334
+
335
+ // curried version
336
+ export function toFilled<const V>(
337
+ value: V,
338
+ ): <const Ar extends readonly unknown[]>(
339
+ array: Ar,
340
+ ) => IsFixedLengthList<Ar> extends true
341
+ ? ArrayOfLength<Ar['length'], V>
342
+ : Ar extends NonEmptyArray<unknown>
343
+ ? NonEmptyArray<V>
344
+ : readonly V[];
345
+
346
+ export function toFilled<E>(
347
+ ...args: readonly [array: readonly E[], value: E] | readonly [value: E]
348
+ ): readonly E[] | ((array: readonly E[]) => readonly E[]) {
349
+ switch (args.length) {
350
+ case 2: {
351
+ const [array, value] = args;
352
+ return create(asPositiveUint32(array.length), value);
353
+ }
354
+ case 1: {
355
+ const [value] = args;
356
+ return (array) => toFilled(array, value);
357
+ }
358
+ }
359
+ }
360
+
361
+ /**
362
+ * Returns a new array with elements in the specified range replaced by the specified value.
363
+ *
364
+ * @example
365
+ *
366
+ * ```ts
367
+ * const base = [0, 1, 2, 3, 4];
368
+ *
369
+ * const filledMiddle = Arr.toRangeFilled(base, 9, [1, 4]);
370
+ * const filledPrefix = Arr.toRangeFilled(8, [0, 2])(base);
371
+ *
372
+ * assert.deepStrictEqual(filledMiddle, [0, 9, 9, 9, 4]);
373
+ * assert.deepStrictEqual(filledPrefix, [8, 8, 2, 3, 4]);
374
+ * ```
375
+ */
376
+ export function toRangeFilled<const Ar extends readonly unknown[], const V>(
377
+ array: Ar,
378
+ value: V,
379
+ fillRange: readonly [
380
+ start: ArgArrayIndexWithNegative<Ar>,
381
+ end: ArgArrayIndexWithNegative<Ar>,
382
+ ],
383
+ ): IsFixedLengthList<Ar> extends true
384
+ ? ArrayOfLength<Ar['length'], V | Ar[number]>
385
+ : Ar extends NonEmptyArray<unknown>
386
+ ? NonEmptyArray<V | Ar[number]>
387
+ : readonly (V | Ar[number])[];
388
+
389
+ // curried version
390
+ export function toRangeFilled<const V>(
391
+ value: V,
392
+ fillRange: readonly [
393
+ start: SizeType.ArgArrWithNegative,
394
+ end: SizeType.ArgArrWithNegative,
395
+ ],
396
+ ): <const Ar extends readonly unknown[]>(
397
+ array: Ar,
398
+ ) => IsFixedLengthList<Ar> extends true
399
+ ? ArrayOfLength<Ar['length'], V | Ar[number]>
400
+ : Ar extends NonEmptyArray<unknown>
401
+ ? NonEmptyArray<V | Ar[number]>
402
+ : readonly (V | Ar[number])[];
403
+
404
+ export function toRangeFilled<E, const V>(
405
+ ...args:
406
+ | readonly [
407
+ array: readonly E[],
408
+ value: V,
409
+ fillRange: readonly [
410
+ start: SizeType.ArgArrWithNegative,
411
+ end: SizeType.ArgArrWithNegative,
412
+ ],
413
+ ]
414
+ | readonly [
415
+ value: V,
416
+ fillRange: readonly [
417
+ start: SizeType.ArgArrWithNegative,
418
+ end: SizeType.ArgArrWithNegative,
419
+ ],
420
+ ]
421
+ ): readonly (E | V)[] | ((array: readonly E[]) => readonly (E | V)[]) {
422
+ switch (args.length) {
423
+ case 3: {
424
+ const [array, value, [start, end]] = args;
425
+ const mut_cp: (E | V)[] = castMutable(copy(array));
426
+ mut_cp.fill(value, start, end);
427
+ return mut_cp;
428
+ }
429
+ case 2: {
430
+ const [value, fillRange] = args;
431
+ return (array) => toRangeFilled(array, value, fillRange);
432
+ }
433
+ }
434
+ }
@@ -1,11 +1,20 @@
1
- import { expectType } from '../expect-type.mjs';
2
- import { asUint32 } from '../number/index.mjs';
3
- import { Arr } from './array-utils.mjs';
1
+ import { expectType } from '../../expect-type.mjs';
2
+ import { asUint32 } from '../../number/index.mjs';
3
+ import {
4
+ set,
5
+ toFilled,
6
+ toInserted,
7
+ toPushed,
8
+ toRangeFilled,
9
+ toRemoved,
10
+ toUnshifted,
11
+ toUpdated,
12
+ } from './array-utils-modification.mjs';
4
13
 
5
14
  describe('Arr modifications', () => {
6
15
  describe('toUpdated', () => {
7
16
  const xs = [1, 2, 3] as const;
8
- const result = Arr.toUpdated(xs, 1, (x) => x + 2);
17
+ const result = toUpdated(xs, 1, (x) => x + 2);
9
18
 
10
19
  expectType<typeof result, ArrayOfLength<3, number>>('=');
11
20
 
@@ -18,7 +27,7 @@ describe('Arr modifications', () => {
18
27
  const xs = [1, 2, 3] as const;
19
28
 
20
29
  test('case 1', () => {
21
- const result = Arr.toInserted(xs, 1, 5);
30
+ const result = toInserted(xs, 1, 5);
22
31
 
23
32
  expectType<typeof result, ArrayOfLength<4, 1 | 2 | 3 | 5>>('=');
24
33
 
@@ -26,7 +35,7 @@ describe('Arr modifications', () => {
26
35
  });
27
36
 
28
37
  test('case 2 (insert head)', () => {
29
- const result = Arr.toInserted(xs, 0, 5);
38
+ const result = toInserted(xs, 0, 5);
30
39
 
31
40
  expectType<typeof result, ArrayOfLength<4, 1 | 2 | 3 | 5>>('=');
32
41
 
@@ -34,7 +43,11 @@ describe('Arr modifications', () => {
34
43
  });
35
44
 
36
45
  test('case 3 (insert tail)', () => {
37
- const result = Arr.toInserted(['a', 'b', 'c'], asUint32(999), 5);
46
+ const result = toInserted(
47
+ ['a', 'b', 'c'] as readonly string[],
48
+ asUint32(999),
49
+ 5,
50
+ );
38
51
 
39
52
  expectType<typeof result, NonEmptyArray<string | 5>>('=');
40
53
 
@@ -45,7 +58,7 @@ describe('Arr modifications', () => {
45
58
  describe('toRemoved', () => {
46
59
  test('case 1', () => {
47
60
  const xs = [1, 2, 3] as const;
48
- const result = Arr.toRemoved(xs, 1);
61
+ const result = toRemoved(xs, 1);
49
62
 
50
63
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
51
64
 
@@ -54,7 +67,7 @@ describe('Arr modifications', () => {
54
67
 
55
68
  test('case 2 (remove head)', () => {
56
69
  const xs = [1, 2, 3] as const;
57
- const result = Arr.toRemoved(xs, 0);
70
+ const result = toRemoved(xs, 0);
58
71
 
59
72
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
60
73
 
@@ -63,7 +76,7 @@ describe('Arr modifications', () => {
63
76
 
64
77
  test('case 3 (remove tail)', () => {
65
78
  const xs = [1, 2, 3] as const;
66
- const result = Arr.toRemoved(xs, 2);
79
+ const result = toRemoved(xs, 2);
67
80
 
68
81
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
69
82
 
@@ -72,7 +85,7 @@ describe('Arr modifications', () => {
72
85
 
73
86
  test('case 4 (number[])', () => {
74
87
  const xs: number[] = [1, 2, 3];
75
- const result = Arr.toRemoved(xs, 5);
88
+ const result = toRemoved(xs, 5);
76
89
 
77
90
  expectType<typeof result, readonly number[]>('=');
78
91
 
@@ -83,7 +96,7 @@ describe('Arr modifications', () => {
83
96
  describe('toPushed', () => {
84
97
  test('case 1', () => {
85
98
  const xs = [1, 2, 3] as const;
86
- const result = Arr.toPushed(xs, 4 as const);
99
+ const result = toPushed(xs, 4 as const);
87
100
 
88
101
  expectType<typeof result, readonly [1, 2, 3, 4]>('=');
89
102
 
@@ -92,7 +105,7 @@ describe('Arr modifications', () => {
92
105
 
93
106
  test('case 2', () => {
94
107
  const xs: number[] = [1, 2, 3];
95
- const result = Arr.toPushed(xs, 4 as const);
108
+ const result = toPushed(xs, 4 as const);
96
109
 
97
110
  expectType<typeof result, readonly [...number[], 4]>('=');
98
111
 
@@ -104,7 +117,7 @@ describe('Arr modifications', () => {
104
117
  test('case 1', () => {
105
118
  const xs = [1, 2, 3] as const;
106
119
 
107
- const result = Arr.toUnshifted(xs, 4 as const);
120
+ const result = toUnshifted(xs, 4 as const);
108
121
 
109
122
  expectType<typeof result, readonly [4, 1, 2, 3]>('=');
110
123
 
@@ -114,7 +127,7 @@ describe('Arr modifications', () => {
114
127
  test('case 2', () => {
115
128
  const xs: number[] = [1, 2, 3];
116
129
 
117
- const result = Arr.toUnshifted(xs, 4 as const);
130
+ const result = toUnshifted(xs, 4 as const);
118
131
 
119
132
  expectType<typeof result, readonly [4, ...number[]]>('=');
120
133
 
@@ -125,13 +138,13 @@ describe('Arr modifications', () => {
125
138
  describe('toFilled', () => {
126
139
  test('should fill entire array with value', () => {
127
140
  const arr = [1, 2, 3, 4, 5];
128
- const result = Arr.toFilled(arr, 0);
141
+ const result = toFilled(arr, 0);
129
142
 
130
143
  expect(result).toStrictEqual([0, 0, 0, 0, 0]);
131
144
  });
132
145
 
133
146
  test('should work with curried version', () => {
134
- const fillWithZero = Arr.toFilled(0);
147
+ const fillWithZero = toFilled(0);
135
148
  const arr = [1, 2, 3];
136
149
  const result = fillWithZero(arr);
137
150
 
@@ -142,35 +155,35 @@ describe('Arr modifications', () => {
142
155
  describe('toRangeFilled', () => {
143
156
  test('should fill array with range', () => {
144
157
  const arr = [1, 2, 3, 4, 5];
145
- const result = Arr.toRangeFilled(arr, 0, [1, 4]);
158
+ const result = toRangeFilled(arr, 0, [1, 4]);
146
159
 
147
160
  expect(result).toStrictEqual([1, 0, 0, 0, 5]);
148
161
  });
149
162
 
150
163
  test('should fill with range starting from 0', () => {
151
164
  const arr = [1, 2, 3, 4, 5];
152
- const result = Arr.toRangeFilled(arr, 9, [0, 3]);
165
+ const result = toRangeFilled(arr, 9, [0, 3]);
153
166
 
154
167
  expect(result).toStrictEqual([9, 9, 9, 4, 5]);
155
168
  });
156
169
 
157
170
  test('should handle empty range', () => {
158
171
  const arr = [1, 2, 3];
159
- const result = Arr.toRangeFilled(arr, 0, [2, 2]);
172
+ const result = toRangeFilled(arr, 0, [2, 2]);
160
173
 
161
174
  expect(result).toStrictEqual([1, 2, 3]);
162
175
  });
163
176
 
164
177
  test('should clamp range to array bounds', () => {
165
178
  const arr = [1, 2, 3];
166
- const result = Arr.toRangeFilled(arr, 0, [1, 10]);
179
+ const result = toRangeFilled(arr, 0, [1, 10]);
167
180
 
168
181
  expect(result).toStrictEqual([1, 0, 0]);
169
182
  });
170
183
 
171
184
  test('should handle negative start (clamped to 0)', () => {
172
185
  const arr = [1, 2, 3];
173
- const result = Arr.toRangeFilled(arr, 9, [-5, 2]);
186
+ const result = toRangeFilled(arr, 9, [-5, 2]);
174
187
 
175
188
  expect(result).toStrictEqual([9, 9, 3]);
176
189
  });
@@ -179,19 +192,19 @@ describe('Arr modifications', () => {
179
192
  const arr = [1, 2, 3];
180
193
 
181
194
  // @ts-expect-error start must be an integer
182
- expect(Arr.toRangeFilled(arr, 0, [1.5, 3])).toStrictEqual([1, 0, 0]);
195
+ expect(toRangeFilled(arr, 0, [1.5, 3])).toStrictEqual([1, 0, 0]);
183
196
  });
184
197
 
185
198
  test('A non-integer ending value should result in a type error', () => {
186
199
  const arr = [1, 2, 3];
187
200
 
188
201
  // @ts-expect-error end must be an integer
189
- expect(Arr.toRangeFilled(arr, 0, [1, 2.5])).toStrictEqual([1, 0, 3]);
202
+ expect(toRangeFilled(arr, 0, [1, 2.5])).toStrictEqual([1, 0, 3]);
190
203
  });
191
204
  });
192
205
 
193
206
  describe('set', () => {
194
- const result = Arr.set([1, 2, 3], 1, 4);
207
+ const result = set([1, 2, 3], 1, 4);
195
208
 
196
209
  expectType<typeof result, readonly [1 | 4, 2 | 4, 3 | 4]>('=');
197
210
 
@@ -201,7 +214,7 @@ describe('Arr modifications', () => {
201
214
 
202
215
  test('should work with different value types', () => {
203
216
  const nums = [1, 2, 3] as const;
204
- const withString = Arr.set(nums, 1, 'two');
217
+ const withString = set(nums, 1, 'two');
205
218
  expectType<typeof withString, readonly [1 | 'two', 2 | 'two', 3 | 'two']>(
206
219
  '=',
207
220
  );
@@ -210,13 +223,13 @@ describe('Arr modifications', () => {
210
223
 
211
224
  test('should work at index 0', () => {
212
225
  const tuple = ['a', 'b', 'c'] as const;
213
- const updated = Arr.set(tuple, 0, 'A');
226
+ const updated = set(tuple, 0, 'A');
214
227
  expect(updated).toStrictEqual(['A', 'b', 'c']);
215
228
  });
216
229
 
217
230
  test('should work at last index', () => {
218
231
  const tuple = ['a', 'b', 'c'] as const;
219
- const updated = Arr.set(tuple, 2, 'C');
232
+ const updated = set(tuple, 2, 'C');
220
233
  expect(updated).toStrictEqual(['a', 'b', 'C']);
221
234
  });
222
235
  });