es-toolkit 1.48.1 → 1.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/array/chunkBy.d.mts +32 -0
  3. package/dist/array/chunkBy.d.ts +32 -0
  4. package/dist/array/chunkBy.js +42 -0
  5. package/dist/array/chunkBy.mjs +42 -0
  6. package/dist/array/index.d.mts +2 -1
  7. package/dist/array/index.d.ts +2 -1
  8. package/dist/array/index.js +2 -0
  9. package/dist/array/index.mjs +2 -1
  10. package/dist/array/take.d.mts +1 -7
  11. package/dist/array/take.d.ts +1 -7
  12. package/dist/array/take.js +1 -9
  13. package/dist/array/take.mjs +1 -9
  14. package/dist/array/takeRight.d.mts +2 -2
  15. package/dist/array/takeRight.d.ts +2 -2
  16. package/dist/array/takeRight.js +2 -4
  17. package/dist/array/takeRight.mjs +2 -4
  18. package/dist/array/windowed.d.mts +1 -1
  19. package/dist/array/windowed.d.ts +1 -1
  20. package/dist/browser.global.js +3 -3
  21. package/dist/compat/array/chunk.js +4 -2
  22. package/dist/compat/array/chunk.mjs +4 -2
  23. package/dist/compat/array/differenceBy.js +5 -5
  24. package/dist/compat/array/differenceBy.mjs +5 -5
  25. package/dist/compat/array/drop.d.mts +2 -3
  26. package/dist/compat/array/drop.d.ts +2 -3
  27. package/dist/compat/array/drop.js +4 -4
  28. package/dist/compat/array/drop.mjs +4 -4
  29. package/dist/compat/array/dropRight.js +1 -1
  30. package/dist/compat/array/dropRight.mjs +1 -1
  31. package/dist/compat/array/dropRightWhile.d.mts +1 -1
  32. package/dist/compat/array/dropRightWhile.d.ts +1 -1
  33. package/dist/compat/array/dropRightWhile.js +5 -4
  34. package/dist/compat/array/dropRightWhile.mjs +5 -4
  35. package/dist/compat/array/dropWhile.d.mts +2 -2
  36. package/dist/compat/array/dropWhile.d.ts +2 -2
  37. package/dist/compat/array/dropWhile.js +4 -4
  38. package/dist/compat/array/dropWhile.mjs +4 -4
  39. package/dist/compat/array/findLast.js +1 -1
  40. package/dist/compat/array/findLast.mjs +1 -1
  41. package/dist/compat/array/includes.js +1 -1
  42. package/dist/compat/array/includes.mjs +1 -1
  43. package/dist/compat/array/nth.js +1 -1
  44. package/dist/compat/array/nth.mjs +1 -1
  45. package/dist/compat/array/slice.js +1 -1
  46. package/dist/compat/array/slice.mjs +1 -1
  47. package/dist/compat/array/sortedIndexBy.js +1 -1
  48. package/dist/compat/array/sortedIndexBy.mjs +1 -1
  49. package/dist/compat/array/take.js +2 -2
  50. package/dist/compat/array/take.mjs +2 -2
  51. package/dist/compat/array/takeRight.js +1 -1
  52. package/dist/compat/array/takeRight.mjs +1 -1
  53. package/dist/compat/compat.js +4 -4
  54. package/dist/compat/compat.mjs +4 -4
  55. package/dist/compat/index.js +4 -4
  56. package/dist/compat/index.mjs +4 -4
  57. package/dist/compat/math/add.js +1 -1
  58. package/dist/compat/math/add.mjs +1 -1
  59. package/dist/compat/math/divide.js +1 -1
  60. package/dist/compat/math/divide.mjs +1 -1
  61. package/dist/compat/math/multiply.js +1 -1
  62. package/dist/compat/math/multiply.mjs +1 -1
  63. package/dist/compat/math/random.js +3 -1
  64. package/dist/compat/math/random.mjs +3 -1
  65. package/dist/compat/math/subtract.js +1 -1
  66. package/dist/compat/math/subtract.mjs +1 -1
  67. package/dist/compat/object/get.js +1 -1
  68. package/dist/compat/object/get.mjs +1 -1
  69. package/dist/compat/object/omitBy.js +1 -1
  70. package/dist/compat/object/omitBy.mjs +1 -1
  71. package/dist/compat/object/pick.js +1 -1
  72. package/dist/compat/object/pick.mjs +1 -1
  73. package/dist/compat/object/pickBy.js +1 -1
  74. package/dist/compat/object/pickBy.mjs +1 -1
  75. package/dist/compat/string/repeat.js +1 -1
  76. package/dist/compat/string/repeat.mjs +1 -1
  77. package/dist/fp/_internal/lazy.js +58 -0
  78. package/dist/fp/_internal/lazy.mjs +57 -0
  79. package/dist/fp/array/at.d.mts +20 -0
  80. package/dist/fp/array/at.d.ts +20 -0
  81. package/dist/fp/array/at.js +25 -0
  82. package/dist/fp/array/at.mjs +25 -0
  83. package/dist/fp/array/cartesianProduct.d.mts +61 -0
  84. package/dist/fp/array/cartesianProduct.d.ts +61 -0
  85. package/dist/fp/array/cartesianProduct.js +9 -0
  86. package/dist/fp/array/cartesianProduct.mjs +9 -0
  87. package/dist/fp/array/chunk.d.mts +19 -0
  88. package/dist/fp/array/chunk.d.ts +19 -0
  89. package/dist/fp/array/chunk.js +24 -0
  90. package/dist/fp/array/chunk.mjs +24 -0
  91. package/dist/fp/array/chunkBy.d.mts +20 -0
  92. package/dist/fp/array/chunkBy.d.ts +20 -0
  93. package/dist/fp/array/chunkBy.js +25 -0
  94. package/dist/fp/array/chunkBy.mjs +25 -0
  95. package/dist/fp/array/combinations.d.mts +21 -0
  96. package/dist/fp/array/combinations.d.ts +21 -0
  97. package/dist/fp/array/combinations.js +26 -0
  98. package/dist/fp/array/combinations.mjs +26 -0
  99. package/dist/fp/array/compact.d.mts +22 -0
  100. package/dist/fp/array/compact.d.ts +22 -0
  101. package/dist/fp/array/compact.js +31 -0
  102. package/dist/fp/array/compact.mjs +30 -0
  103. package/dist/fp/array/countBy.d.mts +21 -0
  104. package/dist/fp/array/countBy.d.ts +21 -0
  105. package/dist/fp/array/countBy.js +26 -0
  106. package/dist/fp/array/countBy.mjs +26 -0
  107. package/dist/fp/array/difference.d.mts +21 -0
  108. package/dist/fp/array/difference.d.ts +21 -0
  109. package/dist/fp/array/difference.js +32 -0
  110. package/dist/fp/array/difference.mjs +31 -0
  111. package/dist/fp/array/differenceBy.d.mts +22 -0
  112. package/dist/fp/array/differenceBy.d.ts +22 -0
  113. package/dist/fp/array/differenceBy.js +33 -0
  114. package/dist/fp/array/differenceBy.mjs +32 -0
  115. package/dist/fp/array/differenceWith.d.mts +22 -0
  116. package/dist/fp/array/differenceWith.d.ts +22 -0
  117. package/dist/fp/array/differenceWith.js +32 -0
  118. package/dist/fp/array/differenceWith.mjs +31 -0
  119. package/dist/fp/array/drop.d.mts +20 -0
  120. package/dist/fp/array/drop.d.ts +20 -0
  121. package/dist/fp/array/drop.js +31 -0
  122. package/dist/fp/array/drop.mjs +30 -0
  123. package/dist/fp/array/dropRight.d.mts +20 -0
  124. package/dist/fp/array/dropRight.d.ts +20 -0
  125. package/dist/fp/array/dropRight.js +25 -0
  126. package/dist/fp/array/dropRight.mjs +25 -0
  127. package/dist/fp/array/dropRightWhile.d.mts +20 -0
  128. package/dist/fp/array/dropRightWhile.d.ts +20 -0
  129. package/dist/fp/array/dropRightWhile.js +25 -0
  130. package/dist/fp/array/dropRightWhile.mjs +25 -0
  131. package/dist/fp/array/dropWhile.d.mts +20 -0
  132. package/dist/fp/array/dropWhile.d.ts +20 -0
  133. package/dist/fp/array/dropWhile.js +36 -0
  134. package/dist/fp/array/dropWhile.mjs +36 -0
  135. package/dist/fp/array/filter.d.mts +45 -0
  136. package/dist/fp/array/filter.d.ts +45 -0
  137. package/dist/fp/array/filter.js +13 -0
  138. package/dist/fp/array/filter.mjs +12 -0
  139. package/dist/fp/array/find.d.mts +39 -0
  140. package/dist/fp/array/find.d.ts +39 -0
  141. package/dist/fp/array/find.js +8 -0
  142. package/dist/fp/array/find.mjs +8 -0
  143. package/dist/fp/array/findIndex.d.mts +20 -0
  144. package/dist/fp/array/findIndex.d.ts +20 -0
  145. package/dist/fp/array/findIndex.js +24 -0
  146. package/dist/fp/array/findIndex.mjs +24 -0
  147. package/dist/fp/array/findLast.d.mts +39 -0
  148. package/dist/fp/array/findLast.d.ts +39 -0
  149. package/dist/fp/array/findLast.js +11 -0
  150. package/dist/fp/array/findLast.mjs +11 -0
  151. package/dist/fp/array/findLastIndex.d.mts +20 -0
  152. package/dist/fp/array/findLastIndex.d.ts +20 -0
  153. package/dist/fp/array/findLastIndex.js +25 -0
  154. package/dist/fp/array/findLastIndex.mjs +25 -0
  155. package/dist/fp/array/flatMap.d.mts +28 -0
  156. package/dist/fp/array/flatMap.d.ts +28 -0
  157. package/dist/fp/array/flatMap.js +39 -0
  158. package/dist/fp/array/flatMap.mjs +38 -0
  159. package/dist/fp/array/flatMapDeep.d.mts +23 -0
  160. package/dist/fp/array/flatMapDeep.d.ts +23 -0
  161. package/dist/fp/array/flatMapDeep.js +38 -0
  162. package/dist/fp/array/flatMapDeep.mjs +37 -0
  163. package/dist/fp/array/flatten.d.mts +21 -0
  164. package/dist/fp/array/flatten.d.ts +21 -0
  165. package/dist/fp/array/flatten.js +39 -0
  166. package/dist/fp/array/flatten.mjs +38 -0
  167. package/dist/fp/array/flattenDeep.d.mts +21 -0
  168. package/dist/fp/array/flattenDeep.d.ts +21 -0
  169. package/dist/fp/array/flattenDeep.js +36 -0
  170. package/dist/fp/array/flattenDeep.mjs +35 -0
  171. package/dist/fp/array/forEach.d.mts +22 -0
  172. package/dist/fp/array/forEach.d.ts +22 -0
  173. package/dist/fp/array/forEach.js +33 -0
  174. package/dist/fp/array/forEach.mjs +32 -0
  175. package/dist/fp/array/groupBy.d.mts +21 -0
  176. package/dist/fp/array/groupBy.d.ts +21 -0
  177. package/dist/fp/array/groupBy.js +26 -0
  178. package/dist/fp/array/groupBy.mjs +26 -0
  179. package/dist/fp/array/head.d.mts +35 -0
  180. package/dist/fp/array/head.d.ts +35 -0
  181. package/dist/fp/array/head.js +9 -0
  182. package/dist/fp/array/head.mjs +9 -0
  183. package/dist/fp/array/index.d.mts +69 -0
  184. package/dist/fp/array/index.d.ts +69 -0
  185. package/dist/fp/array/index.js +68 -0
  186. package/dist/fp/array/index.mjs +68 -0
  187. package/dist/fp/array/initial.d.mts +19 -0
  188. package/dist/fp/array/initial.d.ts +19 -0
  189. package/dist/fp/array/initial.js +24 -0
  190. package/dist/fp/array/initial.mjs +24 -0
  191. package/dist/fp/array/intersection.d.mts +21 -0
  192. package/dist/fp/array/intersection.d.ts +21 -0
  193. package/dist/fp/array/intersection.js +32 -0
  194. package/dist/fp/array/intersection.mjs +31 -0
  195. package/dist/fp/array/intersectionBy.d.mts +22 -0
  196. package/dist/fp/array/intersectionBy.d.ts +22 -0
  197. package/dist/fp/array/intersectionBy.js +33 -0
  198. package/dist/fp/array/intersectionBy.mjs +32 -0
  199. package/dist/fp/array/intersectionWith.d.mts +22 -0
  200. package/dist/fp/array/intersectionWith.d.ts +22 -0
  201. package/dist/fp/array/intersectionWith.js +32 -0
  202. package/dist/fp/array/intersectionWith.mjs +31 -0
  203. package/dist/fp/array/isSubset.d.mts +20 -0
  204. package/dist/fp/array/isSubset.d.ts +20 -0
  205. package/dist/fp/array/isSubset.js +25 -0
  206. package/dist/fp/array/isSubset.mjs +25 -0
  207. package/dist/fp/array/isSubsetWith.d.mts +21 -0
  208. package/dist/fp/array/isSubsetWith.d.ts +21 -0
  209. package/dist/fp/array/isSubsetWith.js +26 -0
  210. package/dist/fp/array/isSubsetWith.mjs +26 -0
  211. package/dist/fp/array/join.d.mts +20 -0
  212. package/dist/fp/array/join.d.ts +20 -0
  213. package/dist/fp/array/join.js +24 -0
  214. package/dist/fp/array/join.mjs +24 -0
  215. package/dist/fp/array/keyBy.d.mts +21 -0
  216. package/dist/fp/array/keyBy.d.ts +21 -0
  217. package/dist/fp/array/keyBy.js +26 -0
  218. package/dist/fp/array/keyBy.mjs +26 -0
  219. package/dist/fp/array/last.d.mts +35 -0
  220. package/dist/fp/array/last.d.ts +35 -0
  221. package/dist/fp/array/last.js +9 -0
  222. package/dist/fp/array/last.mjs +9 -0
  223. package/dist/fp/array/length.d.mts +18 -0
  224. package/dist/fp/array/length.d.ts +18 -0
  225. package/dist/fp/array/length.js +22 -0
  226. package/dist/fp/array/length.mjs +22 -0
  227. package/dist/fp/array/map.d.mts +27 -0
  228. package/dist/fp/array/map.d.ts +27 -0
  229. package/dist/fp/array/map.js +36 -0
  230. package/dist/fp/array/map.mjs +35 -0
  231. package/dist/fp/array/maxBy.d.mts +37 -0
  232. package/dist/fp/array/maxBy.d.ts +37 -0
  233. package/dist/fp/array/maxBy.js +9 -0
  234. package/dist/fp/array/maxBy.mjs +9 -0
  235. package/dist/fp/array/minBy.d.mts +37 -0
  236. package/dist/fp/array/minBy.d.ts +37 -0
  237. package/dist/fp/array/minBy.js +9 -0
  238. package/dist/fp/array/minBy.mjs +9 -0
  239. package/dist/fp/array/orderBy.d.mts +21 -0
  240. package/dist/fp/array/orderBy.d.ts +21 -0
  241. package/dist/fp/array/orderBy.js +26 -0
  242. package/dist/fp/array/orderBy.mjs +26 -0
  243. package/dist/fp/array/partition.d.mts +39 -0
  244. package/dist/fp/array/partition.d.ts +39 -0
  245. package/dist/fp/array/partition.js +9 -0
  246. package/dist/fp/array/partition.mjs +9 -0
  247. package/dist/fp/array/reverse.d.mts +19 -0
  248. package/dist/fp/array/reverse.d.ts +19 -0
  249. package/dist/fp/array/reverse.js +23 -0
  250. package/dist/fp/array/reverse.mjs +23 -0
  251. package/dist/fp/array/sample.d.mts +18 -0
  252. package/dist/fp/array/sample.d.ts +18 -0
  253. package/dist/fp/array/sample.js +23 -0
  254. package/dist/fp/array/sample.mjs +23 -0
  255. package/dist/fp/array/sampleSize.d.mts +20 -0
  256. package/dist/fp/array/sampleSize.d.ts +20 -0
  257. package/dist/fp/array/sampleSize.js +25 -0
  258. package/dist/fp/array/sampleSize.mjs +25 -0
  259. package/dist/fp/array/shuffle.d.mts +19 -0
  260. package/dist/fp/array/shuffle.d.ts +19 -0
  261. package/dist/fp/array/shuffle.js +24 -0
  262. package/dist/fp/array/shuffle.mjs +24 -0
  263. package/dist/fp/array/sortBy.d.mts +26 -0
  264. package/dist/fp/array/sortBy.d.ts +26 -0
  265. package/dist/fp/array/sortBy.js +31 -0
  266. package/dist/fp/array/sortBy.mjs +31 -0
  267. package/dist/fp/array/tail.d.mts +19 -0
  268. package/dist/fp/array/tail.d.ts +19 -0
  269. package/dist/fp/array/tail.js +24 -0
  270. package/dist/fp/array/tail.mjs +24 -0
  271. package/dist/fp/array/take.d.mts +26 -0
  272. package/dist/fp/array/take.d.ts +26 -0
  273. package/dist/fp/array/take.js +39 -0
  274. package/dist/fp/array/take.mjs +38 -0
  275. package/dist/fp/array/takeRight.d.mts +20 -0
  276. package/dist/fp/array/takeRight.d.ts +20 -0
  277. package/dist/fp/array/takeRight.js +25 -0
  278. package/dist/fp/array/takeRight.mjs +25 -0
  279. package/dist/fp/array/takeRightWhile.d.mts +20 -0
  280. package/dist/fp/array/takeRightWhile.d.ts +20 -0
  281. package/dist/fp/array/takeRightWhile.js +25 -0
  282. package/dist/fp/array/takeRightWhile.mjs +25 -0
  283. package/dist/fp/array/takeWhile.d.mts +21 -0
  284. package/dist/fp/array/takeWhile.d.ts +21 -0
  285. package/dist/fp/array/takeWhile.js +32 -0
  286. package/dist/fp/array/takeWhile.mjs +31 -0
  287. package/dist/fp/array/toFilled.d.mts +23 -0
  288. package/dist/fp/array/toFilled.d.ts +23 -0
  289. package/dist/fp/array/toFilled.js +30 -0
  290. package/dist/fp/array/toFilled.mjs +30 -0
  291. package/dist/fp/array/union.d.mts +20 -0
  292. package/dist/fp/array/union.d.ts +20 -0
  293. package/dist/fp/array/union.js +25 -0
  294. package/dist/fp/array/union.mjs +25 -0
  295. package/dist/fp/array/unionBy.d.mts +22 -0
  296. package/dist/fp/array/unionBy.d.ts +22 -0
  297. package/dist/fp/array/unionBy.js +27 -0
  298. package/dist/fp/array/unionBy.mjs +27 -0
  299. package/dist/fp/array/unionWith.d.mts +21 -0
  300. package/dist/fp/array/unionWith.d.ts +21 -0
  301. package/dist/fp/array/unionWith.js +26 -0
  302. package/dist/fp/array/unionWith.mjs +26 -0
  303. package/dist/fp/array/uniq.d.mts +21 -0
  304. package/dist/fp/array/uniq.d.ts +21 -0
  305. package/dist/fp/array/uniq.js +36 -0
  306. package/dist/fp/array/uniq.mjs +36 -0
  307. package/dist/fp/array/uniqBy.d.mts +21 -0
  308. package/dist/fp/array/uniqBy.d.ts +21 -0
  309. package/dist/fp/array/uniqBy.js +38 -0
  310. package/dist/fp/array/uniqBy.mjs +38 -0
  311. package/dist/fp/array/uniqWith.d.mts +20 -0
  312. package/dist/fp/array/uniqWith.d.ts +20 -0
  313. package/dist/fp/array/uniqWith.js +35 -0
  314. package/dist/fp/array/uniqWith.mjs +35 -0
  315. package/dist/fp/array/unzip.d.mts +20 -0
  316. package/dist/fp/array/unzip.d.ts +20 -0
  317. package/dist/fp/array/unzip.js +24 -0
  318. package/dist/fp/array/unzip.mjs +24 -0
  319. package/dist/fp/array/unzipWith.d.mts +21 -0
  320. package/dist/fp/array/unzipWith.d.ts +21 -0
  321. package/dist/fp/array/unzipWith.js +26 -0
  322. package/dist/fp/array/unzipWith.mjs +26 -0
  323. package/dist/fp/array/windowed.d.mts +25 -0
  324. package/dist/fp/array/windowed.d.ts +25 -0
  325. package/dist/fp/array/windowed.js +50 -0
  326. package/dist/fp/array/windowed.mjs +50 -0
  327. package/dist/fp/array/without.d.mts +19 -0
  328. package/dist/fp/array/without.d.ts +19 -0
  329. package/dist/fp/array/without.js +30 -0
  330. package/dist/fp/array/without.mjs +29 -0
  331. package/dist/fp/array/xor.d.mts +20 -0
  332. package/dist/fp/array/xor.d.ts +20 -0
  333. package/dist/fp/array/xor.js +25 -0
  334. package/dist/fp/array/xor.mjs +25 -0
  335. package/dist/fp/array/xorBy.d.mts +22 -0
  336. package/dist/fp/array/xorBy.d.ts +22 -0
  337. package/dist/fp/array/xorBy.js +27 -0
  338. package/dist/fp/array/xorBy.mjs +27 -0
  339. package/dist/fp/array/xorWith.d.mts +21 -0
  340. package/dist/fp/array/xorWith.d.ts +21 -0
  341. package/dist/fp/array/xorWith.js +26 -0
  342. package/dist/fp/array/xorWith.mjs +26 -0
  343. package/dist/fp/array/zip.d.mts +61 -0
  344. package/dist/fp/array/zip.d.ts +61 -0
  345. package/dist/fp/array/zip.js +9 -0
  346. package/dist/fp/array/zip.mjs +9 -0
  347. package/dist/fp/array/zipObject.d.mts +21 -0
  348. package/dist/fp/array/zipObject.d.ts +21 -0
  349. package/dist/fp/array/zipObject.js +26 -0
  350. package/dist/fp/array/zipObject.mjs +26 -0
  351. package/dist/fp/array/zipWith.d.mts +57 -0
  352. package/dist/fp/array/zipWith.d.ts +57 -0
  353. package/dist/fp/array/zipWith.js +9 -0
  354. package/dist/fp/array/zipWith.mjs +9 -0
  355. package/dist/fp/index.d.mts +75 -0
  356. package/dist/fp/index.d.ts +75 -0
  357. package/dist/fp/index.js +150 -0
  358. package/dist/fp/index.mjs +77 -0
  359. package/dist/fp/math/add.d.mts +17 -0
  360. package/dist/fp/math/add.d.ts +17 -0
  361. package/dist/fp/math/add.js +21 -0
  362. package/dist/fp/math/add.mjs +21 -0
  363. package/dist/fp/math/index.d.mts +2 -0
  364. package/dist/fp/math/index.d.ts +2 -0
  365. package/dist/fp/math/index.js +2 -0
  366. package/dist/fp/math/index.mjs +2 -0
  367. package/dist/fp/math/multiply.d.mts +17 -0
  368. package/dist/fp/math/multiply.d.ts +17 -0
  369. package/dist/fp/math/multiply.js +21 -0
  370. package/dist/fp/math/multiply.mjs +21 -0
  371. package/dist/fp/object/index.d.mts +2 -0
  372. package/dist/fp/object/index.d.ts +2 -0
  373. package/dist/fp/object/index.js +2 -0
  374. package/dist/fp/object/index.mjs +2 -0
  375. package/dist/fp/object/omit.d.mts +18 -0
  376. package/dist/fp/object/omit.d.ts +18 -0
  377. package/dist/fp/object/omit.js +23 -0
  378. package/dist/fp/object/omit.mjs +23 -0
  379. package/dist/fp/object/pick.d.mts +19 -0
  380. package/dist/fp/object/pick.d.ts +19 -0
  381. package/dist/fp/object/pick.js +24 -0
  382. package/dist/fp/object/pick.mjs +24 -0
  383. package/dist/fp/pipe.d.mts +235 -0
  384. package/dist/fp/pipe.d.ts +235 -0
  385. package/dist/fp/pipe.js +116 -0
  386. package/dist/fp/pipe.mjs +116 -0
  387. package/dist/index.d.mts +3 -1
  388. package/dist/index.d.ts +3 -1
  389. package/dist/index.js +4 -0
  390. package/dist/index.mjs +3 -1
  391. package/dist/predicate/index.d.mts +2 -1
  392. package/dist/predicate/index.d.ts +2 -1
  393. package/dist/predicate/index.js +2 -0
  394. package/dist/predicate/index.mjs +2 -1
  395. package/dist/predicate/isIterable.d.mts +26 -0
  396. package/dist/predicate/isIterable.d.ts +26 -0
  397. package/dist/predicate/isIterable.js +28 -0
  398. package/dist/predicate/isIterable.mjs +28 -0
  399. package/dist/string/trimStart.js +1 -0
  400. package/dist/string/trimStart.mjs +1 -0
  401. package/fp.d.ts +1 -0
  402. package/fp.js +1 -0
  403. package/package.json +22 -1
