ts-data-forge 14.6.0 → 14.6.2

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 (409) hide show
  1. package/dist/array/impl/array-utils-creation.mjs +126 -26
  2. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  3. package/dist/array/impl/array-utils-element-access.mjs +63 -30
  4. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  5. package/dist/array/impl/array-utils-iterators.mjs +69 -53
  6. package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
  7. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +109 -73
  8. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -1
  9. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +71 -33
  10. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs.map +1 -1
  11. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +102 -73
  12. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +77 -33
  14. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs.map +1 -1
  15. package/dist/array/impl/array-utils-modification.mjs +75 -122
  16. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  17. package/dist/array/impl/array-utils-reducing-value.mjs +100 -150
  18. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  19. package/dist/array/impl/array-utils-search.mjs +110 -134
  20. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  21. package/dist/array/impl/array-utils-set-op.mjs +146 -38
  22. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-size.mjs +10 -8
  24. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  25. package/dist/array/impl/array-utils-slice-clamped.mjs +13 -50
  26. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  27. package/dist/array/impl/array-utils-slicing.mjs +94 -78
  28. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  29. package/dist/array/impl/array-utils-transformation.mjs +291 -199
  30. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  31. package/dist/array/impl/array-utils-validation.mjs +54 -56
  32. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  33. package/dist/array/impl/index.mjs +17 -17
  34. package/dist/array/impl/index.mjs.map +1 -1
  35. package/dist/array/index.mjs +2 -3
  36. package/dist/array/index.mjs.map +1 -1
  37. package/dist/collections/imap-mapped.mjs +335 -291
  38. package/dist/collections/imap-mapped.mjs.map +1 -1
  39. package/dist/collections/imap.mjs +280 -239
  40. package/dist/collections/imap.mjs.map +1 -1
  41. package/dist/collections/index.mjs +7 -7
  42. package/dist/collections/index.mjs.map +1 -1
  43. package/dist/collections/iset-mapped.d.mts.map +1 -1
  44. package/dist/collections/iset-mapped.mjs +448 -263
  45. package/dist/collections/iset-mapped.mjs.map +1 -1
  46. package/dist/collections/iset.mjs +328 -201
  47. package/dist/collections/iset.mjs.map +1 -1
  48. package/dist/collections/queue.mjs +183 -151
  49. package/dist/collections/queue.mjs.map +1 -1
  50. package/dist/collections/stack.mjs +169 -140
  51. package/dist/collections/stack.mjs.map +1 -1
  52. package/dist/entry-point.mjs +4 -77
  53. package/dist/entry-point.mjs.map +1 -1
  54. package/dist/expect-type.mjs +70 -4
  55. package/dist/expect-type.mjs.map +1 -1
  56. package/dist/functional/async-result/async-result.mjs +2 -3
  57. package/dist/functional/async-result/async-result.mjs.map +1 -1
  58. package/dist/functional/async-result/impl/async-result-flat-map.mjs +19 -21
  59. package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +1 -1
  60. package/dist/functional/async-result/impl/async-result-from-promise.mjs +9 -10
  61. package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +1 -1
  62. package/dist/functional/async-result/impl/async-result-from-throwable.mjs +12 -14
  63. package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +1 -1
  64. package/dist/functional/async-result/impl/async-result-map-err.mjs +16 -19
  65. package/dist/functional/async-result/impl/async-result-map-err.mjs.map +1 -1
  66. package/dist/functional/async-result/impl/async-result-map.mjs +16 -19
  67. package/dist/functional/async-result/impl/async-result-map.mjs.map +1 -1
  68. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +36 -9
  69. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +1 -1
  70. package/dist/functional/async-result/impl/index.mjs +8 -7
  71. package/dist/functional/async-result/impl/index.mjs.map +1 -1
  72. package/dist/functional/async-result/impl/types.mjs +2 -2
  73. package/dist/functional/async-result/impl/types.mjs.map +1 -1
  74. package/dist/functional/async-result/index.mjs +2 -3
  75. package/dist/functional/async-result/index.mjs.map +1 -1
  76. package/dist/functional/index.mjs +7 -11
  77. package/dist/functional/index.mjs.map +1 -1
  78. package/dist/functional/match.mjs +27 -13
  79. package/dist/functional/match.mjs.map +1 -1
  80. package/dist/functional/optional/impl/index.mjs +19 -18
  81. package/dist/functional/optional/impl/index.mjs.map +1 -1
  82. package/dist/functional/optional/impl/optional-expect-to-be.mjs +16 -18
  83. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  84. package/dist/functional/optional/impl/optional-filter.mjs +17 -19
  85. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  86. package/dist/functional/optional/impl/optional-flat-map.mjs +13 -15
  87. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  88. package/dist/functional/optional/impl/optional-from-nullable.mjs +26 -5
  89. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  90. package/dist/functional/optional/impl/optional-is-none.mjs +21 -5
  91. package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
  92. package/dist/functional/optional/impl/optional-is-optional.mjs +26 -8
  93. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  94. package/dist/functional/optional/impl/optional-is-some.mjs +22 -5
  95. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  96. package/dist/functional/optional/impl/optional-map.mjs +16 -18
  97. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  98. package/dist/functional/optional/impl/optional-match.mjs +16 -18
  99. package/dist/functional/optional/impl/optional-match.mjs.map +1 -1
  100. package/dist/functional/optional/impl/optional-none.mjs +18 -5
  101. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  102. package/dist/functional/optional/impl/optional-or-else.mjs +13 -15
  103. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  104. package/dist/functional/optional/impl/optional-some.mjs +23 -7
  105. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  106. package/dist/functional/optional/impl/optional-to-nullable.mjs +28 -5
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  108. package/dist/functional/optional/impl/optional-unwrap-or.mjs +12 -14
  109. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  110. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +34 -9
  111. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  112. package/dist/functional/optional/impl/optional-unwrap.mjs +6 -9
  113. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  114. package/dist/functional/optional/impl/optional-zip.mjs +36 -5
  115. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  116. package/dist/functional/optional/impl/tag.mjs +4 -5
  117. package/dist/functional/optional/impl/tag.mjs.map +1 -1
  118. package/dist/functional/optional/impl/types.mjs +2 -2
  119. package/dist/functional/optional/impl/types.mjs.map +1 -1
  120. package/dist/functional/optional/index.mjs +2 -3
  121. package/dist/functional/optional/index.mjs.map +1 -1
  122. package/dist/functional/optional/optional.mjs +2 -3
  123. package/dist/functional/optional/optional.mjs.map +1 -1
  124. package/dist/functional/pipe.mjs +42 -14
  125. package/dist/functional/pipe.mjs.map +1 -1
  126. package/dist/functional/result/impl/index.mjs +28 -27
  127. package/dist/functional/result/impl/index.mjs.map +1 -1
  128. package/dist/functional/result/impl/result-err.mjs +29 -7
  129. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  130. package/dist/functional/result/impl/result-expect-to-be.mjs +17 -18
  131. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  132. package/dist/functional/result/impl/result-flat-map.mjs +18 -21
  133. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  134. package/dist/functional/result/impl/result-fold.mjs +18 -21
  135. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  136. package/dist/functional/result/impl/result-from-optional.mjs +17 -20
  137. package/dist/functional/result/impl/result-from-optional.mjs.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +37 -8
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.mjs +41 -14
  141. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  142. package/dist/functional/result/impl/result-is-err.mjs +21 -5
  143. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  144. package/dist/functional/result/impl/result-is-ok.mjs +21 -5
  145. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  146. package/dist/functional/result/impl/result-is-result.mjs +25 -7
  147. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-map-err.mjs +18 -21
  149. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  150. package/dist/functional/result/impl/result-map.mjs +18 -21
  151. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-match.mjs +17 -21
  153. package/dist/functional/result/impl/result-match.mjs.map +1 -1
  154. package/dist/functional/result/impl/result-ok.mjs +29 -7
  155. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  156. package/dist/functional/result/impl/result-or-else.mjs +14 -15
  157. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  158. package/dist/functional/result/impl/result-safe-try.mjs +32 -21
  159. package/dist/functional/result/impl/result-safe-try.mjs.map +1 -1
  160. package/dist/functional/result/impl/result-safe-unwrap.mjs +40 -12
  161. package/dist/functional/result/impl/result-safe-unwrap.mjs.map +1 -1
  162. package/dist/functional/result/impl/result-swap.mjs +23 -8
  163. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  164. package/dist/functional/result/impl/result-to-optional.mjs +30 -7
  165. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  166. package/dist/functional/result/impl/result-unwrap-err-or.mjs +13 -14
  167. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  168. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +43 -20
  169. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  170. package/dist/functional/result/impl/result-unwrap-err.mjs +33 -8
  171. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  172. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +13 -14
  173. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  174. package/dist/functional/result/impl/result-unwrap-ok.mjs +6 -9
  175. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  176. package/dist/functional/result/impl/result-unwrap-throw.mjs +38 -11
  177. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  178. package/dist/functional/result/impl/result-zip.mjs +35 -5
  179. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  180. package/dist/functional/result/impl/tag.mjs +4 -5
  181. package/dist/functional/result/impl/tag.mjs.map +1 -1
  182. package/dist/functional/result/impl/types.mjs +2 -2
  183. package/dist/functional/result/impl/types.mjs.map +1 -1
  184. package/dist/functional/result/index.mjs +2 -3
  185. package/dist/functional/result/index.mjs.map +1 -1
  186. package/dist/functional/result/result.mjs +2 -3
  187. package/dist/functional/result/result.mjs.map +1 -1
  188. package/dist/functional/ternary-result/impl/index.mjs +29 -28
  189. package/dist/functional/ternary-result/impl/index.mjs.map +1 -1
  190. package/dist/functional/ternary-result/impl/tag.mjs +6 -6
  191. package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
  192. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +17 -7
  193. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  194. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +15 -18
  195. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  196. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +28 -32
  197. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  198. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +24 -26
  199. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  200. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +21 -8
  201. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  202. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +28 -13
  203. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  204. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +19 -5
  205. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
  206. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +21 -5
  207. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  208. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +28 -8
  209. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  210. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +20 -5
  211. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  212. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +17 -18
  213. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  214. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +20 -23
  215. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  216. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +24 -26
  217. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  218. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +18 -7
  219. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  220. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +11 -14
  221. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  222. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +24 -10
  223. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  224. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +11 -14
  225. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  226. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +30 -19
  227. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  228. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +20 -8
  229. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  230. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +11 -14
  231. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  232. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +7 -9
  233. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  234. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +30 -22
  235. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  236. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +11 -14
  237. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  238. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +27 -17
  239. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  240. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +20 -8
  241. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  242. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +21 -8
  243. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  244. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +47 -19
  245. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  246. package/dist/functional/ternary-result/impl/types.mjs +2 -2
  247. package/dist/functional/ternary-result/impl/types.mjs.map +1 -1
  248. package/dist/functional/ternary-result/impl/variant-name.mjs +12 -14
  249. package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
  250. package/dist/functional/ternary-result/index.mjs +2 -3
  251. package/dist/functional/ternary-result/index.mjs.map +1 -1
  252. package/dist/functional/ternary-result/ternary-result.mjs +2 -3
  253. package/dist/functional/ternary-result/ternary-result.mjs.map +1 -1
  254. package/dist/guard/has-key.mjs +43 -4
  255. package/dist/guard/has-key.mjs.map +1 -1
  256. package/dist/guard/index.mjs +8 -8
  257. package/dist/guard/index.mjs.map +1 -1
  258. package/dist/guard/is-non-empty-string.mjs +39 -4
  259. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  260. package/dist/guard/is-non-null-object.mjs +36 -4
  261. package/dist/guard/is-non-null-object.mjs.map +1 -1
  262. package/dist/guard/is-primitive.mjs +46 -15
  263. package/dist/guard/is-primitive.mjs.map +1 -1
  264. package/dist/guard/is-record.mjs +89 -6
  265. package/dist/guard/is-record.mjs.map +1 -1
  266. package/dist/guard/is-type.mjs +404 -19
  267. package/dist/guard/is-type.mjs.map +1 -1
  268. package/dist/guard/key-is-in.mjs +42 -4
  269. package/dist/guard/key-is-in.mjs.map +1 -1
  270. package/dist/index.mjs +12 -65
  271. package/dist/index.mjs.map +1 -1
  272. package/dist/iterator/index.mjs +2 -2
  273. package/dist/iterator/index.mjs.map +1 -1
  274. package/dist/iterator/range.mjs +19 -57
  275. package/dist/iterator/range.mjs.map +1 -1
  276. package/dist/json/index.mjs +2 -2
  277. package/dist/json/index.mjs.map +1 -1
  278. package/dist/json/json.mjs +346 -105
  279. package/dist/json/json.mjs.map +1 -1
  280. package/dist/number/branded-types/finite-number.mjs +148 -137
  281. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  282. package/dist/number/branded-types/index.mjs +33 -33
  283. package/dist/number/branded-types/index.mjs.map +1 -1
  284. package/dist/number/branded-types/int.mjs +245 -209
  285. package/dist/number/branded-types/int.mjs.map +1 -1
  286. package/dist/number/branded-types/int16.mjs +141 -131
  287. package/dist/number/branded-types/int16.mjs.map +1 -1
  288. package/dist/number/branded-types/int32.mjs +141 -131
  289. package/dist/number/branded-types/int32.mjs.map +1 -1
  290. package/dist/number/branded-types/negative-finite-number.mjs +155 -149
  291. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  292. package/dist/number/branded-types/negative-int.mjs +125 -110
  293. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  294. package/dist/number/branded-types/negative-safe-int.mjs +126 -115
  295. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  296. package/dist/number/branded-types/non-negative-finite-number.mjs +164 -154
  297. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  298. package/dist/number/branded-types/non-negative-int16.mjs +137 -125
  299. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  300. package/dist/number/branded-types/non-negative-int32.mjs +137 -125
  301. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  302. package/dist/number/branded-types/non-positive-finite-number.mjs +143 -139
  303. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  304. package/dist/number/branded-types/non-positive-int.mjs +116 -99
  305. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  306. package/dist/number/branded-types/non-positive-safe-int.mjs +118 -107
  307. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  308. package/dist/number/branded-types/non-zero-finite-number.mjs +144 -129
  309. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  310. package/dist/number/branded-types/non-zero-int.mjs +102 -82
  311. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  312. package/dist/number/branded-types/non-zero-int16.mjs +118 -105
  313. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  314. package/dist/number/branded-types/non-zero-int32.mjs +118 -105
  315. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  316. package/dist/number/branded-types/non-zero-safe-int.mjs +122 -108
  317. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  318. package/dist/number/branded-types/non-zero-uint16.mjs +118 -104
  319. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  320. package/dist/number/branded-types/non-zero-uint32.mjs +118 -104
  321. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  322. package/dist/number/branded-types/positive-finite-number.mjs +167 -160
  323. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  324. package/dist/number/branded-types/positive-int.mjs +260 -224
  325. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  326. package/dist/number/branded-types/positive-int16.mjs +134 -122
  327. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  328. package/dist/number/branded-types/positive-int32.mjs +134 -122
  329. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  330. package/dist/number/branded-types/positive-safe-int.mjs +292 -258
  331. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  332. package/dist/number/branded-types/positive-uint16.mjs +134 -122
  333. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  334. package/dist/number/branded-types/positive-uint32.mjs +134 -122
  335. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  336. package/dist/number/branded-types/safe-int.mjs +284 -255
  337. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  338. package/dist/number/branded-types/safe-uint.mjs +135 -124
  339. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  340. package/dist/number/branded-types/uint.mjs +248 -211
  341. package/dist/number/branded-types/uint.mjs.map +1 -1
  342. package/dist/number/branded-types/uint16.mjs +132 -121
  343. package/dist/number/branded-types/uint16.mjs.map +1 -1
  344. package/dist/number/branded-types/uint32.mjs +132 -121
  345. package/dist/number/branded-types/uint32.mjs.map +1 -1
  346. package/dist/number/enum/index.mjs +3 -3
  347. package/dist/number/enum/index.mjs.map +1 -1
  348. package/dist/number/enum/int8.mjs +146 -131
  349. package/dist/number/enum/int8.mjs.map +1 -1
  350. package/dist/number/enum/uint8.mjs +133 -119
  351. package/dist/number/enum/uint8.mjs.map +1 -1
  352. package/dist/number/index.mjs +6 -37
  353. package/dist/number/index.mjs.map +1 -1
  354. package/dist/number/num-arithmetic-types.mjs +42 -1
  355. package/dist/number/num-arithmetic-types.mjs.map +1 -1
  356. package/dist/number/num.mjs +541 -83
  357. package/dist/number/num.mjs.map +1 -1
  358. package/dist/number/refined-number-utils.mjs +294 -133
  359. package/dist/number/refined-number-utils.mjs.map +1 -1
  360. package/dist/object/index.mjs +2 -2
  361. package/dist/object/index.mjs.map +1 -1
  362. package/dist/object/object.mjs +355 -202
  363. package/dist/object/object.mjs.map +1 -1
  364. package/dist/others/cast-mutable.mjs +38 -11
  365. package/dist/others/cast-mutable.mjs.map +1 -1
  366. package/dist/others/cast-readonly.mjs +37 -11
  367. package/dist/others/cast-readonly.mjs.map +1 -1
  368. package/dist/others/debounce-function.mjs +22 -11
  369. package/dist/others/debounce-function.mjs.map +1 -1
  370. package/dist/others/fast-deep-equal.mjs +70 -51
  371. package/dist/others/fast-deep-equal.mjs.map +1 -1
  372. package/dist/others/if-then.mjs +32 -5
  373. package/dist/others/if-then.mjs.map +1 -1
  374. package/dist/others/index.mjs +10 -10
  375. package/dist/others/index.mjs.map +1 -1
  376. package/dist/others/map-nullable.mjs +11 -13
  377. package/dist/others/map-nullable.mjs.map +1 -1
  378. package/dist/others/memoize-function.mjs +14 -16
  379. package/dist/others/memoize-function.mjs.map +1 -1
  380. package/dist/others/tuple.mjs +52 -4
  381. package/dist/others/tuple.mjs.map +1 -1
  382. package/dist/others/unknown-to-string.mjs +91 -47
  383. package/dist/others/unknown-to-string.mjs.map +1 -1
  384. package/dist/promise/index.mjs +2 -2
  385. package/dist/promise/index.mjs.map +1 -1
  386. package/dist/promise/promise.mjs +51 -10
  387. package/dist/promise/promise.mjs.map +1 -1
  388. package/dist/string/index.mjs +2 -2
  389. package/dist/string/index.mjs.map +1 -1
  390. package/dist/string/str.mjs +250 -83
  391. package/dist/string/str.mjs.map +1 -1
  392. package/dist/types.mjs +3 -2
  393. package/dist/types.mjs.map +1 -1
  394. package/package.json +5 -6
  395. package/src/array/impl/array-utils-length-constraint-preservation.test.mts +2 -2
  396. package/src/collections/imap-mapped.mts +4 -4
  397. package/src/collections/imap.mts +1 -1
  398. package/src/collections/imap.test.mts +1 -1
  399. package/src/collections/iset-mapped.mts +2 -1
  400. package/src/collections/iset.mts +1 -1
  401. package/src/functional/async-result.test.mts +3 -2
  402. package/src/functional/optional.test.mts +2 -1
  403. package/src/functional/result.test.mts +0 -2
  404. package/src/guard/is-non-empty-string.test.mts +2 -2
  405. package/src/guard/is-non-null-object.test.mts +3 -3
  406. package/src/guard/is-primitive.test.mts +3 -3
  407. package/src/guard/is-type.test.mts +3 -3
  408. package/src/json/json.test.mts +1 -1
  409. package/src/number/enum/int8.mts +1 -1
