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,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 };
@@ -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 };
@@ -0,0 +1,25 @@
1
+ const require_xor = require("../../array/xor.js");
2
+ //#region src/fp/array/xor.ts
3
+ /**
4
+ * Creates a function that returns the symmetric difference with secondArray.
5
+ *
6
+ * The result contains values that appear in exactly one of the arrays, matching the main
7
+ * {@link xor} behavior.
8
+ *
9
+ * @template T - The type of elements in the arrays.
10
+ * @param secondArray - Values to compare with the piped array.
11
+ * @returns A function that maps a readonly array to its symmetric difference.
12
+ *
13
+ * @example
14
+ * import { pipe, xor } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([1, 2], xor([2, 3]));
17
+ * // => [1, 3]
18
+ */
19
+ function xor(secondArray) {
20
+ return function(array) {
21
+ return require_xor.xor(array, secondArray);
22
+ };
23
+ }
24
+ //#endregion
25
+ exports.xor = xor;
@@ -0,0 +1,25 @@
1
+ import { xor as xor$1 } from "../../array/xor.mjs";
2
+ //#region src/fp/array/xor.ts
3
+ /**
4
+ * Creates a function that returns the symmetric difference with secondArray.
5
+ *
6
+ * The result contains values that appear in exactly one of the arrays, matching the main
7
+ * {@link xor} behavior.
8
+ *
9
+ * @template T - The type of elements in the arrays.
10
+ * @param secondArray - Values to compare with the piped array.
11
+ * @returns A function that maps a readonly array to its symmetric difference.
12
+ *
13
+ * @example
14
+ * import { pipe, xor } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([1, 2], xor([2, 3]));
17
+ * // => [1, 3]
18
+ */
19
+ function xor(secondArray) {
20
+ return function(array) {
21
+ return xor$1(array, secondArray);
22
+ };
23
+ }
24
+ //#endregion
25
+ export { xor };
@@ -0,0 +1,22 @@
1
+ //#region src/fp/array/xorBy.d.ts
2
+ /**
3
+ * Creates a function that returns the symmetric difference by mapped identity.
4
+ *
5
+ * The mapper is used to decide which values appear in exactly one array, matching the main
6
+ * {@link xorBy} 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 compare with 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 symmetric difference.
13
+ *
14
+ * @example
15
+ * import { pipe, xorBy } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([{ id: 1 }, { id: 2 }], xorBy([{ id: 2 }, { id: 3 }], item => item.id));
18
+ * // => [{ id: 1 }, { id: 3 }]
19
+ */
20
+ declare function xorBy<T, U>(secondArray: readonly T[], mapper: (item: T) => U): (array: readonly T[]) => T[];
21
+ //#endregion
22
+ export { xorBy };
@@ -0,0 +1,22 @@
1
+ //#region src/fp/array/xorBy.d.ts
2
+ /**
3
+ * Creates a function that returns the symmetric difference by mapped identity.
4
+ *
5
+ * The mapper is used to decide which values appear in exactly one array, matching the main
6
+ * {@link xorBy} 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 compare with 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 symmetric difference.
13
+ *
14
+ * @example
15
+ * import { pipe, xorBy } from 'es-toolkit/fp';
16
+ *
17
+ * pipe([{ id: 1 }, { id: 2 }], xorBy([{ id: 2 }, { id: 3 }], item => item.id));
18
+ * // => [{ id: 1 }, { id: 3 }]
19
+ */
20
+ declare function xorBy<T, U>(secondArray: readonly T[], mapper: (item: T) => U): (array: readonly T[]) => T[];
21
+ //#endregion
22
+ export { xorBy };
@@ -0,0 +1,27 @@
1
+ const require_xorBy = require("../../array/xorBy.js");
2
+ //#region src/fp/array/xorBy.ts
3
+ /**
4
+ * Creates a function that returns the symmetric difference by mapped identity.
5
+ *
6
+ * The mapper is used to decide which values appear in exactly one array, matching the main
7
+ * {@link xorBy} 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 compare with 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 symmetric difference.
14
+ *
15
+ * @example
16
+ * import { pipe, xorBy } from 'es-toolkit/fp';
17
+ *
18
+ * pipe([{ id: 1 }, { id: 2 }], xorBy([{ id: 2 }, { id: 3 }], item => item.id));
19
+ * // => [{ id: 1 }, { id: 3 }]
20
+ */
21
+ function xorBy(secondArray, mapper) {
22
+ return function(array) {
23
+ return require_xorBy.xorBy(array, secondArray, mapper);
24
+ };
25
+ }
26
+ //#endregion
27
+ exports.xorBy = xorBy;
@@ -0,0 +1,27 @@
1
+ import { xorBy as xorBy$1 } from "../../array/xorBy.mjs";
2
+ //#region src/fp/array/xorBy.ts
3
+ /**
4
+ * Creates a function that returns the symmetric difference by mapped identity.
5
+ *
6
+ * The mapper is used to decide which values appear in exactly one array, matching the main
7
+ * {@link xorBy} 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 compare with 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 symmetric difference.
14
+ *
15
+ * @example
16
+ * import { pipe, xorBy } from 'es-toolkit/fp';
17
+ *
18
+ * pipe([{ id: 1 }, { id: 2 }], xorBy([{ id: 2 }, { id: 3 }], item => item.id));
19
+ * // => [{ id: 1 }, { id: 3 }]
20
+ */
21
+ function xorBy(secondArray, mapper) {
22
+ return function(array) {
23
+ return xorBy$1(array, secondArray, mapper);
24
+ };
25
+ }
26
+ //#endregion
27
+ export { xorBy };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/xorWith.d.ts
2
+ /**
3
+ * Creates a function that returns the symmetric difference using a custom equality function.
4
+ *
5
+ * The equality function decides whether two values represent the same item, matching the
6
+ * main {@link xorWith} behavior.
7
+ *
8
+ * @template T - The type of elements in the arrays.
9
+ * @param secondArray - Values to compare with the piped array.
10
+ * @param areItemsEqual - Returns true when two values are equal.
11
+ * @returns A function that maps a readonly array to its symmetric difference.
12
+ *
13
+ * @example
14
+ * import { pipe, xorWith } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([{ id: 1 }, { id: 2 }], xorWith([{ id: 2 }, { id: 3 }], (a, b) => a.id === b.id));
17
+ * // => [{ id: 1 }, { id: 3 }]
18
+ */
19
+ declare function xorWith<T>(secondArray: readonly T[], areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
20
+ //#endregion
21
+ export { xorWith };
@@ -0,0 +1,21 @@
1
+ //#region src/fp/array/xorWith.d.ts
2
+ /**
3
+ * Creates a function that returns the symmetric difference using a custom equality function.
4
+ *
5
+ * The equality function decides whether two values represent the same item, matching the
6
+ * main {@link xorWith} behavior.
7
+ *
8
+ * @template T - The type of elements in the arrays.
9
+ * @param secondArray - Values to compare with the piped array.
10
+ * @param areItemsEqual - Returns true when two values are equal.
11
+ * @returns A function that maps a readonly array to its symmetric difference.
12
+ *
13
+ * @example
14
+ * import { pipe, xorWith } from 'es-toolkit/fp';
15
+ *
16
+ * pipe([{ id: 1 }, { id: 2 }], xorWith([{ id: 2 }, { id: 3 }], (a, b) => a.id === b.id));
17
+ * // => [{ id: 1 }, { id: 3 }]
18
+ */
19
+ declare function xorWith<T>(secondArray: readonly T[], areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
20
+ //#endregion
21
+ export { xorWith };