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
@@ -12,89 +12,122 @@ 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
- expect(result).toBe(true);
23
+ assert.isTrue(result);
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
- expect(result).toBe(false);
37
+ assert.isFalse(result);
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
- expect(result).toBe(false);
51
+ assert.isFalse(result);
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
- expect(result).toBe(true);
65
+ assert.isTrue(result);
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
- expect(result).toBe(true);
79
+ assert.isTrue(result);
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
- expect(result).toBe(false);
94
+ assert.isFalse(result);
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
- expect(result).toBe(true);
112
+ assert.isTrue(result);
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', () => {
97
- expect(result).toBe(true);
130
+ assert.isTrue(result);
98
131
  });
99
132
  }
100
133
  });
@@ -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);
@@ -109,11 +143,13 @@ describe('Arr set operations', () => {
109
143
  expectType<typeof result, boolean>('=');
110
144
 
111
145
  test('case 1', () => {
112
- expect(result).toBe(true);
146
+ assert.isTrue(result);
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);
@@ -121,7 +157,7 @@ describe('Arr set operations', () => {
121
157
  expectType<typeof result, boolean>('=');
122
158
 
123
159
  test('case 2', () => {
124
- expect(result).toBe(false);
160
+ assert.isFalse(result);
125
161
  });
126
162
  }
127
163
  });
@@ -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);
@@ -136,17 +173,19 @@ describe('Arr set operations', () => {
136
173
  expectType<typeof result, boolean>('=');
137
174
 
138
175
  test('case 1', () => {
139
- expect(result).toBe(false);
176
+ assert.isFalse(result);
140
177
  });
141
178
 
142
179
  const result2 = isSuperset(xs, ys);
143
180
 
144
181
  test('case 2', () => {
145
- expect(result2).toBe(true);
182
+ assert.isTrue(result2);
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);
@@ -154,7 +193,7 @@ describe('Arr set operations', () => {
154
193
  expectType<typeof result, boolean>('=');
155
194
 
156
195
  test('case 3', () => {
157
- expect(result).toBe(false);
196
+ assert.isFalse(result);
158
197
  });
159
198
  }
160
199
  });
@@ -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,13 +5,16 @@
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
- * assert(sizeOfNumbers === 3);
14
- * assert(sizeOfLetters === 0);
15
+ * assert.isTrue(sizeOfNumbers === 3);
16
+ *
17
+ * assert.isTrue(sizeOfLetters === 0);
15
18
  * ```
16
19
  */
17
20
  export const size = <const Ar extends readonly unknown[]>(
@@ -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
  });