ts-data-forge 5.0.0 → 5.1.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 (532) hide show
  1. package/README.md +55 -6
  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 +7 -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 +1 -0
  13. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  14. package/dist/array/impl/array-utils-reducing-value.d.mts +26 -2
  15. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  16. package/dist/array/impl/array-utils-reducing-value.mjs +2 -1
  17. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  18. package/dist/array/impl/array-utils-search.d.mts +30 -0
  19. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  20. package/dist/array/impl/array-utils-search.mjs +1 -0
  21. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  22. package/dist/array/impl/array-utils-set-op.d.mts +13 -0
  23. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  24. package/dist/array/impl/array-utils-set-op.mjs +13 -0
  25. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  26. package/dist/array/impl/array-utils-size.d.mts +3 -0
  27. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  28. package/dist/array/impl/array-utils-size.mjs +3 -0
  29. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  30. package/dist/array/impl/array-utils-slice-clamped.d.mts +2 -0
  31. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
  32. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  33. package/dist/array/impl/array-utils-slicing.d.mts +15 -0
  34. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  35. package/dist/array/impl/array-utils-slicing.mjs +7 -0
  36. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  37. package/dist/array/impl/array-utils-transformation.d.mts +27 -0
  38. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  39. package/dist/array/impl/array-utils-transformation.mjs +7 -0
  40. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  41. package/dist/array/impl/array-utils-validation.d.mts +17 -0
  42. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  43. package/dist/array/impl/array-utils-validation.mjs +11 -0
  44. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  45. package/dist/collections/imap-mapped.mjs +1 -0
  46. package/dist/collections/imap-mapped.mjs.map +1 -1
  47. package/dist/collections/imap.d.mts +20 -0
  48. package/dist/collections/imap.d.mts.map +1 -1
  49. package/dist/collections/imap.mjs +3 -0
  50. package/dist/collections/imap.mjs.map +1 -1
  51. package/dist/collections/iset-mapped.d.mts +27 -0
  52. package/dist/collections/iset-mapped.d.mts.map +1 -1
  53. package/dist/collections/iset-mapped.mjs +7 -0
  54. package/dist/collections/iset-mapped.mjs.map +1 -1
  55. package/dist/collections/iset.d.mts +29 -0
  56. package/dist/collections/iset.d.mts.map +1 -1
  57. package/dist/collections/iset.mjs +7 -0
  58. package/dist/collections/iset.mjs.map +1 -1
  59. package/dist/collections/queue.d.mts +40 -0
  60. package/dist/collections/queue.d.mts.map +1 -1
  61. package/dist/collections/queue.mjs +9 -0
  62. package/dist/collections/queue.mjs.map +1 -1
  63. package/dist/collections/stack.d.mts +35 -0
  64. package/dist/collections/stack.d.mts.map +1 -1
  65. package/dist/collections/stack.mjs +8 -0
  66. package/dist/collections/stack.mjs.map +1 -1
  67. package/dist/entry-point.mjs +1 -1
  68. package/dist/functional/match.d.mts.map +1 -1
  69. package/dist/functional/match.mjs.map +1 -1
  70. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +1 -0
  71. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -1
  72. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  73. package/dist/functional/optional/impl/optional-filter.d.mts +3 -0
  74. package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -1
  75. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  76. package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -0
  77. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -1
  78. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  79. package/dist/functional/optional/impl/optional-from-nullable.d.mts +2 -0
  80. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
  81. package/dist/functional/optional/impl/optional-from-nullable.mjs +2 -0
  82. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  83. package/dist/functional/optional/impl/optional-is-optional.d.mts +2 -0
  84. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
  85. package/dist/functional/optional/impl/optional-is-optional.mjs +2 -0
  86. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  87. package/dist/functional/optional/impl/optional-is-some.d.mts +1 -0
  88. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
  89. package/dist/functional/optional/impl/optional-is-some.mjs +1 -0
  90. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  91. package/dist/functional/optional/impl/optional-map.d.mts +2 -0
  92. package/dist/functional/optional/impl/optional-map.d.mts.map +1 -1
  93. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  94. package/dist/functional/optional/impl/optional-none.d.mts +2 -0
  95. package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
  96. package/dist/functional/optional/impl/optional-none.mjs +2 -0
  97. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  98. package/dist/functional/optional/impl/optional-or-else.d.mts +4 -0
  99. package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -1
  100. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  101. package/dist/functional/optional/impl/optional-some.d.mts +3 -1
  102. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
  103. package/dist/functional/optional/impl/optional-some.mjs +2 -0
  104. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  105. package/dist/functional/optional/impl/optional-to-nullable.d.mts +2 -0
  106. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs +2 -0
  108. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  109. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +3 -0
  110. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -1
  111. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  112. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +1 -0
  113. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
  114. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +1 -0
  115. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  116. package/dist/functional/optional/impl/optional-unwrap.d.mts +2 -0
  117. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -1
  118. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  119. package/dist/functional/optional/impl/optional-zip.d.mts +2 -0
  120. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
  121. package/dist/functional/optional/impl/optional-zip.mjs +2 -0
  122. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  123. package/dist/functional/result/impl/result-err.d.mts +3 -1
  124. package/dist/functional/result/impl/result-err.d.mts.map +1 -1
  125. package/dist/functional/result/impl/result-err.mjs +2 -0
  126. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  127. package/dist/functional/result/impl/result-expect-to-be.d.mts +1 -0
  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 +3 -0
  137. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +3 -0
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.d.mts +2 -0
  141. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
  142. package/dist/functional/result/impl/result-from-throwable.mjs +4 -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 +2 -0
  145. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
  146. package/dist/functional/result/impl/result-is-err.mjs +2 -0
  147. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-is-ok.d.mts +2 -0
  149. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
  150. package/dist/functional/result/impl/result-is-ok.mjs +2 -0
  151. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-is-result.d.mts +4 -0
  153. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
  154. package/dist/functional/result/impl/result-is-result.mjs +4 -0
  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 +3 -1
  163. package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
  164. package/dist/functional/result/impl/result-ok.mjs +2 -0
  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 +3 -0
  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 +2 -0
  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 +2 -0
  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 +1 -0
  185. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
  186. package/dist/functional/result/impl/result-unwrap-err.mjs +1 -0
  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 +3 -0
  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 +1 -0
  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 +2 -0
  195. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
  196. package/dist/functional/result/impl/result-unwrap-throw.mjs +2 -0
  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 +2 -1
  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 +1 -0
  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 +2 -0
  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 +2 -0
  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 +2 -0
  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 +4 -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 +4 -0
  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 +4 -0
  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 +10 -0
  294. package/dist/guard/index.mjs +1 -1
  295. package/dist/guard/is-record.d.mts +31 -0
  296. package/dist/guard/is-record.d.mts.map +1 -1
  297. package/dist/guard/is-record.mjs +32 -1
  298. package/dist/guard/is-record.mjs.map +1 -1
  299. package/dist/guard/is-type.d.mts +3 -0
  300. package/dist/guard/is-type.d.mts.map +1 -1
  301. package/dist/guard/is-type.mjs +3 -0
  302. package/dist/guard/is-type.mjs.map +1 -1
  303. package/dist/guard/key-is-in.d.mts +1 -0
  304. package/dist/guard/key-is-in.d.mts.map +1 -1
  305. package/dist/guard/key-is-in.mjs +1 -0
  306. package/dist/guard/key-is-in.mjs.map +1 -1
  307. package/dist/index.mjs +1 -1
  308. package/dist/iterator/range.d.mts +4 -0
  309. package/dist/iterator/range.d.mts.map +1 -1
  310. package/dist/iterator/range.mjs +1 -0
  311. package/dist/iterator/range.mjs.map +1 -1
  312. package/dist/json/json.d.mts +21 -0
  313. package/dist/json/json.d.mts.map +1 -1
  314. package/dist/json/json.mjs +22 -0
  315. package/dist/json/json.mjs.map +1 -1
  316. package/dist/number/branded-types/int.d.mts +14 -0
  317. package/dist/number/branded-types/int.d.mts.map +1 -1
  318. package/dist/number/branded-types/int.mjs +14 -0
  319. package/dist/number/branded-types/int.mjs.map +1 -1
  320. package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
  321. package/dist/number/branded-types/positive-int.d.mts +14 -0
  322. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  323. package/dist/number/branded-types/positive-int.mjs +14 -0
  324. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  325. package/dist/number/branded-types/positive-safe-int.d.mts +21 -0
  326. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  327. package/dist/number/branded-types/positive-safe-int.mjs +22 -1
  328. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  329. package/dist/number/branded-types/safe-int.d.mts +21 -0
  330. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  331. package/dist/number/branded-types/safe-int.mjs +23 -2
  332. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  333. package/dist/number/branded-types/safe-uint.mjs +1 -1
  334. package/dist/number/branded-types/uint.d.mts +12 -0
  335. package/dist/number/branded-types/uint.d.mts.map +1 -1
  336. package/dist/number/branded-types/uint.mjs +12 -0
  337. package/dist/number/branded-types/uint.mjs.map +1 -1
  338. package/dist/number/num.d.mts +9 -0
  339. package/dist/number/num.d.mts.map +1 -1
  340. package/dist/number/num.mjs +8 -1
  341. package/dist/number/num.mjs.map +1 -1
  342. package/dist/number/refined-number-utils.d.mts +22 -0
  343. package/dist/number/refined-number-utils.d.mts.map +1 -1
  344. package/dist/number/refined-number-utils.mjs +23 -0
  345. package/dist/number/refined-number-utils.mjs.map +1 -1
  346. package/dist/object/object.d.mts +9 -0
  347. package/dist/object/object.d.mts.map +1 -1
  348. package/dist/object/object.mjs +7 -0
  349. package/dist/object/object.mjs.map +1 -1
  350. package/dist/others/map-nullable.mjs.map +1 -1
  351. package/dist/others/tuple.d.mts +11 -0
  352. package/dist/others/tuple.d.mts.map +1 -1
  353. package/dist/others/tuple.mjs +11 -0
  354. package/dist/others/tuple.mjs.map +1 -1
  355. package/dist/others/unknown-to-string.d.mts.map +1 -1
  356. package/dist/others/unknown-to-string.mjs +2 -1
  357. package/dist/others/unknown-to-string.mjs.map +1 -1
  358. package/dist/promise/promise.d.mts +4 -0
  359. package/dist/promise/promise.d.mts.map +1 -1
  360. package/dist/promise/promise.mjs +5 -0
  361. package/dist/promise/promise.mjs.map +1 -1
  362. package/package.json +20 -24
  363. package/src/array/impl/array-utils-creation.mts +20 -0
  364. package/src/array/impl/array-utils-creation.test.mts +71 -0
  365. package/src/array/impl/array-utils-element-access.mts +13 -0
  366. package/src/array/impl/array-utils-element-access.test.mts +21 -0
  367. package/src/array/impl/array-utils-iterators.test.mts +17 -0
  368. package/src/array/impl/array-utils-modification.mts +40 -0
  369. package/src/array/impl/array-utils-modification.test.mts +75 -0
  370. package/src/array/impl/array-utils-overload-type-error.test.mts +19 -0
  371. package/src/array/impl/array-utils-reducing-value.mts +55 -9
  372. package/src/array/impl/array-utils-reducing-value.test.mts +90 -0
  373. package/src/array/impl/array-utils-search.mts +53 -0
  374. package/src/array/impl/array-utils-search.test.mts +51 -0
  375. package/src/array/impl/array-utils-set-op.mts +19 -0
  376. package/src/array/impl/array-utils-set-op.test.mts +116 -0
  377. package/src/array/impl/array-utils-size.mts +3 -0
  378. package/src/array/impl/array-utils-size.test.mts +1 -0
  379. package/src/array/impl/array-utils-slice-clamped.mts +7 -0
  380. package/src/array/impl/array-utils-slice-clamped.test.mts +20 -0
  381. package/src/array/impl/array-utils-slicing.mts +27 -0
  382. package/src/array/impl/array-utils-slicing.test.mts +57 -0
  383. package/src/array/impl/array-utils-transformation.mts +58 -0
  384. package/src/array/impl/array-utils-transformation.test.mts +113 -1
  385. package/src/array/impl/array-utils-validation.mts +23 -0
  386. package/src/array/impl/array-utils-validation.test.mts +96 -0
  387. package/src/array/impl/array.test.mts +12 -0
  388. package/src/collections/imap-mapped.mts +11 -0
  389. package/src/collections/imap-mapped.test.mts +70 -0
  390. package/src/collections/imap.mts +32 -0
  391. package/src/collections/imap.test.mts +106 -0
  392. package/src/collections/iset-mapped.mts +35 -0
  393. package/src/collections/iset-mapped.test.mts +111 -0
  394. package/src/collections/iset.mts +34 -0
  395. package/src/collections/iset.test.mts +193 -0
  396. package/src/collections/queue.mts +53 -0
  397. package/src/collections/queue.test.mts +32 -0
  398. package/src/collections/stack.mts +42 -0
  399. package/src/collections/stack.test.mts +44 -0
  400. package/src/functional/match.mts +16 -0
  401. package/src/functional/match.test.mts +2 -0
  402. package/src/functional/optional/impl/optional-expect-to-be.mts +3 -0
  403. package/src/functional/optional/impl/optional-filter.mts +6 -0
  404. package/src/functional/optional/impl/optional-flat-map.mts +4 -0
  405. package/src/functional/optional/impl/optional-from-nullable.mts +2 -0
  406. package/src/functional/optional/impl/optional-is-optional.mts +2 -0
  407. package/src/functional/optional/impl/optional-is-some.mts +1 -0
  408. package/src/functional/optional/impl/optional-map.mts +5 -0
  409. package/src/functional/optional/impl/optional-none.mts +2 -0
  410. package/src/functional/optional/impl/optional-or-else.mts +6 -0
  411. package/src/functional/optional/impl/optional-some.mts +3 -1
  412. package/src/functional/optional/impl/optional-to-nullable.mts +2 -0
  413. package/src/functional/optional/impl/optional-unwrap-or.mts +5 -0
  414. package/src/functional/optional/impl/optional-unwrap-throw.mts +1 -0
  415. package/src/functional/optional/impl/optional-unwrap.mts +2 -0
  416. package/src/functional/optional/impl/optional-zip.mts +2 -0
  417. package/src/functional/optional.test.mts +73 -0
  418. package/src/functional/pipe.test.mts +3 -0
  419. package/src/functional/result/impl/result-err.mts +3 -1
  420. package/src/functional/result/impl/result-expect-to-be.mts +3 -0
  421. package/src/functional/result/impl/result-flat-map.mts +7 -0
  422. package/src/functional/result/impl/result-fold.mts +6 -0
  423. package/src/functional/result/impl/result-from-promise.mts +3 -0
  424. package/src/functional/result/impl/result-from-throwable.mts +6 -1
  425. package/src/functional/result/impl/result-is-err.mts +2 -0
  426. package/src/functional/result/impl/result-is-ok.mts +2 -0
  427. package/src/functional/result/impl/result-is-result.mts +4 -0
  428. package/src/functional/result/impl/result-map-err.mts +5 -0
  429. package/src/functional/result/impl/result-map.mts +6 -0
  430. package/src/functional/result/impl/result-ok.mts +3 -1
  431. package/src/functional/result/impl/result-or-else.mts +6 -0
  432. package/src/functional/result/impl/result-swap.mts +2 -0
  433. package/src/functional/result/impl/result-to-optional.mts +2 -0
  434. package/src/functional/result/impl/result-unwrap-err-or.mts +5 -0
  435. package/src/functional/result/impl/result-unwrap-err-throw.mts +2 -0
  436. package/src/functional/result/impl/result-unwrap-err.mts +1 -0
  437. package/src/functional/result/impl/result-unwrap-ok-or.mts +5 -0
  438. package/src/functional/result/impl/result-unwrap-ok.mts +2 -0
  439. package/src/functional/result/impl/result-unwrap-throw.mts +2 -0
  440. package/src/functional/result/impl/result-zip.mts +3 -1
  441. package/src/functional/result.test.mts +88 -0
  442. package/src/functional/ternary-result/impl/ternary-result-err.mts +2 -1
  443. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +4 -0
  444. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +7 -0
  445. package/src/functional/ternary-result/impl/ternary-result-fold.mts +5 -0
  446. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +2 -0
  447. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +5 -1
  448. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
  449. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +4 -0
  450. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +1 -0
  451. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +6 -0
  452. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +6 -0
  453. package/src/functional/ternary-result/impl/ternary-result-map.mts +9 -0
  454. package/src/functional/ternary-result/impl/ternary-result-ok.mts +1 -1
  455. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +5 -0
  456. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +2 -0
  457. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +5 -0
  458. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +1 -0
  459. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +2 -0
  460. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +5 -0
  461. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +3 -0
  462. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +1 -0
  463. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +5 -0
  464. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +1 -0
  465. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +2 -0
  466. package/src/functional/ternary-result/impl/ternary-result-warn.mts +4 -1
  467. package/src/functional/ternary-result/impl/ternary-result-zip.mts +4 -0
  468. package/src/functional/ternary-result.test.mts +91 -0
  469. package/src/globals.d.mts +10 -0
  470. package/src/guard/has-key.test.mts +9 -0
  471. package/src/guard/is-non-empty-string.test.mts +20 -0
  472. package/src/guard/is-non-null-object.test.mts +19 -0
  473. package/src/guard/is-primitive.test.mts +23 -0
  474. package/src/guard/is-record.mts +34 -0
  475. package/src/guard/is-record.test.mts +21 -0
  476. package/src/guard/is-type.mts +3 -0
  477. package/src/guard/is-type.test.mts +134 -0
  478. package/src/guard/key-is-in.mts +1 -0
  479. package/src/iterator/range.mts +9 -0
  480. package/src/json/json.mts +29 -0
  481. package/src/json/json.test.mts +87 -0
  482. package/src/number/branded-types/finite-number.test.mts +38 -0
  483. package/src/number/branded-types/int.mts +14 -0
  484. package/src/number/branded-types/int.test.mts +42 -0
  485. package/src/number/branded-types/int16.test.mts +47 -0
  486. package/src/number/branded-types/int32.test.mts +47 -0
  487. package/src/number/branded-types/non-negative-finite-number.test.mts +40 -0
  488. package/src/number/branded-types/non-negative-int16.test.mts +43 -0
  489. package/src/number/branded-types/non-negative-int32.test.mts +43 -0
  490. package/src/number/branded-types/non-zero-finite-number.test.mts +51 -0
  491. package/src/number/branded-types/non-zero-int.test.mts +53 -0
  492. package/src/number/branded-types/non-zero-int16.test.mts +44 -0
  493. package/src/number/branded-types/non-zero-int32.test.mts +44 -0
  494. package/src/number/branded-types/non-zero-safe-int.mts +2 -2
  495. package/src/number/branded-types/non-zero-safe-int.test.mts +62 -0
  496. package/src/number/branded-types/non-zero-uint16.test.mts +37 -0
  497. package/src/number/branded-types/non-zero-uint32.test.mts +37 -0
  498. package/src/number/branded-types/positive-finite-number.test.mts +45 -0
  499. package/src/number/branded-types/positive-int.mts +14 -0
  500. package/src/number/branded-types/positive-int.test.mts +47 -0
  501. package/src/number/branded-types/positive-int16.test.mts +35 -0
  502. package/src/number/branded-types/positive-int32.test.mts +35 -0
  503. package/src/number/branded-types/positive-safe-int.mts +22 -1
  504. package/src/number/branded-types/positive-safe-int.test.mts +49 -0
  505. package/src/number/branded-types/positive-uint16.test.mts +37 -0
  506. package/src/number/branded-types/positive-uint32.test.mts +37 -0
  507. package/src/number/branded-types/safe-int.mts +23 -2
  508. package/src/number/branded-types/safe-int.test.mts +52 -0
  509. package/src/number/branded-types/safe-uint.mts +1 -1
  510. package/src/number/branded-types/safe-uint.test.mts +48 -0
  511. package/src/number/branded-types/uint.mts +12 -0
  512. package/src/number/branded-types/uint.test.mts +43 -0
  513. package/src/number/branded-types/uint16.test.mts +41 -0
  514. package/src/number/branded-types/uint32.test.mts +41 -0
  515. package/src/number/enum/int8.test.mts +6 -0
  516. package/src/number/enum/uint8.test.mts +6 -0
  517. package/src/number/num.mts +12 -1
  518. package/src/number/num.test.mts +62 -0
  519. package/src/number/refined-number-utils.mts +25 -0
  520. package/src/object/object.mts +15 -0
  521. package/src/object/object.test.mts +10 -0
  522. package/src/others/cast-mutable.test.mts +7 -0
  523. package/src/others/cast-readonly.test.mts +17 -0
  524. package/src/others/if-then.test.mts +16 -0
  525. package/src/others/map-nullable.mts +3 -0
  526. package/src/others/map-nullable.test.mts +27 -0
  527. package/src/others/memoize-function.test.mts +41 -0
  528. package/src/others/tuple.mts +11 -0
  529. package/src/others/unknown-to-string.mts +4 -1
  530. package/src/others/unknown-to-string.test.mts +10 -0
  531. package/src/promise/promise.mts +4 -0
  532. package/src/promise/promise.test.mts +1 -0
