ts-data-forge 9.0.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/README.md +1 -1
  2. package/dist/array/impl/array-utils-creation.d.mts +4 -4
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  4. package/dist/array/impl/array-utils-creation.mjs +17 -112
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  6. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
  7. package/dist/array/impl/array-utils-element-access.mjs +22 -61
  8. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  9. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -1
  10. package/dist/array/impl/array-utils-iterators.mjs +9 -63
  11. package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
  12. package/dist/array/impl/array-utils-modification.d.mts +7 -7
  13. package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
  14. package/dist/array/impl/array-utils-modification.mjs +78 -78
  15. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  16. package/dist/array/impl/array-utils-reducing-value.mjs +95 -89
  17. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  18. package/dist/array/impl/array-utils-search.mjs +100 -92
  19. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  20. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  21. package/dist/array/impl/array-utils-set-op.mjs +31 -141
  22. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  24. package/dist/array/impl/array-utils-size.mjs +4 -8
  25. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  26. package/dist/array/impl/array-utils-slice-clamped.mjs +11 -12
  27. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  28. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  29. package/dist/array/impl/array-utils-slicing.mjs +44 -96
  30. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  31. package/dist/array/impl/array-utils-transformation.d.mts +4 -4
  32. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  33. package/dist/array/impl/array-utils-transformation.mjs +150 -292
  34. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  35. package/dist/array/impl/array-utils-validation.d.mts +17 -17
  36. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  37. package/dist/array/impl/array-utils-validation.mjs +23 -174
  38. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  39. package/dist/array/impl/index.mjs +1 -1
  40. package/dist/collections/imap-mapped.d.mts.map +1 -1
  41. package/dist/collections/imap-mapped.mjs +243 -330
  42. package/dist/collections/imap-mapped.mjs.map +1 -1
  43. package/dist/collections/imap.d.mts.map +1 -1
  44. package/dist/collections/imap.mjs +190 -275
  45. package/dist/collections/imap.mjs.map +1 -1
  46. package/dist/collections/iset-mapped.d.mts +1 -1
  47. package/dist/collections/iset-mapped.d.mts.map +1 -1
  48. package/dist/collections/iset-mapped.mjs +222 -444
  49. package/dist/collections/iset-mapped.mjs.map +1 -1
  50. package/dist/collections/iset.d.mts +1 -1
  51. package/dist/collections/iset.d.mts.map +1 -1
  52. package/dist/collections/iset.mjs +158 -324
  53. package/dist/collections/iset.mjs.map +1 -1
  54. package/dist/collections/queue.d.mts.map +1 -1
  55. package/dist/collections/queue.mjs +106 -178
  56. package/dist/collections/queue.mjs.map +1 -1
  57. package/dist/collections/stack.d.mts.map +1 -1
  58. package/dist/collections/stack.mjs +95 -165
  59. package/dist/collections/stack.mjs.map +1 -1
  60. package/dist/entry-point.mjs +2 -0
  61. package/dist/entry-point.mjs.map +1 -1
  62. package/dist/expect-type.d.mts +1 -1
  63. package/dist/expect-type.d.mts.map +1 -1
  64. package/dist/expect-type.mjs +1 -69
  65. package/dist/expect-type.mjs.map +1 -1
  66. package/dist/functional/match.mjs +9 -9
  67. package/dist/functional/match.mjs.map +1 -1
  68. package/dist/functional/optional/impl/optional-expect-to-be.mjs +13 -14
  69. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  70. package/dist/functional/optional/impl/optional-filter.mjs +14 -15
  71. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  72. package/dist/functional/optional/impl/optional-flat-map.mjs +10 -11
  73. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  74. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
  75. package/dist/functional/optional/impl/optional-from-nullable.mjs +1 -25
  76. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  77. package/dist/functional/optional/impl/optional-is-none.d.mts.map +1 -1
  78. package/dist/functional/optional/impl/optional-is-none.mjs +0 -19
  79. package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
  80. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
  81. package/dist/functional/optional/impl/optional-is-optional.mjs +1 -23
  82. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  83. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
  84. package/dist/functional/optional/impl/optional-is-some.mjs +0 -20
  85. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  86. package/dist/functional/optional/impl/optional-map.mjs +13 -14
  87. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  88. package/dist/functional/optional/impl/optional-none.mjs +0 -16
  89. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  90. package/dist/functional/optional/impl/optional-or-else.mjs +10 -11
  91. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  92. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
  93. package/dist/functional/optional/impl/optional-some.mjs +2 -21
  94. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  95. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
  96. package/dist/functional/optional/impl/optional-to-nullable.mjs +1 -27
  97. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  98. package/dist/functional/optional/impl/optional-unwrap-or.mjs +9 -10
  99. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  100. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
  101. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +4 -32
  102. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  103. package/dist/functional/optional/impl/optional-unwrap.mjs +4 -4
  104. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  105. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
  106. package/dist/functional/optional/impl/optional-zip.mjs +1 -35
  107. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  108. package/dist/functional/optional/impl/tag.mjs +2 -3
  109. package/dist/functional/optional/impl/tag.mjs.map +1 -1
  110. package/dist/functional/pipe.d.mts.map +1 -1
  111. package/dist/functional/pipe.mjs +9 -34
  112. package/dist/functional/pipe.mjs.map +1 -1
  113. package/dist/functional/result/impl/result-err.d.mts.map +1 -1
  114. package/dist/functional/result/impl/result-err.mjs +2 -27
  115. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  116. package/dist/functional/result/impl/result-expect-to-be.mjs +13 -15
  117. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  118. package/dist/functional/result/impl/result-flat-map.mjs +16 -16
  119. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  120. package/dist/functional/result/impl/result-fold.mjs +16 -16
  121. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  122. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
  123. package/dist/functional/result/impl/result-from-promise.mjs +4 -31
  124. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  125. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
  126. package/dist/functional/result/impl/result-from-throwable.mjs +8 -38
  127. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  128. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
  129. package/dist/functional/result/impl/result-is-err.mjs +0 -19
  130. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  131. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
  132. package/dist/functional/result/impl/result-is-ok.mjs +0 -19
  133. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  134. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
  135. package/dist/functional/result/impl/result-is-result.mjs +1 -23
  136. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  137. package/dist/functional/result/impl/result-map-err.mjs +16 -16
  138. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  139. package/dist/functional/result/impl/result-map.mjs +16 -16
  140. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  141. package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
  142. package/dist/functional/result/impl/result-ok.mjs +2 -27
  143. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  144. package/dist/functional/result/impl/result-or-else.mjs +10 -12
  145. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  146. package/dist/functional/result/impl/result-swap.d.mts.map +1 -1
  147. package/dist/functional/result/impl/result-swap.mjs +4 -22
  148. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  149. package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -1
  150. package/dist/functional/result/impl/result-to-optional.mjs +0 -27
  151. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-unwrap-err-or.mjs +9 -11
  153. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  154. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
  155. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +13 -40
  156. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  157. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
  158. package/dist/functional/result/impl/result-unwrap-err.mjs +4 -32
  159. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  160. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +9 -11
  161. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  162. package/dist/functional/result/impl/result-unwrap-ok.mjs +4 -4
  163. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  164. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
  165. package/dist/functional/result/impl/result-unwrap-throw.mjs +4 -35
  166. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  167. package/dist/functional/result/impl/result-zip.d.mts.map +1 -1
  168. package/dist/functional/result/impl/result-zip.mjs +1 -34
  169. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  170. package/dist/functional/result/impl/tag.mjs +2 -3
  171. package/dist/functional/result/impl/tag.mjs.map +1 -1
  172. package/dist/functional/ternary-result/impl/tag.mjs +3 -5
  173. package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
  174. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
  175. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +2 -15
  176. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  177. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +13 -13
  178. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  179. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +27 -26
  180. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  181. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +21 -22
  182. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  183. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -1
  184. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +4 -20
  185. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  186. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -1
  187. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +7 -25
  188. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  189. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts.map +1 -1
  190. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +0 -17
  191. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
  192. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
  193. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +0 -19
  194. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  195. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +1 -1
  196. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +1 -25
  197. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  198. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +1 -1
  199. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +0 -18
  200. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  201. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +13 -15
  202. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  203. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +18 -18
  204. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  205. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +21 -22
  206. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  207. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
  208. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +2 -16
  209. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  210. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +9 -9
  211. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  212. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -1
  213. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +4 -22
  214. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  215. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +9 -9
  216. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  217. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +1 -1
  218. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +12 -27
  219. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  220. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +1 -1
  221. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +4 -19
  222. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  223. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +9 -9
  224. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  225. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +4 -5
  226. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  227. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -1
  228. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +15 -27
  229. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  230. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +9 -9
  231. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  232. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +1 -1
  233. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +10 -24
  234. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  235. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +1 -1
  236. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +4 -19
  237. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  238. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
  239. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +3 -19
  240. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  241. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -1
  242. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +14 -45
  243. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  244. package/dist/functional/ternary-result/impl/variant-name.d.mts +1 -1
  245. package/dist/functional/ternary-result/impl/variant-name.d.mts.map +1 -1
  246. package/dist/functional/ternary-result/impl/variant-name.mjs +8 -9
  247. package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
  248. package/dist/guard/as-length-bounded-array.d.mts +117 -0
  249. package/dist/guard/as-length-bounded-array.d.mts.map +1 -0
  250. package/dist/guard/as-length-bounded-array.mjs +37 -0
  251. package/dist/guard/as-length-bounded-array.mjs.map +1 -0
  252. package/dist/guard/has-key.d.mts.map +1 -1
  253. package/dist/guard/has-key.mjs +0 -41
  254. package/dist/guard/has-key.mjs.map +1 -1
  255. package/dist/guard/index.d.mts +2 -0
  256. package/dist/guard/index.d.mts.map +1 -1
  257. package/dist/guard/index.mjs +2 -0
  258. package/dist/guard/index.mjs.map +1 -1
  259. package/dist/guard/is-length-bounded-array.d.mts +159 -0
  260. package/dist/guard/is-length-bounded-array.d.mts.map +1 -0
  261. package/dist/guard/is-length-bounded-array.mjs +7 -0
  262. package/dist/guard/is-length-bounded-array.mjs.map +1 -0
  263. package/dist/guard/is-length-bounded-string.d.mts +5 -6
  264. package/dist/guard/is-length-bounded-string.d.mts.map +1 -1
  265. package/dist/guard/is-length-bounded-string.mjs +0 -157
  266. package/dist/guard/is-length-bounded-string.mjs.map +1 -1
  267. package/dist/guard/is-non-empty-string.d.mts +1 -1
  268. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  269. package/dist/guard/is-non-empty-string.mjs +1 -38
  270. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  271. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  272. package/dist/guard/is-non-null-object.mjs +1 -35
  273. package/dist/guard/is-non-null-object.mjs.map +1 -1
  274. package/dist/guard/is-primitive.d.mts.map +1 -1
  275. package/dist/guard/is-primitive.mjs +12 -43
  276. package/dist/guard/is-primitive.mjs.map +1 -1
  277. package/dist/guard/is-record.d.mts.map +1 -1
  278. package/dist/guard/is-record.mjs +0 -86
  279. package/dist/guard/is-record.mjs.map +1 -1
  280. package/dist/guard/is-type.d.mts.map +1 -1
  281. package/dist/guard/is-type.mjs +12 -399
  282. package/dist/guard/is-type.mjs.map +1 -1
  283. package/dist/guard/key-is-in.d.mts.map +1 -1
  284. package/dist/guard/key-is-in.mjs +0 -40
  285. package/dist/guard/key-is-in.mjs.map +1 -1
  286. package/dist/index.mjs +2 -0
  287. package/dist/index.mjs.map +1 -1
  288. package/dist/iterator/range.mjs +16 -16
  289. package/dist/iterator/range.mjs.map +1 -1
  290. package/dist/json/json.d.mts.map +1 -1
  291. package/dist/json/json.mjs +52 -340
  292. package/dist/json/json.mjs.map +1 -1
  293. package/dist/number/branded-types/finite-number.d.mts +3 -3
  294. package/dist/number/branded-types/finite-number.mjs +135 -154
  295. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  296. package/dist/number/branded-types/int.d.mts +4 -4
  297. package/dist/number/branded-types/int.mjs +205 -245
  298. package/dist/number/branded-types/int.mjs.map +1 -1
  299. package/dist/number/branded-types/int16.d.mts +15 -15
  300. package/dist/number/branded-types/int16.mjs +116 -123
  301. package/dist/number/branded-types/int16.mjs.map +1 -1
  302. package/dist/number/branded-types/int32.d.mts +11 -11
  303. package/dist/number/branded-types/int32.mjs +116 -123
  304. package/dist/number/branded-types/int32.mjs.map +1 -1
  305. package/dist/number/branded-types/negative-finite-number.d.mts +4 -4
  306. package/dist/number/branded-types/negative-finite-number.mjs +129 -144
  307. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  308. package/dist/number/branded-types/negative-int.d.mts +5 -5
  309. package/dist/number/branded-types/negative-int.mjs +94 -113
  310. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  311. package/dist/number/branded-types/negative-safe-int.d.mts +5 -5
  312. package/dist/number/branded-types/negative-safe-int.mjs +103 -124
  313. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  314. package/dist/number/branded-types/non-negative-finite-number.d.mts +5 -5
  315. package/dist/number/branded-types/non-negative-finite-number.mjs +136 -142
  316. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  317. package/dist/number/branded-types/non-negative-int16.d.mts +16 -16
  318. package/dist/number/branded-types/non-negative-int16.mjs +109 -118
  319. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  320. package/dist/number/branded-types/non-negative-int32.d.mts +12 -12
  321. package/dist/number/branded-types/non-negative-int32.mjs +110 -119
  322. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  323. package/dist/number/branded-types/non-positive-finite-number.d.mts +3 -3
  324. package/dist/number/branded-types/non-positive-finite-number.mjs +120 -124
  325. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  326. package/dist/number/branded-types/non-positive-int.d.mts +4 -4
  327. package/dist/number/branded-types/non-positive-int.mjs +167 -212
  328. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  329. package/dist/number/branded-types/non-positive-safe-int.d.mts +4 -4
  330. package/dist/number/branded-types/non-positive-safe-int.mjs +95 -106
  331. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  332. package/dist/number/branded-types/non-zero-finite-number.d.mts +4 -4
  333. package/dist/number/branded-types/non-zero-finite-number.mjs +114 -123
  334. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  335. package/dist/number/branded-types/non-zero-int.d.mts +2 -2
  336. package/dist/number/branded-types/non-zero-int.mjs +72 -83
  337. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  338. package/dist/number/branded-types/non-zero-int16.d.mts +7 -7
  339. package/dist/number/branded-types/non-zero-int16.mjs +96 -107
  340. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  341. package/dist/number/branded-types/non-zero-int32.d.mts +5 -5
  342. package/dist/number/branded-types/non-zero-int32.mjs +97 -108
  343. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  344. package/dist/number/branded-types/non-zero-safe-int.d.mts +2 -2
  345. package/dist/number/branded-types/non-zero-safe-int.mjs +100 -111
  346. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  347. package/dist/number/branded-types/non-zero-uint16.d.mts +8 -8
  348. package/dist/number/branded-types/non-zero-uint16.mjs +96 -107
  349. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  350. package/dist/number/branded-types/non-zero-uint32.d.mts +6 -6
  351. package/dist/number/branded-types/non-zero-uint32.mjs +96 -107
  352. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  353. package/dist/number/branded-types/positive-finite-number.d.mts +8 -8
  354. package/dist/number/branded-types/positive-finite-number.mjs +139 -141
  355. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  356. package/dist/number/branded-types/positive-int.d.mts +11 -11
  357. package/dist/number/branded-types/positive-int.mjs +228 -271
  358. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  359. package/dist/number/branded-types/positive-int16.d.mts +19 -19
  360. package/dist/number/branded-types/positive-int16.mjs +109 -118
  361. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  362. package/dist/number/branded-types/positive-int32.d.mts +15 -15
  363. package/dist/number/branded-types/positive-int32.mjs +109 -118
  364. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  365. package/dist/number/branded-types/positive-safe-int.d.mts +11 -11
  366. package/dist/number/branded-types/positive-safe-int.mjs +244 -275
  367. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  368. package/dist/number/branded-types/positive-uint16.d.mts +17 -17
  369. package/dist/number/branded-types/positive-uint16.mjs +109 -118
  370. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  371. package/dist/number/branded-types/positive-uint32.d.mts +13 -13
  372. package/dist/number/branded-types/positive-uint32.mjs +110 -119
  373. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  374. package/dist/number/branded-types/safe-int.d.mts +4 -4
  375. package/dist/number/branded-types/safe-int.mjs +251 -292
  376. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  377. package/dist/number/branded-types/safe-uint.d.mts +8 -8
  378. package/dist/number/branded-types/safe-uint.mjs +111 -119
  379. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  380. package/dist/number/branded-types/uint.d.mts +8 -8
  381. package/dist/number/branded-types/uint.mjs +198 -225
  382. package/dist/number/branded-types/uint.mjs.map +1 -1
  383. package/dist/number/branded-types/uint16.d.mts +14 -14
  384. package/dist/number/branded-types/uint16.mjs +109 -119
  385. package/dist/number/branded-types/uint16.mjs.map +1 -1
  386. package/dist/number/branded-types/uint32.d.mts +10 -10
  387. package/dist/number/branded-types/uint32.mjs +110 -117
  388. package/dist/number/branded-types/uint32.mjs.map +1 -1
  389. package/dist/number/enum/int8.mjs +119 -145
  390. package/dist/number/enum/int8.mjs.map +1 -1
  391. package/dist/number/enum/uint8.mjs +107 -121
  392. package/dist/number/enum/uint8.mjs.map +1 -1
  393. package/dist/number/num.d.mts +2 -2
  394. package/dist/number/num.d.mts.map +1 -1
  395. package/dist/number/num.mjs +76 -537
  396. package/dist/number/num.mjs.map +1 -1
  397. package/dist/number/refined-number-utils.d.mts +1 -1
  398. package/dist/number/refined-number-utils.d.mts.map +1 -1
  399. package/dist/number/refined-number-utils.mjs +127 -263
  400. package/dist/number/refined-number-utils.mjs.map +1 -1
  401. package/dist/object/object.d.mts.map +1 -1
  402. package/dist/object/object.mjs +107 -222
  403. package/dist/object/object.mjs.map +1 -1
  404. package/dist/others/cast-mutable.d.mts.map +1 -1
  405. package/dist/others/cast-mutable.mjs +8 -37
  406. package/dist/others/cast-mutable.mjs.map +1 -1
  407. package/dist/others/cast-readonly.d.mts.map +1 -1
  408. package/dist/others/cast-readonly.mjs +8 -36
  409. package/dist/others/cast-readonly.mjs.map +1 -1
  410. package/dist/others/debounce-function.d.mts.map +1 -1
  411. package/dist/others/debounce-function.mjs +7 -16
  412. package/dist/others/debounce-function.mjs.map +1 -1
  413. package/dist/others/fast-deep-equal.d.mts.map +1 -1
  414. package/dist/others/fast-deep-equal.mjs +43 -59
  415. package/dist/others/fast-deep-equal.mjs.map +1 -1
  416. package/dist/others/if-then.d.mts.map +1 -1
  417. package/dist/others/if-then.mjs +0 -29
  418. package/dist/others/if-then.mjs.map +1 -1
  419. package/dist/others/map-nullable.mjs +9 -9
  420. package/dist/others/map-nullable.mjs.map +1 -1
  421. package/dist/others/memoize-function.mjs +12 -12
  422. package/dist/others/memoize-function.mjs.map +1 -1
  423. package/dist/others/tuple.d.mts.map +1 -1
  424. package/dist/others/tuple.mjs +0 -50
  425. package/dist/others/tuple.mjs.map +1 -1
  426. package/dist/others/unknown-to-string.d.mts.map +1 -1
  427. package/dist/others/unknown-to-string.mjs +41 -88
  428. package/dist/others/unknown-to-string.mjs.map +1 -1
  429. package/dist/promise/promise.d.mts.map +1 -1
  430. package/dist/promise/promise.mjs +4 -49
  431. package/dist/promise/promise.mjs.map +1 -1
  432. package/package.json +14 -13
  433. package/src/array/impl/array-utils-creation.mts +3 -3
  434. package/src/array/impl/array-utils-modification.mts +7 -7
  435. package/src/array/impl/array-utils-modification.test.mts +4 -4
  436. package/src/array/impl/array-utils-transformation.mts +4 -4
  437. package/src/array/impl/array-utils-transformation.test.mts +7 -7
  438. package/src/array/impl/array-utils-validation.mts +24 -24
  439. package/src/array/impl/array-utils-validation.test.mts +94 -92
  440. package/src/collections/queue.test.mts +1 -1
  441. package/src/guard/as-length-bounded-array.mts +190 -0
  442. package/src/guard/as-length-bounded-array.test.mts +118 -0
  443. package/src/guard/index.mts +2 -0
  444. package/src/guard/is-length-bounded-array.mts +195 -0
  445. package/src/guard/is-length-bounded-array.test.mts +169 -0
  446. package/src/guard/is-length-bounded-string.mts +6 -6
  447. package/src/object/object.test.mts +3 -3
