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,235 @@
1
+ //#region src/fp/pipe.d.ts
2
+ /**
3
+ * Returns `value` unchanged — the identity case of {@link pipe} with no functions.
4
+ *
5
+ * @param value - The initial value fed into the pipe.
6
+ * @returns `value`, unchanged.
7
+ */
8
+ declare function pipe<A>(value: A): A;
9
+ /**
10
+ * Pipes `value` through `fn1`, returning its result.
11
+ *
12
+ * @param value - The initial value fed into the pipe.
13
+ * @param fn1 - Applied to `value`.
14
+ * @returns The result of `fn1`.
15
+ */
16
+ declare function pipe<A, B>(value: A, fn1: (input: A) => B): B;
17
+ /**
18
+ * Pipes `value` left-to-right through `fn1` to `fn2`, returning the final result.
19
+ *
20
+ * @param value - The initial value fed into the pipe.
21
+ * @param fn1 - Applied to `value`.
22
+ * @param fn2 - Applied to the result of `fn1`.
23
+ * @returns The result of `fn2` — the value returned by the last function.
24
+ */
25
+ declare function pipe<A, B, C>(value: A, fn1: (input: A) => B, fn2: (input: B) => C): C;
26
+ /**
27
+ * Pipes `value` left-to-right through `fn1` to `fn3`, returning the final result.
28
+ *
29
+ * @param value - The initial value fed into the pipe.
30
+ * @param fn1 - Applied to `value`.
31
+ * @param fn2 - Applied to the result of `fn1`.
32
+ * @param fn3 - Applied to the result of `fn2`.
33
+ * @returns The result of `fn3` — the value returned by the last function.
34
+ */
35
+ declare function pipe<A, B, C, D>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D): D;
36
+ /**
37
+ * Pipes `value` left-to-right through `fn1` to `fn4`, returning the final result.
38
+ *
39
+ * @param value - The initial value fed into the pipe.
40
+ * @param fn1 - Applied to `value`.
41
+ * @param fn2 - Applied to the result of `fn1`.
42
+ * @param fn3 - Applied to the result of `fn2`.
43
+ * @param fn4 - Applied to the result of `fn3`.
44
+ * @returns The result of `fn4` — the value returned by the last function.
45
+ */
46
+ declare function pipe<A, B, C, D, E>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E): E;
47
+ /**
48
+ * Pipes `value` left-to-right through `fn1` to `fn5`, returning the final result.
49
+ *
50
+ * @param value - The initial value fed into the pipe.
51
+ * @param fn1 - Applied to `value`.
52
+ * @param fn2 - Applied to the result of `fn1`.
53
+ * @param fn3 - Applied to the result of `fn2`.
54
+ * @param fn4 - Applied to the result of `fn3`.
55
+ * @param fn5 - Applied to the result of `fn4`.
56
+ * @returns The result of `fn5` — the value returned by the last function.
57
+ */
58
+ declare function pipe<A, B, C, D, E, F>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F): F;
59
+ /**
60
+ * Pipes `value` left-to-right through `fn1` to `fn6`, returning the final result.
61
+ *
62
+ * @param value - The initial value fed into the pipe.
63
+ * @param fn1 - Applied to `value`.
64
+ * @param fn2 - Applied to the result of `fn1`.
65
+ * @param fn3 - Applied to the result of `fn2`.
66
+ * @param fn4 - Applied to the result of `fn3`.
67
+ * @param fn5 - Applied to the result of `fn4`.
68
+ * @param fn6 - Applied to the result of `fn5`.
69
+ * @returns The result of `fn6` — the value returned by the last function.
70
+ */
71
+ declare function pipe<A, B, C, D, E, F, G>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G): G;
72
+ /**
73
+ * Pipes `value` left-to-right through `fn1` to `fn7`, returning the final result.
74
+ *
75
+ * @param value - The initial value fed into the pipe.
76
+ * @param fn1 - Applied to `value`.
77
+ * @param fn2 - Applied to the result of `fn1`.
78
+ * @param fn3 - Applied to the result of `fn2`.
79
+ * @param fn4 - Applied to the result of `fn3`.
80
+ * @param fn5 - Applied to the result of `fn4`.
81
+ * @param fn6 - Applied to the result of `fn5`.
82
+ * @param fn7 - Applied to the result of `fn6`.
83
+ * @returns The result of `fn7` — the value returned by the last function.
84
+ */
85
+ declare function pipe<A, B, C, D, E, F, G, H>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H): H;
86
+ /**
87
+ * Pipes `value` left-to-right through `fn1` to `fn8`, returning the final result.
88
+ *
89
+ * @param value - The initial value fed into the pipe.
90
+ * @param fn1 - Applied to `value`.
91
+ * @param fn2 - Applied to the result of `fn1`.
92
+ * @param fn3 - Applied to the result of `fn2`.
93
+ * @param fn4 - Applied to the result of `fn3`.
94
+ * @param fn5 - Applied to the result of `fn4`.
95
+ * @param fn6 - Applied to the result of `fn5`.
96
+ * @param fn7 - Applied to the result of `fn6`.
97
+ * @param fn8 - Applied to the result of `fn7`.
98
+ * @returns The result of `fn8` — the value returned by the last function.
99
+ */
100
+ declare function pipe<A, B, C, D, E, F, G, H, I>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I): I;
101
+ /**
102
+ * Pipes `value` left-to-right through `fn1` to `fn9`, returning the final result.
103
+ *
104
+ * @param value - The initial value fed into the pipe.
105
+ * @param fn1 - Applied to `value`.
106
+ * @param fn2 - Applied to the result of `fn1`.
107
+ * @param fn3 - Applied to the result of `fn2`.
108
+ * @param fn4 - Applied to the result of `fn3`.
109
+ * @param fn5 - Applied to the result of `fn4`.
110
+ * @param fn6 - Applied to the result of `fn5`.
111
+ * @param fn7 - Applied to the result of `fn6`.
112
+ * @param fn8 - Applied to the result of `fn7`.
113
+ * @param fn9 - Applied to the result of `fn8`.
114
+ * @returns The result of `fn9` — the value returned by the last function.
115
+ */
116
+ declare function pipe<A, B, C, D, E, F, G, H, I, J>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J): J;
117
+ /**
118
+ * Pipes `value` left-to-right through `fn1` to `fn10`, returning the final result.
119
+ *
120
+ * @param value - The initial value fed into the pipe.
121
+ * @param fn1 - Applied to `value`.
122
+ * @param fn2 - Applied to the result of `fn1`.
123
+ * @param fn3 - Applied to the result of `fn2`.
124
+ * @param fn4 - Applied to the result of `fn3`.
125
+ * @param fn5 - Applied to the result of `fn4`.
126
+ * @param fn6 - Applied to the result of `fn5`.
127
+ * @param fn7 - Applied to the result of `fn6`.
128
+ * @param fn8 - Applied to the result of `fn7`.
129
+ * @param fn9 - Applied to the result of `fn8`.
130
+ * @param fn10 - Applied to the result of `fn9`.
131
+ * @returns The result of `fn10` — the value returned by the last function.
132
+ */
133
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K): K;
134
+ /**
135
+ * Pipes `value` left-to-right through `fn1` to `fn11`, returning the final result.
136
+ *
137
+ * @param value - The initial value fed into the pipe.
138
+ * @param fn1 - Applied to `value`.
139
+ * @param fn2 - Applied to the result of `fn1`.
140
+ * @param fn3 - Applied to the result of `fn2`.
141
+ * @param fn4 - Applied to the result of `fn3`.
142
+ * @param fn5 - Applied to the result of `fn4`.
143
+ * @param fn6 - Applied to the result of `fn5`.
144
+ * @param fn7 - Applied to the result of `fn6`.
145
+ * @param fn8 - Applied to the result of `fn7`.
146
+ * @param fn9 - Applied to the result of `fn8`.
147
+ * @param fn10 - Applied to the result of `fn9`.
148
+ * @param fn11 - Applied to the result of `fn10`.
149
+ * @returns The result of `fn11` — the value returned by the last function.
150
+ */
151
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L): L;
152
+ /**
153
+ * Pipes `value` left-to-right through `fn1` to `fn12`, returning the final result.
154
+ *
155
+ * @param value - The initial value fed into the pipe.
156
+ * @param fn1 - Applied to `value`.
157
+ * @param fn2 - Applied to the result of `fn1`.
158
+ * @param fn3 - Applied to the result of `fn2`.
159
+ * @param fn4 - Applied to the result of `fn3`.
160
+ * @param fn5 - Applied to the result of `fn4`.
161
+ * @param fn6 - Applied to the result of `fn5`.
162
+ * @param fn7 - Applied to the result of `fn6`.
163
+ * @param fn8 - Applied to the result of `fn7`.
164
+ * @param fn9 - Applied to the result of `fn8`.
165
+ * @param fn10 - Applied to the result of `fn9`.
166
+ * @param fn11 - Applied to the result of `fn10`.
167
+ * @param fn12 - Applied to the result of `fn11`.
168
+ * @returns The result of `fn12` — the value returned by the last function.
169
+ */
170
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L, fn12: (input: L) => M): M;
171
+ /**
172
+ * Pipes `value` left-to-right through `fn1` to `fn13`, returning the final result.
173
+ *
174
+ * @param value - The initial value fed into the pipe.
175
+ * @param fn1 - Applied to `value`.
176
+ * @param fn2 - Applied to the result of `fn1`.
177
+ * @param fn3 - Applied to the result of `fn2`.
178
+ * @param fn4 - Applied to the result of `fn3`.
179
+ * @param fn5 - Applied to the result of `fn4`.
180
+ * @param fn6 - Applied to the result of `fn5`.
181
+ * @param fn7 - Applied to the result of `fn6`.
182
+ * @param fn8 - Applied to the result of `fn7`.
183
+ * @param fn9 - Applied to the result of `fn8`.
184
+ * @param fn10 - Applied to the result of `fn9`.
185
+ * @param fn11 - Applied to the result of `fn10`.
186
+ * @param fn12 - Applied to the result of `fn11`.
187
+ * @param fn13 - Applied to the result of `fn12`.
188
+ * @returns The result of `fn13` — the value returned by the last function.
189
+ */
190
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L, fn12: (input: L) => M, fn13: (input: M) => N): N;
191
+ /**
192
+ * Pipes `value` left-to-right through `fn1` to `fn14`, returning the final result.
193
+ *
194
+ * @param value - The initial value fed into the pipe.
195
+ * @param fn1 - Applied to `value`.
196
+ * @param fn2 - Applied to the result of `fn1`.
197
+ * @param fn3 - Applied to the result of `fn2`.
198
+ * @param fn4 - Applied to the result of `fn3`.
199
+ * @param fn5 - Applied to the result of `fn4`.
200
+ * @param fn6 - Applied to the result of `fn5`.
201
+ * @param fn7 - Applied to the result of `fn6`.
202
+ * @param fn8 - Applied to the result of `fn7`.
203
+ * @param fn9 - Applied to the result of `fn8`.
204
+ * @param fn10 - Applied to the result of `fn9`.
205
+ * @param fn11 - Applied to the result of `fn10`.
206
+ * @param fn12 - Applied to the result of `fn11`.
207
+ * @param fn13 - Applied to the result of `fn12`.
208
+ * @param fn14 - Applied to the result of `fn13`.
209
+ * @returns The result of `fn14` — the value returned by the last function.
210
+ */
211
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L, fn12: (input: L) => M, fn13: (input: M) => N, fn14: (input: N) => O): O;
212
+ /**
213
+ * Pipes `value` left-to-right through `fn1` to `fn15`, returning the final result.
214
+ *
215
+ * @param value - The initial value fed into the pipe.
216
+ * @param fn1 - Applied to `value`.
217
+ * @param fn2 - Applied to the result of `fn1`.
218
+ * @param fn3 - Applied to the result of `fn2`.
219
+ * @param fn4 - Applied to the result of `fn3`.
220
+ * @param fn5 - Applied to the result of `fn4`.
221
+ * @param fn6 - Applied to the result of `fn5`.
222
+ * @param fn7 - Applied to the result of `fn6`.
223
+ * @param fn8 - Applied to the result of `fn7`.
224
+ * @param fn9 - Applied to the result of `fn8`.
225
+ * @param fn10 - Applied to the result of `fn9`.
226
+ * @param fn11 - Applied to the result of `fn10`.
227
+ * @param fn12 - Applied to the result of `fn11`.
228
+ * @param fn13 - Applied to the result of `fn12`.
229
+ * @param fn14 - Applied to the result of `fn13`.
230
+ * @param fn15 - Applied to the result of `fn14`.
231
+ * @returns The result of `fn15` — the value returned by the last function.
232
+ */
233
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L, fn12: (input: L) => M, fn13: (input: M) => N, fn14: (input: N) => O, fn15: (input: O) => P): P;
234
+ //#endregion
235
+ export { pipe };
@@ -0,0 +1,235 @@
1
+ //#region src/fp/pipe.d.ts
2
+ /**
3
+ * Returns `value` unchanged — the identity case of {@link pipe} with no functions.
4
+ *
5
+ * @param value - The initial value fed into the pipe.
6
+ * @returns `value`, unchanged.
7
+ */
8
+ declare function pipe<A>(value: A): A;
9
+ /**
10
+ * Pipes `value` through `fn1`, returning its result.
11
+ *
12
+ * @param value - The initial value fed into the pipe.
13
+ * @param fn1 - Applied to `value`.
14
+ * @returns The result of `fn1`.
15
+ */
16
+ declare function pipe<A, B>(value: A, fn1: (input: A) => B): B;
17
+ /**
18
+ * Pipes `value` left-to-right through `fn1` to `fn2`, returning the final result.
19
+ *
20
+ * @param value - The initial value fed into the pipe.
21
+ * @param fn1 - Applied to `value`.
22
+ * @param fn2 - Applied to the result of `fn1`.
23
+ * @returns The result of `fn2` — the value returned by the last function.
24
+ */
25
+ declare function pipe<A, B, C>(value: A, fn1: (input: A) => B, fn2: (input: B) => C): C;
26
+ /**
27
+ * Pipes `value` left-to-right through `fn1` to `fn3`, returning the final result.
28
+ *
29
+ * @param value - The initial value fed into the pipe.
30
+ * @param fn1 - Applied to `value`.
31
+ * @param fn2 - Applied to the result of `fn1`.
32
+ * @param fn3 - Applied to the result of `fn2`.
33
+ * @returns The result of `fn3` — the value returned by the last function.
34
+ */
35
+ declare function pipe<A, B, C, D>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D): D;
36
+ /**
37
+ * Pipes `value` left-to-right through `fn1` to `fn4`, returning the final result.
38
+ *
39
+ * @param value - The initial value fed into the pipe.
40
+ * @param fn1 - Applied to `value`.
41
+ * @param fn2 - Applied to the result of `fn1`.
42
+ * @param fn3 - Applied to the result of `fn2`.
43
+ * @param fn4 - Applied to the result of `fn3`.
44
+ * @returns The result of `fn4` — the value returned by the last function.
45
+ */
46
+ declare function pipe<A, B, C, D, E>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E): E;
47
+ /**
48
+ * Pipes `value` left-to-right through `fn1` to `fn5`, returning the final result.
49
+ *
50
+ * @param value - The initial value fed into the pipe.
51
+ * @param fn1 - Applied to `value`.
52
+ * @param fn2 - Applied to the result of `fn1`.
53
+ * @param fn3 - Applied to the result of `fn2`.
54
+ * @param fn4 - Applied to the result of `fn3`.
55
+ * @param fn5 - Applied to the result of `fn4`.
56
+ * @returns The result of `fn5` — the value returned by the last function.
57
+ */
58
+ declare function pipe<A, B, C, D, E, F>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F): F;
59
+ /**
60
+ * Pipes `value` left-to-right through `fn1` to `fn6`, returning the final result.
61
+ *
62
+ * @param value - The initial value fed into the pipe.
63
+ * @param fn1 - Applied to `value`.
64
+ * @param fn2 - Applied to the result of `fn1`.
65
+ * @param fn3 - Applied to the result of `fn2`.
66
+ * @param fn4 - Applied to the result of `fn3`.
67
+ * @param fn5 - Applied to the result of `fn4`.
68
+ * @param fn6 - Applied to the result of `fn5`.
69
+ * @returns The result of `fn6` — the value returned by the last function.
70
+ */
71
+ declare function pipe<A, B, C, D, E, F, G>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G): G;
72
+ /**
73
+ * Pipes `value` left-to-right through `fn1` to `fn7`, returning the final result.
74
+ *
75
+ * @param value - The initial value fed into the pipe.
76
+ * @param fn1 - Applied to `value`.
77
+ * @param fn2 - Applied to the result of `fn1`.
78
+ * @param fn3 - Applied to the result of `fn2`.
79
+ * @param fn4 - Applied to the result of `fn3`.
80
+ * @param fn5 - Applied to the result of `fn4`.
81
+ * @param fn6 - Applied to the result of `fn5`.
82
+ * @param fn7 - Applied to the result of `fn6`.
83
+ * @returns The result of `fn7` — the value returned by the last function.
84
+ */
85
+ declare function pipe<A, B, C, D, E, F, G, H>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H): H;
86
+ /**
87
+ * Pipes `value` left-to-right through `fn1` to `fn8`, returning the final result.
88
+ *
89
+ * @param value - The initial value fed into the pipe.
90
+ * @param fn1 - Applied to `value`.
91
+ * @param fn2 - Applied to the result of `fn1`.
92
+ * @param fn3 - Applied to the result of `fn2`.
93
+ * @param fn4 - Applied to the result of `fn3`.
94
+ * @param fn5 - Applied to the result of `fn4`.
95
+ * @param fn6 - Applied to the result of `fn5`.
96
+ * @param fn7 - Applied to the result of `fn6`.
97
+ * @param fn8 - Applied to the result of `fn7`.
98
+ * @returns The result of `fn8` — the value returned by the last function.
99
+ */
100
+ declare function pipe<A, B, C, D, E, F, G, H, I>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I): I;
101
+ /**
102
+ * Pipes `value` left-to-right through `fn1` to `fn9`, returning the final result.
103
+ *
104
+ * @param value - The initial value fed into the pipe.
105
+ * @param fn1 - Applied to `value`.
106
+ * @param fn2 - Applied to the result of `fn1`.
107
+ * @param fn3 - Applied to the result of `fn2`.
108
+ * @param fn4 - Applied to the result of `fn3`.
109
+ * @param fn5 - Applied to the result of `fn4`.
110
+ * @param fn6 - Applied to the result of `fn5`.
111
+ * @param fn7 - Applied to the result of `fn6`.
112
+ * @param fn8 - Applied to the result of `fn7`.
113
+ * @param fn9 - Applied to the result of `fn8`.
114
+ * @returns The result of `fn9` — the value returned by the last function.
115
+ */
116
+ declare function pipe<A, B, C, D, E, F, G, H, I, J>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J): J;
117
+ /**
118
+ * Pipes `value` left-to-right through `fn1` to `fn10`, returning the final result.
119
+ *
120
+ * @param value - The initial value fed into the pipe.
121
+ * @param fn1 - Applied to `value`.
122
+ * @param fn2 - Applied to the result of `fn1`.
123
+ * @param fn3 - Applied to the result of `fn2`.
124
+ * @param fn4 - Applied to the result of `fn3`.
125
+ * @param fn5 - Applied to the result of `fn4`.
126
+ * @param fn6 - Applied to the result of `fn5`.
127
+ * @param fn7 - Applied to the result of `fn6`.
128
+ * @param fn8 - Applied to the result of `fn7`.
129
+ * @param fn9 - Applied to the result of `fn8`.
130
+ * @param fn10 - Applied to the result of `fn9`.
131
+ * @returns The result of `fn10` — the value returned by the last function.
132
+ */
133
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K): K;
134
+ /**
135
+ * Pipes `value` left-to-right through `fn1` to `fn11`, returning the final result.
136
+ *
137
+ * @param value - The initial value fed into the pipe.
138
+ * @param fn1 - Applied to `value`.
139
+ * @param fn2 - Applied to the result of `fn1`.
140
+ * @param fn3 - Applied to the result of `fn2`.
141
+ * @param fn4 - Applied to the result of `fn3`.
142
+ * @param fn5 - Applied to the result of `fn4`.
143
+ * @param fn6 - Applied to the result of `fn5`.
144
+ * @param fn7 - Applied to the result of `fn6`.
145
+ * @param fn8 - Applied to the result of `fn7`.
146
+ * @param fn9 - Applied to the result of `fn8`.
147
+ * @param fn10 - Applied to the result of `fn9`.
148
+ * @param fn11 - Applied to the result of `fn10`.
149
+ * @returns The result of `fn11` — the value returned by the last function.
150
+ */
151
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L): L;
152
+ /**
153
+ * Pipes `value` left-to-right through `fn1` to `fn12`, returning the final result.
154
+ *
155
+ * @param value - The initial value fed into the pipe.
156
+ * @param fn1 - Applied to `value`.
157
+ * @param fn2 - Applied to the result of `fn1`.
158
+ * @param fn3 - Applied to the result of `fn2`.
159
+ * @param fn4 - Applied to the result of `fn3`.
160
+ * @param fn5 - Applied to the result of `fn4`.
161
+ * @param fn6 - Applied to the result of `fn5`.
162
+ * @param fn7 - Applied to the result of `fn6`.
163
+ * @param fn8 - Applied to the result of `fn7`.
164
+ * @param fn9 - Applied to the result of `fn8`.
165
+ * @param fn10 - Applied to the result of `fn9`.
166
+ * @param fn11 - Applied to the result of `fn10`.
167
+ * @param fn12 - Applied to the result of `fn11`.
168
+ * @returns The result of `fn12` — the value returned by the last function.
169
+ */
170
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L, fn12: (input: L) => M): M;
171
+ /**
172
+ * Pipes `value` left-to-right through `fn1` to `fn13`, returning the final result.
173
+ *
174
+ * @param value - The initial value fed into the pipe.
175
+ * @param fn1 - Applied to `value`.
176
+ * @param fn2 - Applied to the result of `fn1`.
177
+ * @param fn3 - Applied to the result of `fn2`.
178
+ * @param fn4 - Applied to the result of `fn3`.
179
+ * @param fn5 - Applied to the result of `fn4`.
180
+ * @param fn6 - Applied to the result of `fn5`.
181
+ * @param fn7 - Applied to the result of `fn6`.
182
+ * @param fn8 - Applied to the result of `fn7`.
183
+ * @param fn9 - Applied to the result of `fn8`.
184
+ * @param fn10 - Applied to the result of `fn9`.
185
+ * @param fn11 - Applied to the result of `fn10`.
186
+ * @param fn12 - Applied to the result of `fn11`.
187
+ * @param fn13 - Applied to the result of `fn12`.
188
+ * @returns The result of `fn13` — the value returned by the last function.
189
+ */
190
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L, fn12: (input: L) => M, fn13: (input: M) => N): N;
191
+ /**
192
+ * Pipes `value` left-to-right through `fn1` to `fn14`, returning the final result.
193
+ *
194
+ * @param value - The initial value fed into the pipe.
195
+ * @param fn1 - Applied to `value`.
196
+ * @param fn2 - Applied to the result of `fn1`.
197
+ * @param fn3 - Applied to the result of `fn2`.
198
+ * @param fn4 - Applied to the result of `fn3`.
199
+ * @param fn5 - Applied to the result of `fn4`.
200
+ * @param fn6 - Applied to the result of `fn5`.
201
+ * @param fn7 - Applied to the result of `fn6`.
202
+ * @param fn8 - Applied to the result of `fn7`.
203
+ * @param fn9 - Applied to the result of `fn8`.
204
+ * @param fn10 - Applied to the result of `fn9`.
205
+ * @param fn11 - Applied to the result of `fn10`.
206
+ * @param fn12 - Applied to the result of `fn11`.
207
+ * @param fn13 - Applied to the result of `fn12`.
208
+ * @param fn14 - Applied to the result of `fn13`.
209
+ * @returns The result of `fn14` — the value returned by the last function.
210
+ */
211
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L, fn12: (input: L) => M, fn13: (input: M) => N, fn14: (input: N) => O): O;
212
+ /**
213
+ * Pipes `value` left-to-right through `fn1` to `fn15`, returning the final result.
214
+ *
215
+ * @param value - The initial value fed into the pipe.
216
+ * @param fn1 - Applied to `value`.
217
+ * @param fn2 - Applied to the result of `fn1`.
218
+ * @param fn3 - Applied to the result of `fn2`.
219
+ * @param fn4 - Applied to the result of `fn3`.
220
+ * @param fn5 - Applied to the result of `fn4`.
221
+ * @param fn6 - Applied to the result of `fn5`.
222
+ * @param fn7 - Applied to the result of `fn6`.
223
+ * @param fn8 - Applied to the result of `fn7`.
224
+ * @param fn9 - Applied to the result of `fn8`.
225
+ * @param fn10 - Applied to the result of `fn9`.
226
+ * @param fn11 - Applied to the result of `fn10`.
227
+ * @param fn12 - Applied to the result of `fn11`.
228
+ * @param fn13 - Applied to the result of `fn12`.
229
+ * @param fn14 - Applied to the result of `fn13`.
230
+ * @param fn15 - Applied to the result of `fn14`.
231
+ * @returns The result of `fn15` — the value returned by the last function.
232
+ */
233
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(value: A, fn1: (input: A) => B, fn2: (input: B) => C, fn3: (input: C) => D, fn4: (input: D) => E, fn5: (input: E) => F, fn6: (input: F) => G, fn7: (input: G) => H, fn8: (input: H) => I, fn9: (input: I) => J, fn10: (input: J) => K, fn11: (input: K) => L, fn12: (input: L) => M, fn13: (input: M) => N, fn14: (input: N) => O, fn15: (input: O) => P): P;
234
+ //#endregion
235
+ export { pipe };
@@ -0,0 +1,116 @@
1
+ //#region src/fp/pipe.ts
2
+ /**
3
+ * Performs left-to-right function composition, threading `value` through each
4
+ * function in sequence. Every function receives the output of the previous
5
+ * one, so the data flows top-to-bottom in the same order it is read. This
6
+ * turns deeply nested calls into clear, sequential steps without temporary
7
+ * variables.
8
+ *
9
+ * This is the entry point of `es-toolkit/fp`. Each `es-toolkit/fp` function is
10
+ * called with its configuration (e.g. `map(fn)`, `take(2)`) and returns a
11
+ * function that takes the data, which `pipe` then supplies.
12
+ *
13
+ * When consecutive **lazy-capable** functions (`map`, `filter`, `take`, ...)
14
+ * appear together, `pipe` fuses them and processes the input element-by-element
15
+ * instead of building an intermediate array after every step. This allows
16
+ * early termination: a trailing `take(n)` stops the walk as soon as `n`
17
+ * results exist, so the remaining input is never visited.
18
+ *
19
+ * @param value - The initial value fed into the pipe.
20
+ * @param functions - Data-last operators (or any unary functions) applied in order.
21
+ * @returns The result of applying every function, left to right.
22
+ *
23
+ * @example
24
+ * import { pipe, map, filter, take } from 'es-toolkit/fp';
25
+ *
26
+ * pipe([1, 2, 3], map(x => x * 3)); // => [3, 6, 9]
27
+ *
28
+ * @example
29
+ * // Lazy evaluation with early termination: only the first two even squares
30
+ * // are ever computed, the rest of the array is never touched.
31
+ * pipe(
32
+ * [1, 2, 3, 4, 5, 6, 7, 8],
33
+ * map(x => x * x),
34
+ * filter(x => x % 2 === 0),
35
+ * take(2)
36
+ * ); // => [4, 16]
37
+ *
38
+ * @example
39
+ * // Any unary function works inside a pipe, not just es-toolkit operators.
40
+ * pipe(
41
+ * ' Hello ',
42
+ * s => s.trim(),
43
+ * s => s.toLowerCase()
44
+ * ); // => 'hello'
45
+ */
46
+ function pipe(value, ...functions) {
47
+ let output = value;
48
+ const groups = chunkFunctions(functions);
49
+ for (let groupIndex = 0; groupIndex < groups.length; groupIndex++) {
50
+ const group = groups[groupIndex];
51
+ if (group.lazy && isIterable(output) && (group.shortCircuit || !Array.isArray(output))) output = lazyPipe(output, group);
52
+ else for (let index = 0; index < group.length; index++) output = group[index](output);
53
+ }
54
+ return output;
55
+ }
56
+ function chunkFunctions(functions) {
57
+ if (functions.length === 0) return [];
58
+ let currentGroup = [functions[0]];
59
+ const result = [currentGroup];
60
+ let previousIsLazy = currentGroup[0].lazy != null;
61
+ if (previousIsLazy) currentGroup.lazy = true;
62
+ if (currentGroup[0].shortCircuit) currentGroup.shortCircuit = true;
63
+ for (let index = 1; index < functions.length; index++) {
64
+ const func = functions[index];
65
+ const isLazy = func.lazy != null;
66
+ if (isLazy !== previousIsLazy) {
67
+ currentGroup = [func];
68
+ result.push(currentGroup);
69
+ } else currentGroup.push(func);
70
+ if (isLazy) currentGroup.lazy = true;
71
+ if (func.shortCircuit) currentGroup.shortCircuit = true;
72
+ previousIsLazy = isLazy;
73
+ }
74
+ return result;
75
+ }
76
+ /**
77
+ * Fuses a run of lazy functions into a single pass over `data`. The functions'
78
+ * push transforms are composed (last function first) into one sink, then `data`
79
+ * is driven through it element-by-element. A short-circuiting function (e.g.
80
+ * `take`) returns `false`, which stops the drive loop at once, so the functions
81
+ * before it never run on the rest of the input — no intermediate arrays.
82
+ *
83
+ * @param data - The iterable fed into the run (an array, `Set`, generator, ...).
84
+ * @param lazyFunctions - The consecutive lazy functions to fuse, in order.
85
+ * @returns The collected results.
86
+ */
87
+ function lazyPipe(data, lazyFunctions) {
88
+ const result = [];
89
+ let sink = (value) => {
90
+ result.push(value);
91
+ return true;
92
+ };
93
+ for (let index = lazyFunctions.length - 1; index >= 0; index--) sink = lazyFunctions[index].lazy(sink);
94
+ if (Array.isArray(data)) {
95
+ for (let index = 0; index < data.length; index++) if (sink(data[index]) === false) break;
96
+ } else {
97
+ const iterator = data[Symbol.iterator]();
98
+ let step = iterator.next();
99
+ while (!step.done) {
100
+ if (sink(step.value) === false) break;
101
+ step = iterator.next();
102
+ }
103
+ }
104
+ return result;
105
+ }
106
+ /**
107
+ * Whether `value` can be fed through the lazy path. A non-array iterable (a
108
+ * `Set`, a generator, ...) can only go through `lazyPipe`, since the eager path
109
+ * relies on array methods. Primitives and plain objects (no `Symbol.iterator`)
110
+ * fall through to the eager branch.
111
+ */
112
+ function isIterable(value) {
113
+ return typeof value === "object" && value !== null && Symbol.iterator in value;
114
+ }
115
+ //#endregion
116
+ exports.pipe = pipe;