ts-data-forge 5.0.1 → 5.1.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 (539) hide show
  1. package/README.md +101 -50
  2. package/dist/array/impl/array-utils-creation.d.mts +14 -0
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  4. package/dist/array/impl/array-utils-creation.mjs +12 -0
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  6. package/dist/array/impl/array-utils-element-access.d.mts +10 -0
  7. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
  8. package/dist/array/impl/array-utils-element-access.mjs +6 -0
  9. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  10. package/dist/array/impl/array-utils-modification.d.mts +14 -0
  11. package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
  12. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-reducing-value.d.mts +34 -10
  14. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  15. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  16. package/dist/array/impl/array-utils-search.d.mts +34 -4
  17. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  18. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  19. package/dist/array/impl/array-utils-set-op.d.mts +20 -7
  20. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  21. package/dist/array/impl/array-utils-set-op.mjs +20 -7
  22. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-size.d.mts +5 -2
  24. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  25. package/dist/array/impl/array-utils-size.mjs +5 -2
  26. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  27. package/dist/array/impl/array-utils-slice-clamped.d.mts +2 -0
  28. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
  29. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  30. package/dist/array/impl/array-utils-slicing.d.mts +17 -2
  31. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  32. package/dist/array/impl/array-utils-slicing.mjs +9 -2
  33. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  34. package/dist/array/impl/array-utils-transformation.d.mts +27 -0
  35. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  36. package/dist/array/impl/array-utils-transformation.mjs +6 -0
  37. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  38. package/dist/array/impl/array-utils-validation.d.mts +35 -18
  39. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  40. package/dist/array/impl/array-utils-validation.mjs +25 -14
  41. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  42. package/dist/collections/imap-mapped.mjs.map +1 -1
  43. package/dist/collections/imap.d.mts +35 -15
  44. package/dist/collections/imap.d.mts.map +1 -1
  45. package/dist/collections/imap.mjs +5 -3
  46. package/dist/collections/imap.mjs.map +1 -1
  47. package/dist/collections/iset-mapped.d.mts +46 -19
  48. package/dist/collections/iset-mapped.d.mts.map +1 -1
  49. package/dist/collections/iset-mapped.mjs +9 -2
  50. package/dist/collections/iset-mapped.mjs.map +1 -1
  51. package/dist/collections/iset.d.mts +48 -19
  52. package/dist/collections/iset.d.mts.map +1 -1
  53. package/dist/collections/iset.mjs +9 -2
  54. package/dist/collections/iset.mjs.map +1 -1
  55. package/dist/collections/queue.d.mts +65 -25
  56. package/dist/collections/queue.d.mts.map +1 -1
  57. package/dist/collections/queue.mjs +13 -5
  58. package/dist/collections/queue.mjs.map +1 -1
  59. package/dist/collections/stack.d.mts +60 -25
  60. package/dist/collections/stack.d.mts.map +1 -1
  61. package/dist/collections/stack.mjs +12 -5
  62. package/dist/collections/stack.mjs.map +1 -1
  63. package/dist/entry-point.mjs +1 -1
  64. package/dist/functional/match.d.mts +1 -1
  65. package/dist/functional/match.d.mts.map +1 -1
  66. package/dist/functional/match.mjs.map +1 -1
  67. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +3 -2
  68. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -1
  69. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  70. package/dist/functional/optional/impl/optional-filter.d.mts +3 -0
  71. package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -1
  72. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  73. package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -0
  74. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -1
  75. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  76. package/dist/functional/optional/impl/optional-from-nullable.d.mts +2 -0
  77. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
  78. package/dist/functional/optional/impl/optional-from-nullable.mjs +2 -0
  79. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  80. package/dist/functional/optional/impl/optional-is-none.d.mts +1 -1
  81. package/dist/functional/optional/impl/optional-is-none.mjs +1 -1
  82. package/dist/functional/optional/impl/optional-is-optional.d.mts +4 -2
  83. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
  84. package/dist/functional/optional/impl/optional-is-optional.mjs +4 -2
  85. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  86. package/dist/functional/optional/impl/optional-is-some.d.mts +2 -1
  87. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
  88. package/dist/functional/optional/impl/optional-is-some.mjs +2 -1
  89. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  90. package/dist/functional/optional/impl/optional-map.d.mts +2 -0
  91. package/dist/functional/optional/impl/optional-map.d.mts.map +1 -1
  92. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  93. package/dist/functional/optional/impl/optional-none.d.mts +4 -2
  94. package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
  95. package/dist/functional/optional/impl/optional-none.mjs +4 -2
  96. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  97. package/dist/functional/optional/impl/optional-or-else.d.mts +4 -0
  98. package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -1
  99. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  100. package/dist/functional/optional/impl/optional-some.d.mts +5 -3
  101. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
  102. package/dist/functional/optional/impl/optional-some.mjs +4 -2
  103. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  104. package/dist/functional/optional/impl/optional-to-nullable.d.mts +4 -2
  105. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
  106. package/dist/functional/optional/impl/optional-to-nullable.mjs +4 -2
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  108. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +7 -4
  109. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -1
  110. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  111. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +2 -1
  112. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
  113. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +2 -1
  114. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  115. package/dist/functional/optional/impl/optional-unwrap.d.mts +4 -2
  116. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -1
  117. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  118. package/dist/functional/optional/impl/optional-zip.d.mts +3 -1
  119. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
  120. package/dist/functional/optional/impl/optional-zip.mjs +3 -1
  121. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  122. package/dist/functional/pipe.d.mts +2 -2
  123. package/dist/functional/result/impl/result-err.d.mts +4 -2
  124. package/dist/functional/result/impl/result-err.d.mts.map +1 -1
  125. package/dist/functional/result/impl/result-err.mjs +3 -1
  126. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  127. package/dist/functional/result/impl/result-expect-to-be.d.mts +3 -2
  128. package/dist/functional/result/impl/result-expect-to-be.d.mts.map +1 -1
  129. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  130. package/dist/functional/result/impl/result-flat-map.d.mts +5 -0
  131. package/dist/functional/result/impl/result-flat-map.d.mts.map +1 -1
  132. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  133. package/dist/functional/result/impl/result-fold.d.mts +4 -0
  134. package/dist/functional/result/impl/result-fold.d.mts.map +1 -1
  135. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  136. package/dist/functional/result/impl/result-from-promise.d.mts +4 -1
  137. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +4 -1
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.d.mts +3 -1
  141. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
  142. package/dist/functional/result/impl/result-from-throwable.mjs +3 -1
  143. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  144. package/dist/functional/result/impl/result-is-err.d.mts +4 -2
  145. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
  146. package/dist/functional/result/impl/result-is-err.mjs +4 -2
  147. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-is-ok.d.mts +4 -2
  149. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
  150. package/dist/functional/result/impl/result-is-ok.mjs +4 -2
  151. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-is-result.d.mts +7 -3
  153. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
  154. package/dist/functional/result/impl/result-is-result.mjs +7 -3
  155. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  156. package/dist/functional/result/impl/result-map-err.d.mts +3 -0
  157. package/dist/functional/result/impl/result-map-err.d.mts.map +1 -1
  158. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  159. package/dist/functional/result/impl/result-map.d.mts +4 -0
  160. package/dist/functional/result/impl/result-map.d.mts.map +1 -1
  161. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  162. package/dist/functional/result/impl/result-ok.d.mts +4 -2
  163. package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
  164. package/dist/functional/result/impl/result-ok.mjs +3 -1
  165. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  166. package/dist/functional/result/impl/result-or-else.d.mts +4 -0
  167. package/dist/functional/result/impl/result-or-else.d.mts.map +1 -1
  168. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  169. package/dist/functional/result/impl/result-swap.d.mts +2 -0
  170. package/dist/functional/result/impl/result-swap.d.mts.map +1 -1
  171. package/dist/functional/result/impl/result-swap.mjs +2 -0
  172. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  173. package/dist/functional/result/impl/result-to-optional.d.mts +2 -0
  174. package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -1
  175. package/dist/functional/result/impl/result-to-optional.mjs +2 -0
  176. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  177. package/dist/functional/result/impl/result-unwrap-err-or.d.mts +7 -4
  178. package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +1 -1
  179. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  180. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +3 -1
  181. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
  182. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +3 -1
  183. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  184. package/dist/functional/result/impl/result-unwrap-err.d.mts +3 -2
  185. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
  186. package/dist/functional/result/impl/result-unwrap-err.mjs +3 -2
  187. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  188. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +7 -4
  189. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +1 -1
  190. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  191. package/dist/functional/result/impl/result-unwrap-ok.d.mts +3 -2
  192. package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +1 -1
  193. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  194. package/dist/functional/result/impl/result-unwrap-throw.d.mts +3 -1
  195. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
  196. package/dist/functional/result/impl/result-unwrap-throw.mjs +3 -1
  197. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  198. package/dist/functional/result/impl/result-zip.d.mts +3 -1
  199. package/dist/functional/result/impl/result-zip.d.mts.map +1 -1
  200. package/dist/functional/result/impl/result-zip.mjs +3 -1
  201. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  202. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +3 -2
  203. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
  204. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +2 -1
  205. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  206. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +1 -0
  207. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +1 -1
  208. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  209. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +4 -0
  210. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +1 -1
  211. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  212. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +2 -0
  213. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +1 -1
  214. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  215. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +3 -1
  216. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -1
  217. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +3 -1
  218. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  219. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +3 -1
  220. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -1
  221. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +3 -1
  222. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  223. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +1 -0
  224. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
  225. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +1 -0
  226. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  227. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +7 -3
  228. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +1 -1
  229. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +7 -3
  230. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  231. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +1 -0
  232. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +1 -1
  233. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +1 -0
  234. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  235. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +3 -0
  236. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +1 -1
  237. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  238. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +3 -0
  239. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +1 -1
  240. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  241. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +6 -0
  242. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +1 -1
  243. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  244. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +1 -1
  245. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
  246. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  247. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +2 -0
  248. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +1 -1
  249. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  250. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +2 -0
  251. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -1
  252. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +2 -0
  253. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  254. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +2 -0
  255. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +1 -1
  256. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  257. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +1 -0
  258. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +1 -1
  259. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +1 -0
  260. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  261. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +2 -0
  262. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +1 -1
  263. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +2 -0
  264. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  265. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +2 -0
  266. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +1 -1
  267. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  268. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +2 -0
  269. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +1 -1
  270. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  271. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +1 -0
  272. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -1
  273. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +1 -0
  274. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  275. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +2 -0
  276. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +1 -1
  277. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  278. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +1 -0
  279. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +1 -1
  280. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +1 -0
  281. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  282. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +2 -0
  283. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +1 -1
  284. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +2 -0
  285. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  286. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +1 -1
  287. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
  288. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  289. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +4 -0
  290. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -1
  291. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +4 -0
  292. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  293. package/dist/globals.d.mts +12 -1
  294. package/dist/guard/has-key.d.mts +6 -3
  295. package/dist/guard/has-key.d.mts.map +1 -1
  296. package/dist/guard/has-key.mjs +2 -2
  297. package/dist/guard/index.mjs +1 -1
  298. package/dist/guard/is-record.d.mts +31 -0
  299. package/dist/guard/is-record.d.mts.map +1 -1
  300. package/dist/guard/is-record.mjs +32 -1
  301. package/dist/guard/is-record.mjs.map +1 -1
  302. package/dist/guard/is-type.d.mts +3 -0
  303. package/dist/guard/is-type.d.mts.map +1 -1
  304. package/dist/guard/is-type.mjs +3 -0
  305. package/dist/guard/is-type.mjs.map +1 -1
  306. package/dist/guard/key-is-in.d.mts +3 -2
  307. package/dist/guard/key-is-in.d.mts.map +1 -1
  308. package/dist/guard/key-is-in.mjs +3 -2
  309. package/dist/guard/key-is-in.mjs.map +1 -1
  310. package/dist/index.mjs +1 -1
  311. package/dist/iterator/range.d.mts +4 -0
  312. package/dist/iterator/range.d.mts.map +1 -1
  313. package/dist/iterator/range.mjs +1 -0
  314. package/dist/iterator/range.mjs.map +1 -1
  315. package/dist/json/json.d.mts +42 -21
  316. package/dist/json/json.d.mts.map +1 -1
  317. package/dist/json/json.mjs +42 -21
  318. package/dist/json/json.mjs.map +1 -1
  319. package/dist/number/branded-types/int.d.mts +33 -19
  320. package/dist/number/branded-types/int.d.mts.map +1 -1
  321. package/dist/number/branded-types/int.mjs +33 -19
  322. package/dist/number/branded-types/int.mjs.map +1 -1
  323. package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
  324. package/dist/number/branded-types/positive-int.d.mts +34 -20
  325. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  326. package/dist/number/branded-types/positive-int.mjs +34 -20
  327. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  328. package/dist/number/branded-types/positive-safe-int.d.mts +47 -26
  329. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  330. package/dist/number/branded-types/positive-safe-int.mjs +48 -27
  331. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  332. package/dist/number/branded-types/safe-int.d.mts +48 -27
  333. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  334. package/dist/number/branded-types/safe-int.mjs +50 -29
  335. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  336. package/dist/number/branded-types/safe-uint.mjs +1 -1
  337. package/dist/number/branded-types/uint.d.mts +31 -19
  338. package/dist/number/branded-types/uint.d.mts.map +1 -1
  339. package/dist/number/branded-types/uint.mjs +31 -19
  340. package/dist/number/branded-types/uint.mjs.map +1 -1
  341. package/dist/number/num.d.mts +29 -20
  342. package/dist/number/num.d.mts.map +1 -1
  343. package/dist/number/num.mjs +24 -17
  344. package/dist/number/num.mjs.map +1 -1
  345. package/dist/number/refined-number-utils.d.mts +33 -11
  346. package/dist/number/refined-number-utils.d.mts.map +1 -1
  347. package/dist/number/refined-number-utils.mjs +33 -11
  348. package/dist/number/refined-number-utils.mjs.map +1 -1
  349. package/dist/object/object.d.mts +12 -3
  350. package/dist/object/object.d.mts.map +1 -1
  351. package/dist/object/object.mjs +10 -3
  352. package/dist/object/object.mjs.map +1 -1
  353. package/dist/others/map-nullable.mjs.map +1 -1
  354. package/dist/others/tuple.d.mts +14 -3
  355. package/dist/others/tuple.d.mts.map +1 -1
  356. package/dist/others/tuple.mjs +14 -3
  357. package/dist/others/tuple.mjs.map +1 -1
  358. package/dist/others/unknown-to-string.d.mts.map +1 -1
  359. package/dist/others/unknown-to-string.mjs.map +1 -1
  360. package/dist/promise/promise.d.mts +8 -4
  361. package/dist/promise/promise.d.mts.map +1 -1
  362. package/dist/promise/promise.mjs +8 -4
  363. package/dist/promise/promise.mjs.map +1 -1
  364. package/package.json +26 -28
  365. package/src/array/impl/array-utils-creation.mts +20 -0
  366. package/src/array/impl/array-utils-creation.test.mts +72 -1
  367. package/src/array/impl/array-utils-element-access.mts +13 -0
  368. package/src/array/impl/array-utils-element-access.test.mts +36 -15
  369. package/src/array/impl/array-utils-iterators.test.mts +17 -0
  370. package/src/array/impl/array-utils-modification.mts +78 -19
  371. package/src/array/impl/array-utils-modification.test.mts +75 -0
  372. package/src/array/impl/array-utils-overload-type-error.test.mts +19 -0
  373. package/src/array/impl/array-utils-reducing-value.mts +61 -16
  374. package/src/array/impl/array-utils-reducing-value.test.mts +107 -25
  375. package/src/array/impl/array-utils-search.mts +57 -4
  376. package/src/array/impl/array-utils-search.test.mts +61 -10
  377. package/src/array/impl/array-utils-set-op.mts +26 -7
  378. package/src/array/impl/array-utils-set-op.test.mts +129 -13
  379. package/src/array/impl/array-utils-size.mts +5 -2
  380. package/src/array/impl/array-utils-size.test.mts +1 -0
  381. package/src/array/impl/array-utils-slice-clamped.mts +7 -0
  382. package/src/array/impl/array-utils-slice-clamped.test.mts +20 -0
  383. package/src/array/impl/array-utils-slicing.mts +29 -2
  384. package/src/array/impl/array-utils-slicing.test.mts +57 -0
  385. package/src/array/impl/array-utils-transformation.mts +58 -0
  386. package/src/array/impl/array-utils-transformation.test.mts +115 -3
  387. package/src/array/impl/array-utils-validation.mts +41 -18
  388. package/src/array/impl/array-utils-validation.test.mts +176 -78
  389. package/src/array/impl/array.test.mts +18 -6
  390. package/src/collections/imap-mapped.mts +11 -0
  391. package/src/collections/imap-mapped.test.mts +86 -18
  392. package/src/collections/imap.mts +47 -15
  393. package/src/collections/imap.test.mts +137 -31
  394. package/src/collections/iset-mapped.mts +54 -19
  395. package/src/collections/iset-mapped.test.mts +163 -52
  396. package/src/collections/iset.mts +53 -19
  397. package/src/collections/iset.test.mts +323 -130
  398. package/src/collections/queue.mts +78 -25
  399. package/src/collections/queue.test.mts +65 -35
  400. package/src/collections/stack.mts +67 -25
  401. package/src/collections/stack.test.mts +59 -15
  402. package/src/functional/match.mts +17 -1
  403. package/src/functional/match.test.mts +2 -0
  404. package/src/functional/optional/impl/optional-expect-to-be.mts +5 -2
  405. package/src/functional/optional/impl/optional-filter.mts +6 -0
  406. package/src/functional/optional/impl/optional-flat-map.mts +4 -0
  407. package/src/functional/optional/impl/optional-from-nullable.mts +2 -0
  408. package/src/functional/optional/impl/optional-is-none.mts +1 -1
  409. package/src/functional/optional/impl/optional-is-optional.mts +4 -2
  410. package/src/functional/optional/impl/optional-is-some.mts +2 -1
  411. package/src/functional/optional/impl/optional-map.mts +5 -0
  412. package/src/functional/optional/impl/optional-none.mts +4 -2
  413. package/src/functional/optional/impl/optional-or-else.mts +6 -0
  414. package/src/functional/optional/impl/optional-some.mts +5 -3
  415. package/src/functional/optional/impl/optional-to-nullable.mts +4 -2
  416. package/src/functional/optional/impl/optional-unwrap-or.mts +9 -4
  417. package/src/functional/optional/impl/optional-unwrap-throw.mts +2 -1
  418. package/src/functional/optional/impl/optional-unwrap.mts +4 -2
  419. package/src/functional/optional/impl/optional-zip.mts +3 -1
  420. package/src/functional/optional.test.mts +126 -54
  421. package/src/functional/pipe.mts +2 -2
  422. package/src/functional/pipe.test.mts +7 -4
  423. package/src/functional/result/impl/result-err.mts +4 -2
  424. package/src/functional/result/impl/result-expect-to-be.mts +5 -2
  425. package/src/functional/result/impl/result-flat-map.mts +7 -0
  426. package/src/functional/result/impl/result-fold.mts +6 -0
  427. package/src/functional/result/impl/result-from-promise.mts +4 -1
  428. package/src/functional/result/impl/result-from-throwable.mts +5 -1
  429. package/src/functional/result/impl/result-is-err.mts +4 -2
  430. package/src/functional/result/impl/result-is-ok.mts +4 -2
  431. package/src/functional/result/impl/result-is-result.mts +7 -3
  432. package/src/functional/result/impl/result-map-err.mts +5 -0
  433. package/src/functional/result/impl/result-map.mts +6 -0
  434. package/src/functional/result/impl/result-ok.mts +4 -2
  435. package/src/functional/result/impl/result-or-else.mts +6 -0
  436. package/src/functional/result/impl/result-swap.mts +2 -0
  437. package/src/functional/result/impl/result-to-optional.mts +2 -0
  438. package/src/functional/result/impl/result-unwrap-err-or.mts +9 -4
  439. package/src/functional/result/impl/result-unwrap-err-throw.mts +3 -1
  440. package/src/functional/result/impl/result-unwrap-err.mts +3 -2
  441. package/src/functional/result/impl/result-unwrap-ok-or.mts +9 -4
  442. package/src/functional/result/impl/result-unwrap-ok.mts +4 -2
  443. package/src/functional/result/impl/result-unwrap-throw.mts +3 -1
  444. package/src/functional/result/impl/result-zip.mts +3 -1
  445. package/src/functional/result.test.mts +182 -152
  446. package/src/functional/ternary-result/impl/ternary-result-err.mts +3 -2
  447. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +4 -0
  448. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +7 -0
  449. package/src/functional/ternary-result/impl/ternary-result-fold.mts +5 -0
  450. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +3 -1
  451. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +4 -1
  452. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
  453. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +7 -3
  454. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +1 -0
  455. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +6 -0
  456. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +6 -0
  457. package/src/functional/ternary-result/impl/ternary-result-map.mts +9 -0
  458. package/src/functional/ternary-result/impl/ternary-result-ok.mts +1 -1
  459. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +5 -0
  460. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +2 -0
  461. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +5 -0
  462. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +1 -0
  463. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +2 -0
  464. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +5 -0
  465. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +3 -0
  466. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +1 -0
  467. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +5 -0
  468. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +1 -0
  469. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +2 -0
  470. package/src/functional/ternary-result/impl/ternary-result-warn.mts +4 -1
  471. package/src/functional/ternary-result/impl/ternary-result-zip.mts +4 -0
  472. package/src/functional/ternary-result.test.mts +99 -8
  473. package/src/globals.d.mts +12 -1
  474. package/src/guard/has-key.mts +8 -5
  475. package/src/guard/has-key.test.mts +9 -5
  476. package/src/guard/is-error.test.mts +143 -0
  477. package/src/guard/is-non-empty-string.test.mts +44 -24
  478. package/src/guard/is-non-null-object.test.mts +45 -26
  479. package/src/guard/is-primitive.test.mts +51 -28
  480. package/src/guard/is-record.mts +34 -0
  481. package/src/guard/is-record.test.mts +28 -7
  482. package/src/guard/is-type.mts +3 -0
  483. package/src/guard/is-type.test.mts +285 -155
  484. package/src/guard/key-is-in.mts +3 -2
  485. package/src/guard/key-is-in.test.mts +2 -2
  486. package/src/iterator/range.mts +9 -0
  487. package/src/json/json.mts +50 -21
  488. package/src/json/json.test.mts +224 -176
  489. package/src/number/branded-types/finite-number.test.mts +51 -11
  490. package/src/number/branded-types/int.mts +33 -19
  491. package/src/number/branded-types/int.test.mts +56 -14
  492. package/src/number/branded-types/int16.test.mts +63 -16
  493. package/src/number/branded-types/int32.test.mts +63 -16
  494. package/src/number/branded-types/non-negative-finite-number.test.mts +52 -12
  495. package/src/number/branded-types/non-negative-int16.test.mts +59 -16
  496. package/src/number/branded-types/non-negative-int32.test.mts +59 -16
  497. package/src/number/branded-types/non-zero-finite-number.test.mts +65 -14
  498. package/src/number/branded-types/non-zero-int.test.mts +72 -19
  499. package/src/number/branded-types/non-zero-int16.test.mts +60 -16
  500. package/src/number/branded-types/non-zero-int32.test.mts +60 -16
  501. package/src/number/branded-types/non-zero-safe-int.mts +2 -2
  502. package/src/number/branded-types/non-zero-safe-int.test.mts +85 -23
  503. package/src/number/branded-types/non-zero-uint16.test.mts +53 -16
  504. package/src/number/branded-types/non-zero-uint32.test.mts +53 -16
  505. package/src/number/branded-types/positive-finite-number.test.mts +59 -14
  506. package/src/number/branded-types/positive-int.mts +34 -20
  507. package/src/number/branded-types/positive-int.test.mts +64 -17
  508. package/src/number/branded-types/positive-int16.test.mts +50 -15
  509. package/src/number/branded-types/positive-int32.test.mts +50 -15
  510. package/src/number/branded-types/positive-safe-int.mts +48 -27
  511. package/src/number/branded-types/positive-safe-int.test.mts +68 -19
  512. package/src/number/branded-types/positive-uint16.test.mts +53 -16
  513. package/src/number/branded-types/positive-uint32.test.mts +53 -16
  514. package/src/number/branded-types/safe-int.mts +50 -29
  515. package/src/number/branded-types/safe-int.test.mts +70 -18
  516. package/src/number/branded-types/safe-uint.mts +1 -1
  517. package/src/number/branded-types/safe-uint.test.mts +65 -17
  518. package/src/number/branded-types/uint.mts +31 -19
  519. package/src/number/branded-types/uint.test.mts +58 -15
  520. package/src/number/branded-types/uint16.test.mts +56 -15
  521. package/src/number/branded-types/uint32.test.mts +56 -15
  522. package/src/number/enum/int8.test.mts +7 -1
  523. package/src/number/enum/uint8.test.mts +7 -1
  524. package/src/number/num.mts +32 -21
  525. package/src/number/num.test.mts +88 -26
  526. package/src/number/refined-number-utils.mts +38 -13
  527. package/src/object/object.mts +19 -3
  528. package/src/object/object.test.mts +16 -6
  529. package/src/others/cast-mutable.test.mts +8 -1
  530. package/src/others/cast-readonly.test.mts +21 -4
  531. package/src/others/if-then.test.mts +40 -24
  532. package/src/others/map-nullable.mts +3 -0
  533. package/src/others/map-nullable.test.mts +27 -0
  534. package/src/others/memoize-function.test.mts +41 -0
  535. package/src/others/tuple.mts +14 -3
  536. package/src/others/unknown-to-string.mts +2 -0
  537. package/src/others/unknown-to-string.test.mts +10 -0
  538. package/src/promise/promise.mts +8 -4
  539. package/src/promise/promise.test.mts +8 -13