@@ -40,120 +40,128 @@ import '../../number/num.mjs';
40
40
  import '../../number/refined-number-utils.mjs';
41
41
 
42
42
  function find(...args) {
43
- switch (args.length) {
44
- case 2: {
45
- const [array, predicate] = args;
46
- const foundIndex = array.findIndex(
47
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
48
- predicate);
49
- return foundIndex === -1
50
- ? none
51
- : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
52
- some(array[foundIndex]);
53
- }
54
- case 1: {
55
- const [predicate] = args;
56
- return (array) => find(array, predicate);
57
- }
43
+ switch (args.length) {
44
+ case 2: {
45
+ const [array, predicate] = args;
46
+ const foundIndex = array.findIndex(
47
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
48
+ predicate
49
+ );
50
+ return foundIndex === -1 ? none : (
51
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
52
+ some(array[foundIndex])
53
+ );
58
54
  }
55
+ case 1: {
56
+ const [predicate] = args;
57
+ return (array) => find(array, predicate);
58
+ }
59
+ }
59
60
  }
60
61
  function findLast(...args) {
61
- switch (args.length) {
62
- case 2: {
63
- const [array, predicate] = args;
64
- const foundIndex = array.findLastIndex(
65
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
66
- predicate);
67
- return foundIndex === -1
68
- ? none
69
- : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
70
- some(array[foundIndex]);
71
- }
72
- case 1: {
73
- const [predicate] = args;
74
- return (array) => findLast(array, predicate);
75
- }
62
+ switch (args.length) {
63
+ case 2: {
64
+ const [array, predicate] = args;
65
+ const foundIndex = array.findLastIndex(
66
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
67
+ predicate
68
+ );
69
+ return foundIndex === -1 ? none : (
70
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
71
+ some(array[foundIndex])
72
+ );
73
+ }
74
+ case 1: {
75
+ const [predicate] = args;
76
+ return (array) => findLast(array, predicate);
76
77
  }
78
+ }
77
79
  }
78
80
  function findIndex(...args) {
79
- switch (args.length) {
80
- case 2: {
81
- const [array, predicate] = args;
82
- return pipe(array.findIndex(
83
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
84
- predicate)).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;
85
- }
86
- case 1: {
87
- const [predicate] = args;
88
- return (array) => findIndex(array, predicate);
89
- }
81
+ switch (args.length) {
82
+ case 2: {
83
+ const [array, predicate] = args;
84
+ return pipe(
85
+ array.findIndex(
86
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
87
+ predicate
88
+ )
89
+ ).map((idx) => idx >= 0 ? asUint32(idx) : -1).value;
90
90
  }
91
+ case 1: {
92
+ const [predicate] = args;
93
+ return (array) => findIndex(array, predicate);
94
+ }
95
+ }
91
96
  }
92
97
  function findLastIndex(...args) {
93
- switch (args.length) {
94
- case 2: {
95
- const [array, predicate] = args;
96
- return pipe(array.findLastIndex(
97
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
98
- predicate)).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;
99
- }
100
- case 1: {
101
- const [predicate] = args;
102
- return (array) => findLastIndex(array, predicate);
103
- }
98
+ switch (args.length) {
99
+ case 2: {
100
+ const [array, predicate] = args;
101
+ return pipe(
102
+ array.findLastIndex(
103
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
104
+ predicate
105
+ )
106
+ ).map((idx) => idx >= 0 ? asUint32(idx) : -1).value;
107
+ }
108
+ case 1: {
109
+ const [predicate] = args;
110
+ return (array) => findLastIndex(array, predicate);
104
111
  }
112
+ }
105
113
  }
106
114
  function indexOf(...args) {
107
- switch (args.length) {
108
- case 2: {
109
- const [array, searchElement] = args;
110
- const index = array.indexOf(searchElement);
111
- return index !== -1 ? asUint32(index) : -1;
112
- }
113
- case 1: {
114
- const [searchElement] = args;
115
- return (array) => indexOf(array, searchElement);
116
- }
115
+ switch (args.length) {
116
+ case 2: {
117
+ const [array, searchElement] = args;
118
+ const index = array.indexOf(searchElement);
119
+ return index !== -1 ? asUint32(index) : -1;
117
120
  }
121
+ case 1: {
122
+ const [searchElement] = args;
123
+ return (array) => indexOf(array, searchElement);
124
+ }
125
+ }
118
126
  }
119
127
  function indexOfFrom(...args) {
120
- switch (args.length) {
121
- case 3: {
122
- const [array, searchElement, fromIndex] = args;
123
- const index = array.indexOf(searchElement, fromIndex);
124
- return index !== -1 ? asUint32(index) : -1;
125
- }
126
- case 2: {
127
- const [searchElement, fromIndex] = args;
128
- return (array) => indexOfFrom(array, searchElement, fromIndex);
129
- }
128
+ switch (args.length) {
129
+ case 3: {
130
+ const [array, searchElement, fromIndex] = args;
131
+ const index = array.indexOf(searchElement, fromIndex);
132
+ return index !== -1 ? asUint32(index) : -1;
133
+ }
134
+ case 2: {
135
+ const [searchElement, fromIndex] = args;
136
+ return (array) => indexOfFrom(array, searchElement, fromIndex);
130
137
  }
138
+ }
131
139
  }
132
140
  function lastIndexOf(...args) {
133
- switch (args.length) {
134
- case 2: {
135
- const [array, searchElement] = args;
136
- const index = array.lastIndexOf(searchElement);
137
- return index !== -1 ? asUint32(index) : -1;
138
- }
139
- case 1: {
140
- const [searchElement] = args;
141
- return (array) => lastIndexOf(array, searchElement);
142
- }
141
+ switch (args.length) {
142
+ case 2: {
143
+ const [array, searchElement] = args;
144
+ const index = array.lastIndexOf(searchElement);
145
+ return index !== -1 ? asUint32(index) : -1;
143
146
  }
147
+ case 1: {
148
+ const [searchElement] = args;
149
+ return (array) => lastIndexOf(array, searchElement);
150
+ }
151
+ }
144
152
  }
145
153
  function lastIndexOfFrom(...args) {
146
- switch (args.length) {
147
- case 3: {
148
- const [array, searchElement, fromIndex] = args;
149
- const index = array.lastIndexOf(searchElement, fromIndex);
150
- return index !== -1 ? asUint32(index) : -1;
151
- }
152
- case 2: {
153
- const [searchElement, fromIndex] = args;
154
- return (array) => lastIndexOfFrom(array, searchElement, fromIndex);
155
- }
154
+ switch (args.length) {
155
+ case 3: {
156
+ const [array, searchElement, fromIndex] = args;
157
+ const index = array.lastIndexOf(searchElement, fromIndex);
158
+ return index !== -1 ? asUint32(index) : -1;
159
+ }
160
+ case 2: {
161
+ const [searchElement, fromIndex] = args;
162
+ return (array) => lastIndexOfFrom(array, searchElement, fromIndex);
156
163
  }
164
+ }
157
165
  }
158
166
 
159
167
  export { find, findIndex, findLast, findLastIndex, indexOf, indexOfFrom, lastIndexOf, lastIndexOfFrom };
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-search.mjs","sources":["../../../src/array/impl/array-utils-search.mts"],"sourcesContent":[null],"names":["Optional.none","Optional.some"],"mappings":"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"}
1
+ {"version":3,"file":"array-utils-search.mjs","sources":["../../../src/array/impl/array-utils-search.mts"],"sourcesContent":["import { expectType } from '../../expect-type.mjs';\nimport { Optional, pipe } from '../../functional/index.mjs';\nimport { asUint32 } from '../../number/index.mjs';\nimport {\n type ArgArrayIndexWithNegative,\n type ArrayIndex,\n type SizeType,\n} from '../../types.mjs';\n\n/**\n * Finds the first element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const users = [\n * { id: 1, name: 'Ada' },\n * { id: 2, name: 'Grace' },\n * ] as const;\n *\n * const found = Arr.find(users, (user) => user.id === 2);\n *\n * const missing = Arr.find<Readonly<{ id: number }>>((user) => user.id === 3)(\n * users,\n * );\n *\n * assert.deepStrictEqual(found, Optional.some({ id: 2, name: 'Grace' }));\n *\n * assert.deepStrictEqual(missing, Optional.none);\n * ```\n */\nexport function find<E, F extends E>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F,\n): Optional<F>;\n\nexport function find<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): Optional<Ar[number]>;\n\nexport function find<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => Optional<E>;\n\nexport function find<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): Optional<E> | ((array: readonly E[]) => Optional<E>) {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n const foundIndex = array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n expectType<\n Parameters<typeof array.findIndex>[0],\n (value: E, index: number, arr: readonly E[]) => unknown\n >('=');\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return foundIndex === -1\n ? Optional.none\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Optional.some(array[foundIndex]!);\n }\n\n case 1: {\n const [predicate] = args;\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return (array) => find(array, predicate);\n }\n }\n}\n\n/**\n * Finds the last element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 3, 2, 4, 5] as const;\n *\n * const lastEven = Arr.findLast(numbers, (n) => n % 2 === 0);\n *\n * const none = Arr.findLast<number>((n) => n > 10)(numbers);\n *\n * assert.deepStrictEqual(lastEven, Optional.some(4));\n *\n * assert.deepStrictEqual(none, Optional.none);\n * ```\n */\nexport function findLast<E, F extends E>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F,\n): Optional<F>;\n\nexport function findLast<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): Optional<Ar[number]>;\n\nexport function findLast<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => Optional<E>;\n\nexport function findLast<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): Optional<E> | ((array: readonly E[]) => Optional<E>) {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n const foundIndex = array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n expectType<\n Parameters<typeof array.findIndex>[0],\n (value: E, index: number, arr: readonly E[]) => unknown\n >('=');\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return foundIndex === -1\n ? Optional.none\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Optional.some(array[foundIndex]!);\n }\n\n case 1: {\n const [predicate] = args;\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return (array) => findLast(array, predicate);\n }\n }\n}\n\n/**\n * Finds the index of the first element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c'] as const;\n *\n * const indexOfB = Arr.findIndex(letters, (letter) => letter === 'b');\n *\n * const indexOfMissing = Arr.findIndex<string>((letter) => letter === 'z')(\n * letters,\n * );\n *\n * assert.isTrue(indexOfB === 1);\n *\n * assert.isTrue(indexOfMissing === -1);\n * ```\n */\nexport function findIndex<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): ArrayIndex<Ar> | -1;\n\nexport function findIndex<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function findIndex<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n return pipe(\n array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as (value: E, index: number) => boolean,\n ),\n ).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;\n }\n\n case 1: {\n const [predicate] = args;\n\n return (array) => findIndex(array, predicate);\n }\n }\n}\n\n/**\n * Finds the index of the last element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c', 'b'] as const;\n *\n * const lastIndexOfB = Arr.findLastIndex(letters, (letter) => letter === 'b');\n *\n * const notFound = Arr.findLastIndex<string>((letter) => letter === 'z')(\n * letters,\n * );\n *\n * assert.isTrue(lastIndexOfB === 3);\n *\n * assert.isTrue(notFound === -1);\n * ```\n */\nexport function findLastIndex<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): ArrayIndex<Ar> | -1;\n\nexport function findLastIndex<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function findLastIndex<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n return pipe(\n array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as (value: E, index: number) => boolean,\n ),\n ).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;\n }\n\n case 1: {\n const [predicate] = args;\n\n return (array) => findLastIndex(array, predicate);\n }\n }\n}\n\n/**\n * Gets the index of a value in an array.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * const indexOfBanana = Arr.indexOf(fruits, 'banana');\n *\n * const indexOfGrape = Arr.indexOf(fruits, 'grape');\n *\n * // Curried version\n * const findApple = Arr.indexOf('apple');\n *\n * const indexOfApple = findApple(fruits);\n *\n * console.log(indexOfBanana); // => 1\n *\n * console.log(indexOfGrape); // => -1\n *\n * console.log(indexOfApple); // => 0\n * ```\n */\nexport function indexOf<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n): ArrayIndex<Ar> | -1;\n\nexport function indexOf<E>(\n searchElement: E,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function indexOf<E>(\n ...args:\n | readonly [array: readonly E[], searchElement: E]\n | readonly [searchElement: E]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, searchElement] = args;\n\n const index = array.indexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 1: {\n const [searchElement] = args;\n\n return (array) => indexOf(array, searchElement);\n }\n }\n}\n\n/**\n * Gets the index of a value in an array, starting from a specified index.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * // Search for 'banana' starting from index 1\n * const firstBanana = Arr.indexOfFrom(fruits, 'banana', 1);\n *\n * // Search for 'banana' starting from index 2\n * const secondBanana = Arr.indexOfFrom(fruits, 'banana', 2);\n *\n * // Element not found\n * const notFound = Arr.indexOfFrom(fruits, 'grape', 0);\n *\n * // Curried version\n * const findBananaFrom2 = Arr.indexOfFrom('banana', 2);\n *\n * const index = findBananaFrom2(fruits);\n *\n * console.log(firstBanana); // => 1\n *\n * console.log(secondBanana); // => 3\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function indexOfFrom<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n fromIndex: ArgArrayIndexWithNegative<Ar>,\n): ArrayIndex<Ar> | -1;\n\nexport function indexOfFrom<E>(\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function indexOfFrom<E>(\n ...args:\n | readonly [\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n ]\n | readonly [searchElement: E, fromIndex: SizeType.ArgArrWithNegative]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 3: {\n const [array, searchElement, fromIndex] = args;\n\n const index = array.indexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 2: {\n const [searchElement, fromIndex] = args;\n\n return (array) => indexOfFrom(array, searchElement, fromIndex);\n }\n }\n}\n\n/**\n * Gets the last index of a value in an array.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * const lastBanana = Arr.lastIndexOf(fruits, 'banana');\n *\n * const lastApple = Arr.lastIndexOf(fruits, 'apple');\n *\n * const notFound = Arr.lastIndexOf(fruits, 'grape');\n *\n * // Curried version\n * const findLastBanana = Arr.lastIndexOf('banana');\n *\n * const index = findLastBanana(fruits);\n *\n * console.log(lastBanana); // => 3\n *\n * console.log(lastApple); // => 0\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function lastIndexOf<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n): ArrayIndex<Ar> | -1;\n\nexport function lastIndexOf<E>(\n searchElement: E,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function lastIndexOf<E>(\n ...args:\n | readonly [array: readonly E[], searchElement: E]\n | readonly [searchElement: E]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, searchElement] = args;\n\n const index = array.lastIndexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 1: {\n const [searchElement] = args;\n\n return (array) => lastIndexOf(array, searchElement);\n }\n }\n}\n\n/**\n * Gets the last index of a value in an array, starting from a specified index.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana', 'grape'] as const;\n *\n * // Search backwards for 'banana' from index 3\n * const lastBananaFrom3 = Arr.lastIndexOfFrom(fruits, 'banana', 3);\n *\n * // Search backwards for 'banana' from index 2\n * const lastBananaFrom2 = Arr.lastIndexOfFrom(fruits, 'banana', 2);\n *\n * // Element not found\n * const notFound = Arr.lastIndexOfFrom(fruits, 'grape', 2);\n *\n * // Curried version\n * const findBananaFrom3 = Arr.lastIndexOfFrom('banana', 3);\n *\n * const index = findBananaFrom3(fruits);\n *\n * console.log(lastBananaFrom3); // => 3\n *\n * console.log(lastBananaFrom2); // => 1\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function lastIndexOfFrom<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n fromIndex: ArgArrayIndexWithNegative<Ar>,\n): ArrayIndex<Ar> | -1;\n\nexport function lastIndexOfFrom<E>(\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function lastIndexOfFrom<E>(\n ...args:\n | readonly [\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n ]\n | readonly [searchElement: E, fromIndex: SizeType.ArgArrWithNegative]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 3: {\n const [array, searchElement, fromIndex] = args;\n\n const index = array.lastIndexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 2: {\n const [searchElement, fromIndex] = args;\n\n return (array) => lastIndexOfFrom(array, searchElement, fromIndex);\n }\n }\n}\n"],"names":["Optional.none","Optional.some"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-set-op.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,EAClB,QAAQ,SAAS,CAAC,EAAE,EACpB,QAAQ,SAAS,CAAC,EAAE,EACpB,WAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAmB,KAC5C,OAG8C,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAdC,CAAC,UACV,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,aACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAChC,OAUoB,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,EACtE,QAAQ,SAAS,EAAE,EAAE,EACrB,QAAQ,SAAS,EAAE,EAAE,KACpB,OAIA,CAAC;AAEJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,EACxE,QAAQ,SAAS,EAAE,EAAE,EACrB,QAAQ,SAAS,EAAE,EAAE,KACpB,OAAmC,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,GAC1B,EAAE,SAAS,SAAS,EACpB,EAAE,SAAS,SAAS,GAAG,EAAE,EAEzB,QAAQ,SAAS,EAAE,EAAE,EACrB,QAAQ,SAAS,EAAE,EAAE,KACpB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAE+C,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,EAC/C,QAAQ,SAAS,CAAC,EAAE,EACpB,QAAQ,SAAS,CAAC,EAAE,KACnB,SAAS,CAAC,EAA+C,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,EACrD,aAAa,SAAS,CAAC,EAAE,EACzB,aAAa,SAAS,CAAC,EAAE,KACxB,SAAS,CAAC,EAoCZ,CAAC"}
1
+ {"version":3,"file":"array-utils-set-op.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,UACV,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,aACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAChC,OAG8C,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAdC,CAAC,UACV,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,aACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAChC,OAUoB,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,UAC9D,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,OAIA,CAAC;AAEJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,UAChE,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,OAAmC,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,GAC1B,EAAE,SAAS,SAAS,EACpB,EAAE,SAAS,SAAS,GAAG,EAAE,UAEjB,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAE+C,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,UACvC,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,KACnB,SAAS,CAAC,EAA+C,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,eACxC,SAAS,CAAC,EAAE,eACZ,SAAS,CAAC,EAAE,KACxB,SAAS,CAAC,EAoCZ,CAAC"}
@@ -1,149 +1,39 @@
1
- /**
2
- * Checks if two arrays are equal by comparing their elements.
3
- *
4
- * @example
5
- *
6
- * ```ts
7
- * const numbers = [1, 2, 3] as const;
8
- *
9
- * const sameNumbers = [1, 2, 3] as const;
10
- *
11
- * const differentNumbers = [1, 2, 4] as const;
12
- *
13
- * assert.isTrue(Arr.eq(numbers, sameNumbers));
14
- *
15
- * assert.isFalse(Arr.eq(numbers, differentNumbers));
16
- * ```
17
- */
18
- const eq = (array1, array2, equality = Object.is) => array1.length === array2.length &&
19
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
20
- array1.every((v, i) => equality(v, array2[i]));
21
- /**
22
- * Alias for `eq`.
23
- *
24
- * @see {@link eq}
25
- */
1
+ const eq = (array1, array2, equality = Object.is) => array1.length === array2.length && // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2
+ array1.every((v, i) => equality(v, array2[i]));
26
3
  const equal = eq;
27
- /**
28
- * Checks if the first array is a subset of the second array.
29
- *
30
- * @example
31
- *
32
- * ```ts
33
- * const subset = [1, 2] as const;
34
- *
35
- * const superset = [1, 2, 3] as const;
36
- *
37
- * const notSubset = [2, 4] as const;
38
- *
39
- * assert.isTrue(Arr.isSubset(subset, superset));
40
- *
41
- * assert.isFalse(Arr.isSubset(notSubset, superset));
42
- * ```
43
- */
44
- const isSubset = (array1, array2) => array1.every((a) =>
45
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
46
- array2.includes(a));
47
- /**
48
- * Checks if the first array is a superset of the second array.
49
- *
50
- * @example
51
- *
52
- * ```ts
53
- * const potentialSuperset = ['a', 'b', 'c'] as const;
54
- *
55
- * const subset = ['a', 'c'] as const;
56
- *
57
- * const notSuperset = ['a', 'd'] as const;
58
- *
59
- * assert.isTrue(Arr.isSuperset(potentialSuperset, subset));
60
- *
61
- * assert.isFalse(Arr.isSuperset(subset, potentialSuperset));
62
- *
63
- * assert.isFalse(Arr.isSuperset(potentialSuperset, notSuperset));
64
- * ```
65
- */
4
+ const isSubset = (array1, array2) => array1.every(
5
+ (a) => (
6
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
7
+ array2.includes(a)
8
+ )
9
+ );
66
10
  const isSuperset = (array1, array2) => isSubset(array2, array1);
67
- /**
68
- * Returns the intersection of two arrays.
69
- *
70
- * @example
71
- *
72
- * ```ts
73
- * const refs = ['Ada', 'Alan', 'Grace'] as const;
74
- *
75
- * const attendees = ['Grace', 'Alan', 'Barbara'] as const;
76
- *
77
- * const both = Arr.setIntersection(refs, attendees);
78
- *
79
- * assert.deepStrictEqual(both, ['Alan', 'Grace']);
80
- * ```
81
- */
82
- const setIntersection = (array1, array2) =>
83
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
84
- array1.filter((e) => array2.includes(e));
85
- /**
86
- * Returns the set difference of two arrays (elements in first but not in second).
87
- *
88
- * @example
89
- *
90
- * ```ts
91
- * const baseline = [1, 2, 3, 4] as const;
92
- *
93
- * const removed = [2, 4] as const;
94
- *
95
- * const remaining = Arr.setDifference(baseline, removed);
96
- *
97
- * assert.deepStrictEqual(remaining, [1, 3]);
98
- * ```
99
- */
11
+ const setIntersection = (array1, array2) => (
12
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
13
+ array1.filter((e) => array2.includes(e))
14
+ );
100
15
  const setDifference = (array1, array2) => array1.filter((e) => !array2.includes(e));
101
- /**
102
- * Returns the set difference of two sorted numeric arrays (optimized for sorted arrays).
103
- *
104
- * @example
105
- *
106
- * ```ts
107
- * const upcoming = [1, 3, 5, 7, 9] as const;
108
- *
109
- * const completed = [3, 4, 7] as const;
110
- *
111
- * const remaining = Arr.sortedNumSetDifference(upcoming, completed);
112
- *
113
- * const expected = [1, 5, 9] as const;
114
- *
115
- * assert.deepStrictEqual(remaining, expected);
116
- * ```
117
- */
118
16
  const sortedNumSetDifference = (sortedList1, sortedList2) => {
119
- const mut_result = [];
120
- let mut_it1 = 0; // iterator for sortedList1
121
- let mut_it2 = 0; // iterator for sortedList2
122
- while (mut_it1 < sortedList1.length && mut_it2 < sortedList2.length) {
123
- // Non-null assertions are safe due to loop condition
124
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
125
- const val1 = sortedList1[mut_it1];
126
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
127
- const val2 = sortedList2[mut_it2];
128
- if (val1 === val2) {
129
- mut_it1 += 1;
130
- mut_it2 += 1;
131
- }
132
- else if (val1 < val2) {
133
- mut_result.push(val1);
134
- mut_it1 += 1;
135
- }
136
- else {
137
- // val1 > val2
138
- mut_it2 += 1;
139
- }
17
+ const mut_result = [];
18
+ let mut_it1 = 0;
19
+ let mut_it2 = 0;
20
+ while (mut_it1 < sortedList1.length && mut_it2 < sortedList2.length) {
21
+ const val1 = sortedList1[mut_it1];
22
+ const val2 = sortedList2[mut_it2];
23
+ if (val1 === val2) {
24
+ mut_it1 += 1;
25
+ mut_it2 += 1;
26
+ } else if (val1 < val2) {
27
+ mut_result.push(val1);
28
+ mut_it1 += 1;
29
+ } else {
30
+ mut_it2 += 1;
140
31
  }
141
- // Add remaining elements from sortedList1
142
- for (; mut_it1 < sortedList1.length; mut_it1 += 1) {
143
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
144
- mut_result.push(sortedList1[mut_it1]);
145
- }
146
- return mut_result;
32
+ }
33
+ for (; mut_it1 < sortedList1.length; mut_it1 += 1) {
34
+ mut_result.push(sortedList1[mut_it1]);
35
+ }
36
+ return mut_result;
147
37
  };
148
38
 
149
39
  export { eq, equal, isSubset, isSuperset, setDifference, setIntersection, sortedNumSetDifference };
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-set-op.mjs","sources":["../../../src/array/impl/array-utils-set-op.mts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;AAgBG;MACU,EAAE,GAAG,CAChB,MAAoB,EACpB,MAAoB,EACpB,QAAA,GAAoC,MAAM,CAAC,EAAE,KAE7C,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;;IAE/B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC;AAEhD;;;;AAIG;AACI,MAAM,KAAK,GAAG;AAErB;;;;;;;;;;;;;;;;AAgBG;AACI,MAAM,QAAQ,GAAG,CACtB,MAAqB,EACrB,MAAqB,KAErB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACb;AACA,MAAM,CAAC,QAAQ,CAAC,CAAY,CAAC;AAGjC;;;;;;;;;;;;;;;;;;AAkBG;AACI,MAAM,UAAU,GAAG,CACxB,MAAqB,EACrB,MAAqB,KACT,QAAQ,CAAC,MAAM,EAAE,MAAM;AAErC;;;;;;;;;;;;;;AAcG;MACU,eAAe,GAAG,CAI7B,MAAqB,EACrB,MAAqB;AAErB;AACC,MAA+B,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;AAcG;AACI,MAAM,aAAa,GAAG,CAC3B,MAAoB,EACpB,MAAoB,KACH,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;;;AAgBG;MACU,sBAAsB,GAAG,CACpC,WAAyB,EACzB,WAAyB,KACT;IAChB,MAAM,UAAU,GAAQ,EAAE;AAE1B,IAAA,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,IAAA,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,IAAA,OAAO,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE;;;AAGnE,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAE;;AAGlC,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAE;AAElC,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;YAEZ,OAAO,IAAI,CAAC;QACd;AAAO,aAAA,IAAI,IAAI,GAAG,IAAI,EAAE;AACtB,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAErB,OAAO,IAAI,CAAC;QACd;aAAO;;YAEL,OAAO,IAAI,CAAC;QACd;IACF;;IAGA,OAAO,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,EAAE;;QAEjD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAE,CAAC;IACxC;AAEA,IAAA,OAAO,UAAU;AACnB;;;;"}
1
+ {"version":3,"file":"array-utils-set-op.mjs","sources":["../../../src/array/impl/array-utils-set-op.mts"],"sourcesContent":["import { type Primitive } from 'ts-type-forge';\n\n/**\n * Checks if two arrays are equal by comparing their elements.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 2, 3] as const;\n *\n * const sameNumbers = [1, 2, 3] as const;\n *\n * const differentNumbers = [1, 2, 4] as const;\n *\n * assert.isTrue(Arr.eq(numbers, sameNumbers));\n *\n * assert.isFalse(Arr.eq(numbers, differentNumbers));\n * ```\n */\nexport const eq = <E,>(\n array1: readonly E[],\n array2: readonly E[],\n equality: (a: E, b: E) => boolean = Object.is,\n): boolean =>\n array1.length === array2.length &&\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n array1.every((v, i) => equality(v, array2[i]!));\n\n/**\n * Alias for `eq`.\n *\n * @see {@link eq}\n */\nexport const equal = eq;\n\n/**\n * Checks if the first array is a subset of the second array.\n *\n * @example\n *\n * ```ts\n * const subset = [1, 2] as const;\n *\n * const superset = [1, 2, 3] as const;\n *\n * const notSubset = [2, 4] as const;\n *\n * assert.isTrue(Arr.isSubset(subset, superset));\n *\n * assert.isFalse(Arr.isSubset(notSubset, superset));\n * ```\n */\nexport const isSubset = <E1 extends Primitive, E2 extends Primitive = E1>(\n array1: readonly E1[],\n array2: readonly E2[],\n): boolean =>\n array1.every((a) =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n array2.includes(a as E1 & E2),\n );\n\n/**\n * Checks if the first array is a superset of the second array.\n *\n * @example\n *\n * ```ts\n * const potentialSuperset = ['a', 'b', 'c'] as const;\n *\n * const subset = ['a', 'c'] as const;\n *\n * const notSuperset = ['a', 'd'] as const;\n *\n * assert.isTrue(Arr.isSuperset(potentialSuperset, subset));\n *\n * assert.isFalse(Arr.isSuperset(subset, potentialSuperset));\n *\n * assert.isFalse(Arr.isSuperset(potentialSuperset, notSuperset));\n * ```\n */\nexport const isSuperset = <E1 extends Primitive, E2 extends Primitive = E1>(\n array1: readonly E1[],\n array2: readonly E2[],\n): boolean => isSubset(array2, array1);\n\n/**\n * Returns the intersection of two arrays.\n *\n * @example\n *\n * ```ts\n * const refs = ['Ada', 'Alan', 'Grace'] as const;\n *\n * const attendees = ['Grace', 'Alan', 'Barbara'] as const;\n *\n * const both = Arr.setIntersection(refs, attendees);\n *\n * assert.deepStrictEqual(both, ['Alan', 'Grace']);\n * ```\n */\nexport const setIntersection = <\n E1 extends Primitive,\n E2 extends Primitive = E1,\n>(\n array1: readonly E1[],\n array2: readonly E2[],\n): readonly (E1 & E2)[] =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (array1 as readonly (E1 & E2)[]).filter((e) => array2.includes(e));\n\n/**\n * Returns the set difference of two arrays (elements in first but not in second).\n *\n * @example\n *\n * ```ts\n * const baseline = [1, 2, 3, 4] as const;\n *\n * const removed = [2, 4] as const;\n *\n * const remaining = Arr.setDifference(baseline, removed);\n *\n * assert.deepStrictEqual(remaining, [1, 3]);\n * ```\n */\nexport const setDifference = <E extends Primitive>(\n array1: readonly E[],\n array2: readonly E[],\n): readonly E[] => array1.filter((e) => !array2.includes(e));\n\n/**\n * Returns the set difference of two sorted numeric arrays (optimized for sorted arrays).\n *\n * @example\n *\n * ```ts\n * const upcoming = [1, 3, 5, 7, 9] as const;\n *\n * const completed = [3, 4, 7] as const;\n *\n * const remaining = Arr.sortedNumSetDifference(upcoming, completed);\n *\n * const expected = [1, 5, 9] as const;\n *\n * assert.deepStrictEqual(remaining, expected);\n * ```\n */\nexport const sortedNumSetDifference = <E extends number>(\n sortedList1: readonly E[],\n sortedList2: readonly E[],\n): readonly E[] => {\n const mut_result: E[] = [];\n\n let mut_it1 = 0; // iterator for sortedList1\n\n let mut_it2 = 0; // iterator for sortedList2\n\n while (mut_it1 < sortedList1.length && mut_it2 < sortedList2.length) {\n // Non-null assertions are safe due to loop condition\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const val1 = sortedList1[mut_it1]!;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const val2 = sortedList2[mut_it2]!;\n\n if (val1 === val2) {\n mut_it1 += 1;\n\n mut_it2 += 1;\n } else if (val1 < val2) {\n mut_result.push(val1);\n\n mut_it1 += 1;\n } else {\n // val1 > val2\n mut_it2 += 1;\n }\n }\n\n // Add remaining elements from sortedList1\n for (; mut_it1 < sortedList1.length; mut_it1 += 1) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mut_result.push(sortedList1[mut_it1]!);\n }\n\n return mut_result;\n};\n"],"names":[],"mappings":"AAmBO,MAAM,EAAA,GAAK,CAChB,MAAA,EACA,MAAA,EACA,WAAoC,MAAA,CAAO,EAAA,KAE3C,MAAA,CAAO,MAAA,KAAW,MAAA,CAAO,MAAA;AAEzB,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAG,CAAA,KAAM,SAAS,CAAA,EAAG,MAAA,CAAO,CAAC,CAAE,CAAC;AAOzC,MAAM,KAAA,GAAQ;AAmBd,MAAM,QAAA,GAAW,CACtB,MAAA,EACA,MAAA,KAEA,MAAA,CAAO,KAAA;AAAA,EAAM,CAAC,CAAA;AAAA;AAAA,IAEZ,MAAA,CAAO,SAAS,CAAY;AAAA;AAC9B;AAqBK,MAAM,aAAa,CACxB,MAAA,EACA,MAAA,KACY,QAAA,CAAS,QAAQ,MAAM;AAiB9B,MAAM,eAAA,GAAkB,CAI7B,MAAA,EACA,MAAA;AAAA;AAAA,EAGC,OAAgC,MAAA,CAAO,CAAC,MAAM,MAAA,CAAO,QAAA,CAAS,CAAC,CAAC;AAAA;AAiB5D,MAAM,aAAA,GAAgB,CAC3B,MAAA,EACA,MAAA,KACiB,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,MAAA,CAAO,QAAA,CAAS,CAAC,CAAC;AAmBpD,MAAM,sBAAA,GAAyB,CACpC,WAAA,EACA,WAAA,KACiB;AACjB,EAAA,MAAM,aAAkB,EAAC;AAEzB,EAAA,IAAI,OAAA,GAAU,CAAA;AAEd,EAAA,IAAI,OAAA,GAAU,CAAA;AAEd,EAAA,OAAO,OAAA,GAAU,WAAA,CAAY,MAAA,IAAU,OAAA,GAAU,YAAY,MAAA,EAAQ;AAGnE,IAAA,MAAM,IAAA,GAAO,YAAY,OAAO,CAAA;AAGhC,IAAA,MAAM,IAAA,GAAO,YAAY,OAAO,CAAA;AAEhC,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,OAAA,IAAW,CAAA;AAEX,MAAA,OAAA,IAAW,CAAA;AAAA,IACb,CAAA,MAAA,IAAW,OAAO,IAAA,EAAM;AACtB,MAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAEpB,MAAA,OAAA,IAAW,CAAA;AAAA,IACb,CAAA,MAAO;AAEL,MAAA,OAAA,IAAW,CAAA;AAAA,IACb;AAAA,EACF;AAGA,EAAA,OAAO,OAAA,GAAU,WAAA,CAAY,MAAA,EAAQ,OAAA,IAAW,CAAA,EAAG;AAEjD,IAAA,UAAA,CAAW,IAAA,CAAK,WAAA,CAAY,OAAO,CAAE,CAAA;AAAA,EACvC;AAEA,EAAA,OAAO,UAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-size.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-size.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EACtD,OAAO,EAAE,KACR,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,GAChC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,GAC5C,QAAQ,CAAC,GAEU,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,MAAM,SAbQ,EAAE,SAAS,SAAS,OAAO,EAAE,SAC/C,EAAE,KACR,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,GAChC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,GAC5C,QAAQ,CAAC,GASa,CAAC"}
1
+ {"version":3,"file":"array-utils-size.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-size.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,SAC/C,EAAE,KACR,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,GAChC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,GAC5C,QAAQ,CAAC,GAEU,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,MAAM,SAbQ,EAAE,SAAS,SAAS,OAAO,EAAE,SAC/C,EAAE,KACR,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,GAChC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,GAC5C,QAAQ,CAAC,GASa,CAAC"}
@@ -1,11 +1,7 @@
1
- const size = (array) =>
2
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
3
- array.length;
4
- /**
5
- * Alias for `size`.
6
- *
7
- * @see {@link size}
8
- */
1
+ const size = (array) => (
2
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
3
+ array.length
4
+ );
9
5
  const length = size;
10
6
 
11
7
  export { length, size };
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-size.mjs","sources":["../../../src/array/impl/array-utils-size.mts"],"sourcesContent":[null],"names":[],"mappings":"AA0BO,MAAM,IAAI,GAAG,CAClB,KAAS;AAIT;AACA,KAAK,CAAC;AAER;;;;AAIG;AACI,MAAM,MAAM,GAAG;;;;"}
1
+ {"version":3,"file":"array-utils-size.mjs","sources":["../../../src/array/impl/array-utils-size.mts"],"sourcesContent":["import {\n type IntersectBrand,\n type NonEmptyArray,\n type PositiveNumber,\n} from 'ts-type-forge';\n/**\n * Returns the size (length) of an array.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 2, 3] as const;\n *\n * const letters: readonly string[] = [] as const;\n *\n * const sizeOfNumbers = Arr.size(numbers);\n *\n * const sizeOfLetters = Arr.size(letters);\n *\n * assert.isTrue(sizeOfNumbers === 3);\n *\n * assert.isTrue(sizeOfLetters === 0);\n * ```\n */\nimport { type SizeType } from '../../types.mjs';\n\nexport const size = <const Ar extends readonly unknown[]>(\n array: Ar,\n): Ar extends NonEmptyArray<unknown>\n ? IntersectBrand<PositiveNumber, SizeType.Arr>\n : SizeType.Arr =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n array.length as never;\n\n/**\n * Alias for `size`.\n *\n * @see {@link size}\n */\nexport const length = size;\n"],"names":[],"mappings":"AA0BO,MAAM,OAAO,CAClB,KAAA;AAAA;AAAA,EAKA,KAAA,CAAM;AAAA;AAOD,MAAM,MAAA,GAAS;;;;"}
@@ -36,19 +36,18 @@ import { Num } from '../../number/num.mjs';
36
36
  import '../../number/refined-number-utils.mjs';
37
37
 
38
38
  function sliceClamped(...args) {
39
- switch (args.length) {
40
- case 3: {
41
- const [array, start, end] = args;
42
- const startClamped = Num.clamp(0, array.length)(start);
43
- // Ensure endClamped is not less than startClamped.
44
- const endClamped = Num.clamp(startClamped, array.length)(end);
45
- return array.slice(startClamped, endClamped);
46
- }
47
- case 2: {
48
- const [start, end] = args;
49
- return (array) => sliceClamped(array, start, end);
50
- }
39
+ switch (args.length) {
40
+ case 3: {
41
+ const [array, start, end] = args;
42
+ const startClamped = Num.clamp(0, array.length)(start);
43
+ const endClamped = Num.clamp(startClamped, array.length)(end);
44
+ return array.slice(startClamped, endClamped);
51
45
  }
46
+ case 2: {
47
+ const [start, end] = args;
48
+ return (array) => sliceClamped(array, start, end);
49
+ }
50
+ }
52
51
  }
53
52
 
54
53
  export { sliceClamped };
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-slice-clamped.mjs","sources":["../../../src/array/impl/array-utils-slice-clamped.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BM,SAAU,YAAY,CAC1B,GAAG,IAMoE,EAAA;AAEvE,IAAA,QAAQ,IAAI,CAAC,MAAM;QACjB,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI;AAEhC,YAAA,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;;AAGtD,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;YAE7D,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC;QAC9C;QAEA,KAAK,CAAC,EAAE;AACN,YAAA,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI;AAEzB,YAAA,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;QACnD;;AAEJ;;;;"}
1
+ {"version":3,"file":"array-utils-slice-clamped.mjs","sources":["../../../src/array/impl/array-utils-slice-clamped.mts"],"sourcesContent":["import { Num } from '../../number/index.mjs';\nimport { type ArgArrayIndexWithNegative, type SizeType } from '../../types.mjs';\n\n/**\n * Slices an array with automatically clamped start and end indices.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c', 'd', 'e'] as readonly string[];\n *\n * const lastThree = Arr.sliceClamped(letters, -3, 10);\n *\n * const middleTwo = Arr.sliceClamped(1, 3)(letters);\n *\n * assert.deepStrictEqual(lastThree, ['a', 'b', 'c', 'd', 'e']);\n *\n * assert.deepStrictEqual(middleTwo, ['b', 'c']);\n * ```\n */\nexport function sliceClamped<const Ar extends readonly unknown[]>(\n array: Ar,\n start: ArgArrayIndexWithNegative<Ar>,\n end: ArgArrayIndexWithNegative<Ar>,\n): readonly Ar[number][];\n\nexport function sliceClamped(\n start: SizeType.ArgArrWithNegative,\n end: SizeType.ArgArrWithNegative,\n): <E>(array: readonly E[]) => readonly E[];\n\nexport function sliceClamped<E>(\n ...args:\n | readonly [\n readonly E[],\n SizeType.ArgArrWithNegative,\n SizeType.ArgArrWithNegative,\n ]\n | readonly [SizeType.ArgArrWithNegative, SizeType.ArgArrWithNegative]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 3: {\n const [array, start, end] = args;\n\n const startClamped = Num.clamp(0, array.length)(start);\n\n // Ensure endClamped is not less than startClamped.\n const endClamped = Num.clamp(startClamped, array.length)(end);\n\n return array.slice(startClamped, endClamped);\n }\n\n case 2: {\n const [start, end] = args;\n\n return (array) => sliceClamped(array, start, end);\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BO,SAAS,gBACX,IAAA,EAOqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,KAAA,EAAO,GAAG,CAAA,GAAI,IAAA;AAE5B,MAAA,MAAM,eAAe,GAAA,CAAI,KAAA,CAAM,GAAG,KAAA,CAAM,MAAM,EAAE,KAAK,CAAA;AAGrD,MAAA,MAAM,aAAa,GAAA,CAAI,KAAA,CAAM,cAAc,KAAA,CAAM,MAAM,EAAE,GAAG,CAAA;AAE5D,MAAA,OAAO,KAAA,CAAM,KAAA,CAAM,YAAA,EAAc,UAAU,CAAA;AAAA,IAC7C;AAAA,IAEA,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,IAAA;AAErB,MAAA,OAAO,CAAC,KAAA,KAAU,YAAA,CAAa,KAAA,EAAO,OAAO,GAAG,CAAA;AAAA,IAClD;AAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-slicing.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-slicing.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array-utils-slicing.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-slicing.mts"],"names":[],"mappings":"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"}