@@ -1,156 +1,132 @@
1
- import { none } from '../../functional/optional/impl/optional-none.mjs';
2
- import { some } from '../../functional/optional/impl/optional-some.mjs';
3
- import '@sindresorhus/is';
4
- import { pipe } from '../../functional/pipe.mjs';
5
- import '../../number/branded-types/finite-number.mjs';
6
- import '../../number/branded-types/int.mjs';
7
- import '../../number/branded-types/int16.mjs';
8
- import '../../number/branded-types/int32.mjs';
9
- import '../../number/branded-types/negative-finite-number.mjs';
10
- import '../../number/branded-types/negative-int.mjs';
11
- import '../../number/branded-types/negative-safe-int.mjs';
12
- import '../../number/branded-types/non-negative-finite-number.mjs';
13
- import '../../number/branded-types/non-negative-int16.mjs';
14
- import '../../number/branded-types/non-negative-int32.mjs';
15
- import '../../number/branded-types/non-positive-finite-number.mjs';
16
- import '../../number/branded-types/non-positive-int.mjs';
17
- import '../../number/branded-types/non-positive-safe-int.mjs';
18
- import '../../number/branded-types/non-zero-finite-number.mjs';
19
- import '../../number/branded-types/non-zero-int.mjs';
20
- import '../../number/branded-types/non-zero-int16.mjs';
21
- import '../../number/branded-types/non-zero-int32.mjs';
22
- import '../../number/branded-types/non-zero-safe-int.mjs';
23
- import '../../number/branded-types/non-zero-uint16.mjs';
24
- import '../../number/branded-types/non-zero-uint32.mjs';
25
- import '../../number/branded-types/positive-finite-number.mjs';
26
- import '../../number/branded-types/positive-int.mjs';
27
- import '../../number/branded-types/positive-int16.mjs';
28
- import '../../number/branded-types/positive-int32.mjs';
29
- import '../../number/branded-types/positive-safe-int.mjs';
30
- import '../../number/branded-types/positive-uint16.mjs';
31
- import '../../number/branded-types/positive-uint32.mjs';
32
- import '../../number/branded-types/safe-int.mjs';
33
- import '../../number/branded-types/safe-uint.mjs';
34
- import '../../number/branded-types/uint.mjs';
35
- import '../../number/branded-types/uint16.mjs';
36
- import { asUint32 } from '../../number/branded-types/uint32.mjs';
37
- import '../../number/enum/int8.mjs';
38
- import '../../number/enum/uint8.mjs';
39
- import '../../number/num.mjs';
40
- import '../../number/refined-number-utils.mjs';
41
-
42
- function find(...args) {
43
- switch (args.length) {
44
- case 2:
45
- return findImpl(...args);
46
- case 1:
47
- return (array) => findImpl(array, ...args);
48
- }
1
+
2
+ import { Optional, pipe } from '../../functional/index.mjs';
3
+ import { asUint32 } from '../../number/index.mjs';
4
+ export function find(...args) {
5
+ switch (args.length) {
6
+ case 2:
7
+ return findImpl(...args);
8
+ case 1:
9
+ return (array) => findImpl(array, ...args);
10
+ }
49
11
  }
50
12
  const findImpl = (array, predicate) => {
51
- const foundIndex = array.findIndex(
13
+ const foundIndex = array.findIndex(
52
14
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
53
- predicate
54
- );
55
- return foundIndex === -1 ? none : (
56
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
57
- some(array[foundIndex])
58
- );
15
+ predicate);
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+ return foundIndex === -1
29
+ ? Optional.none
30
+ : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
31
+ Optional.some(array[foundIndex]);
59
32
  };
60
- function findLast(...args) {
61
- switch (args.length) {
62
- case 2:
63
- return findLastImpl(...args);
64
- case 1:
65
- return (array) => findLastImpl(array, ...args);
66
- }
33
+ export function findLast(...args) {
34
+ switch (args.length) {
35
+ case 2:
36
+ return findLastImpl(...args);
37
+ case 1:
38
+ return (array) => findLastImpl(array, ...args);
39
+ }
67
40
  }
68
41
  const findLastImpl = (array, predicate) => {
69
- const foundIndex = array.findLastIndex(
42
+ const foundIndex = array.findLastIndex(
70
43
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
71
- predicate
72
- );
73
- return foundIndex === -1 ? none : (
74
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
75
- some(array[foundIndex])
76
- );
44
+ predicate);
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+ return foundIndex === -1
58
+ ? Optional.none
59
+ : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
60
+ Optional.some(array[foundIndex]);
77
61
  };
78
- function findIndex(...args) {
79
- switch (args.length) {
80
- case 2:
81
- return findIndexImpl(...args);
82
- case 1:
83
- return (array) => findIndexImpl(array, ...args);
84
- }
62
+ export function findIndex(...args) {
63
+ switch (args.length) {
64
+ case 2:
65
+ return findIndexImpl(...args);
66
+ case 1:
67
+ return (array) => findIndexImpl(array, ...args);
68
+ }
85
69
  }
86
- const findIndexImpl = (array, predicate) => pipe(
87
- array.findIndex(
88
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
89
- predicate
90
- )
91
- ).map((idx) => idx >= 0 ? asUint32(idx) : -1).value;
92
- function findLastIndex(...args) {
93
- switch (args.length) {
94
- case 2:
95
- return findLastIndexImpl(...args);
96
- case 1:
97
- return (array) => findLastIndexImpl(array, ...args);
98
- }
70
+ const findIndexImpl = (array, predicate) => pipe(array.findIndex(
71
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
72
+ predicate)).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;
73
+ export function findLastIndex(...args) {
74
+ switch (args.length) {
75
+ case 2:
76
+ return findLastIndexImpl(...args);
77
+ case 1:
78
+ return (array) => findLastIndexImpl(array, ...args);
79
+ }
99
80
  }
100
- const findLastIndexImpl = (array, predicate) => pipe(
101
- array.findLastIndex(
102
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
103
- predicate
104
- )
105
- ).map((idx) => idx >= 0 ? asUint32(idx) : -1).value;
106
- function indexOf(...args) {
107
- switch (args.length) {
108
- case 2:
109
- return indexOfImpl(...args);
110
- case 1:
111
- return (array) => indexOfImpl(array, ...args);
112
- }
81
+ const findLastIndexImpl = (array, predicate) => pipe(array.findLastIndex(
82
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
83
+ predicate)).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;
84
+ export function indexOf(...args) {
85
+ switch (args.length) {
86
+ case 2:
87
+ return indexOfImpl(...args);
88
+ case 1:
89
+ return (array) => indexOfImpl(array, ...args);
90
+ }
113
91
  }
114
92
  const indexOfImpl = (array, searchElement) => {
115
- const index = array.indexOf(searchElement);
116
- return index !== -1 ? asUint32(index) : -1;
93
+ const index = array.indexOf(searchElement);
94
+ return index !== -1 ? asUint32(index) : -1;
117
95
  };
118
- function indexOfFrom(...args) {
119
- switch (args.length) {
120
- case 3:
121
- return indexOfFromImpl(...args);
122
- case 2:
123
- return (array) => indexOfFromImpl(array, ...args);
124
- }
96
+ export function indexOfFrom(...args) {
97
+ switch (args.length) {
98
+ case 3:
99
+ return indexOfFromImpl(...args);
100
+ case 2:
101
+ return (array) => indexOfFromImpl(array, ...args);
102
+ }
125
103
  }
126
104
  const indexOfFromImpl = (array, searchElement, fromIndex) => {
127
- const index = array.indexOf(searchElement, fromIndex);
128
- return index !== -1 ? asUint32(index) : -1;
105
+ const index = array.indexOf(searchElement, fromIndex);
106
+ return index !== -1 ? asUint32(index) : -1;
129
107
  };
130
- function lastIndexOf(...args) {
131
- switch (args.length) {
132
- case 2:
133
- return lastIndexOfImpl(...args);
134
- case 1:
135
- return (array) => lastIndexOfImpl(array, ...args);
136
- }
108
+ export function lastIndexOf(...args) {
109
+ switch (args.length) {
110
+ case 2:
111
+ return lastIndexOfImpl(...args);
112
+ case 1:
113
+ return (array) => lastIndexOfImpl(array, ...args);
114
+ }
137
115
  }
138
116
  const lastIndexOfImpl = (array, searchElement) => {
139
- const index = array.lastIndexOf(searchElement);
140
- return index !== -1 ? asUint32(index) : -1;
117
+ const index = array.lastIndexOf(searchElement);
118
+ return index !== -1 ? asUint32(index) : -1;
141
119
  };
142
- function lastIndexOfFrom(...args) {
143
- switch (args.length) {
144
- case 3:
145
- return lastIndexOfFromImpl(...args);
146
- case 2:
147
- return (array) => lastIndexOfFromImpl(array, ...args);
148
- }
120
+ export function lastIndexOfFrom(...args) {
121
+ switch (args.length) {
122
+ case 3:
123
+ return lastIndexOfFromImpl(...args);
124
+ case 2:
125
+ return (array) => lastIndexOfFromImpl(array, ...args);
126
+ }
149
127
  }
150
128
  const lastIndexOfFromImpl = (array, searchElement, fromIndex) => {
151
- const index = array.lastIndexOf(searchElement, fromIndex);
152
- return index !== -1 ? asUint32(index) : -1;
129
+ const index = array.lastIndexOf(searchElement, fromIndex);
130
+ return index !== -1 ? asUint32(index) : -1;
153
131
  };
154
-
155
- export { find, findIndex, findLast, findLastIndex, indexOf, indexOfFrom, lastIndexOf, lastIndexOfFrom };
156
- //# sourceMappingURL=array-utils-search.mjs.map
132
+ //# sourceMappingURL=array-utils-search.mjs.map
@@ -1 +1 @@
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 return findImpl(...args);\n\n case 1:\n return (array) => findImpl(array, ...args);\n }\n}\n\nconst findImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): Optional<E> => {\n const foundIndex = array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n // Left as a comment rather than asserted. This pinned the shape of the\n // standard library's `findIndex`, and the shape differs between the stock\n // library and the strict one — `(value, index, obj: this) => boolean` there\n // against `(value, index, arr: readonly E[]) => unknown` here. `src` ships\n // to consumers so that \"Go to Definition\" reaches it, so an assertion that\n // only holds under one of them shows up as an error in their editor.\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/**\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 return findLastImpl(...args);\n\n case 1:\n return (array) => findLastImpl(array, ...args);\n }\n}\n\nconst findLastImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): Optional<E> => {\n const foundIndex = array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n // Left as a comment rather than asserted. This pinned the shape of the\n // standard library's `findIndex`, and the shape differs between the stock\n // library and the strict one — `(value, index, obj: this) => boolean` there\n // against `(value, index, arr: readonly E[]) => unknown` here. `src` ships\n // to consumers so that \"Go to Definition\" reaches it, so an assertion that\n // only holds under one of them shows up as an error in their editor.\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/**\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 return findIndexImpl(...args);\n\n case 1:\n return (array) => findIndexImpl(array, ...args);\n }\n}\n\nconst findIndexImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): SizeType.Arr | -1 =>\n 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 * 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 return findLastIndexImpl(...args);\n\n case 1:\n return (array) => findLastIndexImpl(array, ...args);\n }\n}\n\nconst findLastIndexImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): SizeType.Arr | -1 =>\n 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 * 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 return indexOfImpl(...args);\n\n case 1:\n return (array) => indexOfImpl(array, ...args);\n }\n}\n\nconst indexOfImpl = <E,>(\n array: readonly E[],\n searchElement: E,\n): SizeType.Arr | -1 => {\n const index = array.indexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\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 return indexOfFromImpl(...args);\n\n case 2:\n return (array) => indexOfFromImpl(array, ...args);\n }\n}\n\nconst indexOfFromImpl = <E,>(\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): SizeType.Arr | -1 => {\n const index = array.indexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\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 return lastIndexOfImpl(...args);\n\n case 1:\n return (array) => lastIndexOfImpl(array, ...args);\n }\n}\n\nconst lastIndexOfImpl = <E,>(\n array: readonly E[],\n searchElement: E,\n): SizeType.Arr | -1 => {\n const index = array.lastIndexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\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 return lastIndexOfFromImpl(...args);\n\n case 2:\n return (array) => lastIndexOfFromImpl(array, ...args);\n }\n}\n\nconst lastIndexOfFromImpl = <E,>(\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): SizeType.Arr | -1 => {\n const index = array.lastIndexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n};\n"],"names":["Optional.none","Optional.some"],"mappings":"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"}
1
+ {"version":3,"file":"array-utils-search.mjs","sourceRoot":"","sources":["../../../src/array/impl/array-utils-search.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AA2ClD,MAAM,UAAU,IAAI,CAClB,GAAG,IAeE;IAEL,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QAE3B,KAAK,CAAC;YACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAG,CACf,KAAmB,EACnB,SAAwE,EAC3D,EAAE;IACf,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS;IAChC,oEAAoE;IACpE,SAA0B,CAC3B,CAAC;IAEF,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,qEAAqE;IACrE,EAAE;IACF,cAAc;IACd,2CAA2C;IAC3C,4DAA4D;IAC5D,UAAU;IAEV,UAAU,CAGR,GAAG,CAAC,CAAC;IAEP,OAAO,UAAU,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,IAAI;QACf,CAAC,CAAC,oEAAoE;YACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAE,CAAC,CAAC;AACxC,CAAC,CAAC;AAiCF,MAAM,UAAU,QAAQ,CACtB,GAAG,IAeE;IAEL,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;QAE/B,KAAK,CAAC;YACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CACnB,KAAmB,EACnB,SAAwE,EAC3D,EAAE;IACf,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa;IACpC,oEAAoE;IACpE,SAA0B,CAC3B,CAAC;IAEF,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,qEAAqE;IACrE,EAAE;IACF,cAAc;IACd,2CAA2C;IAC3C,4DAA4D;IAC5D,UAAU;IAEV,UAAU,CAGR,GAAG,CAAC,CAAC;IAEP,OAAO,UAAU,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,IAAI;QACf,CAAC,CAAC,oEAAoE;YACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAE,CAAC,CAAC;AACxC,CAAC,CAAC;AA8BF,MAAM,UAAU,SAAS,CACvB,GAAG,IAeE;IAEL,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC;QAEhC,KAAK,CAAC;YACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAG,CACpB,KAAmB,EACnB,SAAwE,EACrD,EAAE,CACrB,IAAI,CACF,KAAK,CAAC,SAAS;AACb,oEAAoE;AACpE,SAAiD,CAClD,CACF,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AA8BxD,MAAM,UAAU,aAAa,CAC3B,GAAG,IAeE;IAEL,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;QAEpC,KAAK,CAAC;YACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB,GAAG,CACxB,KAAmB,EACnB,SAAwE,EACrD,EAAE,CACrB,IAAI,CACF,KAAK,CAAC,aAAa;AACjB,oEAAoE;AACpE,SAAiD,CAClD,CACF,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAmCxD,MAAM,UAAU,OAAO,CACrB,GAAG,IAE4B;IAE/B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;QAE9B,KAAK,CAAC;YACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,CAClB,KAAmB,EACnB,aAAgB,EACG,EAAE;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE3C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AA4CF,MAAM,UAAU,WAAW,CACzB,GAAG,IAMoE;IAEvE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;QAElC,KAAK,CAAC;YACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,CACtB,KAAmB,EACnB,aAAgB,EAChB,SAAsC,EACnB,EAAE;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEtD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AAuCF,MAAM,UAAU,WAAW,CACzB,GAAG,IAE4B;IAE/B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;QAElC,KAAK,CAAC;YACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,CACtB,KAAmB,EACnB,aAAgB,EACG,EAAE;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAE/C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AA4CF,MAAM,UAAU,eAAe,CAC7B,GAAG,IAMoE;IAEvE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAC;QAEtC,KAAK,CAAC;YACJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,mBAAmB,GAAG,CAC1B,KAAmB,EACnB,aAAgB,EAChB,SAAsC,EACnB,EAAE;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE1D,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -1,40 +1,148 @@
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]));
3
- const equal = eq;
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
- );
10
- const isSuperset = (array1, array2) => isSubset(array2, array1);
11
- const setIntersection = (array1, array2) => (
12
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
13
- array1.filter((e) => array2.includes(e))
14
- );
15
- const setDifference = (array1, array2) => array1.filter((e) => !array2.includes(e));
16
- const sortedNumSetDifference = (sortedList1, sortedList2) => {
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;
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
+ export 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
+ */
26
+ export 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
+ export 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
+ */
66
+ export 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
+ export 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
+ */
100
+ export 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
+ export 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
+ }
31
140
  }
32
- }
33
- for (; mut_it1 < sortedList1.length; mut_it1 += 1) {
34
- mut_result.push(sortedList1[mut_it1]);
35
- }
36
- return mut_result;
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;
37
147
  };
38
-
39
- export { eq, equal, isSubset, isSuperset, setDifference, setIntersection, sortedNumSetDifference };
40
- //# sourceMappingURL=array-utils-set-op.mjs.map
148
+ //# sourceMappingURL=array-utils-set-op.mjs.map
@@ -1 +1 @@
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
+ {"version":3,"file":"array-utils-set-op.mjs","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAChB,MAAoB,EACpB,MAAoB,EACpB,QAAQ,GAA4B,MAAM,CAAC,EAAE,EACpC,EAAE,CACX,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;IAC/B,oEAAoE;IACpE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,MAAqB,EACrB,MAAqB,EACZ,EAAE,CACX,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;AACjB,oEAAoE;AACpE,MAAM,CAAC,QAAQ,CAAC,CAAY,CAAC,CAC9B,CAAC;AAEJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,MAAqB,EACrB,MAAqB,EACZ,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAI7B,MAAqB,EACrB,MAAqB,EACC,EAAE;AACxB,oEAAoE;AACnE,MAA+B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAAoB,EACpB,MAAoB,EACN,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,WAAyB,EACzB,WAAyB,EACX,EAAE;IAChB,MAAM,UAAU,GAAQ,EAAE,CAAC;IAE3B,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,2BAA2B;IAE5C,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,2BAA2B;IAE5C,OAAO,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACpE,qDAAqD;QACrD,oEAAoE;QACpE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAE,CAAC;QAEnC,oEAAoE;QACpE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,CAAC;YAEb,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtB,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,cAAc;YACd,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,OAAO,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAClD,oEAAoE;QACpE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC"}
@@ -1,8 +1,10 @@
1
- const size = (array) => (
2
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
3
- array.length
4
- );
5
- const length = size;
6
-
7
- export { length, size };
8
- //# sourceMappingURL=array-utils-size.mjs.map
1
+ export 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
+ */
9
+ export const length = size;
10
+ //# sourceMappingURL=array-utils-size.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-size.mjs","sources":["../../../src/array/impl/array-utils-size.mts"],"sourcesContent":["import {\n type IntersectBrand,\n type NonEmptyTuple,\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 NonEmptyTuple<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;;;;"}
1
+ {"version":3,"file":"array-utils-size.mjs","sourceRoot":"","sources":["../../../src/array/impl/array-utils-size.mts"],"names":[],"mappings":"AA0BA,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,KAAS,EAGM,EAAE;AACjB,oEAAoE;AACpE,KAAK,CAAC,MAAe,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC"}
@@ -1,53 +1,16 @@
1
- import '../../number/branded-types/finite-number.mjs';
2
- import '../../number/branded-types/int.mjs';
3
- import '../../number/branded-types/int16.mjs';
4
- import '../../number/branded-types/int32.mjs';
5
- import '../../number/branded-types/negative-finite-number.mjs';
6
- import '../../number/branded-types/negative-int.mjs';
7
- import '../../number/branded-types/negative-safe-int.mjs';
8
- import '../../number/branded-types/non-negative-finite-number.mjs';
9
- import '../../number/branded-types/non-negative-int16.mjs';
10
- import '../../number/branded-types/non-negative-int32.mjs';
11
- import '../../number/branded-types/non-positive-finite-number.mjs';
12
- import '../../number/branded-types/non-positive-int.mjs';
13
- import '../../number/branded-types/non-positive-safe-int.mjs';
14
- import '../../number/branded-types/non-zero-finite-number.mjs';
15
- import '../../number/branded-types/non-zero-int.mjs';
16
- import '../../number/branded-types/non-zero-int16.mjs';
17
- import '../../number/branded-types/non-zero-int32.mjs';
18
- import '../../number/branded-types/non-zero-safe-int.mjs';
19
- import '../../number/branded-types/non-zero-uint16.mjs';
20
- import '../../number/branded-types/non-zero-uint32.mjs';
21
- import '../../number/branded-types/positive-finite-number.mjs';
22
- import '../../number/branded-types/positive-int.mjs';
23
- import '../../number/branded-types/positive-int16.mjs';
24
- import '../../number/branded-types/positive-int32.mjs';
25
- import '../../number/branded-types/positive-safe-int.mjs';
26
- import '../../number/branded-types/positive-uint16.mjs';
27
- import '../../number/branded-types/positive-uint32.mjs';
28
- import '../../number/branded-types/safe-int.mjs';
29
- import '../../number/branded-types/safe-uint.mjs';
30
- import '../../number/branded-types/uint.mjs';
31
- import '../../number/branded-types/uint16.mjs';
32
- import '../../number/branded-types/uint32.mjs';
33
- import '../../number/enum/int8.mjs';
34
- import '../../number/enum/uint8.mjs';
35
- import { Num } from '../../number/num.mjs';
36
- import '../../number/refined-number-utils.mjs';
37
-
38
- function sliceClamped(...args) {
39
- switch (args.length) {
40
- case 3:
41
- return sliceClampedImpl(...args);
42
- case 2:
43
- return (array) => sliceClampedImpl(array, ...args);
44
- }
1
+ import { Num } from '../../number/index.mjs';
2
+ export function sliceClamped(...args) {
3
+ switch (args.length) {
4
+ case 3:
5
+ return sliceClampedImpl(...args);
6
+ case 2:
7
+ return (array) => sliceClampedImpl(array, ...args);
8
+ }
45
9
  }
46
10
  const sliceClampedImpl = (array, start, end) => {
47
- const startClamped = Num.clamp(0, array.length)(start);
48
- const endClamped = Num.clamp(startClamped, array.length)(end);
49
- return array.slice(startClamped, endClamped);
11
+ const startClamped = Num.clamp(0, array.length)(start);
12
+ // Ensure endClamped is not less than startClamped.
13
+ const endClamped = Num.clamp(startClamped, array.length)(end);
14
+ return array.slice(startClamped, endClamped);
50
15
  };
51
-
52
- export { sliceClamped };
53
- //# sourceMappingURL=array-utils-slice-clamped.mjs.map
16
+ //# sourceMappingURL=array-utils-slice-clamped.mjs.map