@@ -14,6 +14,7 @@ import {
14
14
  describe('Arr modifications', () => {
15
15
  describe(toUpdated, () => {
16
16
  const xs = [1, 2, 3] as const;
17
+
17
18
  const result = toUpdated(xs, 1, (x) => x + 2);
18
19
 
19
20
  expectType<typeof result, ArrayOfLength<3, number>>('=');
@@ -21,6 +22,14 @@ describe('Arr modifications', () => {
21
22
  test('case 1', () => {
22
23
  assert.deepStrictEqual(result, [1, 4, 3]);
23
24
  });
25
+
26
+ test('should work with curried version', () => {
27
+ const updater = toUpdated(1, (x: number) => x * 2);
28
+
29
+ const r = updater([10, 20, 30]);
30
+
31
+ assert.deepStrictEqual(r, [10, 40, 30]);
32
+ });
24
33
  });
25
34
 
26
35
  describe(toInserted, () => {
@@ -53,11 +62,20 @@ describe('Arr modifications', () => {
53
62
 
54
63
  assert.deepStrictEqual(result, ['a', 'b', 'c', 5]);
55
64
  });
65
+
66
+ test('should work with curried version', () => {
67
+ const inserter = toInserted(2, 99);
68
+
69
+ const result = inserter([1, 2, 3]);
70
+
71
+ assert.deepStrictEqual(result, [1, 2, 99, 3]);
72
+ });
56
73
  });
57
74
 
58
75
  describe(toRemoved, () => {
59
76
  test('case 1', () => {
60
77
  const xs = [1, 2, 3] as const;
78
+
61
79
  const result = toRemoved(xs, 1);
62
80
 
63
81
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
@@ -67,6 +85,7 @@ describe('Arr modifications', () => {
67
85
 
68
86
  test('case 2 (remove head)', () => {
69
87
  const xs = [1, 2, 3] as const;
88
+
70
89
  const result = toRemoved(xs, 0);
71
90
 
72
91
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
@@ -76,6 +95,7 @@ describe('Arr modifications', () => {
76
95
 
77
96
  test('case 3 (remove tail)', () => {
78
97
  const xs = [1, 2, 3] as const;
98
+
79
99
  const result = toRemoved(xs, 2);
80
100
 
81
101
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
@@ -85,17 +105,27 @@ describe('Arr modifications', () => {
85
105
 
86
106
  test('case 4 (number[])', () => {
87
107
  const xs: number[] = [1, 2, 3];
108
+
88
109
  const result = toRemoved(xs, 5);
89
110
 
90
111
  expectType<typeof result, readonly number[]>('=');
91
112
 
92
113
  assert.deepStrictEqual(result, [1, 2, 3]);
93
114
  });
115
+
116
+ test('should work with curried version', () => {
117
+ const removeFirst = toRemoved(0);
118
+
119
+ const result = removeFirst([10, 20, 30]);
120
+
121
+ assert.deepStrictEqual(result, [20, 30]);
122
+ });
94
123
  });
95
124
 
96
125
  describe(toPushed, () => {
97
126
  test('case 1', () => {
98
127
  const xs = [1, 2, 3] as const;
128
+
99
129
  const result = toPushed(xs, 4 as const);
100
130
 
101
131
  expectType<typeof result, readonly [1, 2, 3, 4]>('=');
@@ -105,12 +135,21 @@ describe('Arr modifications', () => {
105
135
 
106
136
  test('case 2', () => {
107
137
  const xs: number[] = [1, 2, 3];
138
+
108
139
  const result = toPushed(xs, 4 as const);
109
140
 
110
141
  expectType<typeof result, readonly [...number[], 4]>('=');
111
142
 
112
143
  assert.deepStrictEqual(result, [1, 2, 3, 4]);
113
144
  });
145
+
146
+ test('should work with curried version', () => {
147
+ const pushFive = toPushed(5);
148
+
149
+ const result = pushFive([1, 2, 3]);
150
+
151
+ assert.deepStrictEqual(result, [1, 2, 3, 5]);
152
+ });
114
153
  });
115
154
 
116
155
  describe(toUnshifted, () => {
@@ -133,11 +172,20 @@ describe('Arr modifications', () => {
133
172
 
134
173
  assert.deepStrictEqual(result, [4, 1, 2, 3]);
135
174
  });
175
+
176
+ test('should work with curried version', () => {
177
+ const unshiftZero = toUnshifted(0);
178
+
179
+ const result = unshiftZero([1, 2, 3]);
180
+
181
+ assert.deepStrictEqual(result, [0, 1, 2, 3]);
182
+ });
136
183
  });
137
184
 
138
185
  describe(toFilled, () => {
139
186
  test('should fill entire array with value', () => {
140
187
  const arr = [1, 2, 3, 4, 5];
188
+
141
189
  const result = toFilled(arr, 0);
142
190
 
143
191
  assert.deepStrictEqual(result, [0, 0, 0, 0, 0]);
@@ -145,7 +193,9 @@ describe('Arr modifications', () => {
145
193
 
146
194
  test('should work with curried version', () => {
147
195
  const fillWithZero = toFilled(0);
196
+
148
197
  const arr = [1, 2, 3];
198
+
149
199
  const result = fillWithZero(arr);
150
200
 
151
201
  assert.deepStrictEqual(result, [0, 0, 0]);
@@ -155,6 +205,7 @@ describe('Arr modifications', () => {
155
205
  describe(toRangeFilled, () => {
156
206
  test('should fill array with range', () => {
157
207
  const arr = [1, 2, 3, 4, 5];
208
+
158
209
  const result = toRangeFilled(arr, 0, [1, 4]);
159
210
 
160
211
  assert.deepStrictEqual(result, [1, 0, 0, 0, 5]);
@@ -162,6 +213,7 @@ describe('Arr modifications', () => {
162
213
 
163
214
  test('should fill with range starting from 0', () => {
164
215
  const arr = [1, 2, 3, 4, 5];
216
+
165
217
  const result = toRangeFilled(arr, 9, [0, 3]);
166
218
 
167
219
  assert.deepStrictEqual(result, [9, 9, 9, 4, 5]);
@@ -169,6 +221,7 @@ describe('Arr modifications', () => {
169
221
 
170
222
  test('should handle empty range', () => {
171
223
  const arr = [1, 2, 3];
224
+
172
225
  const result = toRangeFilled(arr, 0, [2, 2]);
173
226
 
174
227
  assert.deepStrictEqual(result, [1, 2, 3]);
@@ -176,6 +229,7 @@ describe('Arr modifications', () => {
176
229
 
177
230
  test('should clamp range to array bounds', () => {
178
231
  const arr = [1, 2, 3];
232
+
179
233
  const result = toRangeFilled(arr, 0, [1, 10]);
180
234
 
181
235
  assert.deepStrictEqual(result, [1, 0, 0]);
@@ -183,11 +237,20 @@ describe('Arr modifications', () => {
183
237
 
184
238
  test('should handle negative start (clamped to 0)', () => {
185
239
  const arr = [1, 2, 3];
240
+
186
241
  const result = toRangeFilled(arr, 9, [-5, 2]);
187
242
 
188
243
  assert.deepStrictEqual(result, [9, 9, 3]);
189
244
  });
190
245
 
246
+ test('should work with curried version', () => {
247
+ const fillMiddle = toRangeFilled(7, [1, 3]);
248
+
249
+ const result = fillMiddle([1, 2, 3, 4]);
250
+
251
+ assert.deepStrictEqual(result, [1, 7, 7, 4]);
252
+ });
253
+
191
254
  test('A non-integer starting value should result in a type error', () => {
192
255
  const arr = [1, 2, 3];
193
256
 
@@ -214,7 +277,9 @@ describe('Arr modifications', () => {
214
277
 
215
278
  test('should work with different value types', () => {
216
279
  const nums = [1, 2, 3] as const;
280
+
217
281
  const withString = set(nums, 1, 'two');
282
+
218
283
  expectType<typeof withString, readonly [1 | 'two', 2 | 'two', 3 | 'two']>(
219
284
  '=',
220
285
  );
@@ -224,6 +289,7 @@ describe('Arr modifications', () => {
224
289
 
225
290
  test('should work at index 0', () => {
226
291
  const tuple = ['a', 'b', 'c'] as const;
292
+
227
293
  const updated = set(tuple, 0, 'A');
228
294
 
229
295
  assert.deepStrictEqual(updated, ['A', 'b', 'c']);
@@ -231,9 +297,18 @@ describe('Arr modifications', () => {
231
297
 
232
298
  test('should work at last index', () => {
233
299
  const tuple = ['a', 'b', 'c'] as const;
300
+
234
301
  const updated = set(tuple, 2, 'C');
235
302
 
236
303
  assert.deepStrictEqual(updated, ['a', 'b', 'C']);
237
304
  });
305
+
306
+ test('should work with curried version', () => {
307
+ const setIndex1To99 = set(1, 99);
308
+
309
+ const r = setIndex1To99([10, 20, 30]);
310
+
311
+ assert.deepStrictEqual(r, [10, 99, 30]);
312
+ });
238
313
  });
239
314
  });
@@ -8,20 +8,25 @@ import { filterNot, partition } from './array-utils-transformation.mjs';
8
8
 
9
9
  describe('Array overloaded functions - type error validation', () => {
10
10
  const testArray = [1, 2, 3, 4, 5] as const;
11
+
11
12
  const predicate = (x: number): boolean => x > 3;
12
13
 
13
14
  describe('findIndex type safety', () => {
14
15
  test('findIndex with correct arguments should work', () => {
15
16
  // These should work fine
16
17
  const _result1 = findIndex(testArray, predicate);
18
+
17
19
  const _result2 = findIndex(predicate);
20
+
18
21
  const _result3 = findIndex(predicate)(testArray);
19
22
 
20
23
  expectType<typeof _result1, 0 | 1 | 2 | 3 | 4 | -1>('=');
24
+
21
25
  expectType<
22
26
  typeof _result2,
23
27
  (array: readonly number[]) => SizeType.Arr | -1
24
28
  >('=');
29
+
25
30
  expectType<typeof _result3, SizeType.Arr | -1>('=');
26
31
  });
27
32
 
@@ -41,14 +46,18 @@ describe('Array overloaded functions - type error validation', () => {
41
46
  test('filterNot with correct arguments should work', () => {
42
47
  // These should work fine
43
48
  const _result1 = filterNot(testArray, predicate);
49
+
44
50
  const _result2 = filterNot(predicate);
51
+
45
52
  const _result3 = filterNot(predicate)(testArray);
46
53
 
47
54
  expectType<typeof _result1, readonly number[]>('<=');
55
+
48
56
  expectType<
49
57
  typeof _result2,
50
58
  (array: readonly number[]) => readonly number[]
51
59
  >('<=');
60
+
52
61
  expectType<typeof _result3, readonly number[]>('<=');
53
62
  });
54
63
 
@@ -67,14 +76,18 @@ describe('Array overloaded functions - type error validation', () => {
67
76
  test('partition with correct arguments should work', () => {
68
77
  // These should work fine
69
78
  const _result1 = partition(testArray, 2);
79
+
70
80
  const _result2 = partition(2);
81
+
71
82
  const _result3 = partition(2)(testArray);
72
83
 
73
84
  expectType<typeof _result1, readonly (readonly number[])[]>('<=');
85
+
74
86
  expectType<
75
87
  typeof _result2,
76
88
  <A>(array: readonly A[]) => readonly (readonly A[])[]
77
89
  >('<=');
90
+
78
91
  expectType<typeof _result3, readonly (readonly number[])[]>('<=');
79
92
  });
80
93
 
@@ -93,9 +106,11 @@ describe('Array overloaded functions - type error validation', () => {
93
106
  test('range with correct arguments should work', () => {
94
107
  // These should work fine
95
108
  const _result1 = range(1, 5);
109
+
96
110
  const _result2 = range(1, 5, 1);
97
111
 
98
112
  expectType<typeof _result1, readonly [1, 2, 3, 4]>('=');
113
+
99
114
  expectType<typeof _result2, readonly [1, 2, 3, 4]>('=');
100
115
  });
101
116
 
@@ -112,12 +127,15 @@ describe('Array overloaded functions - type error validation', () => {
112
127
  test('spread with correct tuple types should work', () => {
113
128
  // Correct usage with spread
114
129
  const correctArgs1 = [testArray, predicate] as const;
130
+
115
131
  const correctArgs2 = [predicate] as const;
116
132
 
117
133
  const _result1 = findIndex(...correctArgs1);
134
+
118
135
  const _result2 = findIndex(...correctArgs2);
119
136
 
120
137
  expectType<typeof _result1, 0 | 1 | 2 | 3 | 4 | -1>('<=');
138
+
121
139
  expectType<
122
140
  typeof _result2,
123
141
  (array: readonly number[]) => SizeType.Arr | -1
@@ -141,6 +159,7 @@ describe('Array overloaded functions - type error validation', () => {
141
159
  test('composition should preserve type safety', () => {
142
160
  // This should work
143
161
  const findPositive = findIndex((x: number) => x > 0);
162
+
144
163
  const filterNegative = filterNot((x: number) => x < 0);
145
164
 
146
165
  const _composedResult = pipe(testArray)
@@ -13,14 +13,19 @@ import { isNonEmpty } from './array-utils-validation.mjs';
13
13
  *
14
14
  * ```ts
15
15
  * const values = [5, 3, 9] as const;
16
+ *
16
17
  * const empty: readonly number[] = [];
17
18
  *
18
19
  * const smallest = Arr.min(values);
20
+ *
19
21
  * const none = Arr.min(empty);
22
+ *
20
23
  * const custom = Arr.min(values, (a, b) => b - a);
21
24
  *
22
25
  * assert.deepStrictEqual(smallest, Optional.some(3));
26
+ *
23
27
  * assert.deepStrictEqual(none, Optional.none);
28
+ *
24
29
  * assert.deepStrictEqual(custom, Optional.some(9));
25
30
  * ```
26
31
  */
@@ -62,9 +67,11 @@ export function min<E extends number>(
62
67
  * const values = [5, 3, 9];
63
68
  *
64
69
  * const largest = Arr.max(values);
70
+ *
65
71
  * const reversed = Arr.max(values, (a, b) => b - a);
66
72
  *
67
73
  * assert.deepStrictEqual(largest, Optional.some(9));
74
+ *
68
75
  * assert.deepStrictEqual(reversed, Optional.some(3));
69
76
  * ```
70
77
  */
@@ -84,6 +91,7 @@ export function max<E extends number>(
84
91
  comparator?: (x: E, y: E) => number,
85
92
  ): Optional<E> {
86
93
  const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
94
+
87
95
  // Find max by finding min with an inverted comparator
88
96
  return min(array, (x, y) => -cmp(x, y));
89
97
  }
@@ -101,6 +109,7 @@ export function max<E extends number>(
101
109
  * ] as const;
102
110
  *
103
111
  * const leastVisits = Arr.minBy(users, (user) => user.visits);
112
+ *
104
113
  * const custom = Arr.minBy(
105
114
  * users,
106
115
  * (user) => user.visits,
@@ -108,6 +117,7 @@ export function max<E extends number>(
108
117
  * );
109
118
  *
110
119
  * assert.deepStrictEqual(leastVisits, Optional.some({ id: 2, visits: 3 }));
120
+ *
111
121
  * assert.deepStrictEqual(custom, Optional.some({ id: 1, visits: 10 }));
112
122
  * ```
113
123
  */
@@ -148,6 +158,7 @@ export function minBy<E, V>(
148
158
  * ];
149
159
  *
150
160
  * const mostStars = Arr.maxBy(projects, (project) => project.stars);
161
+ *
151
162
  * const smallestStars = Arr.maxBy(
152
163
  * projects,
153
164
  * (project) => project.stars,
@@ -155,6 +166,7 @@ export function minBy<E, V>(
155
166
  * );
156
167
  *
157
168
  * assert.deepStrictEqual(mostStars, Optional.some({ id: 'b', stars: 30 }));
169
+ *
158
170
  * assert.deepStrictEqual(smallestStars, Optional.some({ id: 'a', stars: 10 }));
159
171
  * ```
160
172
  */
@@ -191,10 +203,12 @@ export function maxBy<E, V>(
191
203
  * const words = ['Ada', 'Grace', 'Linus'] as const;
192
204
  *
193
205
  * const longWords = Arr.count(words, (word) => word.length > 4);
206
+ *
194
207
  * const withCurried = Arr.count<string>((word) => word.includes('a'))(words);
195
208
  *
196
- * assert(longWords === 2);
197
- * assert(withCurried === 2);
209
+ * assert.isTrue(longWords === 2);
210
+ *
211
+ * assert.isTrue(withCurried === 2);
198
212
  * ```
199
213
  */
200
214
  export function count<const Ar extends readonly unknown[]>(
@@ -217,14 +231,17 @@ export function count<E>(
217
231
  switch (args.length) {
218
232
  case 2: {
219
233
  const [array, predicate] = args;
234
+
220
235
  return array.reduce<Uint32>(
221
236
  (acc, curr, index) =>
222
237
  predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc,
223
238
  asUint32(0),
224
239
  );
225
240
  }
241
+
226
242
  case 1: {
227
243
  const [predicate] = args;
244
+
228
245
  return (array) => count(array, predicate);
229
246
  }
230
247
  }
@@ -241,7 +258,9 @@ export function count<E>(
241
258
  * const counts = Arr.countBy(words, (word) => word[0]);
242
259
  *
243
260
  * assert.deepStrictEqual(counts.get('A'), Optional.some(2));
261
+ *
244
262
  * assert.deepStrictEqual(counts.get('G'), Optional.some(1));
263
+ *
245
264
  * assert.deepStrictEqual(counts.get('B'), Optional.some(1));
246
265
  * ```
247
266
  */
@@ -268,10 +287,12 @@ export function countBy<E, G extends MapSetKeyType>(
268
287
  switch (args.length) {
269
288
  case 2: {
270
289
  const [array, grouper] = args;
290
+
271
291
  const mut_groups = new Map<G, SizeType.Arr>();
272
292
 
273
293
  for (const [index, e] of array.entries()) {
274
294
  const key = grouper(e, asUint32(index));
295
+
275
296
  const curr = mut_groups.get(key) ?? 0;
276
297
 
277
298
  mut_groups.set(key, asUint32(curr + 1));
@@ -279,8 +300,10 @@ export function countBy<E, G extends MapSetKeyType>(
279
300
 
280
301
  return IMap.create(mut_groups);
281
302
  }
303
+
282
304
  case 1: {
283
305
  const [grouper] = args;
306
+
284
307
  return (array) => countBy(array, grouper);
285
308
  }
286
309
  }
@@ -295,13 +318,15 @@ export function countBy<E, G extends MapSetKeyType>(
295
318
  * const words = ['Ada', 'Lovelace'];
296
319
  *
297
320
  * const totalLength = Arr.foldl(words, (acc, word) => acc + word.length, 0);
321
+ *
298
322
  * const concat = Arr.foldl<string | number, string>(
299
323
  * (acc, value) => `${acc}-${value}`,
300
324
  * 'items',
301
325
  * )(words);
302
326
  *
303
- * assert(totalLength === 11);
304
- * assert(concat === 'items-Ada-Lovelace');
327
+ * assert.isTrue(totalLength === 11);
328
+ *
329
+ * assert.isTrue(concat === 'items-Ada-Lovelace');
305
330
  * ```
306
331
  */
307
332
  export function foldl<const Ar extends readonly unknown[], P>(
@@ -346,13 +371,16 @@ export function foldl<E, P>(
346
371
  switch (args.length) {
347
372
  case 3: {
348
373
  const [array, callbackfn, initialValue] = args;
374
+
349
375
  return array.reduce(
350
376
  (prev, curr, index) => callbackfn(prev, curr, asUint32(index)),
351
377
  initialValue,
352
378
  );
353
379
  }
380
+
354
381
  case 2: {
355
382
  const [callbackfn, initialValue] = args;
383
+
356
384
  return (array) => foldl(array, callbackfn, initialValue);
357
385
  }
358
386
  }
@@ -367,13 +395,15 @@ export function foldl<E, P>(
367
395
  * const numbers = [1, 2, 3];
368
396
  *
369
397
  * const subtractRight = Arr.foldr(numbers, (acc, value) => acc - value, 0);
398
+ *
370
399
  * const joinFromRight = Arr.foldr<number, string>(
371
400
  * (acc, value) => `${acc}${value}`,
372
401
  * '',
373
402
  * )(numbers);
374
403
  *
375
- * assert(subtractRight === -6);
376
- * assert(joinFromRight === '321');
404
+ * assert.isTrue(subtractRight === -6);
405
+ *
406
+ * assert.isTrue(joinFromRight === '321');
377
407
  * ```
378
408
  */
379
409
  export function foldr<const Ar extends readonly unknown[], P>(
@@ -418,13 +448,16 @@ export function foldr<E, P>(
418
448
  switch (args.length) {
419
449
  case 3: {
420
450
  const [array, callbackfn, initialValue] = args;
451
+
421
452
  return array.reduceRight(
422
453
  (prev, curr, index) => callbackfn(prev, curr, asUint32(index)),
423
454
  initialValue,
424
455
  );
425
456
  }
457
+
426
458
  case 2: {
427
459
  const [callbackfn, initialValue] = args;
460
+
428
461
  return (array) => foldr(array, callbackfn, initialValue);
429
462
  }
430
463
  }
@@ -437,13 +470,16 @@ export function foldr<E, P>(
437
470
  *
438
471
  * ```ts
439
472
  * const numbers = [1, 2, 3, 4] as const;
473
+ *
440
474
  * const negatives = [3, -2, 5] as const;
441
475
  *
442
476
  * const total = Arr.sum(numbers);
477
+ *
443
478
  * const totalNegatives = Arr.sum(negatives);
444
479
  *
445
- * assert(total === 10);
446
- * assert(totalNegatives === 6);
480
+ * assert.isTrue(total === 10);
481
+ *
482
+ * assert.isTrue(totalNegatives === 6);
447
483
  * ```
448
484
  */
449
485
  export function sum(array: readonly []): 0;
@@ -469,50 +505,59 @@ export function sum(array: readonly number[]): number {
469
505
  * const numbers = [1, 2, 3] as const;
470
506
  *
471
507
  * const defaultSeparator = Arr.join(numbers);
508
+ *
472
509
  * const hyphenSeparated = Arr.join(numbers, '-');
473
510
  *
474
511
  * assert.deepStrictEqual(defaultSeparator, Result.ok('1,2,3'));
512
+ *
475
513
  * assert.deepStrictEqual(hyphenSeparated, Result.ok('1-2-3'));
476
514
  * ```
477
515
  */
478
- export function join<E>(
479
- array: readonly E[],
516
+ export function join(
517
+ array: readonly unknown[],
480
518
  separator?: string,
481
519
  ): Result<string, Error>;
482
520
 
483
521
  export function join(
484
522
  separator?: string,
485
- ): <E>(array: readonly E[]) => Result<string, Error>;
523
+ ): (array: readonly unknown[]) => Result<string, Error>;
486
524
 
487
- export function join<E>(
525
+ export function join(
488
526
  ...args:
489
- | readonly [array: readonly E[], separator?: string]
527
+ | readonly [array: readonly unknown[], separator?: string]
490
528
  | readonly [separator?: string]
491
- ): Result<string, Error> | ((array: readonly E[]) => Result<string, Error>) {
529
+ ):
530
+ | Result<string, Error>
531
+ | ((array: readonly unknown[]) => Result<string, Error>) {
492
532
  switch (args.length) {
493
533
  case 0:
494
534
  return (array) => joinImpl(array, undefined);
495
535
 
496
536
  case 1: {
497
537
  const [arg] = args;
538
+
498
539
  if (isString(arg) || isUndefined(arg)) {
499
540
  return (array) => joinImpl(array, arg);
500
541
  }
542
+
501
543
  return joinImpl(arg, undefined);
502
544
  }
545
+
503
546
  case 2: {
504
547
  const [array, separator] = args;
548
+
505
549
  return joinImpl(array, separator);
506
550
  }
507
551
  }
508
552
  }
509
553
 
510
- const joinImpl = <E,>(
511
- array: readonly E[],
554
+ const joinImpl = (
555
+ array: readonly unknown[],
512
556
  separator: string | undefined,
513
557
  ): Result<string, Error> => {
514
558
  try {
515
559
  const result = array.join(separator);
560
+
516
561
  return Result.ok(result);
517
562
  } catch (error) {
518
563
  return Result.err(