es-toolkit 1.48.1-dev.1890 → 1.48.1-dev.1894

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 (380) hide show
  1. package/dist/array/chunkBy.d.mts +32 -0
  2. package/dist/array/chunkBy.d.ts +32 -0
  3. package/dist/array/chunkBy.js +42 -0
  4. package/dist/array/chunkBy.mjs +42 -0
  5. package/dist/array/index.d.mts +2 -1
  6. package/dist/array/index.d.ts +2 -1
  7. package/dist/array/index.js +2 -0
  8. package/dist/array/index.mjs +2 -1
  9. package/dist/array/take.d.mts +1 -7
  10. package/dist/array/take.d.ts +1 -7
  11. package/dist/array/take.js +1 -9
  12. package/dist/array/take.mjs +1 -9
  13. package/dist/array/takeRight.d.mts +2 -2
  14. package/dist/array/takeRight.d.ts +2 -2
  15. package/dist/array/takeRight.js +2 -4
  16. package/dist/array/takeRight.mjs +2 -4
  17. package/dist/array/windowed.d.mts +1 -1
  18. package/dist/array/windowed.d.ts +1 -1
  19. package/dist/browser.global.js +3 -3
  20. package/dist/compat/array/drop.js +1 -1
  21. package/dist/compat/array/drop.mjs +1 -1
  22. package/dist/compat/array/dropRight.js +1 -1
  23. package/dist/compat/array/dropRight.mjs +1 -1
  24. package/dist/compat/array/findLast.js +1 -1
  25. package/dist/compat/array/findLast.mjs +1 -1
  26. package/dist/compat/array/includes.js +1 -1
  27. package/dist/compat/array/includes.mjs +1 -1
  28. package/dist/compat/array/nth.js +1 -1
  29. package/dist/compat/array/nth.mjs +1 -1
  30. package/dist/compat/array/slice.js +1 -1
  31. package/dist/compat/array/slice.mjs +1 -1
  32. package/dist/compat/array/sortedIndexBy.js +1 -1
  33. package/dist/compat/array/sortedIndexBy.mjs +1 -1
  34. package/dist/compat/array/take.js +2 -2
  35. package/dist/compat/array/take.mjs +2 -2
  36. package/dist/compat/array/takeRight.js +1 -1
  37. package/dist/compat/array/takeRight.mjs +1 -1
  38. package/dist/compat/compat.js +4 -4
  39. package/dist/compat/compat.mjs +4 -4
  40. package/dist/compat/index.js +4 -4
  41. package/dist/compat/index.mjs +4 -4
  42. package/dist/compat/math/add.js +1 -1
  43. package/dist/compat/math/add.mjs +1 -1
  44. package/dist/compat/math/divide.js +1 -1
  45. package/dist/compat/math/divide.mjs +1 -1
  46. package/dist/compat/math/multiply.js +1 -1
  47. package/dist/compat/math/multiply.mjs +1 -1
  48. package/dist/compat/math/subtract.js +1 -1
  49. package/dist/compat/math/subtract.mjs +1 -1
  50. package/dist/compat/object/omitBy.js +1 -1
  51. package/dist/compat/object/omitBy.mjs +1 -1
  52. package/dist/compat/object/pickBy.js +1 -1
  53. package/dist/compat/object/pickBy.mjs +1 -1
  54. package/dist/compat/string/repeat.js +1 -1
  55. package/dist/compat/string/repeat.mjs +1 -1
  56. package/dist/fp/_internal/lazy.js +58 -0
  57. package/dist/fp/_internal/lazy.mjs +57 -0
  58. package/dist/fp/array/at.d.mts +20 -0
  59. package/dist/fp/array/at.d.ts +20 -0
  60. package/dist/fp/array/at.js +25 -0
  61. package/dist/fp/array/at.mjs +25 -0
  62. package/dist/fp/array/cartesianProduct.d.mts +61 -0
  63. package/dist/fp/array/cartesianProduct.d.ts +61 -0
  64. package/dist/fp/array/cartesianProduct.js +9 -0
  65. package/dist/fp/array/cartesianProduct.mjs +9 -0
  66. package/dist/fp/array/chunk.d.mts +19 -0
  67. package/dist/fp/array/chunk.d.ts +19 -0
  68. package/dist/fp/array/chunk.js +24 -0
  69. package/dist/fp/array/chunk.mjs +24 -0
  70. package/dist/fp/array/chunkBy.d.mts +20 -0
  71. package/dist/fp/array/chunkBy.d.ts +20 -0
  72. package/dist/fp/array/chunkBy.js +25 -0
  73. package/dist/fp/array/chunkBy.mjs +25 -0
  74. package/dist/fp/array/combinations.d.mts +21 -0
  75. package/dist/fp/array/combinations.d.ts +21 -0
  76. package/dist/fp/array/combinations.js +26 -0
  77. package/dist/fp/array/combinations.mjs +26 -0
  78. package/dist/fp/array/compact.d.mts +22 -0
  79. package/dist/fp/array/compact.d.ts +22 -0
  80. package/dist/fp/array/compact.js +31 -0
  81. package/dist/fp/array/compact.mjs +30 -0
  82. package/dist/fp/array/countBy.d.mts +21 -0
  83. package/dist/fp/array/countBy.d.ts +21 -0
  84. package/dist/fp/array/countBy.js +26 -0
  85. package/dist/fp/array/countBy.mjs +26 -0
  86. package/dist/fp/array/difference.d.mts +21 -0
  87. package/dist/fp/array/difference.d.ts +21 -0
  88. package/dist/fp/array/difference.js +32 -0
  89. package/dist/fp/array/difference.mjs +31 -0
  90. package/dist/fp/array/differenceBy.d.mts +22 -0
  91. package/dist/fp/array/differenceBy.d.ts +22 -0
  92. package/dist/fp/array/differenceBy.js +33 -0
  93. package/dist/fp/array/differenceBy.mjs +32 -0
  94. package/dist/fp/array/differenceWith.d.mts +22 -0
  95. package/dist/fp/array/differenceWith.d.ts +22 -0
  96. package/dist/fp/array/differenceWith.js +32 -0
  97. package/dist/fp/array/differenceWith.mjs +31 -0
  98. package/dist/fp/array/drop.d.mts +20 -0
  99. package/dist/fp/array/drop.d.ts +20 -0
  100. package/dist/fp/array/drop.js +31 -0
  101. package/dist/fp/array/drop.mjs +30 -0
  102. package/dist/fp/array/dropRight.d.mts +20 -0
  103. package/dist/fp/array/dropRight.d.ts +20 -0
  104. package/dist/fp/array/dropRight.js +25 -0
  105. package/dist/fp/array/dropRight.mjs +25 -0
  106. package/dist/fp/array/dropRightWhile.d.mts +20 -0
  107. package/dist/fp/array/dropRightWhile.d.ts +20 -0
  108. package/dist/fp/array/dropRightWhile.js +25 -0
  109. package/dist/fp/array/dropRightWhile.mjs +25 -0
  110. package/dist/fp/array/dropWhile.d.mts +20 -0
  111. package/dist/fp/array/dropWhile.d.ts +20 -0
  112. package/dist/fp/array/dropWhile.js +36 -0
  113. package/dist/fp/array/dropWhile.mjs +36 -0
  114. package/dist/fp/array/filter.d.mts +45 -0
  115. package/dist/fp/array/filter.d.ts +45 -0
  116. package/dist/fp/array/filter.js +13 -0
  117. package/dist/fp/array/filter.mjs +12 -0
  118. package/dist/fp/array/find.d.mts +39 -0
  119. package/dist/fp/array/find.d.ts +39 -0
  120. package/dist/fp/array/find.js +8 -0
  121. package/dist/fp/array/find.mjs +8 -0
  122. package/dist/fp/array/findIndex.d.mts +20 -0
  123. package/dist/fp/array/findIndex.d.ts +20 -0
  124. package/dist/fp/array/findIndex.js +24 -0
  125. package/dist/fp/array/findIndex.mjs +24 -0
  126. package/dist/fp/array/findLast.d.mts +39 -0
  127. package/dist/fp/array/findLast.d.ts +39 -0
  128. package/dist/fp/array/findLast.js +11 -0
  129. package/dist/fp/array/findLast.mjs +11 -0
  130. package/dist/fp/array/findLastIndex.d.mts +20 -0
  131. package/dist/fp/array/findLastIndex.d.ts +20 -0
  132. package/dist/fp/array/findLastIndex.js +25 -0
  133. package/dist/fp/array/findLastIndex.mjs +25 -0
  134. package/dist/fp/array/flatMap.d.mts +28 -0
  135. package/dist/fp/array/flatMap.d.ts +28 -0
  136. package/dist/fp/array/flatMap.js +39 -0
  137. package/dist/fp/array/flatMap.mjs +38 -0
  138. package/dist/fp/array/flatMapDeep.d.mts +23 -0
  139. package/dist/fp/array/flatMapDeep.d.ts +23 -0
  140. package/dist/fp/array/flatMapDeep.js +38 -0
  141. package/dist/fp/array/flatMapDeep.mjs +37 -0
  142. package/dist/fp/array/flatten.d.mts +21 -0
  143. package/dist/fp/array/flatten.d.ts +21 -0
  144. package/dist/fp/array/flatten.js +39 -0
  145. package/dist/fp/array/flatten.mjs +38 -0
  146. package/dist/fp/array/flattenDeep.d.mts +21 -0
  147. package/dist/fp/array/flattenDeep.d.ts +21 -0
  148. package/dist/fp/array/flattenDeep.js +36 -0
  149. package/dist/fp/array/flattenDeep.mjs +35 -0
  150. package/dist/fp/array/forEach.d.mts +22 -0
  151. package/dist/fp/array/forEach.d.ts +22 -0
  152. package/dist/fp/array/forEach.js +33 -0
  153. package/dist/fp/array/forEach.mjs +32 -0
  154. package/dist/fp/array/groupBy.d.mts +21 -0
  155. package/dist/fp/array/groupBy.d.ts +21 -0
  156. package/dist/fp/array/groupBy.js +26 -0
  157. package/dist/fp/array/groupBy.mjs +26 -0
  158. package/dist/fp/array/head.d.mts +35 -0
  159. package/dist/fp/array/head.d.ts +35 -0
  160. package/dist/fp/array/head.js +9 -0
  161. package/dist/fp/array/head.mjs +9 -0
  162. package/dist/fp/array/index.d.mts +69 -0
  163. package/dist/fp/array/index.d.ts +69 -0
  164. package/dist/fp/array/index.js +68 -0
  165. package/dist/fp/array/index.mjs +68 -0
  166. package/dist/fp/array/initial.d.mts +19 -0
  167. package/dist/fp/array/initial.d.ts +19 -0
  168. package/dist/fp/array/initial.js +24 -0
  169. package/dist/fp/array/initial.mjs +24 -0
  170. package/dist/fp/array/intersection.d.mts +21 -0
  171. package/dist/fp/array/intersection.d.ts +21 -0
  172. package/dist/fp/array/intersection.js +32 -0
  173. package/dist/fp/array/intersection.mjs +31 -0
  174. package/dist/fp/array/intersectionBy.d.mts +22 -0
  175. package/dist/fp/array/intersectionBy.d.ts +22 -0
  176. package/dist/fp/array/intersectionBy.js +33 -0
  177. package/dist/fp/array/intersectionBy.mjs +32 -0
  178. package/dist/fp/array/intersectionWith.d.mts +22 -0
  179. package/dist/fp/array/intersectionWith.d.ts +22 -0
  180. package/dist/fp/array/intersectionWith.js +32 -0
  181. package/dist/fp/array/intersectionWith.mjs +31 -0
  182. package/dist/fp/array/isSubset.d.mts +20 -0
  183. package/dist/fp/array/isSubset.d.ts +20 -0
  184. package/dist/fp/array/isSubset.js +25 -0
  185. package/dist/fp/array/isSubset.mjs +25 -0
  186. package/dist/fp/array/isSubsetWith.d.mts +21 -0
  187. package/dist/fp/array/isSubsetWith.d.ts +21 -0
  188. package/dist/fp/array/isSubsetWith.js +26 -0
  189. package/dist/fp/array/isSubsetWith.mjs +26 -0
  190. package/dist/fp/array/join.d.mts +20 -0
  191. package/dist/fp/array/join.d.ts +20 -0
  192. package/dist/fp/array/join.js +24 -0
  193. package/dist/fp/array/join.mjs +24 -0
  194. package/dist/fp/array/keyBy.d.mts +21 -0
  195. package/dist/fp/array/keyBy.d.ts +21 -0
  196. package/dist/fp/array/keyBy.js +26 -0
  197. package/dist/fp/array/keyBy.mjs +26 -0
  198. package/dist/fp/array/last.d.mts +35 -0
  199. package/dist/fp/array/last.d.ts +35 -0
  200. package/dist/fp/array/last.js +9 -0
  201. package/dist/fp/array/last.mjs +9 -0
  202. package/dist/fp/array/length.d.mts +18 -0
  203. package/dist/fp/array/length.d.ts +18 -0
  204. package/dist/fp/array/length.js +22 -0
  205. package/dist/fp/array/length.mjs +22 -0
  206. package/dist/fp/array/map.d.mts +27 -0
  207. package/dist/fp/array/map.d.ts +27 -0
  208. package/dist/fp/array/map.js +36 -0
  209. package/dist/fp/array/map.mjs +35 -0
  210. package/dist/fp/array/maxBy.d.mts +37 -0
  211. package/dist/fp/array/maxBy.d.ts +37 -0
  212. package/dist/fp/array/maxBy.js +9 -0
  213. package/dist/fp/array/maxBy.mjs +9 -0
  214. package/dist/fp/array/minBy.d.mts +37 -0
  215. package/dist/fp/array/minBy.d.ts +37 -0
  216. package/dist/fp/array/minBy.js +9 -0
  217. package/dist/fp/array/minBy.mjs +9 -0
  218. package/dist/fp/array/orderBy.d.mts +21 -0
  219. package/dist/fp/array/orderBy.d.ts +21 -0
  220. package/dist/fp/array/orderBy.js +26 -0
  221. package/dist/fp/array/orderBy.mjs +26 -0
  222. package/dist/fp/array/partition.d.mts +39 -0
  223. package/dist/fp/array/partition.d.ts +39 -0
  224. package/dist/fp/array/partition.js +9 -0
  225. package/dist/fp/array/partition.mjs +9 -0
  226. package/dist/fp/array/reverse.d.mts +19 -0
  227. package/dist/fp/array/reverse.d.ts +19 -0
  228. package/dist/fp/array/reverse.js +23 -0
  229. package/dist/fp/array/reverse.mjs +23 -0
  230. package/dist/fp/array/sample.d.mts +18 -0
  231. package/dist/fp/array/sample.d.ts +18 -0
  232. package/dist/fp/array/sample.js +23 -0
  233. package/dist/fp/array/sample.mjs +23 -0
  234. package/dist/fp/array/sampleSize.d.mts +20 -0
  235. package/dist/fp/array/sampleSize.d.ts +20 -0
  236. package/dist/fp/array/sampleSize.js +25 -0
  237. package/dist/fp/array/sampleSize.mjs +25 -0
  238. package/dist/fp/array/shuffle.d.mts +19 -0
  239. package/dist/fp/array/shuffle.d.ts +19 -0
  240. package/dist/fp/array/shuffle.js +24 -0
  241. package/dist/fp/array/shuffle.mjs +24 -0
  242. package/dist/fp/array/sortBy.d.mts +26 -0
  243. package/dist/fp/array/sortBy.d.ts +26 -0
  244. package/dist/fp/array/sortBy.js +31 -0
  245. package/dist/fp/array/sortBy.mjs +31 -0
  246. package/dist/fp/array/tail.d.mts +19 -0
  247. package/dist/fp/array/tail.d.ts +19 -0
  248. package/dist/fp/array/tail.js +24 -0
  249. package/dist/fp/array/tail.mjs +24 -0
  250. package/dist/fp/array/take.d.mts +26 -0
  251. package/dist/fp/array/take.d.ts +26 -0
  252. package/dist/fp/array/take.js +39 -0
  253. package/dist/fp/array/take.mjs +38 -0
  254. package/dist/fp/array/takeRight.d.mts +20 -0
  255. package/dist/fp/array/takeRight.d.ts +20 -0
  256. package/dist/fp/array/takeRight.js +25 -0
  257. package/dist/fp/array/takeRight.mjs +25 -0
  258. package/dist/fp/array/takeRightWhile.d.mts +20 -0
  259. package/dist/fp/array/takeRightWhile.d.ts +20 -0
  260. package/dist/fp/array/takeRightWhile.js +25 -0
  261. package/dist/fp/array/takeRightWhile.mjs +25 -0
  262. package/dist/fp/array/takeWhile.d.mts +21 -0
  263. package/dist/fp/array/takeWhile.d.ts +21 -0
  264. package/dist/fp/array/takeWhile.js +32 -0
  265. package/dist/fp/array/takeWhile.mjs +31 -0
  266. package/dist/fp/array/toFilled.d.mts +23 -0
  267. package/dist/fp/array/toFilled.d.ts +23 -0
  268. package/dist/fp/array/toFilled.js +30 -0
  269. package/dist/fp/array/toFilled.mjs +30 -0
  270. package/dist/fp/array/union.d.mts +20 -0
  271. package/dist/fp/array/union.d.ts +20 -0
  272. package/dist/fp/array/union.js +25 -0
  273. package/dist/fp/array/union.mjs +25 -0
  274. package/dist/fp/array/unionBy.d.mts +22 -0
  275. package/dist/fp/array/unionBy.d.ts +22 -0
  276. package/dist/fp/array/unionBy.js +27 -0
  277. package/dist/fp/array/unionBy.mjs +27 -0
  278. package/dist/fp/array/unionWith.d.mts +21 -0
  279. package/dist/fp/array/unionWith.d.ts +21 -0
  280. package/dist/fp/array/unionWith.js +26 -0
  281. package/dist/fp/array/unionWith.mjs +26 -0
  282. package/dist/fp/array/uniq.d.mts +21 -0
  283. package/dist/fp/array/uniq.d.ts +21 -0
  284. package/dist/fp/array/uniq.js +36 -0
  285. package/dist/fp/array/uniq.mjs +36 -0
  286. package/dist/fp/array/uniqBy.d.mts +21 -0
  287. package/dist/fp/array/uniqBy.d.ts +21 -0
  288. package/dist/fp/array/uniqBy.js +38 -0
  289. package/dist/fp/array/uniqBy.mjs +38 -0
  290. package/dist/fp/array/uniqWith.d.mts +20 -0
  291. package/dist/fp/array/uniqWith.d.ts +20 -0
  292. package/dist/fp/array/uniqWith.js +35 -0
  293. package/dist/fp/array/uniqWith.mjs +35 -0
  294. package/dist/fp/array/unzip.d.mts +20 -0
  295. package/dist/fp/array/unzip.d.ts +20 -0
  296. package/dist/fp/array/unzip.js +24 -0
  297. package/dist/fp/array/unzip.mjs +24 -0
  298. package/dist/fp/array/unzipWith.d.mts +21 -0
  299. package/dist/fp/array/unzipWith.d.ts +21 -0
  300. package/dist/fp/array/unzipWith.js +26 -0
  301. package/dist/fp/array/unzipWith.mjs +26 -0
  302. package/dist/fp/array/windowed.d.mts +25 -0
  303. package/dist/fp/array/windowed.d.ts +25 -0
  304. package/dist/fp/array/windowed.js +50 -0
  305. package/dist/fp/array/windowed.mjs +50 -0
  306. package/dist/fp/array/without.d.mts +19 -0
  307. package/dist/fp/array/without.d.ts +19 -0
  308. package/dist/fp/array/without.js +30 -0
  309. package/dist/fp/array/without.mjs +29 -0
  310. package/dist/fp/array/xor.d.mts +20 -0
  311. package/dist/fp/array/xor.d.ts +20 -0
  312. package/dist/fp/array/xor.js +25 -0
  313. package/dist/fp/array/xor.mjs +25 -0
  314. package/dist/fp/array/xorBy.d.mts +22 -0
  315. package/dist/fp/array/xorBy.d.ts +22 -0
  316. package/dist/fp/array/xorBy.js +27 -0
  317. package/dist/fp/array/xorBy.mjs +27 -0
  318. package/dist/fp/array/xorWith.d.mts +21 -0
  319. package/dist/fp/array/xorWith.d.ts +21 -0
  320. package/dist/fp/array/xorWith.js +26 -0
  321. package/dist/fp/array/xorWith.mjs +26 -0
  322. package/dist/fp/array/zip.d.mts +61 -0
  323. package/dist/fp/array/zip.d.ts +61 -0
  324. package/dist/fp/array/zip.js +9 -0
  325. package/dist/fp/array/zip.mjs +9 -0
  326. package/dist/fp/array/zipObject.d.mts +21 -0
  327. package/dist/fp/array/zipObject.d.ts +21 -0
  328. package/dist/fp/array/zipObject.js +26 -0
  329. package/dist/fp/array/zipObject.mjs +26 -0
  330. package/dist/fp/array/zipWith.d.mts +57 -0
  331. package/dist/fp/array/zipWith.d.ts +57 -0
  332. package/dist/fp/array/zipWith.js +9 -0
  333. package/dist/fp/array/zipWith.mjs +9 -0
  334. package/dist/fp/index.d.mts +75 -0
  335. package/dist/fp/index.d.ts +75 -0
  336. package/dist/fp/index.js +150 -0
  337. package/dist/fp/index.mjs +77 -0
  338. package/dist/fp/math/add.d.mts +17 -0
  339. package/dist/fp/math/add.d.ts +17 -0
  340. package/dist/fp/math/add.js +21 -0
  341. package/dist/fp/math/add.mjs +21 -0
  342. package/dist/fp/math/index.d.mts +2 -0
  343. package/dist/fp/math/index.d.ts +2 -0
  344. package/dist/fp/math/index.js +2 -0
  345. package/dist/fp/math/index.mjs +2 -0
  346. package/dist/fp/math/multiply.d.mts +17 -0
  347. package/dist/fp/math/multiply.d.ts +17 -0
  348. package/dist/fp/math/multiply.js +21 -0
  349. package/dist/fp/math/multiply.mjs +21 -0
  350. package/dist/fp/object/index.d.mts +2 -0
  351. package/dist/fp/object/index.d.ts +2 -0
  352. package/dist/fp/object/index.js +2 -0
  353. package/dist/fp/object/index.mjs +2 -0
  354. package/dist/fp/object/omit.d.mts +18 -0
  355. package/dist/fp/object/omit.d.ts +18 -0
  356. package/dist/fp/object/omit.js +23 -0
  357. package/dist/fp/object/omit.mjs +23 -0
  358. package/dist/fp/object/pick.d.mts +19 -0
  359. package/dist/fp/object/pick.d.ts +19 -0
  360. package/dist/fp/object/pick.js +24 -0
  361. package/dist/fp/object/pick.mjs +24 -0
  362. package/dist/fp/pipe.d.mts +235 -0
  363. package/dist/fp/pipe.d.ts +235 -0
  364. package/dist/fp/pipe.js +116 -0
  365. package/dist/fp/pipe.mjs +116 -0
  366. package/dist/index.d.mts +3 -1
  367. package/dist/index.d.ts +3 -1
  368. package/dist/index.js +4 -0
  369. package/dist/index.mjs +3 -1
  370. package/dist/predicate/index.d.mts +2 -1
  371. package/dist/predicate/index.d.ts +2 -1
  372. package/dist/predicate/index.js +2 -0
  373. package/dist/predicate/index.mjs +2 -1
  374. package/dist/predicate/isIterable.d.mts +26 -0
  375. package/dist/predicate/isIterable.d.ts +26 -0
  376. package/dist/predicate/isIterable.js +28 -0
  377. package/dist/predicate/isIterable.mjs +28 -0
  378. package/fp.d.ts +1 -0
  379. package/fp.js +1 -0
  380. package/package.json +22 -1