@@ -0,0 +1,25 @@
1
+ const require_union = require("../../array/union.js");
2
+ //#region src/fp/array/union.ts
3
+ /**
4
+ * Creates a function that returns unique values from the piped array and secondArray.
5
+ *
6
+ * Values keep their first occurrence order, matching the main {@link union} behavior.
7
+ * Use the returned function with {@link pipe}.
8
+ *
9
+ * @template T - The type of elements in the arrays.
10
+ * @param secondArray - Values to include after the piped array.
11
+ * @returns A function that maps a readonly array to its union with secondArray.
12
+ *
13
+ * @example
14
+ * import { pipe, union } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([1, 2], union([2, 3]));
17
+ * // => [1, 2, 3]
18
+ */
19
+ function union(secondArray) {
20
+ return function(array) {
21
+ return require_union.union(array, secondArray);
22
+ };
23
+ }
24
+ //#endregion
25
+ exports.union = union;
@@ -0,0 +1,25 @@
1
+ import { union as union$1 } from "../../array/union.mjs";
2
+ //#region src/fp/array/union.ts
3
+ /**
4
+ * Creates a function that returns unique values from the piped array and secondArray.
5
+ *
6
+ * Values keep their first occurrence order, matching the main {@link union} behavior.
7
+ * Use the returned function with {@link pipe}.
8
+ *
9
+ * @template T - The type of elements in the arrays.
10
+ * @param secondArray - Values to include after the piped array.
11
+ * @returns A function that maps a readonly array to its union with secondArray.
12
+ *
13
+ * @example
14
+ * import { pipe, union } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([1, 2], union([2, 3]));
17
+ * // => [1, 2, 3]
18
+ */
19
+ function union(secondArray) {
20
+ return function(array) {
21
+ return union$1(array, secondArray);
22
+ };
23
+ }
24
+ //#endregion
25
+ export { union };
@@ -0,0 +1,22 @@
1
+ //#region src/fp/array/unionBy.d.ts
2
+ /**
3
+ * Creates a function that returns unique values by mapped identity.
4
+ *
5
+ * Values from the piped array are considered before values from secondArray. The mapper
6
+ * is used to compare identities, matching the main {@link unionBy} behavior.
7
+ *
8
+ * @template T - The type of elements in the arrays.
9
+ * @template U - The type of comparison keys returned by the mapper.
10
+ * @param secondArray - Values to include after the piped array.
11
+ * @param mapper - Called for values from both arrays to produce comparison keys.
12
+ * @returns A function that maps a readonly array to its union with secondArray.
13
+ *
14
+ * @example
15
+ * import { pipe, unionBy } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([{ id: 1 }], unionBy([{ id: 1 }, { id: 2 }], item => item.id));
18
+ * // => [{ id: 1 }, { id: 2 }]
19
+ */
20
+ declare function unionBy<T, U>(secondArray: readonly T[], mapper: (item: T) => U): (array: readonly T[]) => T[];
21
+ //#endregion
22
+ export { unionBy };
@@ -0,0 +1,22 @@
1
+ //#region src/fp/array/unionBy.d.ts
2
+ /**
3
+ * Creates a function that returns unique values by mapped identity.
4
+ *
5
+ * Values from the piped array are considered before values from secondArray. The mapper
6
+ * is used to compare identities, matching the main {@link unionBy} behavior.
7
+ *
8
+ * @template T - The type of elements in the arrays.
9
+ * @template U - The type of comparison keys returned by the mapper.
10
+ * @param secondArray - Values to include after the piped array.
11
+ * @param mapper - Called for values from both arrays to produce comparison keys.
12
+ * @returns A function that maps a readonly array to its union with secondArray.
13
+ *
14
+ * @example
15
+ * import { pipe, unionBy } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([{ id: 1 }], unionBy([{ id: 1 }, { id: 2 }], item => item.id));
18
+ * // => [{ id: 1 }, { id: 2 }]
19
+ */
20
+ declare function unionBy<T, U>(secondArray: readonly T[], mapper: (item: T) => U): (array: readonly T[]) => T[];
21
+ //#endregion
22
+ export { unionBy };
@@ -0,0 +1,27 @@
1
+ const require_unionBy = require("../../array/unionBy.js");
2
+ //#region src/fp/array/unionBy.ts
3
+ /**
4
+ * Creates a function that returns unique values by mapped identity.
5
+ *
6
+ * Values from the piped array are considered before values from secondArray. The mapper
7
+ * is used to compare identities, matching the main {@link unionBy} behavior.
8
+ *
9
+ * @template T - The type of elements in the arrays.
10
+ * @template U - The type of comparison keys returned by the mapper.
11
+ * @param secondArray - Values to include after the piped array.
12
+ * @param mapper - Called for values from both arrays to produce comparison keys.
13
+ * @returns A function that maps a readonly array to its union with secondArray.
14
+ *
15
+ * @example
16
+ * import { pipe, unionBy } from 'es-toolkit/fp';
17
+ *
18
+ * pipe([{ id: 1 }], unionBy([{ id: 1 }, { id: 2 }], item => item.id));
19
+ * // => [{ id: 1 }, { id: 2 }]
20
+ */
21
+ function unionBy(secondArray, mapper) {
22
+ return function(array) {
23
+ return require_unionBy.unionBy(array, secondArray, mapper);
24
+ };
25
+ }
26
+ //#endregion
27
+ exports.unionBy = unionBy;
@@ -0,0 +1,27 @@
1
+ import { unionBy as unionBy$1 } from "../../array/unionBy.mjs";
2
+ //#region src/fp/array/unionBy.ts
3
+ /**
4
+ * Creates a function that returns unique values by mapped identity.
5
+ *
6
+ * Values from the piped array are considered before values from secondArray. The mapper
7
+ * is used to compare identities, matching the main {@link unionBy} behavior.
8
+ *
9
+ * @template T - The type of elements in the arrays.
10
+ * @template U - The type of comparison keys returned by the mapper.
11
+ * @param secondArray - Values to include after the piped array.
12
+ * @param mapper - Called for values from both arrays to produce comparison keys.
13
+ * @returns A function that maps a readonly array to its union with secondArray.
14
+ *
15
+ * @example
16
+ * import { pipe, unionBy } from 'es-toolkit/fp';
17
+ *
18
+ * pipe([{ id: 1 }], unionBy([{ id: 1 }, { id: 2 }], item => item.id));
19
+ * // => [{ id: 1 }, { id: 2 }]
20
+ */
21
+ function unionBy(secondArray, mapper) {
22
+ return function(array) {
23
+ return unionBy$1(array, secondArray, mapper);
24
+ };
25
+ }
26
+ //#endregion
27
+ export { unionBy };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/unionWith.d.ts
2
+ /**
3
+ * Creates a function that returns unique values using a custom equality function.
4
+ *
5
+ * Values from the piped array are considered before values from secondArray. The equality
6
+ * function decides whether two values represent the same item.
7
+ *
8
+ * @template T - The type of elements in the arrays.
9
+ * @param secondArray - Values to include after the piped array.
10
+ * @param areItemsEqual - Returns true when two values are equal.
11
+ * @returns A function that maps a readonly array to its union with secondArray.
12
+ *
13
+ * @example
14
+ * import { pipe, unionWith } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([{ id: 1 }], unionWith([{ id: 1 }, { id: 2 }], (a, b) => a.id === b.id));
17
+ * // => [{ id: 1 }, { id: 2 }]
18
+ */
19
+ declare function unionWith<T>(secondArray: readonly T[], areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
20
+ //#endregion
21
+ export { unionWith };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/unionWith.d.ts
2
+ /**
3
+ * Creates a function that returns unique values using a custom equality function.
4
+ *
5
+ * Values from the piped array are considered before values from secondArray. The equality
6
+ * function decides whether two values represent the same item.
7
+ *
8
+ * @template T - The type of elements in the arrays.
9
+ * @param secondArray - Values to include after the piped array.
10
+ * @param areItemsEqual - Returns true when two values are equal.
11
+ * @returns A function that maps a readonly array to its union with secondArray.
12
+ *
13
+ * @example
14
+ * import { pipe, unionWith } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([{ id: 1 }], unionWith([{ id: 1 }, { id: 2 }], (a, b) => a.id === b.id));
17
+ * // => [{ id: 1 }, { id: 2 }]
18
+ */
19
+ declare function unionWith<T>(secondArray: readonly T[], areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
20
+ //#endregion
21
+ export { unionWith };
@@ -0,0 +1,26 @@
1
+ const require_unionWith = require("../../array/unionWith.js");
2
+ //#region src/fp/array/unionWith.ts
3
+ /**
4
+ * Creates a function that returns unique values using a custom equality function.
5
+ *
6
+ * Values from the piped array are considered before values from secondArray. The equality
7
+ * function decides whether two values represent the same item.
8
+ *
9
+ * @template T - The type of elements in the arrays.
10
+ * @param secondArray - Values to include after the piped array.
11
+ * @param areItemsEqual - Returns true when two values are equal.
12
+ * @returns A function that maps a readonly array to its union with secondArray.
13
+ *
14
+ * @example
15
+ * import { pipe, unionWith } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([{ id: 1 }], unionWith([{ id: 1 }, { id: 2 }], (a, b) => a.id === b.id));
18
+ * // => [{ id: 1 }, { id: 2 }]
19
+ */
20
+ function unionWith(secondArray, areItemsEqual) {
21
+ return function(array) {
22
+ return require_unionWith.unionWith(array, secondArray, areItemsEqual);
23
+ };
24
+ }
25
+ //#endregion
26
+ exports.unionWith = unionWith;
@@ -0,0 +1,26 @@
1
+ import { unionWith as unionWith$1 } from "../../array/unionWith.mjs";
2
+ //#region src/fp/array/unionWith.ts
3
+ /**
4
+ * Creates a function that returns unique values using a custom equality function.
5
+ *
6
+ * Values from the piped array are considered before values from secondArray. The equality
7
+ * function decides whether two values represent the same item.
8
+ *
9
+ * @template T - The type of elements in the arrays.
10
+ * @param secondArray - Values to include after the piped array.
11
+ * @param areItemsEqual - Returns true when two values are equal.
12
+ * @returns A function that maps a readonly array to its union with secondArray.
13
+ *
14
+ * @example
15
+ * import { pipe, unionWith } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([{ id: 1 }], unionWith([{ id: 1 }, { id: 2 }], (a, b) => a.id === b.id));
18
+ * // => [{ id: 1 }, { id: 2 }]
19
+ */
20
+ function unionWith(secondArray, areItemsEqual) {
21
+ return function(array) {
22
+ return unionWith$1(array, secondArray, areItemsEqual);
23
+ };
24
+ }
25
+ //#endregion
26
+ export { unionWith };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/uniq.d.ts
2
+ /**
3
+ * Creates a function that removes duplicate values from an array, preserving
4
+ * the order of first occurrence. Equality follows SameValueZero, matching
5
+ * Set semantics. Use it with {@link pipe}.
6
+ *
7
+ * The returned function is lazy-capable inside {@link pipe}. It keeps a Set of
8
+ * values already emitted during each pipeline run.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @returns A function that maps a readonly array to a duplicate-free array.
12
+ *
13
+ * @example
14
+ * import { pipe, uniq } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([1, 2, 2, 3, 3, 3], uniq());
17
+ * // => [1, 2, 3]
18
+ */
19
+ declare function uniq<T>(): (array: readonly T[]) => T[];
20
+ //#endregion
21
+ export { uniq };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/uniq.d.ts
2
+ /**
3
+ * Creates a function that removes duplicate values from an array, preserving
4
+ * the order of first occurrence. Equality follows SameValueZero, matching
5
+ * Set semantics. Use it with {@link pipe}.
6
+ *
7
+ * The returned function is lazy-capable inside {@link pipe}. It keeps a Set of
8
+ * values already emitted during each pipeline run.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @returns A function that maps a readonly array to a duplicate-free array.
12
+ *
13
+ * @example
14
+ * import { pipe, uniq } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([1, 2, 2, 3, 3, 3], uniq());
17
+ * // => [1, 2, 3]
18
+ */
19
+ declare function uniq<T>(): (array: readonly T[]) => T[];
20
+ //#endregion
21
+ export { uniq };
@@ -0,0 +1,36 @@
1
+ const require_uniq = require("../../array/uniq.js");
2
+ const require_lazy = require("../_internal/lazy.js");
3
+ //#region src/fp/array/uniq.ts
4
+ /**
5
+ * Creates a function that removes duplicate values from an array, preserving
6
+ * the order of first occurrence. Equality follows SameValueZero, matching
7
+ * Set semantics. Use it with {@link pipe}.
8
+ *
9
+ * The returned function is lazy-capable inside {@link pipe}. It keeps a Set of
10
+ * values already emitted during each pipeline run.
11
+ *
12
+ * @template T - The type of elements in the array.
13
+ * @returns A function that maps a readonly array to a duplicate-free array.
14
+ *
15
+ * @example
16
+ * import { pipe, uniq } from 'es-toolkit/fp';
17
+ *
18
+ * pipe([1, 2, 2, 3, 3, 3], uniq());
19
+ * // => [1, 2, 3]
20
+ */
21
+ function uniq() {
22
+ function uniqEager(array) {
23
+ return require_uniq.uniq(array);
24
+ }
25
+ const uniqLazy = (emit) => {
26
+ const seen = /* @__PURE__ */ new Set();
27
+ return (value) => {
28
+ if (seen.has(value)) return true;
29
+ seen.add(value);
30
+ return emit(value);
31
+ };
32
+ };
33
+ return require_lazy.combineEagerAndLazyFunctions(uniqEager, uniqLazy);
34
+ }
35
+ //#endregion
36
+ exports.uniq = uniq;
@@ -0,0 +1,36 @@
1
+ import { uniq as uniq$1 } from "../../array/uniq.mjs";
2
+ import { combineEagerAndLazyFunctions } from "../_internal/lazy.mjs";
3
+ //#region src/fp/array/uniq.ts
4
+ /**
5
+ * Creates a function that removes duplicate values from an array, preserving
6
+ * the order of first occurrence. Equality follows SameValueZero, matching
7
+ * Set semantics. Use it with {@link pipe}.
8
+ *
9
+ * The returned function is lazy-capable inside {@link pipe}. It keeps a Set of
10
+ * values already emitted during each pipeline run.
11
+ *
12
+ * @template T - The type of elements in the array.
13
+ * @returns A function that maps a readonly array to a duplicate-free array.
14
+ *
15
+ * @example
16
+ * import { pipe, uniq } from 'es-toolkit/fp';
17
+ *
18
+ * pipe([1, 2, 2, 3, 3, 3], uniq());
19
+ * // => [1, 2, 3]
20
+ */
21
+ function uniq() {
22
+ function uniqEager(array) {
23
+ return uniq$1(array);
24
+ }
25
+ const uniqLazy = (emit) => {
26
+ const seen = /* @__PURE__ */ new Set();
27
+ return (value) => {
28
+ if (seen.has(value)) return true;
29
+ seen.add(value);
30
+ return emit(value);
31
+ };
32
+ };
33
+ return combineEagerAndLazyFunctions(uniqEager, uniqLazy);
34
+ }
35
+ //#endregion
36
+ export { uniq };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/uniqBy.d.ts
2
+ /**
3
+ * Creates a function that removes duplicate values by mapped identity.
4
+ *
5
+ * The first value for each mapped key is preserved. The returned function is
6
+ * lazy-capable inside {@link pipe}.
7
+ *
8
+ * @template T - The type of elements in the array.
9
+ * @template U - The type of comparison keys returned by the mapper.
10
+ * @param mapper - Called with each value and index to produce a comparison key.
11
+ * @returns A function that maps the piped array to unique values.
12
+ *
13
+ * @example
14
+ * import { pipe, uniqBy } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqBy(item => item.id));
17
+ * // => [{ id: 1 }, { id: 2 }]
18
+ */
19
+ declare function uniqBy<T, U>(mapper: (item: T, index: number) => U): (array: readonly T[]) => T[];
20
+ //#endregion
21
+ export { uniqBy };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/uniqBy.d.ts
2
+ /**
3
+ * Creates a function that removes duplicate values by mapped identity.
4
+ *
5
+ * The first value for each mapped key is preserved. The returned function is
6
+ * lazy-capable inside {@link pipe}.
7
+ *
8
+ * @template T - The type of elements in the array.
9
+ * @template U - The type of comparison keys returned by the mapper.
10
+ * @param mapper - Called with each value and index to produce a comparison key.
11
+ * @returns A function that maps the piped array to unique values.
12
+ *
13
+ * @example
14
+ * import { pipe, uniqBy } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqBy(item => item.id));
17
+ * // => [{ id: 1 }, { id: 2 }]
18
+ */
19
+ declare function uniqBy<T, U>(mapper: (item: T, index: number) => U): (array: readonly T[]) => T[];
20
+ //#endregion
21
+ export { uniqBy };
@@ -0,0 +1,38 @@
1
+ const require_uniqBy = require("../../array/uniqBy.js");
2
+ const require_lazy = require("../_internal/lazy.js");
3
+ //#region src/fp/array/uniqBy.ts
4
+ /**
5
+ * Creates a function that removes duplicate values by mapped identity.
6
+ *
7
+ * The first value for each mapped key is preserved. The returned function is
8
+ * lazy-capable inside {@link pipe}.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @template U - The type of comparison keys returned by the mapper.
12
+ * @param mapper - Called with each value and index to produce a comparison key.
13
+ * @returns A function that maps the piped array to unique values.
14
+ *
15
+ * @example
16
+ * import { pipe, uniqBy } from 'es-toolkit/fp';
17
+ *
18
+ * pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqBy(item => item.id));
19
+ * // => [{ id: 1 }, { id: 2 }]
20
+ */
21
+ function uniqBy(mapper) {
22
+ function uniqByEager(array) {
23
+ return require_uniqBy.uniqBy(array, (item, index) => mapper(item, index));
24
+ }
25
+ const uniqByLazy = (emit) => {
26
+ const seen = /* @__PURE__ */ new Set();
27
+ let index = 0;
28
+ return (value) => {
29
+ const key = mapper(value, index++);
30
+ if (seen.has(key)) return true;
31
+ seen.add(key);
32
+ return emit(value);
33
+ };
34
+ };
35
+ return require_lazy.combineEagerAndLazyFunctions(uniqByEager, uniqByLazy);
36
+ }
37
+ //#endregion
38
+ exports.uniqBy = uniqBy;
@@ -0,0 +1,38 @@
1
+ import { uniqBy as uniqBy$1 } from "../../array/uniqBy.mjs";
2
+ import { combineEagerAndLazyFunctions } from "../_internal/lazy.mjs";
3
+ //#region src/fp/array/uniqBy.ts
4
+ /**
5
+ * Creates a function that removes duplicate values by mapped identity.
6
+ *
7
+ * The first value for each mapped key is preserved. The returned function is
8
+ * lazy-capable inside {@link pipe}.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @template U - The type of comparison keys returned by the mapper.
12
+ * @param mapper - Called with each value and index to produce a comparison key.
13
+ * @returns A function that maps the piped array to unique values.
14
+ *
15
+ * @example
16
+ * import { pipe, uniqBy } from 'es-toolkit/fp';
17
+ *
18
+ * pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqBy(item => item.id));
19
+ * // => [{ id: 1 }, { id: 2 }]
20
+ */
21
+ function uniqBy(mapper) {
22
+ function uniqByEager(array) {
23
+ return uniqBy$1(array, (item, index) => mapper(item, index));
24
+ }
25
+ const uniqByLazy = (emit) => {
26
+ const seen = /* @__PURE__ */ new Set();
27
+ let index = 0;
28
+ return (value) => {
29
+ const key = mapper(value, index++);
30
+ if (seen.has(key)) return true;
31
+ seen.add(key);
32
+ return emit(value);
33
+ };
34
+ };
35
+ return combineEagerAndLazyFunctions(uniqByEager, uniqByLazy);
36
+ }
37
+ //#endregion
38
+ export { uniqBy };
@@ -0,0 +1,20 @@
1
+ //#region src/fp/array/uniqWith.d.ts
2
+ /**
3
+ * Creates a function that removes duplicate values using a custom equality function.
4
+ *
5
+ * The first value in each equality group is preserved. The returned function is
6
+ * lazy-capable inside {@link pipe}.
7
+ *
8
+ * @template T - The type of elements in the array.
9
+ * @param areItemsEqual - Returns true when two values should be treated as equal.
10
+ * @returns A function that maps the piped array to unique values.
11
+ *
12
+ * @example
13
+ * import { pipe, uniqWith } from 'es-toolkit/fp';
14
+ *
15
+ * pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqWith((a, b) => a.id === b.id));
16
+ * // => [{ id: 1 }, { id: 2 }]
17
+ */
18
+ declare function uniqWith<T>(areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
19
+ //#endregion
20
+ export { uniqWith };
@@ -0,0 +1,20 @@
1
+ //#region src/fp/array/uniqWith.d.ts
2
+ /**
3
+ * Creates a function that removes duplicate values using a custom equality function.
4
+ *
5
+ * The first value in each equality group is preserved. The returned function is
6
+ * lazy-capable inside {@link pipe}.
7
+ *
8
+ * @template T - The type of elements in the array.
9
+ * @param areItemsEqual - Returns true when two values should be treated as equal.
10
+ * @returns A function that maps the piped array to unique values.
11
+ *
12
+ * @example
13
+ * import { pipe, uniqWith } from 'es-toolkit/fp';
14
+ *
15
+ * pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqWith((a, b) => a.id === b.id));
16
+ * // => [{ id: 1 }, { id: 2 }]
17
+ */
18
+ declare function uniqWith<T>(areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
19
+ //#endregion
20
+ export { uniqWith };
@@ -0,0 +1,35 @@
1
+ const require_uniqWith = require("../../array/uniqWith.js");
2
+ const require_lazy = require("../_internal/lazy.js");
3
+ //#region src/fp/array/uniqWith.ts
4
+ /**
5
+ * Creates a function that removes duplicate values using a custom equality function.
6
+ *
7
+ * The first value in each equality group is preserved. The returned function is
8
+ * lazy-capable inside {@link pipe}.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @param areItemsEqual - Returns true when two values should be treated as equal.
12
+ * @returns A function that maps the piped array to unique values.
13
+ *
14
+ * @example
15
+ * import { pipe, uniqWith } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqWith((a, b) => a.id === b.id));
18
+ * // => [{ id: 1 }, { id: 2 }]
19
+ */
20
+ function uniqWith(areItemsEqual) {
21
+ function uniqWithEager(array) {
22
+ return require_uniqWith.uniqWith(array, areItemsEqual);
23
+ }
24
+ const uniqWithLazy = (emit) => {
25
+ const seen = [];
26
+ return (value) => {
27
+ if (seen.some((item) => areItemsEqual(item, value))) return true;
28
+ seen.push(value);
29
+ return emit(value);
30
+ };
31
+ };
32
+ return require_lazy.combineEagerAndLazyFunctions(uniqWithEager, uniqWithLazy);
33
+ }
34
+ //#endregion
35
+ exports.uniqWith = uniqWith;
@@ -0,0 +1,35 @@
1
+ import { uniqWith as uniqWith$1 } from "../../array/uniqWith.mjs";
2
+ import { combineEagerAndLazyFunctions } from "../_internal/lazy.mjs";
3
+ //#region src/fp/array/uniqWith.ts
4
+ /**
5
+ * Creates a function that removes duplicate values using a custom equality function.
6
+ *
7
+ * The first value in each equality group is preserved. The returned function is
8
+ * lazy-capable inside {@link pipe}.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @param areItemsEqual - Returns true when two values should be treated as equal.
12
+ * @returns A function that maps the piped array to unique values.
13
+ *
14
+ * @example
15
+ * import { pipe, uniqWith } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqWith((a, b) => a.id === b.id));
18
+ * // => [{ id: 1 }, { id: 2 }]
19
+ */
20
+ function uniqWith(areItemsEqual) {
21
+ function uniqWithEager(array) {
22
+ return uniqWith$1(array, areItemsEqual);
23
+ }
24
+ const uniqWithLazy = (emit) => {
25
+ const seen = [];
26
+ return (value) => {
27
+ if (seen.some((item) => areItemsEqual(item, value))) return true;
28
+ seen.push(value);
29
+ return emit(value);
30
+ };
31
+ };
32
+ return combineEagerAndLazyFunctions(uniqWithEager, uniqWithLazy);
33
+ }
34
+ //#endregion
35
+ export { uniqWith };
@@ -0,0 +1,20 @@
1
+ //#region src/fp/array/unzip.d.ts
2
+ type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
3
+ /**
4
+ * Creates a function that unzips grouped tuples into arrays by position.
5
+ *
6
+ * The returned function is the data-last form of the main {@link unzip} utility.
7
+ * Use it with {@link pipe}.
8
+ *
9
+ * @template T - The tuple type inside the zipped array.
10
+ * @returns A function that maps zipped tuples to arrays grouped by tuple position.
11
+ *
12
+ * @example
13
+ * import { pipe, unzip } from 'es-toolkit/fp';
14
+ *
15
+ * pipe([[1, 'a'], [2, 'b']] as Array<[number, string]>, unzip());
16
+ * // => [[1, 2], ['a', 'b']]
17
+ */
18
+ declare function unzip<T extends unknown[]>(): (zipped: ReadonlyArray<[...T]>) => Unzip<T>;
19
+ //#endregion
20
+ export { unzip };
@@ -0,0 +1,20 @@
1
+ //#region src/fp/array/unzip.d.ts
2
+ type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
3
+ /**
4
+ * Creates a function that unzips grouped tuples into arrays by position.
5
+ *
6
+ * The returned function is the data-last form of the main {@link unzip} utility.
7
+ * Use it with {@link pipe}.
8
+ *
9
+ * @template T - The tuple type inside the zipped array.
10
+ * @returns A function that maps zipped tuples to arrays grouped by tuple position.
11
+ *
12
+ * @example
13
+ * import { pipe, unzip } from 'es-toolkit/fp';
14
+ *
15
+ * pipe([[1, 'a'], [2, 'b']] as Array<[number, string]>, unzip());
16
+ * // => [[1, 2], ['a', 'b']]
17
+ */
18
+ declare function unzip<T extends unknown[]>(): (zipped: ReadonlyArray<[...T]>) => Unzip<T>;
19
+ //#endregion
20
+ export { unzip };