ts-data-forge 3.2.0 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/README.md +45 -21
  2. package/dist/array/impl/array-utils-creation.d.mts +116 -0
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
  4. package/dist/array/impl/array-utils-creation.mjs +110 -0
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -0
  6. package/dist/array/impl/array-utils-element-access.d.mts +61 -0
  7. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
  8. package/dist/array/impl/array-utils-element-access.mjs +66 -0
  9. package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
  10. package/dist/array/impl/array-utils-iterators.d.mts +59 -0
  11. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
  12. package/dist/array/impl/array-utils-iterators.mjs +104 -0
  13. package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
  14. package/dist/array/impl/array-utils-modification.d.mts +154 -0
  15. package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
  16. package/dist/array/impl/array-utils-modification.mjs +139 -0
  17. package/dist/array/impl/array-utils-modification.mjs.map +1 -0
  18. package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
  19. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
  20. package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
  21. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
  22. package/dist/array/impl/array-utils-search.d.mts +179 -0
  23. package/dist/array/impl/array-utils-search.d.mts.map +1 -0
  24. package/dist/array/impl/array-utils-search.mjs +153 -0
  25. package/dist/array/impl/array-utils-search.mjs.map +1 -0
  26. package/dist/array/impl/array-utils-set-op.d.mts +100 -0
  27. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
  28. package/dist/array/impl/array-utils-set-op.mjs +137 -0
  29. package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
  30. package/dist/array/impl/array-utils-size.d.mts +24 -0
  31. package/dist/array/impl/array-utils-size.d.mts.map +1 -0
  32. package/dist/array/impl/array-utils-size.mjs +28 -0
  33. package/dist/array/impl/array-utils-size.mjs.map +1 -0
  34. package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
  35. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
  36. package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
  37. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
  38. package/dist/array/impl/array-utils-slicing.d.mts +120 -0
  39. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
  40. package/dist/array/impl/array-utils-slicing.mjs +140 -0
  41. package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
  42. package/dist/array/impl/array-utils-transformation.d.mts +348 -0
  43. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
  44. package/dist/array/impl/array-utils-transformation.mjs +331 -0
  45. package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
  46. package/dist/array/impl/array-utils-validation.d.mts +149 -0
  47. package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
  48. package/dist/array/impl/array-utils-validation.mjs +166 -0
  49. package/dist/array/impl/array-utils-validation.mjs.map +1 -0
  50. package/dist/array/impl/index.d.mts +13 -0
  51. package/dist/array/impl/index.d.mts.map +1 -0
  52. package/dist/array/impl/index.mjs +13 -0
  53. package/dist/array/impl/index.mjs.map +1 -0
  54. package/dist/array/index.d.mts +1 -1
  55. package/dist/array/index.d.mts.map +1 -1
  56. package/dist/array/index.mjs +2 -1
  57. package/dist/array/index.mjs.map +1 -1
  58. package/dist/collections/imap-mapped.d.mts +83 -253
  59. package/dist/collections/imap-mapped.d.mts.map +1 -1
  60. package/dist/collections/imap-mapped.mjs +33 -164
  61. package/dist/collections/imap-mapped.mjs.map +1 -1
  62. package/dist/collections/imap.d.mts +436 -163
  63. package/dist/collections/imap.d.mts.map +1 -1
  64. package/dist/collections/imap.mjs +74 -94
  65. package/dist/collections/imap.mjs.map +1 -1
  66. package/dist/collections/iset-mapped.d.mts +828 -345
  67. package/dist/collections/iset-mapped.d.mts.map +1 -1
  68. package/dist/collections/iset-mapped.mjs +200 -242
  69. package/dist/collections/iset-mapped.mjs.map +1 -1
  70. package/dist/collections/iset.d.mts +397 -205
  71. package/dist/collections/iset.d.mts.map +1 -1
  72. package/dist/collections/iset.mjs +102 -184
  73. package/dist/collections/iset.mjs.map +1 -1
  74. package/dist/collections/queue.d.mts +155 -135
  75. package/dist/collections/queue.d.mts.map +1 -1
  76. package/dist/collections/queue.mjs +55 -156
  77. package/dist/collections/queue.mjs.map +1 -1
  78. package/dist/collections/stack.d.mts +154 -154
  79. package/dist/collections/stack.d.mts.map +1 -1
  80. package/dist/collections/stack.mjs +54 -203
  81. package/dist/collections/stack.mjs.map +1 -1
  82. package/dist/entry-point.d.mts +3 -0
  83. package/dist/entry-point.d.mts.map +1 -0
  84. package/dist/entry-point.mjs +62 -0
  85. package/dist/entry-point.mjs.map +1 -0
  86. package/dist/expect-type.d.mts +43 -172
  87. package/dist/expect-type.d.mts.map +1 -1
  88. package/dist/expect-type.mjs +43 -172
  89. package/dist/expect-type.mjs.map +1 -1
  90. package/dist/functional/match.d.mts +35 -140
  91. package/dist/functional/match.d.mts.map +1 -1
  92. package/dist/functional/match.mjs.map +1 -1
  93. package/dist/functional/optional.d.mts +282 -160
  94. package/dist/functional/optional.d.mts.map +1 -1
  95. package/dist/functional/optional.mjs +131 -71
  96. package/dist/functional/optional.mjs.map +1 -1
  97. package/dist/functional/pipe.d.mts +59 -113
  98. package/dist/functional/pipe.d.mts.map +1 -1
  99. package/dist/functional/pipe.mjs.map +1 -1
  100. package/dist/functional/result.d.mts +433 -332
  101. package/dist/functional/result.d.mts.map +1 -1
  102. package/dist/functional/result.mjs +233 -239
  103. package/dist/functional/result.mjs.map +1 -1
  104. package/dist/globals.d.mts +12 -5
  105. package/dist/guard/has-key.d.mts +23 -74
  106. package/dist/guard/has-key.d.mts.map +1 -1
  107. package/dist/guard/has-key.mjs +23 -74
  108. package/dist/guard/has-key.mjs.map +1 -1
  109. package/dist/guard/is-non-empty-string.d.mts +20 -87
  110. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  111. package/dist/guard/is-non-empty-string.mjs +20 -87
  112. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  113. package/dist/guard/is-non-null-object.d.mts +14 -84
  114. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  115. package/dist/guard/is-non-null-object.mjs +14 -84
  116. package/dist/guard/is-non-null-object.mjs.map +1 -1
  117. package/dist/guard/is-primitive.d.mts +13 -126
  118. package/dist/guard/is-primitive.d.mts.map +1 -1
  119. package/dist/guard/is-primitive.mjs +13 -126
  120. package/dist/guard/is-primitive.mjs.map +1 -1
  121. package/dist/guard/is-record.d.mts +21 -132
  122. package/dist/guard/is-record.d.mts.map +1 -1
  123. package/dist/guard/is-record.mjs +21 -132
  124. package/dist/guard/is-record.mjs.map +1 -1
  125. package/dist/guard/is-type.d.mts +201 -238
  126. package/dist/guard/is-type.d.mts.map +1 -1
  127. package/dist/guard/is-type.mjs +201 -238
  128. package/dist/guard/is-type.mjs.map +1 -1
  129. package/dist/guard/key-is-in.d.mts +22 -139
  130. package/dist/guard/key-is-in.d.mts.map +1 -1
  131. package/dist/guard/key-is-in.mjs +22 -139
  132. package/dist/guard/key-is-in.mjs.map +1 -1
  133. package/dist/index.d.mts +0 -1
  134. package/dist/index.d.mts.map +1 -1
  135. package/dist/index.mjs +0 -1
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/iterator/range.d.mts +29 -62
  138. package/dist/iterator/range.d.mts.map +1 -1
  139. package/dist/iterator/range.mjs.map +1 -1
  140. package/dist/json/json.d.mts +191 -121
  141. package/dist/json/json.d.mts.map +1 -1
  142. package/dist/json/json.mjs +238 -136
  143. package/dist/json/json.mjs.map +1 -1
  144. package/dist/number/branded-types/finite-number.d.mts +24 -156
  145. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  146. package/dist/number/branded-types/finite-number.mjs +27 -159
  147. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  148. package/dist/number/branded-types/int.d.mts +122 -120
  149. package/dist/number/branded-types/int.d.mts.map +1 -1
  150. package/dist/number/branded-types/int.mjs +122 -120
  151. package/dist/number/branded-types/int.mjs.map +1 -1
  152. package/dist/number/branded-types/int16.d.mts +22 -30
  153. package/dist/number/branded-types/int16.d.mts.map +1 -1
  154. package/dist/number/branded-types/int16.mjs +22 -30
  155. package/dist/number/branded-types/int16.mjs.map +1 -1
  156. package/dist/number/branded-types/int32.d.mts +22 -31
  157. package/dist/number/branded-types/int32.d.mts.map +1 -1
  158. package/dist/number/branded-types/int32.mjs +22 -31
  159. package/dist/number/branded-types/int32.mjs.map +1 -1
  160. package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
  161. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  162. package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
  163. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  164. package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
  165. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  166. package/dist/number/branded-types/non-negative-int16.mjs +24 -34
  167. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  168. package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
  169. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  170. package/dist/number/branded-types/non-negative-int32.mjs +26 -35
  171. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  172. package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
  173. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  174. package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
  175. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  176. package/dist/number/branded-types/non-zero-int.d.mts +15 -30
  177. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  178. package/dist/number/branded-types/non-zero-int.mjs +15 -30
  179. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  180. package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
  181. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  182. package/dist/number/branded-types/non-zero-int16.mjs +27 -35
  183. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  184. package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
  185. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  186. package/dist/number/branded-types/non-zero-int32.mjs +29 -36
  187. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  188. package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
  189. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  190. package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
  191. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  192. package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
  193. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  194. package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
  195. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  196. package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
  197. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  198. package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
  199. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  200. package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
  201. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  202. package/dist/number/branded-types/positive-finite-number.mjs +29 -43
  203. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  204. package/dist/number/branded-types/positive-int.d.mts +133 -123
  205. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  206. package/dist/number/branded-types/positive-int.mjs +133 -123
  207. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  208. package/dist/number/branded-types/positive-int16.d.mts +24 -35
  209. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  210. package/dist/number/branded-types/positive-int16.mjs +24 -35
  211. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  212. package/dist/number/branded-types/positive-int32.d.mts +24 -35
  213. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  214. package/dist/number/branded-types/positive-int32.mjs +24 -35
  215. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  216. package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
  217. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  218. package/dist/number/branded-types/positive-safe-int.mjs +160 -34
  219. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  220. package/dist/number/branded-types/positive-uint16.d.mts +24 -35
  221. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  222. package/dist/number/branded-types/positive-uint16.mjs +24 -35
  223. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  224. package/dist/number/branded-types/positive-uint32.d.mts +26 -36
  225. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  226. package/dist/number/branded-types/positive-uint32.mjs +26 -36
  227. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  228. package/dist/number/branded-types/safe-int.d.mts +140 -99
  229. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  230. package/dist/number/branded-types/safe-int.mjs +142 -101
  231. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  232. package/dist/number/branded-types/safe-uint.d.mts +24 -33
  233. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  234. package/dist/number/branded-types/safe-uint.mjs +25 -34
  235. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  236. package/dist/number/branded-types/uint.d.mts +121 -30
  237. package/dist/number/branded-types/uint.d.mts.map +1 -1
  238. package/dist/number/branded-types/uint.mjs +121 -30
  239. package/dist/number/branded-types/uint.mjs.map +1 -1
  240. package/dist/number/branded-types/uint16.d.mts +26 -34
  241. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  242. package/dist/number/branded-types/uint16.mjs +26 -34
  243. package/dist/number/branded-types/uint16.mjs.map +1 -1
  244. package/dist/number/branded-types/uint32.d.mts +26 -68
  245. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  246. package/dist/number/branded-types/uint32.mjs +26 -68
  247. package/dist/number/branded-types/uint32.mjs.map +1 -1
  248. package/dist/number/enum/int8.d.mts +37 -101
  249. package/dist/number/enum/int8.d.mts.map +1 -1
  250. package/dist/number/enum/int8.mjs +39 -170
  251. package/dist/number/enum/int8.mjs.map +1 -1
  252. package/dist/number/enum/uint8.d.mts +45 -55
  253. package/dist/number/enum/uint8.d.mts.map +1 -1
  254. package/dist/number/enum/uint8.mjs +46 -155
  255. package/dist/number/enum/uint8.mjs.map +1 -1
  256. package/dist/number/num.d.mts +145 -206
  257. package/dist/number/num.d.mts.map +1 -1
  258. package/dist/number/num.mjs +143 -199
  259. package/dist/number/num.mjs.map +1 -1
  260. package/dist/number/refined-number-utils.d.mts +97 -21
  261. package/dist/number/refined-number-utils.d.mts.map +1 -1
  262. package/dist/number/refined-number-utils.mjs +91 -20
  263. package/dist/number/refined-number-utils.mjs.map +1 -1
  264. package/dist/object/object.d.mts +126 -208
  265. package/dist/object/object.d.mts.map +1 -1
  266. package/dist/object/object.mjs +68 -102
  267. package/dist/object/object.mjs.map +1 -1
  268. package/dist/others/cast-mutable.d.mts +12 -88
  269. package/dist/others/cast-mutable.d.mts.map +1 -1
  270. package/dist/others/cast-mutable.mjs +13 -89
  271. package/dist/others/cast-mutable.mjs.map +1 -1
  272. package/dist/others/cast-readonly.d.mts +12 -168
  273. package/dist/others/cast-readonly.d.mts.map +1 -1
  274. package/dist/others/cast-readonly.mjs +13 -169
  275. package/dist/others/cast-readonly.mjs.map +1 -1
  276. package/dist/others/if-then.d.mts +6 -83
  277. package/dist/others/if-then.d.mts.map +1 -1
  278. package/dist/others/if-then.mjs +6 -83
  279. package/dist/others/if-then.mjs.map +1 -1
  280. package/dist/others/map-nullable.d.mts +12 -136
  281. package/dist/others/map-nullable.d.mts.map +1 -1
  282. package/dist/others/map-nullable.mjs.map +1 -1
  283. package/dist/others/memoize-function.d.mts +14 -157
  284. package/dist/others/memoize-function.d.mts.map +1 -1
  285. package/dist/others/memoize-function.mjs +14 -157
  286. package/dist/others/memoize-function.mjs.map +1 -1
  287. package/dist/others/tuple.d.mts +33 -151
  288. package/dist/others/tuple.d.mts.map +1 -1
  289. package/dist/others/tuple.mjs +33 -151
  290. package/dist/others/tuple.mjs.map +1 -1
  291. package/dist/others/unknown-to-string.d.mts +11 -125
  292. package/dist/others/unknown-to-string.d.mts.map +1 -1
  293. package/dist/others/unknown-to-string.mjs +14 -127
  294. package/dist/others/unknown-to-string.mjs.map +1 -1
  295. package/dist/promise/promise.d.mts +33 -20
  296. package/dist/promise/promise.d.mts.map +1 -1
  297. package/dist/promise/promise.mjs +34 -21
  298. package/dist/promise/promise.mjs.map +1 -1
  299. package/dist/types.d.mts +1 -1
  300. package/package.json +54 -50
  301. package/src/array/impl/array-utils-creation.mts +192 -0
  302. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  303. package/src/array/impl/array-utils-element-access.mts +115 -0
  304. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  305. package/src/array/impl/array-utils-iterators.mts +79 -0
  306. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  307. package/src/array/impl/array-utils-modification.mts +434 -0
  308. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  309. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  310. package/src/array/impl/array-utils-reducing-value.mts +551 -0
  311. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
  312. package/src/array/impl/array-utils-search.mts +509 -0
  313. package/src/array/impl/array-utils-search.test.mts +346 -0
  314. package/src/array/impl/array-utils-set-op.mts +166 -0
  315. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  316. package/src/array/impl/array-utils-size.mts +30 -0
  317. package/src/array/impl/array-utils-size.test.mts +9 -0
  318. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  319. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
  320. package/src/array/impl/array-utils-slicing.mts +275 -0
  321. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  322. package/src/array/impl/array-utils-transformation.mts +746 -0
  323. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  324. package/src/array/impl/array-utils-validation.mts +241 -0
  325. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  326. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  327. package/src/array/impl/index.mts +12 -0
  328. package/src/array/index.mts +1 -1
  329. package/src/collections/imap-mapped.mts +99 -265
  330. package/src/collections/imap.mts +477 -174
  331. package/src/collections/imap.test.mts +12 -19
  332. package/src/collections/iset-mapped.mts +892 -358
  333. package/src/collections/iset.mts +429 -213
  334. package/src/collections/queue.mts +174 -200
  335. package/src/collections/stack.mts +172 -245
  336. package/src/collections/stack.test.mts +9 -1
  337. package/src/entry-point.mts +2 -0
  338. package/src/expect-type.mts +43 -172
  339. package/src/functional/match.mts +35 -145
  340. package/src/functional/optional.mts +285 -163
  341. package/src/functional/optional.test.mts +4 -1
  342. package/src/functional/pipe.mts +60 -113
  343. package/src/functional/result.mts +452 -351
  344. package/src/functional/result.test.mts +9 -2
  345. package/src/globals.d.mts +12 -5
  346. package/src/guard/has-key.mts +23 -74
  347. package/src/guard/is-non-empty-string.mts +20 -87
  348. package/src/guard/is-non-null-object.mts +14 -84
  349. package/src/guard/is-non-null-object.test.mts +1 -1
  350. package/src/guard/is-primitive.mts +13 -126
  351. package/src/guard/is-primitive.test.mts +1 -1
  352. package/src/guard/is-record.mts +21 -132
  353. package/src/guard/is-record.test.mts +0 -1
  354. package/src/guard/is-type.mts +201 -238
  355. package/src/guard/is-type.test.mts +7 -7
  356. package/src/guard/key-is-in.mts +22 -139
  357. package/src/index.mts +0 -1
  358. package/src/iterator/range.mts +29 -62
  359. package/src/json/json.mts +202 -134
  360. package/src/json/json.test.mts +1 -3
  361. package/src/number/branded-types/finite-number.mts +27 -159
  362. package/src/number/branded-types/int.mts +122 -120
  363. package/src/number/branded-types/int16.mts +22 -30
  364. package/src/number/branded-types/int16.test.mts +24 -24
  365. package/src/number/branded-types/int32.mts +22 -31
  366. package/src/number/branded-types/int32.test.mts +39 -39
  367. package/src/number/branded-types/non-negative-finite-number.mts +31 -39
  368. package/src/number/branded-types/non-negative-int16.mts +24 -34
  369. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  370. package/src/number/branded-types/non-negative-int32.mts +26 -35
  371. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  372. package/src/number/branded-types/non-zero-finite-number.mts +25 -40
  373. package/src/number/branded-types/non-zero-int.mts +15 -30
  374. package/src/number/branded-types/non-zero-int16.mts +27 -35
  375. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  376. package/src/number/branded-types/non-zero-int32.mts +29 -36
  377. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  378. package/src/number/branded-types/non-zero-safe-int.mts +39 -40
  379. package/src/number/branded-types/non-zero-uint16.mts +24 -35
  380. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  381. package/src/number/branded-types/non-zero-uint32.mts +24 -35
  382. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  383. package/src/number/branded-types/positive-finite-number.mts +29 -43
  384. package/src/number/branded-types/positive-int.mts +134 -124
  385. package/src/number/branded-types/positive-int16.mts +24 -35
  386. package/src/number/branded-types/positive-int16.test.mts +14 -14
  387. package/src/number/branded-types/positive-int32.mts +24 -35
  388. package/src/number/branded-types/positive-int32.test.mts +26 -26
  389. package/src/number/branded-types/positive-safe-int.mts +160 -34
  390. package/src/number/branded-types/positive-uint16.mts +24 -35
  391. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  392. package/src/number/branded-types/positive-uint32.mts +26 -36
  393. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  394. package/src/number/branded-types/safe-int.mts +142 -101
  395. package/src/number/branded-types/safe-uint.mts +25 -34
  396. package/src/number/branded-types/uint.mts +121 -30
  397. package/src/number/branded-types/uint16.mts +26 -34
  398. package/src/number/branded-types/uint16.test.mts +16 -16
  399. package/src/number/branded-types/uint32.mts +26 -68
  400. package/src/number/branded-types/uint32.test.mts +28 -28
  401. package/src/number/enum/int8.mts +39 -170
  402. package/src/number/enum/uint8.mts +46 -155
  403. package/src/number/num.mts +157 -212
  404. package/src/number/num.test.mts +4 -4
  405. package/src/number/refined-number-utils.mts +109 -26
  406. package/src/object/object.mts +130 -212
  407. package/src/object/object.test.mts +29 -0
  408. package/src/others/cast-mutable.mts +13 -89
  409. package/src/others/cast-mutable.test.mts +80 -0
  410. package/src/others/cast-readonly.mts +13 -169
  411. package/src/others/if-then.mts +6 -83
  412. package/src/others/map-nullable.mts +12 -136
  413. package/src/others/map-nullable.test.mts +6 -6
  414. package/src/others/memoize-function.mts +14 -157
  415. package/src/others/tuple.mts +33 -151
  416. package/src/others/unknown-to-string.mts +15 -127
  417. package/src/others/unknown-to-string.test.mts +14 -2
  418. package/src/promise/promise.mts +34 -21
  419. package/src/promise/promise.test.mts +43 -0
  420. package/dist/array/array-utils.d.mts +0 -2956
  421. package/dist/array/array-utils.d.mts.map +0 -1
  422. package/dist/array/array-utils.mjs +0 -1838
  423. package/dist/array/array-utils.mjs.map +0 -1
  424. package/src/array/array-utils-search.test.mts +0 -169
  425. package/src/array/array-utils-slicing.test.mts +0 -274
  426. package/src/array/array-utils.mts +0 -4834