@@ -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 };
@@ -0,0 +1,24 @@
1
+ const require_unzip = require("../../array/unzip.js");
2
+ //#region src/fp/array/unzip.ts
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
+ function unzip() {
19
+ return function(zipped) {
20
+ return require_unzip.unzip(zipped);
21
+ };
22
+ }
23
+ //#endregion
24
+ exports.unzip = unzip;
@@ -0,0 +1,24 @@
1
+ import { unzip as unzip$1 } from "../../array/unzip.mjs";
2
+ //#region src/fp/array/unzip.ts
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
+ function unzip() {
19
+ return function(zipped) {
20
+ return unzip$1(zipped);
21
+ };
22
+ }
23
+ //#endregion
24
+ export { unzip };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/unzipWith.d.ts
2
+ /**
3
+ * Creates a function that unzips grouped arrays and combines values by position.
4
+ *
5
+ * Values at the same position are passed to iteratee, and its return values form the
6
+ * resulting array.
7
+ *
8
+ * @template T - The element type inside each grouped array.
9
+ * @template R - The value returned by the iteratee.
10
+ * @param iteratee - Called with the values at each position.
11
+ * @returns A function that maps grouped arrays to combined values.
12
+ *
13
+ * @example
14
+ * import { pipe, unzipWith } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([[1, 10], [2, 20]], unzipWith((a, b) => a + b));
17
+ * // => [3, 30]
18
+ */
19
+ declare function unzipWith<T, R>(iteratee: (...args: T[]) => R): (target: readonly T[][]) => R[];
20
+ //#endregion
21
+ export { unzipWith };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/unzipWith.d.ts
2
+ /**
3
+ * Creates a function that unzips grouped arrays and combines values by position.
4
+ *
5
+ * Values at the same position are passed to iteratee, and its return values form the
6
+ * resulting array.
7
+ *
8
+ * @template T - The element type inside each grouped array.
9
+ * @template R - The value returned by the iteratee.
10
+ * @param iteratee - Called with the values at each position.
11
+ * @returns A function that maps grouped arrays to combined values.
12
+ *
13
+ * @example
14
+ * import { pipe, unzipWith } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([[1, 10], [2, 20]], unzipWith((a, b) => a + b));
17
+ * // => [3, 30]
18
+ */
19
+ declare function unzipWith<T, R>(iteratee: (...args: T[]) => R): (target: readonly T[][]) => R[];
20
+ //#endregion
21
+ export { unzipWith };
@@ -0,0 +1,26 @@
1
+ const require_unzipWith = require("../../array/unzipWith.js");
2
+ //#region src/fp/array/unzipWith.ts
3
+ /**
4
+ * Creates a function that unzips grouped arrays and combines values by position.
5
+ *
6
+ * Values at the same position are passed to iteratee, and its return values form the
7
+ * resulting array.
8
+ *
9
+ * @template T - The element type inside each grouped array.
10
+ * @template R - The value returned by the iteratee.
11
+ * @param iteratee - Called with the values at each position.
12
+ * @returns A function that maps grouped arrays to combined values.
13
+ *
14
+ * @example
15
+ * import { pipe, unzipWith } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([[1, 10], [2, 20]], unzipWith((a, b) => a + b));
18
+ * // => [3, 30]
19
+ */
20
+ function unzipWith(iteratee) {
21
+ return function(target) {
22
+ return require_unzipWith.unzipWith(target, iteratee);
23
+ };
24
+ }
25
+ //#endregion
26
+ exports.unzipWith = unzipWith;
@@ -0,0 +1,26 @@
1
+ import { unzipWith as unzipWith$1 } from "../../array/unzipWith.mjs";
2
+ //#region src/fp/array/unzipWith.ts
3
+ /**
4
+ * Creates a function that unzips grouped arrays and combines values by position.
5
+ *
6
+ * Values at the same position are passed to iteratee, and its return values form the
7
+ * resulting array.
8
+ *
9
+ * @template T - The element type inside each grouped array.
10
+ * @template R - The value returned by the iteratee.
11
+ * @param iteratee - Called with the values at each position.
12
+ * @returns A function that maps grouped arrays to combined values.
13
+ *
14
+ * @example
15
+ * import { pipe, unzipWith } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([[1, 10], [2, 20]], unzipWith((a, b) => a + b));
18
+ * // => [3, 30]
19
+ */
20
+ function unzipWith(iteratee) {
21
+ return function(target) {
22
+ return unzipWith$1(target, iteratee);
23
+ };
24
+ }
25
+ //#endregion
26
+ export { unzipWith };
@@ -0,0 +1,25 @@
1
+ import { WindowedOptions } from "../../array/windowed.mjs";
2
+
3
+ //#region src/fp/array/windowed.d.ts
4
+ /**
5
+ * Creates a function that returns sliding windows from an array.
6
+ *
7
+ * By default only full windows are returned. Pass partialWindows: true to include shorter
8
+ * trailing windows. The full-window form is lazy-capable inside {@link pipe}.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @param size - The size of each window. Must be a positive integer.
12
+ * @param step - The step between window starts. Defaults to 1.
13
+ * @param options - Window options.
14
+ * @returns A function that maps a readonly array to sliding windows.
15
+ * @throws {Error} When size or step is not a positive integer.
16
+ *
17
+ * @example
18
+ * import { pipe, windowed } from 'es-toolkit/fp';
19
+ *
20
+ * pipe([1, 2, 3, 4], windowed(2));
21
+ * // => [[1, 2], [2, 3], [3, 4]]
22
+ */
23
+ declare function windowed<T>(size: number, step?: number, options?: WindowedOptions): (array: readonly T[]) => T[][];
24
+ //#endregion
25
+ export { windowed };
@@ -0,0 +1,25 @@
1
+ import { WindowedOptions } from "../../array/windowed.js";
2
+
3
+ //#region src/fp/array/windowed.d.ts
4
+ /**
5
+ * Creates a function that returns sliding windows from an array.
6
+ *
7
+ * By default only full windows are returned. Pass partialWindows: true to include shorter
8
+ * trailing windows. The full-window form is lazy-capable inside {@link pipe}.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @param size - The size of each window. Must be a positive integer.
12
+ * @param step - The step between window starts. Defaults to 1.
13
+ * @param options - Window options.
14
+ * @returns A function that maps a readonly array to sliding windows.
15
+ * @throws {Error} When size or step is not a positive integer.
16
+ *
17
+ * @example
18
+ * import { pipe, windowed } from 'es-toolkit/fp';
19
+ *
20
+ * pipe([1, 2, 3, 4], windowed(2));
21
+ * // => [[1, 2], [2, 3], [3, 4]]
22
+ */
23
+ declare function windowed<T>(size: number, step?: number, options?: WindowedOptions): (array: readonly T[]) => T[][];
24
+ //#endregion
25
+ export { windowed };
@@ -0,0 +1,50 @@
1
+ const require_windowed = require("../../array/windowed.js");
2
+ const require_lazy = require("../_internal/lazy.js");
3
+ //#region src/fp/array/windowed.ts
4
+ /**
5
+ * Creates a function that returns sliding windows from an array.
6
+ *
7
+ * By default only full windows are returned. Pass partialWindows: true to include shorter
8
+ * trailing windows. The full-window form is lazy-capable inside {@link pipe}.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @param size - The size of each window. Must be a positive integer.
12
+ * @param step - The step between window starts. Defaults to 1.
13
+ * @param options - Window options.
14
+ * @returns A function that maps a readonly array to sliding windows.
15
+ * @throws {Error} When size or step is not a positive integer.
16
+ *
17
+ * @example
18
+ * import { pipe, windowed } from 'es-toolkit/fp';
19
+ *
20
+ * pipe([1, 2, 3, 4], windowed(2));
21
+ * // => [[1, 2], [2, 3], [3, 4]]
22
+ */
23
+ function windowed(size, step, options) {
24
+ const resolvedStep = step ?? 1;
25
+ const partialWindows = options?.partialWindows ?? false;
26
+ function windowedEager(array) {
27
+ return require_windowed.windowed(array, size, step, options);
28
+ }
29
+ if (partialWindows || !Number.isInteger(size) || size <= 0 || !Number.isInteger(resolvedStep) || resolvedStep <= 0) return windowedEager;
30
+ const windowedLazy = (emit) => {
31
+ const buffer = [];
32
+ let index = 0;
33
+ return (value) => {
34
+ buffer.push(value);
35
+ if (buffer.length > size) buffer.shift();
36
+ if (buffer.length === size) {
37
+ if ((index - size + 1) % resolvedStep === 0) {
38
+ const shouldContinue = emit(buffer.slice());
39
+ index++;
40
+ return shouldContinue;
41
+ }
42
+ }
43
+ index++;
44
+ return true;
45
+ };
46
+ };
47
+ return require_lazy.combineEagerAndLazyFunctions(windowedEager, windowedLazy);
48
+ }
49
+ //#endregion
50
+ exports.windowed = windowed;
@@ -0,0 +1,50 @@
1
+ import { windowed as windowed$1 } from "../../array/windowed.mjs";
2
+ import { combineEagerAndLazyFunctions } from "../_internal/lazy.mjs";
3
+ //#region src/fp/array/windowed.ts
4
+ /**
5
+ * Creates a function that returns sliding windows from an array.
6
+ *
7
+ * By default only full windows are returned. Pass partialWindows: true to include shorter
8
+ * trailing windows. The full-window form is lazy-capable inside {@link pipe}.
9
+ *
10
+ * @template T - The type of elements in the array.
11
+ * @param size - The size of each window. Must be a positive integer.
12
+ * @param step - The step between window starts. Defaults to 1.
13
+ * @param options - Window options.
14
+ * @returns A function that maps a readonly array to sliding windows.
15
+ * @throws {Error} When size or step is not a positive integer.
16
+ *
17
+ * @example
18
+ * import { pipe, windowed } from 'es-toolkit/fp';
19
+ *
20
+ * pipe([1, 2, 3, 4], windowed(2));
21
+ * // => [[1, 2], [2, 3], [3, 4]]
22
+ */
23
+ function windowed(size, step, options) {
24
+ const resolvedStep = step ?? 1;
25
+ const partialWindows = options?.partialWindows ?? false;
26
+ function windowedEager(array) {
27
+ return windowed$1(array, size, step, options);
28
+ }
29
+ if (partialWindows || !Number.isInteger(size) || size <= 0 || !Number.isInteger(resolvedStep) || resolvedStep <= 0) return windowedEager;
30
+ const windowedLazy = (emit) => {
31
+ const buffer = [];
32
+ let index = 0;
33
+ return (value) => {
34
+ buffer.push(value);
35
+ if (buffer.length > size) buffer.shift();
36
+ if (buffer.length === size) {
37
+ if ((index - size + 1) % resolvedStep === 0) {
38
+ const shouldContinue = emit(buffer.slice());
39
+ index++;
40
+ return shouldContinue;
41
+ }
42
+ }
43
+ index++;
44
+ return true;
45
+ };
46
+ };
47
+ return combineEagerAndLazyFunctions(windowedEager, windowedLazy);
48
+ }
49
+ //#endregion
50
+ export { windowed };
@@ -0,0 +1,19 @@
1
+ //#region src/fp/array/without.d.ts
2
+ /**
3
+ * Creates a function that removes the configured values from an array.
4
+ *
5
+ * The returned function is lazy-capable inside {@link pipe}.
6
+ *
7
+ * @template T - The type of elements in the array.
8
+ * @param values - Values to remove from the piped array.
9
+ * @returns A function that maps the piped array to the remaining values.
10
+ *
11
+ * @example
12
+ * import { pipe, without } from 'es-toolkit/fp';
13
+ *
14
+ * pipe([1, 2, 3, 2], without(2));
15
+ * // => [1, 3]
16
+ */
17
+ declare function without<T>(...values: T[]): (array: readonly T[]) => T[];
18
+ //#endregion
19
+ export { without };
@@ -0,0 +1,19 @@
1
+ //#region src/fp/array/without.d.ts
2
+ /**
3
+ * Creates a function that removes the configured values from an array.
4
+ *
5
+ * The returned function is lazy-capable inside {@link pipe}.
6
+ *
7
+ * @template T - The type of elements in the array.
8
+ * @param values - Values to remove from the piped array.
9
+ * @returns A function that maps the piped array to the remaining values.
10
+ *
11
+ * @example
12
+ * import { pipe, without } from 'es-toolkit/fp';
13
+ *
14
+ * pipe([1, 2, 3, 2], without(2));
15
+ * // => [1, 3]
16
+ */
17
+ declare function without<T>(...values: T[]): (array: readonly T[]) => T[];
18
+ //#endregion
19
+ export { without };
@@ -0,0 +1,30 @@
1
+ const require_without = require("../../array/without.js");
2
+ const require_lazy = require("../_internal/lazy.js");
3
+ //#region src/fp/array/without.ts
4
+ /**
5
+ * Creates a function that removes the configured values from an array.
6
+ *
7
+ * The returned function is lazy-capable inside {@link pipe}.
8
+ *
9
+ * @template T - The type of elements in the array.
10
+ * @param values - Values to remove from the piped array.
11
+ * @returns A function that maps the piped array to the remaining values.
12
+ *
13
+ * @example
14
+ * import { pipe, without } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([1, 2, 3, 2], without(2));
17
+ * // => [1, 3]
18
+ */
19
+ function without(...values) {
20
+ const valueSet = new Set(values);
21
+ function withoutEager(array) {
22
+ return require_without.without(array, ...values);
23
+ }
24
+ const withoutLazy = require_lazy.createLazyFunction((value, _index, emit) => {
25
+ if (!valueSet.has(value)) emit(value);
26
+ });
27
+ return require_lazy.combineEagerAndLazyFunctions(withoutEager, withoutLazy);
28
+ }
29
+ //#endregion
30
+ exports.without = without;
@@ -0,0 +1,29 @@
1
+ import { without as without$1 } from "../../array/without.mjs";
2
+ import { combineEagerAndLazyFunctions, createLazyFunction } from "../_internal/lazy.mjs";
3
+ //#region src/fp/array/without.ts
4
+ /**
5
+ * Creates a function that removes the configured values from an array.
6
+ *
7
+ * The returned function is lazy-capable inside {@link pipe}.
8
+ *
9
+ * @template T - The type of elements in the array.
10
+ * @param values - Values to remove from the piped array.
11
+ * @returns A function that maps the piped array to the remaining values.
12
+ *
13
+ * @example
14
+ * import { pipe, without } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([1, 2, 3, 2], without(2));
17
+ * // => [1, 3]
18
+ */
19
+ function without(...values) {
20
+ const valueSet = new Set(values);
21
+ function withoutEager(array) {
22
+ return without$1(array, ...values);
23
+ }
24
+ return combineEagerAndLazyFunctions(withoutEager, createLazyFunction((value, _index, emit) => {
25
+ if (!valueSet.has(value)) emit(value);
26
+ }));
27
+ }
28
+ //#endregion
29
+ export { without };
@@ -0,0 +1,20 @@
1
+ //#region src/fp/array/xor.d.ts
2
+ /**
3
+ * Creates a function that returns the symmetric difference with secondArray.
4
+ *
5
+ * The result contains values that appear in exactly one of the arrays, matching the main
6
+ * {@link xor} behavior.
7
+ *
8
+ * @template T - The type of elements in the arrays.
9
+ * @param secondArray - Values to compare with the piped array.
10
+ * @returns A function that maps a readonly array to its symmetric difference.
11
+ *
12
+ * @example
13
+ * import { pipe, xor } from 'es-toolkit/fp';
14
+ *
15
+ * pipe([1, 2], xor([2, 3]));
16
+ * // => [1, 3]
17
+ */
18
+ declare function xor<T>(secondArray: readonly T[]): (array: readonly T[]) => T[];
19
+ //#endregion
20
+ export { xor };