@@ -12,85 +12,118 @@ describe('Arr set operations', () => {
12
12
  describe(eq, () => {
13
13
  {
14
14
  const xs = [1, 2, 3] as const;
15
+
15
16
  const ys = [1, 2, 3] as const;
17
+
16
18
  const result = eq(xs, ys);
19
+
17
20
  expectType<typeof result, boolean>('=');
18
21
 
19
22
  test('should return true for equal arrays of numbers', () => {
20
23
  expect(result).toBe(true);
21
24
  });
22
25
  }
26
+
23
27
  {
24
28
  const xs = [1, 2, 3] as const;
29
+
25
30
  const ys = [1, 2, 4] as const;
31
+
26
32
  const result = eq(xs, ys);
33
+
27
34
  expectType<typeof result, boolean>('=');
28
35
 
29
36
  test('should return false for different arrays of numbers', () => {
30
37
  expect(result).toBe(false);
31
38
  });
32
39
  }
40
+
33
41
  {
34
42
  const xs = [1, 2, 3] as const;
43
+
35
44
  const ys = [1, 2] as const;
45
+
36
46
  const result = eq(xs, ys);
47
+
37
48
  expectType<typeof result, boolean>('=');
38
49
 
39
50
  test('should return false for arrays of different lengths', () => {
40
51
  expect(result).toBe(false);
41
52
  });
42
53
  }
54
+
43
55
  {
44
56
  const xs = ['a', 'b'] as const;
57
+
45
58
  const ys = ['a', 'b'] as const;
59
+
46
60
  const result = eq(xs, ys);
61
+
47
62
  expectType<typeof result, boolean>('=');
48
63
 
49
64
  test('should return true for equal arrays of strings', () => {
50
65
  expect(result).toBe(true);
51
66
  });
52
67
  }
68
+
53
69
  {
54
70
  const xs = [] as const;
71
+
55
72
  const ys = [] as const;
73
+
56
74
  const result = eq(xs, ys);
75
+
57
76
  expectType<typeof result, boolean>('=');
58
77
 
59
78
  test('should return true for empty arrays', () => {
60
79
  expect(result).toBe(true);
61
80
  });
62
81
  }
82
+
63
83
  {
64
84
  const xs = [{ a: 1 }, { b: 2 }] as const;
85
+
65
86
  const ys = [{ a: 1 }, { b: 2 }] as const;
87
+
66
88
  // Default eq uses reference equality for objects
67
89
  const result = eq(xs, ys);
90
+
68
91
  expectType<typeof result, boolean>('=');
69
92
 
70
93
  test('should return false for arrays of objects with default equality (reference check)', () => {
71
94
  expect(result).toBe(false);
72
95
  });
73
96
  }
97
+
74
98
  {
75
99
  const objA = { a: 1 };
100
+
76
101
  const objB = { b: 2 };
102
+
77
103
  const xs = [objA, objB] as const;
104
+
78
105
  const ys = [objA, objB] as const;
106
+
79
107
  const result = eq(xs, ys);
108
+
80
109
  expectType<typeof result, boolean>('=');
81
110
 
82
111
  test('should return true for arrays of same object references', () => {
83
112
  expect(result).toBe(true);
84
113
  });
85
114
  }
115
+
86
116
  {
87
117
  const xs = [{ a: 1 }, { b: 2 }] as const;
118
+
88
119
  const ys = [{ a: 1 }, { b: 2 }] as const;
120
+
89
121
  const result = eq(
90
122
  xs,
91
123
  ys,
92
124
  (o1, o2) => JSON.stringify(o1) === JSON.stringify(o2),
93
125
  );
126
+
94
127
  expectType<typeof result, boolean>('=');
95
128
 
96
129
  test('should return true for arrays of objects with custom equality function', () => {
@@ -102,6 +135,7 @@ describe('Arr set operations', () => {
102
135
  describe(isSubset, () => {
103
136
  {
104
137
  const xs = [1, 2, 3] as const;
138
+
105
139
  const ys = [3, 2] as const;
106
140
 
107
141
  const result = isSubset(ys, xs);
@@ -112,8 +146,10 @@ describe('Arr set operations', () => {
112
146
  expect(result).toBe(true);
113
147
  });
114
148
  }
149
+
115
150
  {
116
151
  const xs = [1, 2, 3] as const;
152
+
117
153
  const ys = [3, 2, 4] as const;
118
154
 
119
155
  const result = isSubset(ys, xs);
@@ -129,6 +165,7 @@ describe('Arr set operations', () => {
129
165
  describe(isSuperset, () => {
130
166
  {
131
167
  const xs = [1, 2, 3] as const;
168
+
132
169
  const ys = [3, 2] as const;
133
170
 
134
171
  const result = isSuperset(ys, xs);
@@ -145,8 +182,10 @@ describe('Arr set operations', () => {
145
182
  expect(result2).toBe(true);
146
183
  });
147
184
  }
185
+
148
186
  {
149
187
  const xs = [1, 2, 3] as const;
188
+
150
189
  const ys = [3, 2, 4] as const;
151
190
 
152
191
  const result = isSuperset(ys, xs);
@@ -162,48 +201,67 @@ describe('Arr set operations', () => {
162
201
  describe(setIntersection, () => {
163
202
  {
164
203
  const xs = [1, 2, 3] as const;
204
+
165
205
  const ys = [2, 3, 4] as const;
206
+
166
207
  const result = setIntersection(xs, ys);
208
+
167
209
  expectType<typeof result, readonly (2 | 3)[]>('=');
168
210
 
169
211
  test('should return the intersection of two number arrays', () => {
170
212
  assert.deepStrictEqual(result, [2, 3]);
171
213
  });
172
214
  }
215
+
173
216
  {
174
217
  const xs = ['a', 'b', 'c'] as const;
218
+
175
219
  const ys = ['b', 'c', 'd'] as const;
220
+
176
221
  const result = setIntersection(xs, ys);
222
+
177
223
  expectType<typeof result, readonly ('b' | 'c')[]>('=');
178
224
 
179
225
  test('should return the intersection of two string arrays', () => {
180
226
  assert.deepStrictEqual(result, ['b', 'c']);
181
227
  });
182
228
  }
229
+
183
230
  {
184
231
  const xs = [1, 2, 3] as const;
232
+
185
233
  const ys = [4, 5, 6] as const;
234
+
186
235
  const result = setIntersection(xs, ys);
236
+
187
237
  expectType<typeof result, readonly never[]>('=');
188
238
 
189
239
  test('should return an empty array if there is no intersection', () => {
190
240
  assert.deepStrictEqual(result, []);
191
241
  });
192
242
  }
243
+
193
244
  {
194
245
  const xs = [1, 2, 3] as const;
246
+
195
247
  const ys = [] as const;
248
+
196
249
  const result = setIntersection(xs, ys);
250
+
197
251
  expectType<typeof result, readonly never[]>('=');
198
252
 
199
253
  test('should return an empty array if one array is empty', () => {
200
254
  assert.deepStrictEqual(result, []);
201
255
  });
202
256
  }
257
+
203
258
  {
204
259
  const xs = [] as const;
260
+
205
261
  const ys = [1, 2, 3] as const;
262
+
206
263
  const result = setIntersection(xs, ys);
264
+
207
265
  expectType<typeof result, readonly never[]>('=');
208
266
 
209
267
  test('should return an empty array if the first array is empty', () => {
@@ -215,58 +273,81 @@ describe('Arr set operations', () => {
215
273
  describe(setDifference, () => {
216
274
  {
217
275
  const xs = [1, 2, 3] as const;
276
+
218
277
  const ys = [2, 3, 4] as const;
278
+
219
279
  const result = setDifference(xs, ys);
280
+
220
281
  expectType<typeof result, readonly (1 | 2 | 3 | 4)[]>('=');
221
282
 
222
283
  test('should return the difference xs - ys for number arrays', () => {
223
284
  assert.deepStrictEqual(result, [1]);
224
285
  });
225
286
  }
287
+
226
288
  {
227
289
  const xs = ['a', 'b', 'c'] as const;
290
+
228
291
  const ys = ['b', 'c', 'd'] as const;
292
+
229
293
  const result = setDifference(xs, ys);
294
+
230
295
  expectType<typeof result, readonly ('a' | 'b' | 'c' | 'd')[]>('=');
231
296
 
232
297
  test('should return the difference xs - ys for string arrays', () => {
233
298
  assert.deepStrictEqual(result, ['a']);
234
299
  });
235
300
  }
301
+
236
302
  {
237
303
  const xs = [1, 2, 3] as const;
304
+
238
305
  const ys = [1, 2, 3] as const;
306
+
239
307
  const result = setDifference(xs, ys);
308
+
240
309
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
241
310
 
242
311
  test('should return an empty array if xs is a subset of ys', () => {
243
312
  assert.deepStrictEqual(result, []);
244
313
  });
245
314
  }
315
+
246
316
  {
247
317
  const xs = [1, 2, 3] as const;
318
+
248
319
  const ys = [4, 5, 6] as const;
320
+
249
321
  const result = setDifference(xs, ys);
322
+
250
323
  expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5 | 6)[]>('=');
251
324
 
252
325
  test('should return xs if there is no intersection', () => {
253
326
  assert.deepStrictEqual(result, [1, 2, 3]);
254
327
  });
255
328
  }
329
+
256
330
  {
257
331
  const xs = [1, 2, 3] as const;
332
+
258
333
  const ys = [] as const;
334
+
259
335
  const result = setDifference(xs, ys);
336
+
260
337
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
261
338
 
262
339
  test('should return xs if ys is empty', () => {
263
340
  assert.deepStrictEqual(result, [1, 2, 3]);
264
341
  });
265
342
  }
343
+
266
344
  {
267
345
  const xs = [] as const;
346
+
268
347
  const ys = [1, 2, 3] as const;
348
+
269
349
  const result = setDifference(xs, ys);
350
+
270
351
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
271
352
 
272
353
  test('should return an empty array if xs is empty', () => {
@@ -278,88 +359,123 @@ describe('Arr set operations', () => {
278
359
  describe(sortedNumSetDifference, () => {
279
360
  {
280
361
  const xs = [1, 2, 3, 5] as const;
362
+
281
363
  const ys = [2, 3, 4] as const;
364
+
282
365
  const result = sortedNumSetDifference(xs, ys);
366
+
283
367
  expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5)[]>('=');
284
368
 
285
369
  test('should return the difference for sorted number arrays (xs - ys)', () => {
286
370
  assert.deepStrictEqual(result, [1, 5]);
287
371
  });
288
372
  }
373
+
289
374
  {
290
375
  const xs = [1, 2, 3] as const;
376
+
291
377
  const ys = [1, 2, 3] as const;
378
+
292
379
  const result = sortedNumSetDifference(xs, ys);
380
+
293
381
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
294
382
 
295
383
  test('should return an empty array if sets are equal', () => {
296
384
  assert.deepStrictEqual(result, []);
297
385
  });
298
386
  }
387
+
299
388
  {
300
389
  const xs = [1, 2, 3] as const;
390
+
301
391
  const ys = [4, 5, 6] as const;
392
+
302
393
  const result = sortedNumSetDifference(xs, ys);
394
+
303
395
  expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5 | 6)[]>('=');
304
396
 
305
397
  test('should return xs if no common elements', () => {
306
398
  assert.deepStrictEqual(result, [1, 2, 3]);
307
399
  });
308
400
  }
401
+
309
402
  {
310
403
  const xs = [4, 5, 6] as const;
404
+
311
405
  const ys = [1, 2, 3] as const;
406
+
312
407
  const result = sortedNumSetDifference(xs, ys);
408
+
313
409
  expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5 | 6)[]>('=');
314
410
 
315
411
  test('should return xs if no common elements (ys < xs)', () => {
316
412
  assert.deepStrictEqual(result, [4, 5, 6]);
317
413
  });
318
414
  }
415
+
319
416
  {
320
417
  const xs = [1, 2, 3, 4, 5] as const;
418
+
321
419
  const ys = [2, 4] as const;
420
+
322
421
  const result = sortedNumSetDifference(xs, ys);
422
+
323
423
  expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5)[]>('=');
324
424
 
325
425
  test('should return correct difference when ys is subset of xs', () => {
326
426
  assert.deepStrictEqual(result, [1, 3, 5]);
327
427
  });
328
428
  }
429
+
329
430
  {
330
431
  const xs = [2, 4] as const;
432
+
331
433
  const ys = [1, 2, 3, 4, 5] as const;
434
+
332
435
  const result = sortedNumSetDifference(xs, ys);
436
+
333
437
  expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5)[]>('=');
334
438
 
335
439
  test('should return empty array when xs is subset of ys', () => {
336
440
  assert.deepStrictEqual(result, []);
337
441
  });
338
442
  }
443
+
339
444
  {
340
445
  const xs = [] as const;
446
+
341
447
  const ys = [1, 2, 3] as const;
448
+
342
449
  const result = sortedNumSetDifference(xs, ys);
450
+
343
451
  expectType<typeof result, readonly (1 | 2 | 3)[]>('='); // Type is `readonly number[]` due to `ys`
344
452
 
345
453
  test('should return an empty array if xs is empty', () => {
346
454
  assert.deepStrictEqual(result, []);
347
455
  });
348
456
  }
457
+
349
458
  {
350
459
  const xs = [1, 2, 3] as const;
460
+
351
461
  const ys = [] as const;
462
+
352
463
  const result = sortedNumSetDifference(xs, ys);
464
+
353
465
  expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
354
466
 
355
467
  test('should return xs if ys is empty', () => {
356
468
  assert.deepStrictEqual(result, [1, 2, 3]);
357
469
  });
358
470
  }
471
+
359
472
  {
360
473
  const xs = [] as const;
474
+
361
475
  const ys = [] as const;
476
+
362
477
  const result = sortedNumSetDifference(xs, ys);
478
+
363
479
  expectType<typeof result, readonly never[]>('='); // Type is `readonly number[]`
364
480
 
365
481
  test('should return an empty array if both are empty', () => {
@@ -5,12 +5,15 @@
5
5
  *
6
6
  * ```ts
7
7
  * const numbers = [1, 2, 3] as const;
8
+ *
8
9
  * const letters: string[] = [];
9
10
  *
10
11
  * const sizeOfNumbers = Arr.size(numbers);
12
+ *
11
13
  * const sizeOfLetters = Arr.size(letters);
12
14
  *
13
15
  * assert(sizeOfNumbers === 3);
16
+ *
14
17
  * assert(sizeOfLetters === 0);
15
18
  * ```
16
19
  */
@@ -5,6 +5,7 @@ describe('size/length', () => {
5
5
  const array = [1, 2, 3];
6
6
 
7
7
  expect(size(array)).toBe(array.length);
8
+
8
9
  expect(length(array)).toBe(3);
9
10
  });
10
11
  });
@@ -9,9 +9,11 @@ import { Num } from '../../number/index.mjs';
9
9
  * const letters = ['a', 'b', 'c', 'd', 'e'];
10
10
  *
11
11
  * const lastThree = Arr.sliceClamped(letters, -3, 10);
12
+ *
12
13
  * const middleTwo = Arr.sliceClamped(1, 3)(letters);
13
14
  *
14
15
  * assert.deepStrictEqual(lastThree, ['a', 'b', 'c', 'd', 'e']);
16
+ *
15
17
  * assert.deepStrictEqual(middleTwo, ['b', 'c']);
16
18
  * ```
17
19
  */
@@ -38,13 +40,18 @@ export function sliceClamped<E>(
38
40
  switch (args.length) {
39
41
  case 3: {
40
42
  const [array, start, end] = args;
43
+
41
44
  const startClamped = Num.clamp(0, array.length)(start);
45
+
42
46
  // Ensure endClamped is not less than startClamped.
43
47
  const endClamped = Num.clamp(startClamped, array.length)(end);
48
+
44
49
  return array.slice(startClamped, endClamped);
45
50
  }
51
+
46
52
  case 2: {
47
53
  const [start, end] = args;
54
+
48
55
  return (array) => sliceClamped(array, start, end);
49
56
  }
50
57
  }
@@ -80,27 +80,34 @@ describe('Arr', () => {
80
80
  test('should be type error for index overflow for fixed length array', () => {
81
81
  {
82
82
  const array = [1, 2, 3, 4, 5] as const;
83
+
83
84
  // @ts-expect-error end index is out of bounds
84
85
  const result = sliceClamped(array, 0, 6);
85
86
 
86
87
  assert.deepStrictEqual(result, array);
87
88
  }
89
+
88
90
  {
89
91
  const array = [1, 2, 3, 4, 5] as const;
92
+
90
93
  // @ts-expect-error end index is out of bounds
91
94
  const result = sliceClamped(array, 0, -6);
92
95
 
93
96
  assert.deepStrictEqual(result, []);
94
97
  }
98
+
95
99
  {
96
100
  const array = [1, 2, 3, 4, 5] as const;
101
+
97
102
  // @ts-expect-error start index is out of bounds
98
103
  const result = sliceClamped(array, -6, 5);
99
104
 
100
105
  assert.deepStrictEqual(result, array);
101
106
  }
107
+
102
108
  {
103
109
  const array = [1, 2, 3, 4, 5] as const;
110
+
104
111
  // @ts-expect-error start index is out of bounds
105
112
  const result = sliceClamped(array, 6, 5);
106
113
 
@@ -110,6 +117,7 @@ describe('Arr', () => {
110
117
 
111
118
  test('should slice with clamped indices', () => {
112
119
  const array = [1, 2, 3, 4, 5];
120
+
113
121
  const result = sliceClamped(array, 1, 3);
114
122
 
115
123
  assert.deepStrictEqual(result, [2, 3]);
@@ -117,6 +125,7 @@ describe('Arr', () => {
117
125
 
118
126
  test('should clamp start index below 0', () => {
119
127
  const array = [1, 2, 3, 4, 5];
128
+
120
129
  const result = sliceClamped(array, -10, 3);
121
130
 
122
131
  assert.deepStrictEqual(result, [1, 2, 3]);
@@ -124,6 +133,7 @@ describe('Arr', () => {
124
133
 
125
134
  test('should clamp end index above length', () => {
126
135
  const array = [1, 2, 3, 4, 5];
136
+
127
137
  const result = sliceClamped(array, asUint32(2), asUint32(100));
128
138
 
129
139
  assert.deepStrictEqual(result, [3, 4, 5]);
@@ -131,6 +141,7 @@ describe('Arr', () => {
131
141
 
132
142
  test('should work with both indices out of range', () => {
133
143
  const array = [1, 2, 3];
144
+
134
145
  const result = sliceClamped(array, asInt32(-10), asUint32(100));
135
146
 
136
147
  assert.deepStrictEqual(result, [1, 2, 3]);
@@ -138,9 +149,18 @@ describe('Arr', () => {
138
149
 
139
150
  test('should work with empty array', () => {
140
151
  const array: readonly number[] = [];
152
+
141
153
  const result = sliceClamped(array, 0, 5);
142
154
 
143
155
  assert.deepStrictEqual(result, []);
144
156
  });
157
+
158
+ test('should work with curried version', () => {
159
+ const slice1to3 = sliceClamped(1, 3);
160
+
161
+ const result = slice1to3([10, 20, 30, 40, 50]);
162
+
163
+ assert.deepStrictEqual(result, [20, 30]);
164
+ });
145
165
  });
146
166
  });
@@ -11,18 +11,23 @@ import { isEmpty } from './array-utils-validation.mjs';
11
11
  * ```ts
12
12
  * {
13
13
  * const scientists = ['Ada', 'Grace', 'Katherine'] as const;
14
+ *
14
15
  * const remainder = Arr.tail(scientists);
15
16
  *
16
17
  * assert.deepStrictEqual(remainder, ['Grace', 'Katherine']);
18
+ *
17
19
  * assert(remainder.length === 2);
18
20
  * }
21
+ *
19
22
  * {
20
23
  * const values = [1, 2, 3] as const;
21
24
  *
22
25
  * const remainder = Arr.rest(values);
26
+ *
23
27
  * const emptyRemainder = Arr.rest([1] as const);
24
28
  *
25
29
  * assert.deepStrictEqual(remainder, [2, 3] as const);
30
+ *
26
31
  * assert.deepStrictEqual(emptyRemainder, [] as const);
27
32
  * }
28
33
  * ```
@@ -40,9 +45,11 @@ export const tail = <const Ar extends readonly unknown[]>(
40
45
  *
41
46
  * ```ts
42
47
  * const queue = ['task-1', 'task-2', 'task-3'] as const;
48
+ *
43
49
  * const withoutLast = Arr.butLast(queue);
44
50
  *
45
51
  * assert.deepStrictEqual(withoutLast, ['task-1', 'task-2']);
52
+ *
46
53
  * assert(withoutLast.length === 2);
47
54
  * ```
48
55
  */
@@ -61,9 +68,11 @@ export const butLast = <const Ar extends readonly unknown[]>(
61
68
  * const values = [1, 2, 3, 4];
62
69
  *
63
70
  * const firstTwo = Arr.take(values, 2);
71
+ *
64
72
  * const firstThree = Arr.take(3)(values);
65
73
  *
66
74
  * assert.deepStrictEqual(firstTwo, [1, 2]);
75
+ *
67
76
  * assert.deepStrictEqual(firstThree, [1, 2, 3]);
68
77
  * ```
69
78
  */
@@ -101,10 +110,13 @@ export function take<E>(
101
110
  switch (args.length) {
102
111
  case 2: {
103
112
  const [array, num] = args;
113
+
104
114
  return sliceClamped(array, 0, num);
105
115
  }
116
+
106
117
  case 1: {
107
118
  const [num] = args;
119
+
108
120
  return (array) => take(array, num);
109
121
  }
110
122
  }
@@ -119,9 +131,11 @@ export function take<E>(
119
131
  * const values = [1, 2, 3, 4];
120
132
  *
121
133
  * const lastTwo = Arr.takeLast(values, 2);
134
+ *
122
135
  * const lastThree = Arr.takeLast(3)(values);
123
136
  *
124
137
  * assert.deepStrictEqual(lastTwo, [3, 4]);
138
+ *
125
139
  * assert.deepStrictEqual(lastThree, [2, 3, 4]);
126
140
  * ```
127
141
  */
@@ -159,10 +173,13 @@ export function takeLast<E>(
159
173
  switch (args.length) {
160
174
  case 2: {
161
175
  const [array, num] = args;
176
+
162
177
  return sliceClamped(array, Uint32.sub(size(array), num), size(array));
163
178
  }
179
+
164
180
  case 1: {
165
181
  const [num] = args;
182
+
166
183
  return (array) => takeLast(array, num);
167
184
  }
168
185
  }
@@ -177,9 +194,11 @@ export function takeLast<E>(
177
194
  * const values = ['a', 'b', 'c', 'd'] as const;
178
195
  *
179
196
  * const withoutFirstTwo = Arr.skip(values, 2);
197
+ *
180
198
  * const withoutFirstThree = Arr.skip(3)(values);
181
199
  *
182
200
  * assert.deepStrictEqual(withoutFirstTwo, ['c', 'd']);
201
+ *
183
202
  * assert.deepStrictEqual(withoutFirstThree, ['d']);
184
203
  * ```
185
204
  */
@@ -204,10 +223,13 @@ export function skip<E>(
204
223
  switch (args.length) {
205
224
  case 2: {
206
225
  const [array, num] = args;
226
+
207
227
  return sliceClamped(array, num, size(array));
208
228
  }
229
+
209
230
  case 1: {
210
231
  const [num] = args;
232
+
211
233
  return (array) => skip(array, num);
212
234
  }
213
235
  }
@@ -222,9 +244,11 @@ export function skip<E>(
222
244
  * const values = ['a', 'b', 'c', 'd'];
223
245
  *
224
246
  * const withoutLastTwo = Arr.skipLast(values, 2);
247
+ *
225
248
  * const withoutLastThree = Arr.skipLast(3)(values);
226
249
  *
227
250
  * assert.deepStrictEqual(withoutLastTwo, ['a', 'b']);
251
+ *
228
252
  * assert.deepStrictEqual(withoutLastThree, ['a']);
229
253
  * ```
230
254
  */
@@ -251,10 +275,13 @@ export function skipLast<E>(
251
275
  switch (args.length) {
252
276
  case 2: {
253
277
  const [array, num] = args;
278
+
254
279
  return sliceClamped(array, 0, Uint32.sub(size(array), num));
255
280
  }
281
+
256
282
  case 1: {
257
283
  const [num] = args;
284
+
258
285
  return (array) => skipLast(array, num);
259
286
  }
260
287
  }