@@ -0,0 +1,160 @@
1
+ import '../../collections/imap-mapped.mjs';
2
+ import { IMap } from '../../collections/imap.mjs';
3
+ import '../../collections/iset-mapped.mjs';
4
+ import '../../collections/iset.mjs';
5
+ import { isString, isUndefined } from '../../guard/is-type.mjs';
6
+ import { Optional } from '../../functional/optional.mjs';
7
+ import { Result } from '../../functional/result.mjs';
8
+ import '../../number/branded-types/finite-number.mjs';
9
+ import '../../number/branded-types/int.mjs';
10
+ import '../../number/branded-types/int16.mjs';
11
+ import '../../number/branded-types/int32.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-zero-finite-number.mjs';
16
+ import '../../number/branded-types/non-zero-int.mjs';
17
+ import '../../number/branded-types/non-zero-int16.mjs';
18
+ import '../../number/branded-types/non-zero-int32.mjs';
19
+ import '../../number/branded-types/non-zero-safe-int.mjs';
20
+ import '../../number/branded-types/non-zero-uint16.mjs';
21
+ import '../../number/branded-types/non-zero-uint32.mjs';
22
+ import '../../number/branded-types/positive-finite-number.mjs';
23
+ import '../../number/branded-types/positive-int.mjs';
24
+ import '../../number/branded-types/positive-int16.mjs';
25
+ import '../../number/branded-types/positive-int32.mjs';
26
+ import '../../number/branded-types/positive-safe-int.mjs';
27
+ import '../../number/branded-types/positive-uint16.mjs';
28
+ import '../../number/branded-types/positive-uint32.mjs';
29
+ import '../../number/branded-types/safe-int.mjs';
30
+ import '../../number/branded-types/safe-uint.mjs';
31
+ import '../../number/branded-types/uint.mjs';
32
+ import '../../number/branded-types/uint16.mjs';
33
+ import { Uint32, asUint32 } from '../../number/branded-types/uint32.mjs';
34
+ import '../../number/enum/int8.mjs';
35
+ import '../../number/enum/uint8.mjs';
36
+ import { Num } from '../../number/num.mjs';
37
+ import '../../number/refined-number-utils.mjs';
38
+ import { unknownToString } from '../../others/unknown-to-string.mjs';
39
+ import { isNonEmpty } from './array-utils-validation.mjs';
40
+
41
+ function min(array, comparator) {
42
+ if (!isNonEmpty(array)) {
43
+ return Optional.none;
44
+ }
45
+ const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
46
+ return Optional.some(array.reduce((currentMin, curr) => (cmp(curr, currentMin) < 0 ? curr : currentMin), array[0]));
47
+ }
48
+ function max(array, comparator) {
49
+ const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
50
+ // Find max by finding min with an inverted comparator
51
+ return min(array, (x, y) => -cmp(x, y));
52
+ }
53
+ function minBy(array, comparatorValueMapper, comparator) {
54
+ return min(array, (x, y) => comparator === undefined
55
+ ? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y))
56
+ : comparator(comparatorValueMapper(x), comparatorValueMapper(y)));
57
+ }
58
+ function maxBy(array, comparatorValueMapper, comparator) {
59
+ return max(array, (x, y) => comparator === undefined
60
+ ? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y))
61
+ : comparator(comparatorValueMapper(x), comparatorValueMapper(y)));
62
+ }
63
+ function count(...args) {
64
+ switch (args.length) {
65
+ case 2: {
66
+ const [array, predicate] = args;
67
+ return array.reduce((acc, curr, index) => predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc, asUint32(0));
68
+ }
69
+ case 1: {
70
+ const [predicate] = args;
71
+ return (array) => count(array, predicate);
72
+ }
73
+ }
74
+ }
75
+ function countBy(...args) {
76
+ switch (args.length) {
77
+ case 2: {
78
+ const [array, grouper] = args;
79
+ const mut_groups = new Map();
80
+ for (const [index, e] of array.entries()) {
81
+ const key = grouper(e, asUint32(index));
82
+ const curr = mut_groups.get(key) ?? 0;
83
+ mut_groups.set(key, asUint32(curr + 1));
84
+ }
85
+ return IMap.create(mut_groups);
86
+ }
87
+ case 1: {
88
+ const [grouper] = args;
89
+ return (array) => countBy(array, grouper);
90
+ }
91
+ }
92
+ }
93
+ function foldl(...args) {
94
+ switch (args.length) {
95
+ case 3: {
96
+ const [array, callbackfn, initialValue] = args;
97
+ return array.reduce((prev, curr, index) => callbackfn(prev, curr, asUint32(index)), initialValue);
98
+ }
99
+ case 2: {
100
+ const [callbackfn, initialValue] = args;
101
+ return (array) => foldl(array, callbackfn, initialValue);
102
+ }
103
+ }
104
+ }
105
+ function foldr(...args) {
106
+ switch (args.length) {
107
+ case 3: {
108
+ const [array, callbackfn, initialValue] = args;
109
+ return array.reduceRight((prev, curr, index) => callbackfn(prev, curr, asUint32(index)), initialValue);
110
+ }
111
+ case 2: {
112
+ const [callbackfn, initialValue] = args;
113
+ return (array) => foldr(array, callbackfn, initialValue);
114
+ }
115
+ }
116
+ }
117
+ function sum(array) {
118
+ return array.reduce((prev, curr) => prev + curr, 0);
119
+ }
120
+ function join(...args) {
121
+ switch (args.length) {
122
+ case 0:
123
+ return (array) => joinImpl(array, undefined);
124
+ case 1: {
125
+ const [arg] = args;
126
+ if (isString(arg) || isUndefined(arg)) {
127
+ return (array) => joinImpl(array, arg);
128
+ }
129
+ return joinImpl(arg, undefined);
130
+ }
131
+ case 2: {
132
+ const [array, separator] = args;
133
+ return joinImpl(array, separator);
134
+ }
135
+ }
136
+ }
137
+ const joinImpl = (array, separator) => {
138
+ try {
139
+ const result = array.join(separator);
140
+ return Result.ok(result);
141
+ }
142
+ catch (error) {
143
+ return Result.err(Error.isError(error) ? error : new Error(unknownToString(error)));
144
+ }
145
+ };
146
+ /**
147
+ * Alias for `foldl`.
148
+ *
149
+ * @see {@link foldl}
150
+ */
151
+ const reduce = foldl;
152
+ /**
153
+ * Alias for `foldr`.
154
+ *
155
+ * @see {@link foldr}
156
+ */
157
+ const reduceRight = foldr;
158
+
159
+ export { count, countBy, foldl, foldr, join, max, maxBy, min, minBy, reduce, reduceRight, sum };
160
+ //# sourceMappingURL=array-utils-reducing-value.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-utils-reducing-value.mjs","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ import { Optional } from '../../functional/index.mjs';
2
+ /**
3
+ * Finds the first element that satisfies a predicate.
4
+ *
5
+ * @example
6
+ *
7
+ * ```ts
8
+ * const users = [
9
+ * { id: 1, name: 'Ada' },
10
+ * { id: 2, name: 'Grace' },
11
+ * ];
12
+ *
13
+ * const found = Arr.find(users, (user) => user.id === 2);
14
+ * const missing = Arr.find<{ id: number }>((user) => user.id === 3)(users);
15
+ *
16
+ * assert.deepStrictEqual(found, Optional.some({ id: 2, name: 'Grace' }));
17
+ * assert.deepStrictEqual(missing, Optional.none);
18
+ * ```
19
+ */
20
+ export declare function find<E, F extends E>(array: readonly E[], predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F): Optional<F>;
21
+ export declare function find<const Ar extends readonly unknown[]>(array: Ar, predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean): Optional<Ar[number]>;
22
+ export declare function find<E>(predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean): (array: readonly E[]) => Optional<E>;
23
+ /**
24
+ * Finds the last element that satisfies a predicate.
25
+ *
26
+ * @example
27
+ *
28
+ * ```ts
29
+ * const numbers = [1, 3, 2, 4, 5];
30
+ *
31
+ * const lastEven = Arr.findLast(numbers, (n) => n % 2 === 0);
32
+ * const none = Arr.findLast<number>((n) => n > 10)(numbers);
33
+ *
34
+ * assert.deepStrictEqual(lastEven, Optional.some(4));
35
+ * assert.deepStrictEqual(none, Optional.none);
36
+ * ```
37
+ */
38
+ export declare function findLast<E, F extends E>(array: readonly E[], predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F): Optional<F>;
39
+ export declare function findLast<const Ar extends readonly unknown[]>(array: Ar, predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean): Optional<Ar[number]>;
40
+ export declare function findLast<E>(predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean): (array: readonly E[]) => Optional<E>;
41
+ /**
42
+ * Finds the index of the first element that satisfies a predicate.
43
+ *
44
+ * @example
45
+ *
46
+ * ```ts
47
+ * const letters = ['a', 'b', 'c'];
48
+ *
49
+ * const indexOfB = Arr.findIndex(letters, (letter) => letter === 'b');
50
+ * // eslint-disable-next-line unicorn/prefer-array-index-of
51
+ * const indexOfMissing = Arr.findIndex<string>((letter) => letter === 'z')(
52
+ * letters,
53
+ * );
54
+ *
55
+ * assert(indexOfB === 1);
56
+ * assert(indexOfMissing === -1);
57
+ * ```
58
+ */
59
+ export declare function findIndex<const Ar extends readonly unknown[]>(array: Ar, predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean): ArrayIndex<Ar> | -1;
60
+ export declare function findIndex<E>(predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean): (array: readonly E[]) => SizeType.Arr | -1;
61
+ /**
62
+ * Finds the index of the last element that satisfies a predicate.
63
+ *
64
+ * @example
65
+ *
66
+ * ```ts
67
+ * const letters = ['a', 'b', 'c', 'b'];
68
+ *
69
+ * const lastIndexOfB = Arr.findLastIndex(letters, (letter) => letter === 'b');
70
+ * // eslint-disable-next-line unicorn/prefer-array-index-of
71
+ * const notFound = Arr.findLastIndex<string>((letter) => letter === 'z')(letters);
72
+ *
73
+ * assert(lastIndexOfB === 3);
74
+ * assert(notFound === -1);
75
+ * ```
76
+ */
77
+ export declare function findLastIndex<const Ar extends readonly unknown[]>(array: Ar, predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean): ArrayIndex<Ar> | -1;
78
+ export declare function findLastIndex<E>(predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean): (array: readonly E[]) => SizeType.Arr | -1;
79
+ /**
80
+ * Gets the index of a value in an array.
81
+ *
82
+ * @example
83
+ *
84
+ * ```ts
85
+ * const fruits = ['apple', 'banana', 'orange', 'banana'];
86
+ *
87
+ * const indexOfBanana = Arr.indexOf(fruits, 'banana');
88
+ * const indexOfGrape = Arr.indexOf(fruits, 'grape');
89
+ *
90
+ * // Curried version
91
+ * const findApple = Arr.indexOf('apple');
92
+ * const indexOfApple = findApple(fruits);
93
+ *
94
+ * console.log(indexOfBanana); // => 1
95
+ * console.log(indexOfGrape); // => -1
96
+ * console.log(indexOfApple); // => 0
97
+ * ```
98
+ */
99
+ export declare function indexOf<const Ar extends readonly unknown[]>(array: Ar, searchElement: Ar[number]): ArrayIndex<Ar> | -1;
100
+ export declare function indexOf<E>(searchElement: E): (array: readonly E[]) => SizeType.Arr | -1;
101
+ /**
102
+ * Gets the index of a value in an array, starting from a specified index.
103
+ *
104
+ * @example
105
+ *
106
+ * ```ts
107
+ * const fruits = ['apple', 'banana', 'orange', 'banana'];
108
+ *
109
+ * // Search for 'banana' starting from index 1
110
+ * const firstBanana = Arr.indexOfFrom(fruits, 'banana', 1);
111
+ * // Search for 'banana' starting from index 2
112
+ * const secondBanana = Arr.indexOfFrom(fruits, 'banana', 2);
113
+ * // Element not found
114
+ * const notFound = Arr.indexOfFrom(fruits, 'grape', 0);
115
+ *
116
+ * // Curried version
117
+ * const findBananaFrom2 = Arr.indexOfFrom('banana', 2);
118
+ * const index = findBananaFrom2(fruits);
119
+ *
120
+ * console.log(firstBanana); // => 1
121
+ * console.log(secondBanana); // => 3
122
+ * console.log(notFound); // => -1
123
+ * console.log(index); // => 3
124
+ * ```
125
+ */
126
+ export declare function indexOfFrom<const Ar extends readonly unknown[]>(array: Ar, searchElement: Ar[number], fromIndex: ArgArrayIndexWithNegative<Ar>): ArrayIndex<Ar> | -1;
127
+ export declare function indexOfFrom<E>(searchElement: E, fromIndex: SizeType.ArgArrWithNegative): (array: readonly E[]) => SizeType.Arr | -1;
128
+ /**
129
+ * Gets the last index of a value in an array.
130
+ *
131
+ * @example
132
+ *
133
+ * ```ts
134
+ * const fruits = ['apple', 'banana', 'orange', 'banana'];
135
+ *
136
+ * const lastBanana = Arr.lastIndexOf(fruits, 'banana');
137
+ * const lastApple = Arr.lastIndexOf(fruits, 'apple');
138
+ * const notFound = Arr.lastIndexOf(fruits, 'grape');
139
+ *
140
+ * // Curried version
141
+ * const findLastBanana = Arr.lastIndexOf('banana');
142
+ * const index = findLastBanana(fruits);
143
+ *
144
+ * console.log(lastBanana); // => 3
145
+ * console.log(lastApple); // => 0
146
+ * console.log(notFound); // => -1
147
+ * console.log(index); // => 3
148
+ * ```
149
+ */
150
+ export declare function lastIndexOf<const Ar extends readonly unknown[]>(array: Ar, searchElement: Ar[number]): ArrayIndex<Ar> | -1;
151
+ export declare function lastIndexOf<E>(searchElement: E): (array: readonly E[]) => SizeType.Arr | -1;
152
+ /**
153
+ * Gets the last index of a value in an array, starting from a specified index.
154
+ *
155
+ * @example
156
+ *
157
+ * ```ts
158
+ * const fruits = ['apple', 'banana', 'orange', 'banana', 'grape'];
159
+ *
160
+ * // Search backwards for 'banana' from index 3
161
+ * const lastBananaFrom3 = Arr.lastIndexOfFrom(fruits, 'banana', 3);
162
+ * // Search backwards for 'banana' from index 2
163
+ * const lastBananaFrom2 = Arr.lastIndexOfFrom(fruits, 'banana', 2);
164
+ * // Element not found
165
+ * const notFound = Arr.lastIndexOfFrom(fruits, 'grape', 2);
166
+ *
167
+ * // Curried version
168
+ * const findBananaFrom3 = Arr.lastIndexOfFrom('banana', 3);
169
+ * const index = findBananaFrom3(fruits);
170
+ *
171
+ * console.log(lastBananaFrom3); // => 3
172
+ * console.log(lastBananaFrom2); // => 1
173
+ * console.log(notFound); // => -1
174
+ * console.log(index); // => 3
175
+ * ```
176
+ */
177
+ export declare function lastIndexOfFrom<const Ar extends readonly unknown[]>(array: Ar, searchElement: Ar[number], fromIndex: ArgArrayIndexWithNegative<Ar>): ArrayIndex<Ar> | -1;
178
+ export declare function lastIndexOfFrom<E>(searchElement: E, fromIndex: SizeType.ArgArrWithNegative): (array: readonly E[]) => SizeType.Arr | -1;
179
+ //# sourceMappingURL=array-utils-search.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-utils-search.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-search.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ import { Optional } from '../../functional/optional.mjs';
2
+ import { pipe } from '../../functional/pipe.mjs';
3
+ import '../../functional/result.mjs';
4
+ import '../../number/branded-types/finite-number.mjs';
5
+ import '../../number/branded-types/int.mjs';
6
+ import '../../number/branded-types/int16.mjs';
7
+ import '../../number/branded-types/int32.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-zero-finite-number.mjs';
12
+ import '../../number/branded-types/non-zero-int.mjs';
13
+ import '../../number/branded-types/non-zero-int16.mjs';
14
+ import '../../number/branded-types/non-zero-int32.mjs';
15
+ import '../../number/branded-types/non-zero-safe-int.mjs';
16
+ import '../../number/branded-types/non-zero-uint16.mjs';
17
+ import '../../number/branded-types/non-zero-uint32.mjs';
18
+ import '../../number/branded-types/positive-finite-number.mjs';
19
+ import '../../number/branded-types/positive-int.mjs';
20
+ import '../../number/branded-types/positive-int16.mjs';
21
+ import '../../number/branded-types/positive-int32.mjs';
22
+ import '../../number/branded-types/positive-safe-int.mjs';
23
+ import '../../number/branded-types/positive-uint16.mjs';
24
+ import '../../number/branded-types/positive-uint32.mjs';
25
+ import '../../number/branded-types/safe-int.mjs';
26
+ import '../../number/branded-types/safe-uint.mjs';
27
+ import '../../number/branded-types/uint.mjs';
28
+ import '../../number/branded-types/uint16.mjs';
29
+ import { asUint32 } from '../../number/branded-types/uint32.mjs';
30
+ import '../../number/enum/int8.mjs';
31
+ import '../../number/enum/uint8.mjs';
32
+ import '../../number/num.mjs';
33
+ import '../../number/refined-number-utils.mjs';
34
+
35
+ function find(...args) {
36
+ switch (args.length) {
37
+ case 2: {
38
+ const [array, predicate] = args;
39
+ const foundIndex = array.findIndex(
40
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
41
+ predicate);
42
+ return foundIndex === -1
43
+ ? Optional.none
44
+ : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
45
+ Optional.some(array[foundIndex]);
46
+ }
47
+ case 1: {
48
+ const [predicate] = args;
49
+ return (array) => find(array, predicate);
50
+ }
51
+ }
52
+ }
53
+ function findLast(...args) {
54
+ switch (args.length) {
55
+ case 2: {
56
+ const [array, predicate] = args;
57
+ const foundIndex = array.findLastIndex(
58
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
59
+ predicate);
60
+ return foundIndex === -1
61
+ ? Optional.none
62
+ : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
63
+ Optional.some(array[foundIndex]);
64
+ }
65
+ case 1: {
66
+ const [predicate] = args;
67
+ return (array) => findLast(array, predicate);
68
+ }
69
+ }
70
+ }
71
+ function findIndex(...args) {
72
+ switch (args.length) {
73
+ case 2: {
74
+ const [array, predicate] = args;
75
+ return pipe(array.findIndex(
76
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
77
+ predicate)).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;
78
+ }
79
+ case 1: {
80
+ const [predicate] = args;
81
+ return (array) => findIndex(array, predicate);
82
+ }
83
+ }
84
+ }
85
+ function findLastIndex(...args) {
86
+ switch (args.length) {
87
+ case 2: {
88
+ const [array, predicate] = args;
89
+ return pipe(array.findLastIndex(
90
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
91
+ predicate)).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;
92
+ }
93
+ case 1: {
94
+ const [predicate] = args;
95
+ return (array) => findLastIndex(array, predicate);
96
+ }
97
+ }
98
+ }
99
+ function indexOf(...args) {
100
+ switch (args.length) {
101
+ case 2: {
102
+ const [array, searchElement] = args;
103
+ const index = array.indexOf(searchElement);
104
+ return index !== -1 ? asUint32(index) : -1;
105
+ }
106
+ case 1: {
107
+ const [searchElement] = args;
108
+ return (array) => indexOf(array, searchElement);
109
+ }
110
+ }
111
+ }
112
+ function indexOfFrom(...args) {
113
+ switch (args.length) {
114
+ case 3: {
115
+ const [array, searchElement, fromIndex] = args;
116
+ const index = array.indexOf(searchElement, fromIndex);
117
+ return index !== -1 ? asUint32(index) : -1;
118
+ }
119
+ case 2: {
120
+ const [searchElement, fromIndex] = args;
121
+ return (array) => indexOfFrom(array, searchElement, fromIndex);
122
+ }
123
+ }
124
+ }
125
+ function lastIndexOf(...args) {
126
+ switch (args.length) {
127
+ case 2: {
128
+ const [array, searchElement] = args;
129
+ const index = array.lastIndexOf(searchElement);
130
+ return index !== -1 ? asUint32(index) : -1;
131
+ }
132
+ case 1: {
133
+ const [searchElement] = args;
134
+ return (array) => lastIndexOf(array, searchElement);
135
+ }
136
+ }
137
+ }
138
+ function lastIndexOfFrom(...args) {
139
+ switch (args.length) {
140
+ case 3: {
141
+ const [array, searchElement, fromIndex] = args;
142
+ const index = array.lastIndexOf(searchElement, fromIndex);
143
+ return index !== -1 ? asUint32(index) : -1;
144
+ }
145
+ case 2: {
146
+ const [searchElement, fromIndex] = args;
147
+ return (array) => lastIndexOfFrom(array, searchElement, fromIndex);
148
+ }
149
+ }
150
+ }
151
+
152
+ export { find, findIndex, findLast, findLastIndex, indexOf, indexOfFrom, lastIndexOf, lastIndexOfFrom };
153
+ //# sourceMappingURL=array-utils-search.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-utils-search.mjs","sources":["../../../src/array/impl/array-utils-search.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
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
+ * const sameNumbers = [1, 2, 3] as const;
9
+ * const differentNumbers = [1, 2, 4] as const;
10
+ *
11
+ * assert.ok(Arr.eq(numbers, sameNumbers));
12
+ * assert.notOk(Arr.eq(numbers, differentNumbers));
13
+ * ```
14
+ */
15
+ export declare const eq: <E>(array1: readonly E[], array2: readonly E[], equality?: (a: E, b: E) => boolean) => boolean;
16
+ /**
17
+ * Alias for `eq`.
18
+ *
19
+ * @see {@link eq}
20
+ */
21
+ export declare const equal: <E>(array1: readonly E[], array2: readonly E[], equality?: (a: E, b: E) => boolean) => boolean;
22
+ /**
23
+ * Checks if the first array is a subset of the second array.
24
+ *
25
+ * @example
26
+ *
27
+ * ```ts
28
+ * const subset = [1, 2] as const;
29
+ * const superset = [1, 2, 3] as const;
30
+ * const notSubset = [2, 4] as const;
31
+ *
32
+ * assert.ok(Arr.isSubset(subset, superset));
33
+ * assert.notOk(Arr.isSubset(notSubset, superset));
34
+ * ```
35
+ */
36
+ export declare const isSubset: <E1 extends Primitive, E2 extends Primitive = E1>(array1: readonly E1[], array2: readonly E2[]) => boolean;
37
+ /**
38
+ * Checks if the first array is a superset of the second array.
39
+ *
40
+ * @example
41
+ *
42
+ * ```ts
43
+ * const potentialSuperset = ['a', 'b', 'c'] as const;
44
+ * const subset = ['a', 'c'] as const;
45
+ * const notSuperset = ['a', 'd'] as const;
46
+ *
47
+ * assert.ok(Arr.isSuperset(potentialSuperset, subset));
48
+ * assert.notOk(Arr.isSuperset(subset, potentialSuperset));
49
+ * assert.notOk(Arr.isSuperset(potentialSuperset, notSuperset));
50
+ * ```
51
+ */
52
+ export declare const isSuperset: <E1 extends Primitive, E2 extends Primitive = E1>(array1: readonly E1[], array2: readonly E2[]) => boolean;
53
+ /**
54
+ * Returns the intersection of two arrays.
55
+ *
56
+ * @example
57
+ *
58
+ * ```ts
59
+ * const refs = ['Ada', 'Alan', 'Grace'] as const;
60
+ * const attendees = ['Grace', 'Alan', 'Barbara'] as const;
61
+ *
62
+ * const both = Arr.setIntersection(refs, attendees);
63
+ *
64
+ * assert.deepStrictEqual(both, ['Alan', 'Grace']);
65
+ * ```
66
+ */
67
+ export declare const setIntersection: <E1 extends Primitive, E2 extends Primitive = E1>(array1: readonly E1[], array2: readonly E2[]) => readonly (E1 & E2)[];
68
+ /**
69
+ * Returns the set difference of two arrays (elements in first but not in second).
70
+ *
71
+ * @example
72
+ *
73
+ * ```ts
74
+ * const baseline = [1, 2, 3, 4] as const;
75
+ * const removed = [2, 4] as const;
76
+ *
77
+ * const remaining = Arr.setDifference(baseline, removed);
78
+ *
79
+ * assert.deepStrictEqual(remaining, [1, 3]);
80
+ * ```
81
+ */
82
+ export declare const setDifference: <E extends Primitive>(array1: readonly E[], array2: readonly E[]) => readonly E[];
83
+ /**
84
+ * Returns the set difference of two sorted numeric arrays (optimized for sorted arrays).
85
+ *
86
+ * @example
87
+ *
88
+ * ```ts
89
+ * const upcoming = [1, 3, 5, 7, 9] as const;
90
+ * const completed = [3, 4, 7] as const;
91
+ *
92
+ * const remaining = Arr.sortedNumSetDifference(upcoming, completed);
93
+ *
94
+ * const expected = [1, 5, 9] as const;
95
+ *
96
+ * assert.deepStrictEqual(remaining, expected);
97
+ * ```
98
+ */
99
+ export declare const sortedNumSetDifference: <E extends number>(sortedList1: readonly E[], sortedList2: readonly E[]) => readonly E[];
100
+ //# sourceMappingURL=array-utils-set-op.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-utils-set-op.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;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;;;;;;;;;;;;;GAaG;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;;;;;;;;;;;;;;GAcG;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;;;;;;;;;;;;;GAaG;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;;;;;;;;;;;;;GAaG;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;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,EACrD,aAAa,SAAS,CAAC,EAAE,EACzB,aAAa,SAAS,CAAC,EAAE,KACxB,SAAS,CAAC,EA8BZ,CAAC"}