fp-pack 0.1.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 (927) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +664 -0
  3. package/dist/fp-pack-stream.umd.js +2 -0
  4. package/dist/fp-pack-stream.umd.js.map +1 -0
  5. package/dist/fp-pack.umd.js +2 -0
  6. package/dist/fp-pack.umd.js.map +1 -0
  7. package/dist/implement/array/append.d.ts +7 -0
  8. package/dist/implement/array/append.d.ts.map +1 -0
  9. package/dist/implement/array/append.mjs +9 -0
  10. package/dist/implement/array/append.mjs.map +1 -0
  11. package/dist/implement/array/chunk.d.ts +7 -0
  12. package/dist/implement/array/chunk.d.ts.map +1 -0
  13. package/dist/implement/array/chunk.mjs +15 -0
  14. package/dist/implement/array/chunk.mjs.map +1 -0
  15. package/dist/implement/array/concat.d.ts +7 -0
  16. package/dist/implement/array/concat.d.ts.map +1 -0
  17. package/dist/implement/array/concat.mjs +9 -0
  18. package/dist/implement/array/concat.mjs.map +1 -0
  19. package/dist/implement/array/drop.d.ts +7 -0
  20. package/dist/implement/array/drop.d.ts.map +1 -0
  21. package/dist/implement/array/drop.mjs +10 -0
  22. package/dist/implement/array/drop.mjs.map +1 -0
  23. package/dist/implement/array/dropWhile.d.ts +7 -0
  24. package/dist/implement/array/dropWhile.d.ts.map +1 -0
  25. package/dist/implement/array/dropWhile.mjs +13 -0
  26. package/dist/implement/array/dropWhile.mjs.map +1 -0
  27. package/dist/implement/array/every.d.ts +7 -0
  28. package/dist/implement/array/every.d.ts.map +1 -0
  29. package/dist/implement/array/every.mjs +9 -0
  30. package/dist/implement/array/every.mjs.map +1 -0
  31. package/dist/implement/array/filter.d.ts +7 -0
  32. package/dist/implement/array/filter.d.ts.map +1 -0
  33. package/dist/implement/array/filter.mjs +9 -0
  34. package/dist/implement/array/filter.mjs.map +1 -0
  35. package/dist/implement/array/find.d.ts +7 -0
  36. package/dist/implement/array/find.d.ts.map +1 -0
  37. package/dist/implement/array/find.mjs +9 -0
  38. package/dist/implement/array/find.mjs.map +1 -0
  39. package/dist/implement/array/flatMap.d.ts +7 -0
  40. package/dist/implement/array/flatMap.d.ts.map +1 -0
  41. package/dist/implement/array/flatMap.mjs +9 -0
  42. package/dist/implement/array/flatMap.mjs.map +1 -0
  43. package/dist/implement/array/flatten.d.ts +6 -0
  44. package/dist/implement/array/flatten.d.ts.map +1 -0
  45. package/dist/implement/array/flatten.mjs +7 -0
  46. package/dist/implement/array/flatten.mjs.map +1 -0
  47. package/dist/implement/array/flattenDeep.d.ts +6 -0
  48. package/dist/implement/array/flattenDeep.d.ts.map +1 -0
  49. package/dist/implement/array/flattenDeep.mjs +11 -0
  50. package/dist/implement/array/flattenDeep.mjs.map +1 -0
  51. package/dist/implement/array/groupBy.d.ts +7 -0
  52. package/dist/implement/array/groupBy.d.ts.map +1 -0
  53. package/dist/implement/array/groupBy.mjs +12 -0
  54. package/dist/implement/array/groupBy.mjs.map +1 -0
  55. package/dist/implement/array/head.d.ts +6 -0
  56. package/dist/implement/array/head.d.ts.map +1 -0
  57. package/dist/implement/array/head.mjs +7 -0
  58. package/dist/implement/array/head.mjs.map +1 -0
  59. package/dist/implement/array/index.d.ts +34 -0
  60. package/dist/implement/array/index.d.ts.map +1 -0
  61. package/dist/implement/array/init.d.ts +6 -0
  62. package/dist/implement/array/init.d.ts.map +1 -0
  63. package/dist/implement/array/init.mjs +7 -0
  64. package/dist/implement/array/init.mjs.map +1 -0
  65. package/dist/implement/array/last.d.ts +6 -0
  66. package/dist/implement/array/last.d.ts.map +1 -0
  67. package/dist/implement/array/last.mjs +8 -0
  68. package/dist/implement/array/last.mjs.map +1 -0
  69. package/dist/implement/array/map.d.ts +7 -0
  70. package/dist/implement/array/map.d.ts.map +1 -0
  71. package/dist/implement/array/map.mjs +9 -0
  72. package/dist/implement/array/map.mjs.map +1 -0
  73. package/dist/implement/array/partition.d.ts +7 -0
  74. package/dist/implement/array/partition.d.ts.map +1 -0
  75. package/dist/implement/array/partition.mjs +12 -0
  76. package/dist/implement/array/partition.mjs.map +1 -0
  77. package/dist/implement/array/prepend.d.ts +7 -0
  78. package/dist/implement/array/prepend.d.ts.map +1 -0
  79. package/dist/implement/array/prepend.mjs +9 -0
  80. package/dist/implement/array/prepend.mjs.map +1 -0
  81. package/dist/implement/array/range.d.ts +6 -0
  82. package/dist/implement/array/range.d.ts.map +1 -0
  83. package/dist/implement/array/range.mjs +12 -0
  84. package/dist/implement/array/range.mjs.map +1 -0
  85. package/dist/implement/array/reduce.d.ts +8 -0
  86. package/dist/implement/array/reduce.d.ts.map +1 -0
  87. package/dist/implement/array/reduce.mjs +9 -0
  88. package/dist/implement/array/reduce.mjs.map +1 -0
  89. package/dist/implement/array/scan.d.ts +8 -0
  90. package/dist/implement/array/scan.d.ts.map +1 -0
  91. package/dist/implement/array/scan.mjs +13 -0
  92. package/dist/implement/array/scan.mjs.map +1 -0
  93. package/dist/implement/array/some.d.ts +7 -0
  94. package/dist/implement/array/some.d.ts.map +1 -0
  95. package/dist/implement/array/some.mjs +11 -0
  96. package/dist/implement/array/some.mjs.map +1 -0
  97. package/dist/implement/array/sort.d.ts +7 -0
  98. package/dist/implement/array/sort.d.ts.map +1 -0
  99. package/dist/implement/array/sort.mjs +9 -0
  100. package/dist/implement/array/sort.mjs.map +1 -0
  101. package/dist/implement/array/sortBy.d.ts +7 -0
  102. package/dist/implement/array/sortBy.d.ts.map +1 -0
  103. package/dist/implement/array/sortBy.mjs +12 -0
  104. package/dist/implement/array/sortBy.mjs.map +1 -0
  105. package/dist/implement/array/tail.d.ts +6 -0
  106. package/dist/implement/array/tail.d.ts.map +1 -0
  107. package/dist/implement/array/tail.mjs +7 -0
  108. package/dist/implement/array/tail.mjs.map +1 -0
  109. package/dist/implement/array/take.d.ts +7 -0
  110. package/dist/implement/array/take.d.ts.map +1 -0
  111. package/dist/implement/array/take.mjs +9 -0
  112. package/dist/implement/array/take.mjs.map +1 -0
  113. package/dist/implement/array/takeWhile.d.ts +7 -0
  114. package/dist/implement/array/takeWhile.d.ts.map +1 -0
  115. package/dist/implement/array/takeWhile.mjs +15 -0
  116. package/dist/implement/array/takeWhile.mjs.map +1 -0
  117. package/dist/implement/array/uniq.d.ts +6 -0
  118. package/dist/implement/array/uniq.d.ts.map +1 -0
  119. package/dist/implement/array/uniq.mjs +10 -0
  120. package/dist/implement/array/uniq.mjs.map +1 -0
  121. package/dist/implement/array/uniqBy.d.ts +7 -0
  122. package/dist/implement/array/uniqBy.d.ts.map +1 -0
  123. package/dist/implement/array/uniqBy.mjs +14 -0
  124. package/dist/implement/array/uniqBy.mjs.map +1 -0
  125. package/dist/implement/array/unzip.d.ts +6 -0
  126. package/dist/implement/array/unzip.d.ts.map +1 -0
  127. package/dist/implement/array/unzip.mjs +10 -0
  128. package/dist/implement/array/unzip.mjs.map +1 -0
  129. package/dist/implement/array/zip.d.ts +7 -0
  130. package/dist/implement/array/zip.d.ts.map +1 -0
  131. package/dist/implement/array/zip.mjs +12 -0
  132. package/dist/implement/array/zip.mjs.map +1 -0
  133. package/dist/implement/array/zipIndex.d.ts +6 -0
  134. package/dist/implement/array/zipIndex.d.ts.map +1 -0
  135. package/dist/implement/array/zipIndex.mjs +7 -0
  136. package/dist/implement/array/zipIndex.mjs.map +1 -0
  137. package/dist/implement/array/zipWith.d.ts +8 -0
  138. package/dist/implement/array/zipWith.d.ts.map +1 -0
  139. package/dist/implement/array/zipWith.mjs +12 -0
  140. package/dist/implement/array/zipWith.mjs.map +1 -0
  141. package/dist/implement/async/debounce.d.ts +7 -0
  142. package/dist/implement/async/debounce.d.ts.map +1 -0
  143. package/dist/implement/async/debounce.mjs +16 -0
  144. package/dist/implement/async/debounce.mjs.map +1 -0
  145. package/dist/implement/async/debounceLeading.d.ts +7 -0
  146. package/dist/implement/async/debounceLeading.d.ts.map +1 -0
  147. package/dist/implement/async/debounceLeading.mjs +14 -0
  148. package/dist/implement/async/debounceLeading.mjs.map +1 -0
  149. package/dist/implement/async/debounceLeadingTrailing.d.ts +7 -0
  150. package/dist/implement/async/debounceLeadingTrailing.d.ts.map +1 -0
  151. package/dist/implement/async/debounceLeadingTrailing.mjs +19 -0
  152. package/dist/implement/async/debounceLeadingTrailing.mjs.map +1 -0
  153. package/dist/implement/async/delay.d.ts +4 -0
  154. package/dist/implement/async/delay.d.ts.map +1 -0
  155. package/dist/implement/async/delay.mjs +9 -0
  156. package/dist/implement/async/delay.mjs.map +1 -0
  157. package/dist/implement/async/index.d.ts +10 -0
  158. package/dist/implement/async/index.d.ts.map +1 -0
  159. package/dist/implement/async/pipeAsync.d.ts +14 -0
  160. package/dist/implement/async/pipeAsync.d.ts.map +1 -0
  161. package/dist/implement/async/pipeAsync.mjs +12 -0
  162. package/dist/implement/async/pipeAsync.mjs.map +1 -0
  163. package/dist/implement/async/pipeAsyncSideEffect.d.ts +21 -0
  164. package/dist/implement/async/pipeAsyncSideEffect.d.ts.map +1 -0
  165. package/dist/implement/async/pipeAsyncSideEffect.mjs +16 -0
  166. package/dist/implement/async/pipeAsyncSideEffect.mjs.map +1 -0
  167. package/dist/implement/async/retry.d.ts +7 -0
  168. package/dist/implement/async/retry.d.ts.map +1 -0
  169. package/dist/implement/async/retry.mjs +19 -0
  170. package/dist/implement/async/retry.mjs.map +1 -0
  171. package/dist/implement/async/throttle.d.ts +7 -0
  172. package/dist/implement/async/throttle.d.ts.map +1 -0
  173. package/dist/implement/async/throttle.mjs +18 -0
  174. package/dist/implement/async/throttle.mjs.map +1 -0
  175. package/dist/implement/async/timeout.d.ts +7 -0
  176. package/dist/implement/async/timeout.d.ts.map +1 -0
  177. package/dist/implement/async/timeout.mjs +16 -0
  178. package/dist/implement/async/timeout.mjs.map +1 -0
  179. package/dist/implement/composition/complement.d.ts +7 -0
  180. package/dist/implement/composition/complement.d.ts.map +1 -0
  181. package/dist/implement/composition/complement.mjs +7 -0
  182. package/dist/implement/composition/complement.mjs.map +1 -0
  183. package/dist/implement/composition/compose.d.ts +16 -0
  184. package/dist/implement/composition/compose.d.ts.map +1 -0
  185. package/dist/implement/composition/compose.mjs +7 -0
  186. package/dist/implement/composition/compose.mjs.map +1 -0
  187. package/dist/implement/composition/constant.d.ts +6 -0
  188. package/dist/implement/composition/constant.d.ts.map +1 -0
  189. package/dist/implement/composition/constant.mjs +7 -0
  190. package/dist/implement/composition/constant.mjs.map +1 -0
  191. package/dist/implement/composition/curry.d.ts +32 -0
  192. package/dist/implement/composition/curry.d.ts.map +1 -0
  193. package/dist/implement/composition/curry.mjs +8 -0
  194. package/dist/implement/composition/curry.mjs.map +1 -0
  195. package/dist/implement/composition/flip.d.ts +10 -0
  196. package/dist/implement/composition/flip.d.ts.map +1 -0
  197. package/dist/implement/composition/flip.mjs +10 -0
  198. package/dist/implement/composition/flip.mjs.map +1 -0
  199. package/dist/implement/composition/identity.d.ts +6 -0
  200. package/dist/implement/composition/identity.d.ts.map +1 -0
  201. package/dist/implement/composition/identity.mjs +7 -0
  202. package/dist/implement/composition/identity.mjs.map +1 -0
  203. package/dist/implement/composition/index.d.ts +16 -0
  204. package/dist/implement/composition/index.d.ts.map +1 -0
  205. package/dist/implement/composition/memoize.d.ts +7 -0
  206. package/dist/implement/composition/memoize.d.ts.map +1 -0
  207. package/dist/implement/composition/memoize.mjs +16 -0
  208. package/dist/implement/composition/memoize.mjs.map +1 -0
  209. package/dist/implement/composition/once.d.ts +7 -0
  210. package/dist/implement/composition/once.d.ts.map +1 -0
  211. package/dist/implement/composition/once.mjs +10 -0
  212. package/dist/implement/composition/once.mjs.map +1 -0
  213. package/dist/implement/composition/partial.d.ts +6 -0
  214. package/dist/implement/composition/partial.d.ts.map +1 -0
  215. package/dist/implement/composition/partial.mjs +10 -0
  216. package/dist/implement/composition/partial.mjs.map +1 -0
  217. package/dist/implement/composition/pipe.d.ts +13 -0
  218. package/dist/implement/composition/pipe.d.ts.map +1 -0
  219. package/dist/implement/composition/pipe.mjs +7 -0
  220. package/dist/implement/composition/pipe.mjs.map +1 -0
  221. package/dist/implement/composition/pipe.type-test.d.ts +20 -0
  222. package/dist/implement/composition/pipe.type-test.d.ts.map +1 -0
  223. package/dist/implement/composition/pipeSideEffect.d.ts +17 -0
  224. package/dist/implement/composition/pipeSideEffect.d.ts.map +1 -0
  225. package/dist/implement/composition/pipeSideEffect.mjs +16 -0
  226. package/dist/implement/composition/pipeSideEffect.mjs.map +1 -0
  227. package/dist/implement/composition/sideEffect.d.ts +18 -0
  228. package/dist/implement/composition/sideEffect.d.ts.map +1 -0
  229. package/dist/implement/composition/sideEffect.mjs +27 -0
  230. package/dist/implement/composition/sideEffect.mjs.map +1 -0
  231. package/dist/implement/composition/tap.d.ts +6 -0
  232. package/dist/implement/composition/tap.d.ts.map +1 -0
  233. package/dist/implement/composition/tap.mjs +7 -0
  234. package/dist/implement/composition/tap.mjs.map +1 -0
  235. package/dist/implement/control/cond.d.ts +6 -0
  236. package/dist/implement/control/cond.d.ts.map +1 -0
  237. package/dist/implement/control/cond.mjs +11 -0
  238. package/dist/implement/control/cond.mjs.map +1 -0
  239. package/dist/implement/control/guard.d.ts +8 -0
  240. package/dist/implement/control/guard.d.ts.map +1 -0
  241. package/dist/implement/control/guard.mjs +9 -0
  242. package/dist/implement/control/guard.mjs.map +1 -0
  243. package/dist/implement/control/ifElse.d.ts +18 -0
  244. package/dist/implement/control/ifElse.d.ts.map +1 -0
  245. package/dist/implement/control/ifElse.mjs +9 -0
  246. package/dist/implement/control/ifElse.mjs.map +1 -0
  247. package/dist/implement/control/index.d.ts +7 -0
  248. package/dist/implement/control/index.d.ts.map +1 -0
  249. package/dist/implement/control/tryCatch.d.ts +12 -0
  250. package/dist/implement/control/tryCatch.d.ts.map +1 -0
  251. package/dist/implement/control/tryCatch.mjs +14 -0
  252. package/dist/implement/control/tryCatch.mjs.map +1 -0
  253. package/dist/implement/control/unless.d.ts +9 -0
  254. package/dist/implement/control/unless.d.ts.map +1 -0
  255. package/dist/implement/control/unless.mjs +9 -0
  256. package/dist/implement/control/unless.mjs.map +1 -0
  257. package/dist/implement/control/when.d.ts +9 -0
  258. package/dist/implement/control/when.d.ts.map +1 -0
  259. package/dist/implement/control/when.mjs +9 -0
  260. package/dist/implement/control/when.mjs.map +1 -0
  261. package/dist/implement/debug/assert.d.ts +6 -0
  262. package/dist/implement/debug/assert.d.ts.map +1 -0
  263. package/dist/implement/debug/assert.mjs +10 -0
  264. package/dist/implement/debug/assert.mjs.map +1 -0
  265. package/dist/implement/debug/index.d.ts +4 -0
  266. package/dist/implement/debug/index.d.ts.map +1 -0
  267. package/dist/implement/debug/invariant.d.ts +6 -0
  268. package/dist/implement/debug/invariant.d.ts.map +1 -0
  269. package/dist/implement/debug/invariant.mjs +10 -0
  270. package/dist/implement/debug/invariant.mjs.map +1 -0
  271. package/dist/implement/debug/log.d.ts +4 -0
  272. package/dist/implement/debug/log.d.ts.map +1 -0
  273. package/dist/implement/debug/log.mjs +7 -0
  274. package/dist/implement/debug/log.mjs.map +1 -0
  275. package/dist/implement/equality/clamp.d.ts +7 -0
  276. package/dist/implement/equality/clamp.d.ts.map +1 -0
  277. package/dist/implement/equality/clamp.mjs +9 -0
  278. package/dist/implement/equality/clamp.mjs.map +1 -0
  279. package/dist/implement/equality/equals.d.ts +6 -0
  280. package/dist/implement/equality/equals.d.ts.map +1 -0
  281. package/dist/implement/equality/equals.mjs +59 -0
  282. package/dist/implement/equality/equals.mjs.map +1 -0
  283. package/dist/implement/equality/gt.d.ts +4 -0
  284. package/dist/implement/equality/gt.d.ts.map +1 -0
  285. package/dist/implement/equality/gt.mjs +7 -0
  286. package/dist/implement/equality/gt.mjs.map +1 -0
  287. package/dist/implement/equality/gte.d.ts +4 -0
  288. package/dist/implement/equality/gte.d.ts.map +1 -0
  289. package/dist/implement/equality/gte.mjs +7 -0
  290. package/dist/implement/equality/gte.mjs.map +1 -0
  291. package/dist/implement/equality/includes.d.ts +4 -0
  292. package/dist/implement/equality/includes.d.ts.map +1 -0
  293. package/dist/implement/equality/includes.mjs +15 -0
  294. package/dist/implement/equality/includes.mjs.map +1 -0
  295. package/dist/implement/equality/index.d.ts +11 -0
  296. package/dist/implement/equality/index.d.ts.map +1 -0
  297. package/dist/implement/equality/isEmpty.d.ts +4 -0
  298. package/dist/implement/equality/isEmpty.d.ts.map +1 -0
  299. package/dist/implement/equality/isEmpty.mjs +7 -0
  300. package/dist/implement/equality/isEmpty.mjs.map +1 -0
  301. package/dist/implement/equality/isNil.d.ts +4 -0
  302. package/dist/implement/equality/isNil.d.ts.map +1 -0
  303. package/dist/implement/equality/isNil.mjs +7 -0
  304. package/dist/implement/equality/isNil.mjs.map +1 -0
  305. package/dist/implement/equality/isType.d.ts +4 -0
  306. package/dist/implement/equality/isType.d.ts.map +1 -0
  307. package/dist/implement/equality/isType.mjs +13 -0
  308. package/dist/implement/equality/isType.mjs.map +1 -0
  309. package/dist/implement/equality/lt.d.ts +4 -0
  310. package/dist/implement/equality/lt.d.ts.map +1 -0
  311. package/dist/implement/equality/lt.mjs +7 -0
  312. package/dist/implement/equality/lt.mjs.map +1 -0
  313. package/dist/implement/equality/lte.d.ts +4 -0
  314. package/dist/implement/equality/lte.d.ts.map +1 -0
  315. package/dist/implement/equality/lte.mjs +7 -0
  316. package/dist/implement/equality/lte.mjs.map +1 -0
  317. package/dist/implement/math/add.d.ts +6 -0
  318. package/dist/implement/math/add.d.ts.map +1 -0
  319. package/dist/implement/math/add.mjs +9 -0
  320. package/dist/implement/math/add.mjs.map +1 -0
  321. package/dist/implement/math/ceil.d.ts +4 -0
  322. package/dist/implement/math/ceil.d.ts.map +1 -0
  323. package/dist/implement/math/ceil.mjs +7 -0
  324. package/dist/implement/math/ceil.mjs.map +1 -0
  325. package/dist/implement/math/div.d.ts +6 -0
  326. package/dist/implement/math/div.d.ts.map +1 -0
  327. package/dist/implement/math/div.mjs +9 -0
  328. package/dist/implement/math/div.mjs.map +1 -0
  329. package/dist/implement/math/floor.d.ts +4 -0
  330. package/dist/implement/math/floor.d.ts.map +1 -0
  331. package/dist/implement/math/floor.mjs +7 -0
  332. package/dist/implement/math/floor.mjs.map +1 -0
  333. package/dist/implement/math/index.d.ts +13 -0
  334. package/dist/implement/math/index.d.ts.map +1 -0
  335. package/dist/implement/math/max.d.ts +4 -0
  336. package/dist/implement/math/max.d.ts.map +1 -0
  337. package/dist/implement/math/max.mjs +7 -0
  338. package/dist/implement/math/max.mjs.map +1 -0
  339. package/dist/implement/math/mean.d.ts +4 -0
  340. package/dist/implement/math/mean.d.ts.map +1 -0
  341. package/dist/implement/math/mean.mjs +7 -0
  342. package/dist/implement/math/mean.mjs.map +1 -0
  343. package/dist/implement/math/min.d.ts +4 -0
  344. package/dist/implement/math/min.d.ts.map +1 -0
  345. package/dist/implement/math/min.mjs +7 -0
  346. package/dist/implement/math/min.mjs.map +1 -0
  347. package/dist/implement/math/mul.d.ts +6 -0
  348. package/dist/implement/math/mul.d.ts.map +1 -0
  349. package/dist/implement/math/mul.mjs +9 -0
  350. package/dist/implement/math/mul.mjs.map +1 -0
  351. package/dist/implement/math/randomInt.d.ts +6 -0
  352. package/dist/implement/math/randomInt.d.ts.map +1 -0
  353. package/dist/implement/math/randomInt.mjs +10 -0
  354. package/dist/implement/math/randomInt.mjs.map +1 -0
  355. package/dist/implement/math/round.d.ts +4 -0
  356. package/dist/implement/math/round.d.ts.map +1 -0
  357. package/dist/implement/math/round.mjs +7 -0
  358. package/dist/implement/math/round.mjs.map +1 -0
  359. package/dist/implement/math/sub.d.ts +6 -0
  360. package/dist/implement/math/sub.d.ts.map +1 -0
  361. package/dist/implement/math/sub.mjs +9 -0
  362. package/dist/implement/math/sub.mjs.map +1 -0
  363. package/dist/implement/math/sum.d.ts +4 -0
  364. package/dist/implement/math/sum.d.ts.map +1 -0
  365. package/dist/implement/math/sum.mjs +7 -0
  366. package/dist/implement/math/sum.mjs.map +1 -0
  367. package/dist/implement/nullable/fold.d.ts +8 -0
  368. package/dist/implement/nullable/fold.d.ts.map +1 -0
  369. package/dist/implement/nullable/fold.mjs +9 -0
  370. package/dist/implement/nullable/fold.mjs.map +1 -0
  371. package/dist/implement/nullable/getOrElse.d.ts +4 -0
  372. package/dist/implement/nullable/getOrElse.d.ts.map +1 -0
  373. package/dist/implement/nullable/getOrElse.mjs +7 -0
  374. package/dist/implement/nullable/getOrElse.mjs.map +1 -0
  375. package/dist/implement/nullable/index.d.ts +6 -0
  376. package/dist/implement/nullable/index.d.ts.map +1 -0
  377. package/dist/implement/nullable/mapMaybe.d.ts +4 -0
  378. package/dist/implement/nullable/mapMaybe.d.ts.map +1 -0
  379. package/dist/implement/nullable/mapMaybe.mjs +14 -0
  380. package/dist/implement/nullable/mapMaybe.mjs.map +1 -0
  381. package/dist/implement/nullable/maybe.d.ts +4 -0
  382. package/dist/implement/nullable/maybe.d.ts.map +1 -0
  383. package/dist/implement/nullable/maybe.mjs +7 -0
  384. package/dist/implement/nullable/maybe.mjs.map +1 -0
  385. package/dist/implement/nullable/result.d.ts +10 -0
  386. package/dist/implement/nullable/result.d.ts.map +1 -0
  387. package/dist/implement/nullable/result.mjs +11 -0
  388. package/dist/implement/nullable/result.mjs.map +1 -0
  389. package/dist/implement/object/assoc.d.ts +11 -0
  390. package/dist/implement/object/assoc.d.ts.map +1 -0
  391. package/dist/implement/object/assoc.mjs +16 -0
  392. package/dist/implement/object/assoc.mjs.map +1 -0
  393. package/dist/implement/object/assoc.type-test.d.ts +30 -0
  394. package/dist/implement/object/assoc.type-test.d.ts.map +1 -0
  395. package/dist/implement/object/assocPath.d.ts +9 -0
  396. package/dist/implement/object/assocPath.d.ts.map +1 -0
  397. package/dist/implement/object/assocPath.mjs +21 -0
  398. package/dist/implement/object/assocPath.mjs.map +1 -0
  399. package/dist/implement/object/dissoc.d.ts +7 -0
  400. package/dist/implement/object/dissoc.d.ts.map +1 -0
  401. package/dist/implement/object/dissoc.mjs +15 -0
  402. package/dist/implement/object/dissoc.mjs.map +1 -0
  403. package/dist/implement/object/dissocPath.d.ts +8 -0
  404. package/dist/implement/object/dissocPath.d.ts.map +1 -0
  405. package/dist/implement/object/dissocPath.mjs +33 -0
  406. package/dist/implement/object/dissocPath.mjs.map +1 -0
  407. package/dist/implement/object/entries.d.ts +6 -0
  408. package/dist/implement/object/entries.d.ts.map +1 -0
  409. package/dist/implement/object/entries.mjs +7 -0
  410. package/dist/implement/object/entries.mjs.map +1 -0
  411. package/dist/implement/object/evolve.d.ts +9 -0
  412. package/dist/implement/object/evolve.d.ts.map +1 -0
  413. package/dist/implement/object/evolve.mjs +14 -0
  414. package/dist/implement/object/evolve.mjs.map +1 -0
  415. package/dist/implement/object/has.d.ts +7 -0
  416. package/dist/implement/object/has.d.ts.map +1 -0
  417. package/dist/implement/object/has.mjs +9 -0
  418. package/dist/implement/object/has.mjs.map +1 -0
  419. package/dist/implement/object/hasPath.d.ts +6 -0
  420. package/dist/implement/object/hasPath.d.ts.map +1 -0
  421. package/dist/implement/object/hasPath.mjs +15 -0
  422. package/dist/implement/object/hasPath.mjs.map +1 -0
  423. package/dist/implement/object/index.d.ts +21 -0
  424. package/dist/implement/object/index.d.ts.map +1 -0
  425. package/dist/implement/object/keys.d.ts +6 -0
  426. package/dist/implement/object/keys.d.ts.map +1 -0
  427. package/dist/implement/object/keys.mjs +7 -0
  428. package/dist/implement/object/keys.mjs.map +1 -0
  429. package/dist/implement/object/mapValues.d.ts +6 -0
  430. package/dist/implement/object/mapValues.d.ts.map +1 -0
  431. package/dist/implement/object/mapValues.mjs +12 -0
  432. package/dist/implement/object/mapValues.mjs.map +1 -0
  433. package/dist/implement/object/merge.d.ts +7 -0
  434. package/dist/implement/object/merge.d.ts.map +1 -0
  435. package/dist/implement/object/merge.mjs +12 -0
  436. package/dist/implement/object/merge.mjs.map +1 -0
  437. package/dist/implement/object/mergeAll.d.ts +6 -0
  438. package/dist/implement/object/mergeAll.d.ts.map +1 -0
  439. package/dist/implement/object/mergeAll.mjs +10 -0
  440. package/dist/implement/object/mergeAll.mjs.map +1 -0
  441. package/dist/implement/object/mergeDeep.d.ts +7 -0
  442. package/dist/implement/object/mergeDeep.d.ts.map +1 -0
  443. package/dist/implement/object/mergeDeep.mjs +20 -0
  444. package/dist/implement/object/mergeDeep.mjs.map +1 -0
  445. package/dist/implement/object/omit.d.ts +7 -0
  446. package/dist/implement/object/omit.d.ts.map +1 -0
  447. package/dist/implement/object/omit.mjs +12 -0
  448. package/dist/implement/object/omit.mjs.map +1 -0
  449. package/dist/implement/object/path.d.ts +7 -0
  450. package/dist/implement/object/path.d.ts.map +1 -0
  451. package/dist/implement/object/path.mjs +9 -0
  452. package/dist/implement/object/path.mjs.map +1 -0
  453. package/dist/implement/object/pathOr.d.ts +8 -0
  454. package/dist/implement/object/pathOr.d.ts.map +1 -0
  455. package/dist/implement/object/pathOr.mjs +10 -0
  456. package/dist/implement/object/pathOr.mjs.map +1 -0
  457. package/dist/implement/object/pick.d.ts +7 -0
  458. package/dist/implement/object/pick.d.ts.map +1 -0
  459. package/dist/implement/object/pick.mjs +12 -0
  460. package/dist/implement/object/pick.mjs.map +1 -0
  461. package/dist/implement/object/prop.d.ts +7 -0
  462. package/dist/implement/object/prop.d.ts.map +1 -0
  463. package/dist/implement/object/prop.mjs +9 -0
  464. package/dist/implement/object/prop.mjs.map +1 -0
  465. package/dist/implement/object/propOr.d.ts +8 -0
  466. package/dist/implement/object/propOr.d.ts.map +1 -0
  467. package/dist/implement/object/propOr.mjs +10 -0
  468. package/dist/implement/object/propOr.mjs.map +1 -0
  469. package/dist/implement/object/values.d.ts +6 -0
  470. package/dist/implement/object/values.d.ts.map +1 -0
  471. package/dist/implement/object/values.mjs +7 -0
  472. package/dist/implement/object/values.mjs.map +1 -0
  473. package/dist/implement/string/endsWith.d.ts +5 -0
  474. package/dist/implement/string/endsWith.d.ts.map +1 -0
  475. package/dist/implement/string/endsWith.mjs +18 -0
  476. package/dist/implement/string/endsWith.mjs.map +1 -0
  477. package/dist/implement/string/index.d.ts +10 -0
  478. package/dist/implement/string/index.d.ts.map +1 -0
  479. package/dist/implement/string/join.d.ts +6 -0
  480. package/dist/implement/string/join.d.ts.map +1 -0
  481. package/dist/implement/string/join.mjs +9 -0
  482. package/dist/implement/string/join.mjs.map +1 -0
  483. package/dist/implement/string/match.d.ts +6 -0
  484. package/dist/implement/string/match.d.ts.map +1 -0
  485. package/dist/implement/string/match.mjs +9 -0
  486. package/dist/implement/string/match.mjs.map +1 -0
  487. package/dist/implement/string/replace.d.ts +7 -0
  488. package/dist/implement/string/replace.d.ts.map +1 -0
  489. package/dist/implement/string/replace.mjs +9 -0
  490. package/dist/implement/string/replace.mjs.map +1 -0
  491. package/dist/implement/string/split.d.ts +6 -0
  492. package/dist/implement/string/split.d.ts.map +1 -0
  493. package/dist/implement/string/split.mjs +9 -0
  494. package/dist/implement/string/split.mjs.map +1 -0
  495. package/dist/implement/string/startsWith.d.ts +5 -0
  496. package/dist/implement/string/startsWith.d.ts.map +1 -0
  497. package/dist/implement/string/startsWith.mjs +16 -0
  498. package/dist/implement/string/startsWith.mjs.map +1 -0
  499. package/dist/implement/string/toLower.d.ts +4 -0
  500. package/dist/implement/string/toLower.d.ts.map +1 -0
  501. package/dist/implement/string/toLower.mjs +7 -0
  502. package/dist/implement/string/toLower.mjs.map +1 -0
  503. package/dist/implement/string/toUpper.d.ts +4 -0
  504. package/dist/implement/string/toUpper.d.ts.map +1 -0
  505. package/dist/implement/string/toUpper.mjs +7 -0
  506. package/dist/implement/string/toUpper.mjs.map +1 -0
  507. package/dist/implement/string/trim.d.ts +4 -0
  508. package/dist/implement/string/trim.d.ts.map +1 -0
  509. package/dist/implement/string/trim.mjs +7 -0
  510. package/dist/implement/string/trim.mjs.map +1 -0
  511. package/dist/index.d.ts +11 -0
  512. package/dist/index.d.ts.map +1 -0
  513. package/dist/index.mjs +247 -0
  514. package/dist/index.mjs.map +1 -0
  515. package/dist/skills/fp-pack.md +1644 -0
  516. package/dist/stream/append.d.ts +8 -0
  517. package/dist/stream/append.d.ts.map +1 -0
  518. package/dist/stream/append.mjs +23 -0
  519. package/dist/stream/append.mjs.map +1 -0
  520. package/dist/stream/chunk.d.ts +7 -0
  521. package/dist/stream/chunk.d.ts.map +1 -0
  522. package/dist/stream/chunk.mjs +37 -0
  523. package/dist/stream/chunk.mjs.map +1 -0
  524. package/dist/stream/concat.d.ts +8 -0
  525. package/dist/stream/concat.d.ts.map +1 -0
  526. package/dist/stream/concat.mjs +25 -0
  527. package/dist/stream/concat.mjs.map +1 -0
  528. package/dist/stream/drop.d.ts +8 -0
  529. package/dist/stream/drop.d.ts.map +1 -0
  530. package/dist/stream/drop.mjs +42 -0
  531. package/dist/stream/drop.mjs.map +1 -0
  532. package/dist/stream/dropWhile.d.ts +8 -0
  533. package/dist/stream/dropWhile.d.ts.map +1 -0
  534. package/dist/stream/dropWhile.mjs +23 -0
  535. package/dist/stream/dropWhile.mjs.map +1 -0
  536. package/dist/stream/every.d.ts +8 -0
  537. package/dist/stream/every.d.ts.map +1 -0
  538. package/dist/stream/every.mjs +24 -0
  539. package/dist/stream/every.mjs.map +1 -0
  540. package/dist/stream/filter.d.ts +8 -0
  541. package/dist/stream/filter.d.ts.map +1 -0
  542. package/dist/stream/filter.mjs +21 -0
  543. package/dist/stream/filter.mjs.map +1 -0
  544. package/dist/stream/find.d.ts +8 -0
  545. package/dist/stream/find.d.ts.map +1 -0
  546. package/dist/stream/find.mjs +23 -0
  547. package/dist/stream/find.mjs.map +1 -0
  548. package/dist/stream/flatMap.d.ts +8 -0
  549. package/dist/stream/flatMap.d.ts.map +1 -0
  550. package/dist/stream/flatMap.mjs +27 -0
  551. package/dist/stream/flatMap.mjs.map +1 -0
  552. package/dist/stream/flatten.d.ts +6 -0
  553. package/dist/stream/flatten.d.ts.map +1 -0
  554. package/dist/stream/flatten.mjs +23 -0
  555. package/dist/stream/flatten.mjs.map +1 -0
  556. package/dist/stream/flattenDeep.d.ts +6 -0
  557. package/dist/stream/flattenDeep.d.ts.map +1 -0
  558. package/dist/stream/flattenDeep.mjs +30 -0
  559. package/dist/stream/flattenDeep.mjs.map +1 -0
  560. package/dist/stream/index.d.ts +24 -0
  561. package/dist/stream/index.d.ts.map +1 -0
  562. package/dist/stream/index.mjs +49 -0
  563. package/dist/stream/index.mjs.map +1 -0
  564. package/dist/stream/map.d.ts +8 -0
  565. package/dist/stream/map.d.ts.map +1 -0
  566. package/dist/stream/map.mjs +21 -0
  567. package/dist/stream/map.mjs.map +1 -0
  568. package/dist/stream/prepend.d.ts +8 -0
  569. package/dist/stream/prepend.d.ts.map +1 -0
  570. package/dist/stream/prepend.mjs +23 -0
  571. package/dist/stream/prepend.mjs.map +1 -0
  572. package/dist/stream/range.d.ts +4 -0
  573. package/dist/stream/range.d.ts.map +1 -0
  574. package/dist/stream/range.mjs +17 -0
  575. package/dist/stream/range.mjs.map +1 -0
  576. package/dist/stream/reduce.d.ts +8 -0
  577. package/dist/stream/reduce.d.ts.map +1 -0
  578. package/dist/stream/reduce.mjs +24 -0
  579. package/dist/stream/reduce.mjs.map +1 -0
  580. package/dist/stream/scan.d.ts +8 -0
  581. package/dist/stream/scan.d.ts.map +1 -0
  582. package/dist/stream/scan.mjs +23 -0
  583. package/dist/stream/scan.mjs.map +1 -0
  584. package/dist/stream/some.d.ts +8 -0
  585. package/dist/stream/some.d.ts.map +1 -0
  586. package/dist/stream/some.mjs +24 -0
  587. package/dist/stream/some.mjs.map +1 -0
  588. package/dist/stream/take.d.ts +8 -0
  589. package/dist/stream/take.d.ts.map +1 -0
  590. package/dist/stream/take.mjs +30 -0
  591. package/dist/stream/take.mjs.map +1 -0
  592. package/dist/stream/takeWhile.d.ts +8 -0
  593. package/dist/stream/takeWhile.d.ts.map +1 -0
  594. package/dist/stream/takeWhile.mjs +27 -0
  595. package/dist/stream/takeWhile.mjs.map +1 -0
  596. package/dist/stream/toArray.d.ts +5 -0
  597. package/dist/stream/toArray.d.ts.map +1 -0
  598. package/dist/stream/toArray.mjs +19 -0
  599. package/dist/stream/toArray.mjs.map +1 -0
  600. package/dist/stream/toAsync.d.ts +6 -0
  601. package/dist/stream/toAsync.d.ts.map +1 -0
  602. package/dist/stream/toAsync.mjs +21 -0
  603. package/dist/stream/toAsync.mjs.map +1 -0
  604. package/dist/stream/utils.d.ts +12 -0
  605. package/dist/stream/utils.d.ts.map +1 -0
  606. package/dist/stream/utils.mjs +10 -0
  607. package/dist/stream/utils.mjs.map +1 -0
  608. package/dist/stream/zip.d.ts +8 -0
  609. package/dist/stream/zip.d.ts.map +1 -0
  610. package/dist/stream/zip.mjs +31 -0
  611. package/dist/stream/zip.mjs.map +1 -0
  612. package/dist/stream/zipWith.d.ts +8 -0
  613. package/dist/stream/zipWith.d.ts.map +1 -0
  614. package/dist/stream/zipWith.mjs +31 -0
  615. package/dist/stream/zipWith.mjs.map +1 -0
  616. package/package.json +87 -0
  617. package/src/implement/array/append.test.ts +13 -0
  618. package/src/implement/array/append.ts +16 -0
  619. package/src/implement/array/chunk.test.ts +23 -0
  620. package/src/implement/array/chunk.ts +25 -0
  621. package/src/implement/array/concat.test.ts +13 -0
  622. package/src/implement/array/concat.ts +16 -0
  623. package/src/implement/array/curried.test.ts +91 -0
  624. package/src/implement/array/drop.test.ts +22 -0
  625. package/src/implement/array/drop.ts +20 -0
  626. package/src/implement/array/dropWhile.test.ts +13 -0
  627. package/src/implement/array/dropWhile.ts +26 -0
  628. package/src/implement/array/every.test.ts +16 -0
  629. package/src/implement/array/every.ts +16 -0
  630. package/src/implement/array/filter.test.ts +16 -0
  631. package/src/implement/array/filter.ts +16 -0
  632. package/src/implement/array/find.test.ts +16 -0
  633. package/src/implement/array/find.ts +16 -0
  634. package/src/implement/array/flatMap.test.ts +13 -0
  635. package/src/implement/array/flatMap.ts +16 -0
  636. package/src/implement/array/flatten.test.ts +8 -0
  637. package/src/implement/array/flatten.ts +8 -0
  638. package/src/implement/array/flattenDeep.test.ts +13 -0
  639. package/src/implement/array/flattenDeep.ts +21 -0
  640. package/src/implement/array/groupBy.test.ts +13 -0
  641. package/src/implement/array/groupBy.ts +23 -0
  642. package/src/implement/array/head.test.ts +12 -0
  643. package/src/implement/array/head.ts +8 -0
  644. package/src/implement/array/index.ts +33 -0
  645. package/src/implement/array/init.test.ts +13 -0
  646. package/src/implement/array/init.ts +9 -0
  647. package/src/implement/array/last.test.ts +12 -0
  648. package/src/implement/array/last.ts +9 -0
  649. package/src/implement/array/map.test.ts +12 -0
  650. package/src/implement/array/map.ts +16 -0
  651. package/src/implement/array/partition.test.ts +14 -0
  652. package/src/implement/array/partition.ts +27 -0
  653. package/src/implement/array/prepend.test.ts +13 -0
  654. package/src/implement/array/prepend.ts +16 -0
  655. package/src/implement/array/range.test.ts +16 -0
  656. package/src/implement/array/range.ts +18 -0
  657. package/src/implement/array/reduce.test.ts +25 -0
  658. package/src/implement/array/reduce.ts +21 -0
  659. package/src/implement/array/scan.test.ts +13 -0
  660. package/src/implement/array/scan.ts +23 -0
  661. package/src/implement/array/some.test.ts +25 -0
  662. package/src/implement/array/some.ts +19 -0
  663. package/src/implement/array/sort.test.ts +25 -0
  664. package/src/implement/array/sort.ts +16 -0
  665. package/src/implement/array/sortBy.test.ts +28 -0
  666. package/src/implement/array/sortBy.ts +22 -0
  667. package/src/implement/array/tail.test.ts +13 -0
  668. package/src/implement/array/tail.ts +8 -0
  669. package/src/implement/array/take.test.ts +20 -0
  670. package/src/implement/array/take.ts +18 -0
  671. package/src/implement/array/takeWhile.test.ts +13 -0
  672. package/src/implement/array/takeWhile.ts +23 -0
  673. package/src/implement/array/uniq.test.ts +18 -0
  674. package/src/implement/array/uniq.ts +16 -0
  675. package/src/implement/array/uniqBy.test.ts +22 -0
  676. package/src/implement/array/uniqBy.ts +25 -0
  677. package/src/implement/array/unzip.test.ts +22 -0
  678. package/src/implement/array/unzip.ts +16 -0
  679. package/src/implement/array/zip.test.ts +16 -0
  680. package/src/implement/array/zip.ts +23 -0
  681. package/src/implement/array/zipIndex.test.ts +16 -0
  682. package/src/implement/array/zipIndex.ts +8 -0
  683. package/src/implement/array/zipWith.test.ts +13 -0
  684. package/src/implement/array/zipWith.ts +22 -0
  685. package/src/implement/async/curried.test.ts +133 -0
  686. package/src/implement/async/debounce.test.ts +21 -0
  687. package/src/implement/async/debounce.ts +26 -0
  688. package/src/implement/async/debounceLeading.test.ts +24 -0
  689. package/src/implement/async/debounceLeading.ts +25 -0
  690. package/src/implement/async/debounceLeadingTrailing.test.ts +37 -0
  691. package/src/implement/async/debounceLeadingTrailing.ts +41 -0
  692. package/src/implement/async/delay.test.ts +22 -0
  693. package/src/implement/async/delay.ts +7 -0
  694. package/src/implement/async/index.ts +9 -0
  695. package/src/implement/async/pipeAsync.test.ts +23 -0
  696. package/src/implement/async/pipeAsync.ts +48 -0
  697. package/src/implement/async/pipeAsyncSideEffect.test.ts +23 -0
  698. package/src/implement/async/pipeAsyncSideEffect.ts +68 -0
  699. package/src/implement/async/retry.test.ts +49 -0
  700. package/src/implement/async/retry.ts +27 -0
  701. package/src/implement/async/throttle.test.ts +38 -0
  702. package/src/implement/async/throttle.ts +47 -0
  703. package/src/implement/async/timeout.test.ts +20 -0
  704. package/src/implement/async/timeout.ts +24 -0
  705. package/src/implement/composition/complement.test.ts +17 -0
  706. package/src/implement/composition/complement.ts +13 -0
  707. package/src/implement/composition/compose.test.ts +30 -0
  708. package/src/implement/composition/compose.ts +48 -0
  709. package/src/implement/composition/constant.test.ts +16 -0
  710. package/src/implement/composition/constant.ts +8 -0
  711. package/src/implement/composition/curry.test.ts +31 -0
  712. package/src/implement/composition/curry.ts +71 -0
  713. package/src/implement/composition/flip.test.ts +41 -0
  714. package/src/implement/composition/flip.ts +16 -0
  715. package/src/implement/composition/identity.test.ts +14 -0
  716. package/src/implement/composition/identity.ts +8 -0
  717. package/src/implement/composition/index.ts +15 -0
  718. package/src/implement/composition/memoize.test.ts +46 -0
  719. package/src/implement/composition/memoize.ts +31 -0
  720. package/src/implement/composition/once.test.ts +30 -0
  721. package/src/implement/composition/once.ts +21 -0
  722. package/src/implement/composition/partial.test.ts +25 -0
  723. package/src/implement/composition/partial.ts +14 -0
  724. package/src/implement/composition/pipe.test.ts +31 -0
  725. package/src/implement/composition/pipe.ts +39 -0
  726. package/src/implement/composition/pipe.type-test.ts +54 -0
  727. package/src/implement/composition/pipeSideEffect.test.ts +23 -0
  728. package/src/implement/composition/pipeSideEffect.ts +60 -0
  729. package/src/implement/composition/sideEffect.test.ts +43 -0
  730. package/src/implement/composition/sideEffect.ts +44 -0
  731. package/src/implement/composition/tap.test.ts +17 -0
  732. package/src/implement/composition/tap.ts +11 -0
  733. package/src/implement/control/cond.test.ts +33 -0
  734. package/src/implement/control/cond.ts +17 -0
  735. package/src/implement/control/curried.test.ts +71 -0
  736. package/src/implement/control/guard.test.ts +17 -0
  737. package/src/implement/control/guard.ts +27 -0
  738. package/src/implement/control/ifElse.test.ts +68 -0
  739. package/src/implement/control/ifElse.ts +40 -0
  740. package/src/implement/control/index.ts +6 -0
  741. package/src/implement/control/tryCatch.test.ts +35 -0
  742. package/src/implement/control/tryCatch.ts +36 -0
  743. package/src/implement/control/unless.test.ts +22 -0
  744. package/src/implement/control/unless.ts +29 -0
  745. package/src/implement/control/when.test.ts +22 -0
  746. package/src/implement/control/when.ts +29 -0
  747. package/src/implement/debug/assert.test.ts +16 -0
  748. package/src/implement/debug/assert.ts +9 -0
  749. package/src/implement/debug/curried.test.ts +17 -0
  750. package/src/implement/debug/index.ts +3 -0
  751. package/src/implement/debug/invariant.test.ts +16 -0
  752. package/src/implement/debug/invariant.ts +9 -0
  753. package/src/implement/debug/log.test.ts +20 -0
  754. package/src/implement/debug/log.ts +12 -0
  755. package/src/implement/equality/clamp.test.ts +16 -0
  756. package/src/implement/equality/clamp.ts +9 -0
  757. package/src/implement/equality/curried.test.ts +13 -0
  758. package/src/implement/equality/equals.test.ts +63 -0
  759. package/src/implement/equality/equals.ts +87 -0
  760. package/src/implement/equality/gt.test.ts +13 -0
  761. package/src/implement/equality/gt.ts +5 -0
  762. package/src/implement/equality/gte.test.ts +13 -0
  763. package/src/implement/equality/gte.ts +5 -0
  764. package/src/implement/equality/includes.test.ts +16 -0
  765. package/src/implement/equality/includes.ts +21 -0
  766. package/src/implement/equality/index.ts +10 -0
  767. package/src/implement/equality/isEmpty.test.ts +24 -0
  768. package/src/implement/equality/isEmpty.ts +19 -0
  769. package/src/implement/equality/isNil.test.ts +16 -0
  770. package/src/implement/equality/isNil.ts +5 -0
  771. package/src/implement/equality/isType.test.ts +28 -0
  772. package/src/implement/equality/isType.ts +13 -0
  773. package/src/implement/equality/lt.test.ts +13 -0
  774. package/src/implement/equality/lt.ts +5 -0
  775. package/src/implement/equality/lte.test.ts +13 -0
  776. package/src/implement/equality/lte.ts +5 -0
  777. package/src/implement/math/add.test.ts +9 -0
  778. package/src/implement/math/add.ts +7 -0
  779. package/src/implement/math/ceil.test.ts +10 -0
  780. package/src/implement/math/ceil.ts +5 -0
  781. package/src/implement/math/curried.test.ts +30 -0
  782. package/src/implement/math/div.test.ts +9 -0
  783. package/src/implement/math/div.ts +7 -0
  784. package/src/implement/math/floor.test.ts +10 -0
  785. package/src/implement/math/floor.ts +5 -0
  786. package/src/implement/math/index.ts +12 -0
  787. package/src/implement/math/max.test.ts +13 -0
  788. package/src/implement/math/max.ts +6 -0
  789. package/src/implement/math/mean.test.ts +12 -0
  790. package/src/implement/math/mean.ts +7 -0
  791. package/src/implement/math/min.test.ts +12 -0
  792. package/src/implement/math/min.ts +6 -0
  793. package/src/implement/math/mul.test.ts +9 -0
  794. package/src/implement/math/mul.ts +7 -0
  795. package/src/implement/math/randomInt.test.ts +22 -0
  796. package/src/implement/math/randomInt.ts +14 -0
  797. package/src/implement/math/round.test.ts +10 -0
  798. package/src/implement/math/round.ts +5 -0
  799. package/src/implement/math/sub.test.ts +9 -0
  800. package/src/implement/math/sub.ts +7 -0
  801. package/src/implement/math/sum.test.ts +10 -0
  802. package/src/implement/math/sum.ts +5 -0
  803. package/src/implement/nullable/curried.test.ts +13 -0
  804. package/src/implement/nullable/fold.test.ts +31 -0
  805. package/src/implement/nullable/fold.ts +27 -0
  806. package/src/implement/nullable/getOrElse.test.ts +17 -0
  807. package/src/implement/nullable/getOrElse.ts +10 -0
  808. package/src/implement/nullable/index.ts +5 -0
  809. package/src/implement/nullable/mapMaybe.test.ts +23 -0
  810. package/src/implement/nullable/mapMaybe.ts +18 -0
  811. package/src/implement/nullable/maybe.test.ts +15 -0
  812. package/src/implement/nullable/maybe.ts +10 -0
  813. package/src/implement/nullable/result.test.ts +17 -0
  814. package/src/implement/nullable/result.ts +10 -0
  815. package/src/implement/object/assoc.test.ts +27 -0
  816. package/src/implement/object/assoc.ts +43 -0
  817. package/src/implement/object/assoc.type-test.ts +38 -0
  818. package/src/implement/object/assocPath.test.ts +33 -0
  819. package/src/implement/object/assocPath.ts +64 -0
  820. package/src/implement/object/curried.test.ts +49 -0
  821. package/src/implement/object/dissoc.test.ts +20 -0
  822. package/src/implement/object/dissoc.ts +26 -0
  823. package/src/implement/object/dissocPath.test.ts +18 -0
  824. package/src/implement/object/dissocPath.ts +80 -0
  825. package/src/implement/object/entries.test.ts +12 -0
  826. package/src/implement/object/entries.ts +8 -0
  827. package/src/implement/object/evolve.test.ts +14 -0
  828. package/src/implement/object/evolve.ts +31 -0
  829. package/src/implement/object/has.test.ts +10 -0
  830. package/src/implement/object/has.ts +16 -0
  831. package/src/implement/object/hasPath.test.ts +13 -0
  832. package/src/implement/object/hasPath.ts +17 -0
  833. package/src/implement/object/index.ts +20 -0
  834. package/src/implement/object/keys.test.ts +9 -0
  835. package/src/implement/object/keys.ts +8 -0
  836. package/src/implement/object/mapValues.test.ts +11 -0
  837. package/src/implement/object/mapValues.ts +16 -0
  838. package/src/implement/object/merge.test.ts +22 -0
  839. package/src/implement/object/merge.ts +19 -0
  840. package/src/implement/object/mergeAll.test.ts +13 -0
  841. package/src/implement/object/mergeAll.ts +12 -0
  842. package/src/implement/object/mergeDeep.test.ts +11 -0
  843. package/src/implement/object/mergeDeep.ts +41 -0
  844. package/src/implement/object/omit.test.ts +12 -0
  845. package/src/implement/object/omit.ts +20 -0
  846. package/src/implement/object/path.test.ts +9 -0
  847. package/src/implement/object/path.ts +16 -0
  848. package/src/implement/object/pathOr.test.ts +15 -0
  849. package/src/implement/object/pathOr.ts +18 -0
  850. package/src/implement/object/pick.test.ts +12 -0
  851. package/src/implement/object/pick.ts +22 -0
  852. package/src/implement/object/prop.test.ts +9 -0
  853. package/src/implement/object/prop.ts +16 -0
  854. package/src/implement/object/propOr.test.ts +15 -0
  855. package/src/implement/object/propOr.ts +22 -0
  856. package/src/implement/object/values.test.ts +9 -0
  857. package/src/implement/object/values.ts +8 -0
  858. package/src/implement/string/curried.test.ts +21 -0
  859. package/src/implement/string/endsWith.test.ts +23 -0
  860. package/src/implement/string/endsWith.ts +21 -0
  861. package/src/implement/string/index.ts +9 -0
  862. package/src/implement/string/join.test.ts +16 -0
  863. package/src/implement/string/join.ts +7 -0
  864. package/src/implement/string/match.test.ts +13 -0
  865. package/src/implement/string/match.ts +7 -0
  866. package/src/implement/string/replace.test.ts +12 -0
  867. package/src/implement/string/replace.ts +7 -0
  868. package/src/implement/string/split.test.ts +12 -0
  869. package/src/implement/string/split.ts +7 -0
  870. package/src/implement/string/startsWith.test.ts +21 -0
  871. package/src/implement/string/startsWith.ts +20 -0
  872. package/src/implement/string/toLower.test.ts +13 -0
  873. package/src/implement/string/toLower.ts +5 -0
  874. package/src/implement/string/toUpper.test.ts +13 -0
  875. package/src/implement/string/toUpper.ts +5 -0
  876. package/src/implement/string/trim.test.ts +12 -0
  877. package/src/implement/string/trim.ts +5 -0
  878. package/src/index.ts +32 -0
  879. package/src/stream/append.test.ts +20 -0
  880. package/src/stream/append.ts +39 -0
  881. package/src/stream/chunk.test.ts +62 -0
  882. package/src/stream/chunk.ts +74 -0
  883. package/src/stream/concat.test.ts +20 -0
  884. package/src/stream/concat.ts +43 -0
  885. package/src/stream/drop.test.ts +19 -0
  886. package/src/stream/drop.ts +59 -0
  887. package/src/stream/dropWhile.test.ts +20 -0
  888. package/src/stream/dropWhile.ts +51 -0
  889. package/src/stream/every.test.ts +19 -0
  890. package/src/stream/every.ts +46 -0
  891. package/src/stream/filter.test.ts +19 -0
  892. package/src/stream/filter.ts +46 -0
  893. package/src/stream/find.test.ts +18 -0
  894. package/src/stream/find.ts +43 -0
  895. package/src/stream/flatMap.test.ts +20 -0
  896. package/src/stream/flatMap.ts +48 -0
  897. package/src/stream/flatten.test.ts +17 -0
  898. package/src/stream/flatten.ts +33 -0
  899. package/src/stream/flattenDeep.test.ts +17 -0
  900. package/src/stream/flattenDeep.ts +41 -0
  901. package/src/stream/index.ts +23 -0
  902. package/src/stream/map.test.ts +19 -0
  903. package/src/stream/map.ts +39 -0
  904. package/src/stream/pipeAsync.test.ts +27 -0
  905. package/src/stream/prepend.test.ts +20 -0
  906. package/src/stream/prepend.ts +39 -0
  907. package/src/stream/range.test.ts +16 -0
  908. package/src/stream/range.ts +20 -0
  909. package/src/stream/reduce.test.ts +18 -0
  910. package/src/stream/reduce.ts +47 -0
  911. package/src/stream/scan.test.ts +22 -0
  912. package/src/stream/scan.ts +49 -0
  913. package/src/stream/some.test.ts +19 -0
  914. package/src/stream/some.ts +46 -0
  915. package/src/stream/take.test.ts +19 -0
  916. package/src/stream/take.ts +51 -0
  917. package/src/stream/takeWhile.test.ts +20 -0
  918. package/src/stream/takeWhile.ts +45 -0
  919. package/src/stream/toArray.test.ts +19 -0
  920. package/src/stream/toArray.ts +26 -0
  921. package/src/stream/toAsync.test.ts +11 -0
  922. package/src/stream/toAsync.ts +30 -0
  923. package/src/stream/utils.ts +30 -0
  924. package/src/stream/zip.test.ts +29 -0
  925. package/src/stream/zip.ts +56 -0
  926. package/src/stream/zipWith.test.ts +22 -0
  927. package/src/stream/zipWith.ts +62 -0
@@ -0,0 +1,2 @@
1
+ (function(f,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(f=typeof globalThis<"u"?globalThis:f||self,a(f.FpPackStream={}))})(this,(function(f){"use strict";const a=o=>typeof o=="object"&&o!==null&&"then"in o&&typeof o.then=="function",l=o=>typeof o=="object"&&o!==null&&Symbol.asyncIterator in o&&typeof o[Symbol.asyncIterator]=="function",e=o=>typeof o=="object"&&o!==null&&Symbol.iterator in o&&typeof o[Symbol.iterator]=="function",u=o=>a(o)||l(o),m=async o=>a(o)?await o:o,s=async o=>a(o)?await o:o;function c(o){return async function*(){const n=await m(o);if(l(n)){for await(const i of n)yield await s(i);return}if(e(n)){for(const i of n)yield await s(i);return}throw new TypeError("toAsync: input is not iterable")}()}function p(o,t){if(t===void 0)return n=>p(o,n);if(u(t))return(async function*(){for await(const n of c(t))yield n;yield await s(o)})();if(e(t))return(function*(){for(const n of t)yield n;yield o})();throw new TypeError("append: input is not iterable")}const O=function*(o,t){const n=Math.floor(o);if(!Number.isFinite(n)||n<=0)return;let i=[];for(const r of t)i.push(r),i.length>=n&&(yield i,i=[]);i.length>0&&(yield i)},h=async function*(o,t){const n=Math.floor(o);if(!Number.isFinite(n)||n<=0)return;let i=[];for await(const r of t)i.push(r),i.length>=n&&(yield i,i=[]);i.length>0&&(yield i)};function T(o,t){if(t===void 0)return n=>T(o,n);if(a(t))return h(o,c(t));if(l(t))return h(o,(async function*(){for await(const n of t)yield await s(n)})());if(e(t))return O(o,t);throw new TypeError("chunk: input is not iterable")}function k(o,t){if(t===void 0)return n=>k(o,n);if(u(o)||u(t))return(async function*(){for await(const n of c(t))yield n;for await(const n of c(o))yield n})();if(e(t)&&e(o))return(function*(){for(const n of t)yield n;for(const n of o)yield n})();throw new TypeError("concat: input is not iterable")}function E(o,t){if(t===void 0)return i=>E(o,i);const n=Math.floor(o);if(!Number.isFinite(n)||n<=0)return u(t)?(async function*(){for await(const i of c(t))yield i})():(function*(){for(const i of t)yield i})();if(u(t))return(async function*(){let i=0;for await(const r of c(t)){if(i<n){i+=1;continue}yield r}})();if(e(t))return(function*(){let i=0;for(const r of t){if(i<n){i+=1;continue}yield r}})();throw new TypeError("drop: input is not iterable")}function g(o,t){if(t===void 0)return n=>g(o,n);if(u(t))return(async function*(){let n=!0;for await(const i of c(t))n&&!await o(i)&&(n=!1),n||(yield i)})();if(e(t))return(function*(){let n=!0;for(const i of t)n&&!o(i)&&(n=!1),n||(yield i)})();throw new TypeError("dropWhile: input is not iterable")}function v(o,t){if(t===void 0)return n=>v(o,n);if(u(t))return(async()=>{for await(const n of c(t))if(!await o(n))return!1;return!0})();if(e(t)){for(const n of t)if(!o(n))return!1;return!0}throw new TypeError("every: input is not iterable")}function I(o,t){if(t===void 0)return n=>I(o,n);if(u(t))return(async function*(){for await(const n of c(t))await o(n)&&(yield n)})();if(e(t))return(function*(){for(const n of t)o(n)&&(yield n)})();throw new TypeError("filter: input is not iterable")}function S(o,t){if(t===void 0)return n=>S(o,n);if(u(t))return(async()=>{for await(const n of c(t))if(await o(n))return n})();if(e(t)){for(const n of t)if(o(n))return n;return}throw new TypeError("find: input is not iterable")}function A(o,t){if(t===void 0)return n=>A(o,n);if(u(t))return(async function*(){for await(const n of c(t)){const i=await o(n);for(const r of i)yield r}})();if(e(t))return(function*(){for(const n of t){const i=o(n);for(const r of i)yield r}})();throw new TypeError("flatMap: input is not iterable")}function V(o){if(u(o))return(async function*(){for await(const t of c(o)){const n=await s(t);for(const i of n)yield i}})();if(e(o))return(function*(){for(const t of o)for(const n of t)yield n})();throw new TypeError("flatten: input is not iterable")}function q(o){const t=function*(n){if(e(n)){for(const i of n)yield*t(i);return}yield n};if(u(o))return(async function*(){for await(const n of c(o)){const i=await s(n);for(const r of t(i))yield r}})();if(e(o))return(function*(){for(const n of o)yield*t(n)})();throw new TypeError("flattenDeep: input is not iterable")}function W(o,t){if(t===void 0)return n=>W(o,n);if(u(t))return(async function*(){for await(const n of c(t))yield await o(n)})();if(e(t))return(function*(){for(const n of t)yield o(n)})();throw new TypeError("map: input is not iterable")}function M(o,t){if(t===void 0)return n=>M(o,n);if(u(t))return(async function*(){yield await s(o);for await(const n of c(t))yield n})();if(e(t))return(function*(){yield o;for(const n of t)yield n})();throw new TypeError("prepend: input is not iterable")}function B(o,t){if(!Number.isFinite(o)||!Number.isFinite(t))return(function*(){})();if(o===t)return(function*(){})();const n=o<t?1:-1;return(function*(){for(let i=o;n>0?i<t:i>t;i+=n)yield i})()}function R(o,t,n){if(n===void 0)return i=>R(o,t,i);if(u(n))return(async()=>{let i=t;for await(const r of c(n))i=await o(i,r);return i})();if(e(n)){let i=t;for(const r of n)i=o(i,r);return i}throw new TypeError("reduce: input is not iterable")}function F(o,t,n){if(n===void 0)return i=>F(o,t,i);if(u(n))return(async function*(){let i=t;for await(const r of c(n))i=await o(i,r),yield i})();if(e(n))return(function*(){let i=t;for(const r of n)i=o(i,r),yield i})();throw new TypeError("scan: input is not iterable")}function N(o,t){if(t===void 0)return n=>N(o,n);if(u(t))return(async()=>{for await(const n of c(t))if(await o(n))return!0;return!1})();if(e(t)){for(const n of t)if(o(n))return!0;return!1}throw new TypeError("some: input is not iterable")}function j(o,t){if(t===void 0)return i=>j(o,i);const n=Math.floor(o);if(!Number.isFinite(n)||n<=0)return u(t)?(async function*(){})():(function*(){})();if(u(t))return(async function*(){let i=0;for await(const r of c(t))if(yield r,i+=1,i>=n)break})();if(e(t))return(function*(){let i=0;for(const r of t)if(yield r,i+=1,i>=n)break})();throw new TypeError("take: input is not iterable")}function z(o,t){if(t===void 0)return n=>z(o,n);if(u(t))return(async function*(){for await(const n of c(t)){if(!await o(n))break;yield n}})();if(e(t))return(function*(){for(const n of t){if(!o(n))break;yield n}})();throw new TypeError("takeWhile: input is not iterable")}async function C(o){const t=await m(o),n=[];if(l(t)){for await(const i of t)n.push(await s(i));return n}if(e(t)){for(const i of t)n.push(await s(i));return n}throw new TypeError("toArray: input is not iterable")}function P(o,t){if(t===void 0)return n=>P(o,n);if(u(o)||u(t))return(async function*(){const n=c(t),i=c(o),r=n[Symbol.asyncIterator](),y=i[Symbol.asyncIterator]();for(;;){const[d,w]=await Promise.all([r.next(),y.next()]);if(d.done||w.done)return;yield[d.value,w.value]}})();if(e(t)&&e(o))return(function*(){const n=t[Symbol.iterator](),i=o[Symbol.iterator]();for(;;){const r=n.next(),y=i.next();if(r.done||y.done)return;yield[r.value,y.value]}})();throw new TypeError("zip: input is not iterable")}function D(o,t,n){if(n===void 0)return i=>D(o,t,i);if(u(t)||u(n))return(async function*(){const i=c(n),r=c(t),y=i[Symbol.asyncIterator](),d=r[Symbol.asyncIterator]();for(;;){const[w,L]=await Promise.all([y.next(),d.next()]);if(w.done||L.done)return;yield await o(w.value,L.value)}})();if(e(n)&&e(t))return(function*(){const i=n[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){const y=i.next(),d=r.next();if(y.done||d.done)return;yield o(y.value,d.value)}})();throw new TypeError("zipWith: input is not iterable")}f.append=p,f.chunk=T,f.concat=k,f.drop=E,f.dropWhile=g,f.every=v,f.filter=I,f.find=S,f.flatMap=A,f.flatten=V,f.flattenDeep=q,f.map=W,f.prepend=M,f.range=B,f.reduce=R,f.scan=F,f.some=N,f.take=j,f.takeWhile=z,f.toArray=C,f.toAsync=c,f.zip=P,f.zipWith=D,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})}));
2
+ //# sourceMappingURL=fp-pack-stream.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-pack-stream.umd.js","sources":["../src/stream/utils.ts","../src/stream/toAsync.ts","../src/stream/append.ts","../src/stream/chunk.ts","../src/stream/concat.ts","../src/stream/drop.ts","../src/stream/dropWhile.ts","../src/stream/every.ts","../src/stream/filter.ts","../src/stream/find.ts","../src/stream/flatMap.ts","../src/stream/flatten.ts","../src/stream/flattenDeep.ts","../src/stream/map.ts","../src/stream/prepend.ts","../src/stream/range.ts","../src/stream/reduce.ts","../src/stream/scan.ts","../src/stream/some.ts","../src/stream/take.ts","../src/stream/takeWhile.ts","../src/stream/toArray.ts","../src/stream/zip.ts","../src/stream/zipWith.ts"],"sourcesContent":["type AnyIterable<T> = Iterable<T> | AsyncIterable<T>;\ntype AnyIterableInput<T> = AnyIterable<T> | Promise<AnyIterable<T>>;\n\ntype PromiseLikeValue<T> = T | PromiseLike<T>;\n\nconst isPromiseLike = (value: unknown): value is PromiseLike<unknown> =>\n typeof value === 'object' && value !== null && 'then' in value && typeof (value as PromiseLike<unknown>).then === 'function';\n\nconst isAsyncIterable = (value: unknown): value is AsyncIterable<unknown> =>\n typeof value === 'object' &&\n value !== null &&\n Symbol.asyncIterator in value &&\n typeof (value as AsyncIterable<unknown>)[Symbol.asyncIterator] === 'function';\n\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n typeof value === 'object' &&\n value !== null &&\n Symbol.iterator in value &&\n typeof (value as Iterable<unknown>)[Symbol.iterator] === 'function';\n\nconst isAsyncInput = (value: unknown): value is PromiseLike<AnyIterable<unknown>> | AsyncIterable<unknown> =>\n isPromiseLike(value) || isAsyncIterable(value);\n\nconst resolveIterable = async <T>(input: AnyIterableInput<T>): Promise<AnyIterable<T>> =>\n (isPromiseLike(input) ? await input : input) as AnyIterable<T>;\n\nconst awaitValue = async <T>(value: PromiseLikeValue<T>): Promise<T> => (isPromiseLike(value) ? await value : value);\n\nexport type { AnyIterable, AnyIterableInput, PromiseLikeValue };\nexport { isPromiseLike, isAsyncIterable, isIterable, isAsyncInput, resolveIterable, awaitValue };\n","import type { AnyIterable, AnyIterableInput, PromiseLikeValue } from './utils';\nimport { awaitValue, isAsyncIterable, isIterable, resolveIterable } from './utils';\n\n/** toAsync - Iterable/AsyncIterable을 AsyncIterable로 승격 */\nfunction toAsync<T>(input: AnyIterableInput<PromiseLikeValue<T>>): AsyncIterable<T> {\n const iterator = async function* () {\n const resolved = await resolveIterable(input);\n\n if (isAsyncIterable(resolved)) {\n for await (const item of resolved) {\n yield await awaitValue(item);\n }\n return;\n }\n\n if (isIterable(resolved)) {\n for (const item of resolved) {\n yield await awaitValue(item);\n }\n return;\n }\n\n throw new TypeError('toAsync: input is not iterable');\n };\n\n return iterator();\n}\n\nexport default toAsync;\nexport type { AnyIterable };\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { awaitValue, isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** append - lazily append a value to the end */\nfunction append<T>(value: T): (iterable: Iterable<T>) => IterableIterator<T>;\nfunction append<T>(value: PromiseLikeValue<T>): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T>;\nfunction append<T>(value: T, iterable: Iterable<T>): IterableIterator<T>;\nfunction append<T>(\n value: PromiseLikeValue<T>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<T>;\nfunction append<T>(value: PromiseLikeValue<T>, iterable?: AnyIterableInput<PromiseLikeValue<T>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => append(value, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n for await (const item of toAsync(iterable)) {\n yield item as T;\n }\n yield await awaitValue(value);\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n for (const item of iterable) {\n yield item as T;\n }\n yield value as T;\n })();\n }\n\n throw new TypeError('append: input is not iterable');\n}\n\nexport default append;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { awaitValue, isAsyncIterable, isIterable, isPromiseLike } from './utils';\nimport toAsync from './toAsync';\n\nconst chunkIterable = function* <T>(size: number, iterable: Iterable<T>): IterableIterator<T[]> {\n const chunkSize = Math.floor(size);\n if (!Number.isFinite(chunkSize) || chunkSize <= 0) {\n return;\n }\n\n let buffer: T[] = [];\n for (const item of iterable) {\n buffer.push(item);\n if (buffer.length >= chunkSize) {\n yield buffer;\n buffer = [];\n }\n }\n\n if (buffer.length > 0) {\n yield buffer;\n }\n};\n\nconst chunkAsyncIterable = async function* <T>(size: number, iterable: AsyncIterable<T>): AsyncIterableIterator<T[]> {\n const chunkSize = Math.floor(size);\n if (!Number.isFinite(chunkSize) || chunkSize <= 0) {\n return;\n }\n\n let buffer: T[] = [];\n for await (const item of iterable) {\n buffer.push(item);\n if (buffer.length >= chunkSize) {\n yield buffer;\n buffer = [];\n }\n }\n\n if (buffer.length > 0) {\n yield buffer;\n }\n};\n\ntype ChunkFn<T> = (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T[]> | IterableIterator<T[]>;\n\nfunction chunk<T>(size: number): ChunkFn<T>;\nfunction chunk<T>(size: number, iterable: Iterable<T>): IterableIterator<T[]>;\nfunction chunk<T>(size: number, iterable: AnyIterableInput<PromiseLikeValue<T>>): AsyncIterableIterator<T[]> | IterableIterator<T[]>;\nfunction chunk<T>(size: number, iterable?: AnyIterableInput<PromiseLikeValue<T>>) {\n if (iterable === undefined) {\n return (nextIterable: AnyIterableInput<PromiseLikeValue<T>>) => chunk(size, nextIterable);\n }\n\n if (isPromiseLike(iterable)) {\n return chunkAsyncIterable(size, toAsync(iterable));\n }\n\n if (isAsyncIterable(iterable)) {\n return chunkAsyncIterable(size, (async function* () {\n for await (const item of iterable) {\n yield await awaitValue(item as PromiseLikeValue<T>);\n }\n })());\n }\n\n if (isIterable(iterable)) {\n return chunkIterable(size, iterable as Iterable<T>);\n }\n\n throw new TypeError('chunk: input is not iterable');\n}\n\nexport default chunk;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** concat - lazily concatenate two iterables */\nfunction concat<T>(other: Iterable<T>): (iterable: Iterable<T>) => IterableIterator<T>;\nfunction concat<T>(other: AnyIterableInput<PromiseLikeValue<T>>): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T>;\nfunction concat<T>(other: Iterable<T>, iterable: Iterable<T>): IterableIterator<T>;\nfunction concat<T>(\n other: AnyIterableInput<PromiseLikeValue<T>>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<T>;\nfunction concat<T>(other: AnyIterableInput<PromiseLikeValue<T>>, iterable?: AnyIterableInput<PromiseLikeValue<T>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => concat(other, next);\n }\n\n if (isAsyncInput(other) || isAsyncInput(iterable)) {\n return (async function* () {\n for await (const item of toAsync(iterable)) {\n yield item as T;\n }\n for await (const item of toAsync(other)) {\n yield item as T;\n }\n })();\n }\n\n if (isIterable(iterable) && isIterable(other)) {\n return (function* () {\n for (const item of iterable) {\n yield item as T;\n }\n for (const item of other as Iterable<T>) {\n yield item as T;\n }\n })();\n }\n\n throw new TypeError('concat: input is not iterable');\n}\n\nexport default concat;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** drop - lazily skip first n values */\nfunction drop<T>(count: number): (iterable: Iterable<T>) => IterableIterator<T>;\nfunction drop<T>(count: number): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T>;\nfunction drop<T>(count: number, iterable: Iterable<T>): IterableIterator<T>;\nfunction drop<T>(count: number, iterable: AnyIterableInput<PromiseLikeValue<T>>): AsyncIterableIterator<T>;\nfunction drop<T>(count: number, iterable?: AnyIterableInput<PromiseLikeValue<T>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => drop(count, next);\n }\n\n const limit = Math.floor(count);\n if (!Number.isFinite(limit) || limit <= 0) {\n return isAsyncInput(iterable)\n ? (async function* () {\n for await (const item of toAsync(iterable)) {\n yield item as T;\n }\n })()\n : (function* () {\n for (const item of iterable as Iterable<T>) {\n yield item as T;\n }\n })();\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n let skipped = 0;\n for await (const item of toAsync(iterable)) {\n if (skipped < limit) {\n skipped += 1;\n continue;\n }\n yield item as T;\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n let skipped = 0;\n for (const item of iterable) {\n if (skipped < limit) {\n skipped += 1;\n continue;\n }\n yield item as T;\n }\n })();\n }\n\n throw new TypeError('drop: input is not iterable');\n}\n\nexport default drop;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** dropWhile - lazily drop values while predicate holds */\nfunction dropWhile<T>(predicate: (value: T) => boolean): (iterable: Iterable<T>) => IterableIterator<T>;\nfunction dropWhile<T>(\n predicate: (value: T) => boolean | Promise<boolean>\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T>;\nfunction dropWhile<T>(predicate: (value: T) => boolean, iterable: Iterable<T>): IterableIterator<T>;\nfunction dropWhile<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<T>;\nfunction dropWhile<T>(predicate: (value: T) => boolean | Promise<boolean>, iterable?: AnyIterableInput<PromiseLikeValue<T>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => dropWhile(predicate, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n let dropping = true;\n for await (const item of toAsync(iterable)) {\n if (dropping && !(await predicate(item as T))) {\n dropping = false;\n }\n if (!dropping) {\n yield item as T;\n }\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n let dropping = true;\n for (const item of iterable) {\n if (dropping && !predicate(item as T)) {\n dropping = false;\n }\n if (!dropping) {\n yield item as T;\n }\n }\n })();\n }\n\n throw new TypeError('dropWhile: input is not iterable');\n}\n\nexport default dropWhile;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** every - check all values match */\nfunction every<T>(predicate: (value: T) => boolean): (iterable: Iterable<T>) => boolean;\nfunction every<T>(\n predicate: (value: T) => boolean | Promise<boolean>\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => Promise<boolean>;\nfunction every<T>(predicate: (value: T) => boolean, iterable: Iterable<T>): boolean;\nfunction every<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): Promise<boolean>;\nfunction every<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable?: AnyIterableInput<PromiseLikeValue<T>>\n): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => every(predicate, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async () => {\n for await (const item of toAsync(iterable)) {\n if (!(await predicate(item as T))) {\n return false;\n }\n }\n return true;\n })();\n }\n\n if (isIterable(iterable)) {\n for (const item of iterable) {\n if (!predicate(item as T)) {\n return false;\n }\n }\n return true;\n }\n\n throw new TypeError('every: input is not iterable');\n}\n\nexport default every;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** filter - lazy filter over iterables */\nfunction filter<T>(predicate: (value: T) => boolean): (iterable: Iterable<T>) => IterableIterator<T>;\nfunction filter<T>(\n predicate: (value: T) => boolean | Promise<boolean>\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T>;\nfunction filter<T>(predicate: (value: T) => boolean, iterable: Iterable<T>): IterableIterator<T>;\nfunction filter<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<T>;\nfunction filter<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable?: AnyIterableInput<PromiseLikeValue<T>>\n): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => filter(predicate, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n for await (const item of toAsync(iterable)) {\n if (await predicate(item as T)) {\n yield item as T;\n }\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n for (const item of iterable) {\n if (predicate(item as T)) {\n yield item as T;\n }\n }\n })();\n }\n\n throw new TypeError('filter: input is not iterable');\n}\n\nexport default filter;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** find - find first matching value */\nfunction find<T>(predicate: (value: T) => boolean): (iterable: Iterable<T>) => T | undefined;\nfunction find<T>(\n predicate: (value: T) => boolean | Promise<boolean>\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => Promise<T | undefined>;\nfunction find<T>(predicate: (value: T) => boolean, iterable: Iterable<T>): T | undefined;\nfunction find<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): Promise<T | undefined>;\nfunction find<T>(predicate: (value: T) => boolean | Promise<boolean>, iterable?: AnyIterableInput<PromiseLikeValue<T>>) {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => find(predicate, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async () => {\n for await (const item of toAsync(iterable)) {\n if (await predicate(item as T)) {\n return item as T;\n }\n }\n return undefined;\n })();\n }\n\n if (isIterable(iterable)) {\n for (const item of iterable) {\n if (predicate(item as T)) {\n return item as T;\n }\n }\n return undefined;\n }\n\n throw new TypeError('find: input is not iterable');\n}\n\nexport default find;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** flatMap - lazy map + flatten */\nfunction flatMap<T, R>(fn: (value: T) => Iterable<R>): (iterable: Iterable<T>) => IterableIterator<R>;\nfunction flatMap<T, R>(\n fn: (value: T) => Iterable<R> | Promise<Iterable<R>>\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<R>;\nfunction flatMap<T, R>(fn: (value: T) => Iterable<R>, iterable: Iterable<T>): IterableIterator<R>;\nfunction flatMap<T, R>(\n fn: (value: T) => Iterable<R> | Promise<Iterable<R>>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<R>;\nfunction flatMap<T, R>(\n fn: (value: T) => Iterable<R> | Promise<Iterable<R>>,\n iterable?: AnyIterableInput<PromiseLikeValue<T>>\n): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => flatMap(fn, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n for await (const item of toAsync(iterable)) {\n const mapped = await fn(item as T);\n for (const inner of mapped) {\n yield inner;\n }\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n for (const item of iterable) {\n const mapped = fn(item as T) as Iterable<R>;\n for (const inner of mapped) {\n yield inner;\n }\n }\n })();\n }\n\n throw new TypeError('flatMap: input is not iterable');\n}\n\nexport default flatMap;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { awaitValue, isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** flatten - lazily flatten iterable of iterables */\nfunction flatten<T>(iterable: Iterable<Iterable<T>>): IterableIterator<T>;\nfunction flatten<T>(iterable: AnyIterableInput<PromiseLikeValue<Iterable<T>>>): AsyncIterableIterator<T>;\nfunction flatten<T>(iterable: AnyIterableInput<PromiseLikeValue<Iterable<T>>>): any {\n if (isAsyncInput(iterable)) {\n return (async function* () {\n for await (const inner of toAsync(iterable)) {\n const resolved = await awaitValue(inner as PromiseLikeValue<Iterable<T>>);\n for (const item of resolved) {\n yield item as T;\n }\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n for (const inner of iterable as Iterable<Iterable<T>>) {\n for (const item of inner) {\n yield item as T;\n }\n }\n })();\n }\n\n throw new TypeError('flatten: input is not iterable');\n}\n\nexport default flatten;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { awaitValue, isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** flattenDeep - lazily flatten nested iterables */\nfunction flattenDeep<T>(iterable: Iterable<unknown>): IterableIterator<T>;\nfunction flattenDeep<T>(iterable: AnyIterableInput<PromiseLikeValue<unknown>>): AsyncIterableIterator<T>;\nfunction flattenDeep<T>(iterable: AnyIterableInput<PromiseLikeValue<unknown>>): any {\n const walkSync = function* (value: unknown): IterableIterator<T> {\n if (isIterable(value)) {\n for (const item of value as Iterable<unknown>) {\n yield* walkSync(item);\n }\n return;\n }\n yield value as T;\n };\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n for await (const item of toAsync(iterable)) {\n const resolved = await awaitValue(item as PromiseLikeValue<unknown>);\n for (const inner of walkSync(resolved)) {\n yield inner as T;\n }\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n for (const item of iterable as Iterable<unknown>) {\n yield* walkSync(item);\n }\n })();\n }\n\n throw new TypeError('flattenDeep: input is not iterable');\n}\n\nexport default flattenDeep;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** map - lazy map over iterables */\nfunction map<T, R>(fn: (value: T) => R): (iterable: Iterable<T>) => IterableIterator<R>;\nfunction map<T, R>(\n fn: (value: T) => R | Promise<R>\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<R>;\nfunction map<T, R>(fn: (value: T) => R, iterable: Iterable<T>): IterableIterator<R>;\nfunction map<T, R>(\n fn: (value: T) => R | Promise<R>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<R>;\nfunction map<T, R>(fn: (value: T) => R | Promise<R>, iterable?: AnyIterableInput<PromiseLikeValue<T>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => map(fn, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n for await (const item of toAsync(iterable)) {\n yield await fn(item as T);\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n for (const item of iterable) {\n yield fn(item as T) as R;\n }\n })();\n }\n\n throw new TypeError('map: input is not iterable');\n}\n\nexport default map;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { awaitValue, isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** prepend - lazily prepend a value to the start */\nfunction prepend<T>(value: T): (iterable: Iterable<T>) => IterableIterator<T>;\nfunction prepend<T>(value: PromiseLikeValue<T>): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T>;\nfunction prepend<T>(value: T, iterable: Iterable<T>): IterableIterator<T>;\nfunction prepend<T>(\n value: PromiseLikeValue<T>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<T>;\nfunction prepend<T>(value: PromiseLikeValue<T>, iterable?: AnyIterableInput<PromiseLikeValue<T>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => prepend(value, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n yield await awaitValue(value);\n for await (const item of toAsync(iterable)) {\n yield item as T;\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n yield value as T;\n for (const item of iterable) {\n yield item as T;\n }\n })();\n }\n\n throw new TypeError('prepend: input is not iterable');\n}\n\nexport default prepend;\n","/** range - lazily generate a numeric range (end excluded) */\nfunction range(start: number, end: number): IterableIterator<number> {\n if (!Number.isFinite(start) || !Number.isFinite(end)) {\n return (function* () {})();\n }\n\n if (start === end) {\n return (function* () {})();\n }\n\n const step = start < end ? 1 : -1;\n\n return (function* () {\n for (let value = start; step > 0 ? value < end : value > end; value += step) {\n yield value;\n }\n })();\n}\n\nexport default range;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** reduce - fold values into an accumulator */\nfunction reduce<T, R>(fn: (acc: R, value: T) => R, initial: R): (iterable: Iterable<T>) => R;\nfunction reduce<T, R>(\n fn: (acc: R, value: T) => R | Promise<R>,\n initial: R\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => Promise<R>;\nfunction reduce<T, R>(fn: (acc: R, value: T) => R, initial: R, iterable: Iterable<T>): R;\nfunction reduce<T, R>(\n fn: (acc: R, value: T) => R | Promise<R>,\n initial: R,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): Promise<R>;\nfunction reduce<T, R>(\n fn: (acc: R, value: T) => R | Promise<R>,\n initial: R,\n iterable?: AnyIterableInput<PromiseLikeValue<T>>\n) {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => reduce(fn, initial, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async () => {\n let acc = initial;\n for await (const item of toAsync(iterable)) {\n acc = await fn(acc, item as T);\n }\n return acc;\n })();\n }\n\n if (isIterable(iterable)) {\n let acc = initial;\n for (const item of iterable) {\n acc = fn(acc, item as T) as R;\n }\n return acc;\n }\n\n throw new TypeError('reduce: input is not iterable');\n}\n\nexport default reduce;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** scan - fold values and emit each accumulated value */\nfunction scan<T, R>(fn: (acc: R, value: T) => R, initial: R): (iterable: Iterable<T>) => IterableIterator<R>;\nfunction scan<T, R>(\n fn: (acc: R, value: T) => R | Promise<R>,\n initial: R\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<R>;\nfunction scan<T, R>(fn: (acc: R, value: T) => R, initial: R, iterable: Iterable<T>): IterableIterator<R>;\nfunction scan<T, R>(\n fn: (acc: R, value: T) => R | Promise<R>,\n initial: R,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<R>;\nfunction scan<T, R>(\n fn: (acc: R, value: T) => R | Promise<R>,\n initial: R,\n iterable?: AnyIterableInput<PromiseLikeValue<T>>\n): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => scan(fn, initial, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n let acc = initial;\n for await (const item of toAsync(iterable)) {\n acc = await fn(acc, item as T);\n yield acc;\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n let acc = initial;\n for (const item of iterable) {\n acc = fn(acc, item as T) as R;\n yield acc;\n }\n })();\n }\n\n throw new TypeError('scan: input is not iterable');\n}\n\nexport default scan;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** some - check any value matches */\nfunction some<T>(predicate: (value: T) => boolean): (iterable: Iterable<T>) => boolean;\nfunction some<T>(\n predicate: (value: T) => boolean | Promise<boolean>\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => Promise<boolean>;\nfunction some<T>(predicate: (value: T) => boolean, iterable: Iterable<T>): boolean;\nfunction some<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): Promise<boolean>;\nfunction some<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable?: AnyIterableInput<PromiseLikeValue<T>>\n): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => some(predicate, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async () => {\n for await (const item of toAsync(iterable)) {\n if (await predicate(item as T)) {\n return true;\n }\n }\n return false;\n })();\n }\n\n if (isIterable(iterable)) {\n for (const item of iterable) {\n if (predicate(item as T)) {\n return true;\n }\n }\n return false;\n }\n\n throw new TypeError('some: input is not iterable');\n}\n\nexport default some;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** take - lazily take first n values */\nfunction take<T>(count: number): (iterable: Iterable<T>) => IterableIterator<T>;\nfunction take<T>(count: number): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T>;\nfunction take<T>(count: number, iterable: Iterable<T>): IterableIterator<T>;\nfunction take<T>(count: number, iterable: AnyIterableInput<PromiseLikeValue<T>>): AsyncIterableIterator<T>;\nfunction take<T>(count: number, iterable?: AnyIterableInput<PromiseLikeValue<T>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => take(count, next);\n }\n\n const limit = Math.floor(count);\n if (!Number.isFinite(limit) || limit <= 0) {\n return isAsyncInput(iterable)\n ? (async function* () {})()\n : (function* () {})();\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n let taken = 0;\n for await (const item of toAsync(iterable)) {\n yield item as T;\n taken += 1;\n if (taken >= limit) {\n break;\n }\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n let taken = 0;\n for (const item of iterable) {\n yield item as T;\n taken += 1;\n if (taken >= limit) {\n break;\n }\n }\n })();\n }\n\n throw new TypeError('take: input is not iterable');\n}\n\nexport default take;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** takeWhile - lazily take values while predicate holds */\nfunction takeWhile<T>(predicate: (value: T) => boolean): (iterable: Iterable<T>) => IterableIterator<T>;\nfunction takeWhile<T>(\n predicate: (value: T) => boolean | Promise<boolean>\n): (iterable: AnyIterableInput<PromiseLikeValue<T>>) => AsyncIterableIterator<T>;\nfunction takeWhile<T>(predicate: (value: T) => boolean, iterable: Iterable<T>): IterableIterator<T>;\nfunction takeWhile<T>(\n predicate: (value: T) => boolean | Promise<boolean>,\n iterable: AnyIterableInput<PromiseLikeValue<T>>\n): AsyncIterableIterator<T>;\nfunction takeWhile<T>(predicate: (value: T) => boolean | Promise<boolean>, iterable?: AnyIterableInput<PromiseLikeValue<T>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<T>>) => takeWhile(predicate, next);\n }\n\n if (isAsyncInput(iterable)) {\n return (async function* () {\n for await (const item of toAsync(iterable)) {\n if (!(await predicate(item as T))) {\n break;\n }\n yield item as T;\n }\n })();\n }\n\n if (isIterable(iterable)) {\n return (function* () {\n for (const item of iterable) {\n if (!predicate(item as T)) {\n break;\n }\n yield item as T;\n }\n })();\n }\n\n throw new TypeError('takeWhile: input is not iterable');\n}\n\nexport default takeWhile;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { awaitValue, isAsyncIterable, isIterable, resolveIterable } from './utils';\n\n/** toArray - Iterable/AsyncIterable을 배열로 수집 */\nasync function toArray<T>(input: AnyIterableInput<PromiseLikeValue<T>>): Promise<T[]> {\n const resolved = await resolveIterable(input);\n const result: T[] = [];\n\n if (isAsyncIterable(resolved)) {\n for await (const item of resolved) {\n result.push(await awaitValue(item));\n }\n return result;\n }\n\n if (isIterable(resolved)) {\n for (const item of resolved) {\n result.push(await awaitValue(item));\n }\n return result;\n }\n\n throw new TypeError('toArray: input is not iterable');\n}\n\nexport default toArray;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** zip - lazily combine two iterables */\nfunction zip<A, B>(other: Iterable<B>): (iterable: Iterable<A>) => IterableIterator<[A, B]>;\nfunction zip<A, B>(\n other: AnyIterableInput<PromiseLikeValue<B>>\n): (iterable: AnyIterableInput<PromiseLikeValue<A>>) => AsyncIterableIterator<[A, B]>;\nfunction zip<A, B>(other: Iterable<B>, iterable: Iterable<A>): IterableIterator<[A, B]>;\nfunction zip<A, B>(\n other: AnyIterableInput<PromiseLikeValue<B>>,\n iterable: AnyIterableInput<PromiseLikeValue<A>>\n): AsyncIterableIterator<[A, B]>;\nfunction zip<A, B>(other: AnyIterableInput<PromiseLikeValue<B>>, iterable?: AnyIterableInput<PromiseLikeValue<A>>): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<A>>) => zip(other, next);\n }\n\n if (isAsyncInput(other) || isAsyncInput(iterable)) {\n return (async function* () {\n const left = toAsync(iterable);\n const right = toAsync(other);\n const leftIter = left[Symbol.asyncIterator]();\n const rightIter = right[Symbol.asyncIterator]();\n\n while (true) {\n const [leftResult, rightResult] = await Promise.all([leftIter.next(), rightIter.next()]);\n if (leftResult.done || rightResult.done) {\n return;\n }\n yield [leftResult.value as A, rightResult.value as B];\n }\n })();\n }\n\n if (isIterable(iterable) && isIterable(other)) {\n return (function* () {\n const leftIter = (iterable as Iterable<A>)[Symbol.iterator]();\n const rightIter = (other as Iterable<B>)[Symbol.iterator]();\n\n while (true) {\n const leftResult = leftIter.next();\n const rightResult = rightIter.next();\n if (leftResult.done || rightResult.done) {\n return;\n }\n yield [leftResult.value as A, rightResult.value as B];\n }\n })();\n }\n\n throw new TypeError('zip: input is not iterable');\n}\n\nexport default zip;\n","import type { AnyIterableInput, PromiseLikeValue } from './utils';\nimport { isAsyncInput, isIterable } from './utils';\nimport toAsync from './toAsync';\n\n/** zipWith - lazily combine two iterables with a function */\nfunction zipWith<A, B, R>(fn: (a: A, b: B) => R, other: Iterable<B>): (iterable: Iterable<A>) => IterableIterator<R>;\nfunction zipWith<A, B, R>(\n fn: (a: A, b: B) => R | Promise<R>,\n other: AnyIterableInput<PromiseLikeValue<B>>\n): (iterable: AnyIterableInput<PromiseLikeValue<A>>) => AsyncIterableIterator<R>;\nfunction zipWith<A, B, R>(fn: (a: A, b: B) => R, other: Iterable<B>, iterable: Iterable<A>): IterableIterator<R>;\nfunction zipWith<A, B, R>(\n fn: (a: A, b: B) => R | Promise<R>,\n other: AnyIterableInput<PromiseLikeValue<B>>,\n iterable: AnyIterableInput<PromiseLikeValue<A>>\n): AsyncIterableIterator<R>;\nfunction zipWith<A, B, R>(\n fn: (a: A, b: B) => R | Promise<R>,\n other: AnyIterableInput<PromiseLikeValue<B>>,\n iterable?: AnyIterableInput<PromiseLikeValue<A>>\n): any {\n if (iterable === undefined) {\n return (next: AnyIterableInput<PromiseLikeValue<A>>) => zipWith(fn, other, next);\n }\n\n if (isAsyncInput(other) || isAsyncInput(iterable)) {\n return (async function* () {\n const left = toAsync(iterable);\n const right = toAsync(other);\n const leftIter = left[Symbol.asyncIterator]();\n const rightIter = right[Symbol.asyncIterator]();\n\n while (true) {\n const [leftResult, rightResult] = await Promise.all([leftIter.next(), rightIter.next()]);\n if (leftResult.done || rightResult.done) {\n return;\n }\n yield await fn(leftResult.value as A, rightResult.value as B);\n }\n })();\n }\n\n if (isIterable(iterable) && isIterable(other)) {\n return (function* () {\n const leftIter = (iterable as Iterable<A>)[Symbol.iterator]();\n const rightIter = (other as Iterable<B>)[Symbol.iterator]();\n\n while (true) {\n const leftResult = leftIter.next();\n const rightResult = rightIter.next();\n if (leftResult.done || rightResult.done) {\n return;\n }\n yield fn(leftResult.value as A, rightResult.value as B) as R;\n }\n })();\n }\n\n throw new TypeError('zipWith: input is not iterable');\n}\n\nexport default zipWith;\n"],"names":["isPromiseLike","value","isAsyncIterable","isIterable","isAsyncInput","resolveIterable","input","awaitValue","toAsync","resolved","item","append","iterable","next","chunkIterable","size","chunkSize","buffer","chunkAsyncIterable","chunk","nextIterable","concat","other","drop","count","limit","skipped","dropWhile","predicate","dropping","every","filter","find","flatMap","fn","mapped","inner","flatten","flattenDeep","walkSync","map","prepend","range","start","end","step","reduce","initial","acc","scan","some","take","taken","takeWhile","toArray","result","zip","left","right","leftIter","rightIter","leftResult","rightResult","zipWith"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (function(i,y){typeof exports=="object"&&typeof module<"u"?y(exports):typeof define=="function"&&define.amd?define(["exports"],y):(i=typeof globalThis<"u"?globalThis:i||self,y(i.FpPack={}))})(this,(function(i){"use strict";function y(...n){return t=>n.reduce((e,r)=>r(e),t)}class d{effect;label;constructor(t,e){this.effect=t,this.label=e}static of(t,e){return new d(t,e)}}function N(n,t){return n instanceof d?t.effect(n):t.value(n)}function E(n){return m(n)?n.effect():n}function m(n){return n instanceof d}function P(...n){return t=>{let e=t;for(const r of n){if(m(e))return e;e=r(e)}return e}}function S(...n){return t=>n.reduceRight((e,r)=>r(e),t)}function c(n,...t){const e=r=>r.length>=n.length?n(...r):(...u)=>e([...r,...u]);return t.length===0?e([]):e(t)}function k(n,...t){return function(...r){const u=[...t,...r];return n.apply(this,u)}}function z(n){return function(...e){const r=[...e].reverse();return n.apply(this,r)}}function I(n,...t){return t.length===0?(...e)=>!n(...e):!n(...t)}function W(n){return n}function D(n){return()=>n}function L(n){return t=>(n(t),t)}function _(n){let t=!1,e;return function(...u){return t||(t=!0,e=n.apply(this,u)),e}}function C(n){const t=new Map,e=Symbol("result");return function(...u){let o=t;for(const s of u)o.has(s)||o.set(s,new Map),o=o.get(s);if(o.has(e))return o.get(e);const f=n.apply(this,u);return o.set(e,f),f}}function v(n,t,e,r){return n(r)?t(r):e(r)}const K=c(v);function q(n,t,e){return n(e)?t(e):e}const B=c(q);function F(n,t,e){return n(e)?e:t(e)}const V=c(F);function R(n){return t=>{for(const[e,r]of n)if(e(t))return r(t)}}function $(n,t,e){try{return n(e)}catch(r){const u=r instanceof Error?r:new Error(String(r));return t(u,e)}}const U=c($);function j(n,t,e){return n(e)?e:t}const G=c(j);function Z(n,t){return t.map(n)}const H=c(Z);function J(n,t){return t.filter(n)}const Q=c(J);function X(n,t,e){return e.reduce(n,t)}const Y=c(X);function x(n,t){return t.flatMap(n)}const nn=c(x);function tn(n,t){return t.find(n)}const en=c(tn);function rn(n,t){for(let e=0;e<t.length;e++)if(n(t[e]))return!0;return!1}const un=c(rn);function cn(n,t){return t.every(n)}const on=c(cn);function fn(n,t){return n<=0?[]:n>=t.length?[...t]:t.slice(0,n)}const sn=c(fn);function ln(n,t){const e=Math.floor(n);return!Number.isFinite(e)||e<=0?t:t.slice(e)}const an=c(ln);function dn(n,t){const e=[];let r=!0;for(const u of t)r&&!n(u)&&(r=!1),r||e.push(u);return e}const hn=c(dn);function yn(n,t){const e=Math.floor(n);if(!Number.isFinite(e)||e<=0)return[];const r=[];for(let u=0;u<t.length;u+=e)r.push(t.slice(u,u+e));return r}const mn=c(yn);function gn(n,t){const e=Math.min(t.length,n.length),r=[];for(let u=0;u<e;u+=1)r.push([t[u],n[u]]);return r}const pn=c(gn);function An(n,t,e){const r=Math.min(e.length,t.length),u=[];for(let o=0;o<r;o+=1)u.push(n(e[o],t[o]));return u}const wn=c(An);function bn(n){const t=[],e=[];for(const[r,u]of n)t.push(r),e.push(u);return[t,e]}function On(n){const t=new Set,e=[];for(const r of n)t.has(r)||(t.add(r),e.push(r));return e}function Tn(n,t){const e=new Set,r=[];for(const u of t){const o=n(u);e.has(o)||(e.add(o),r.push(u))}return r}const Mn=c(Tn);function Nn(n,t){return[...t].sort((e,r)=>{const u=n(e),o=n(r);return u<o?-1:u>o?1:0})}const En=c(Nn);function Pn(n,t){return[...t].sort(n)}const Sn=c(Pn);function kn(n,t){return t.reduce((e,r)=>{const u=n(r);return e[u]||(e[u]=[]),e[u].push(r),e},{})}const zn=c(kn);function In(n){return n.map((t,e)=>[e,t])}function Wn(n,t){const e=[];for(const r of t){if(!n(r))break;e.push(r)}return e}const Dn=c(Wn);function Ln(n,t,e){const r=[];let u=t;for(const o of e)u=n(u,o),r.push(u);return r}const _n=c(Ln);function Cn(n,t){return[...t,...n]}const vn=c(Cn);function Kn(n,t){return[...t,n]}const qn=c(Kn);function Bn(n,t){return[n,...t]}const Fn=c(Bn);function Vn(n){return n.flat()}function Rn(n){return n[0]}function $n(n){return n.slice(1)}function Un(n){if(n.length!==0)return n[n.length-1]}function jn(n){return n.length<=1?[]:n.slice(0,-1)}function Gn(n,t){if(!Number.isFinite(n)||!Number.isFinite(t))return[];if(n===t)return[];const e=n<t?1:-1,r=[];for(let u=n;e>0?u<t:u>t;u+=e)r.push(u);return r}function Zn(n,t){const e=[],r=[];for(const u of t)n(u)?e.push(u):r.push(u);return[e,r]}const Hn=c(Zn);function Jn(n){const t=[],e=r=>{for(const u of r)Array.isArray(u)?e(u):t.push(u)};return e(n),t}function Qn(n,t){return t?.[n]}const Xn=c(Qn);function Yn(n,t,e){const r=e?.[t];return r??n}const xn=c(Yn);function nt(n,t){return n.reduce((e,r)=>e?.[r],t)}const tt=c(nt);function et(n,t,e){const r=t.reduce((u,o)=>u?.[o],e);return r??n}const rt=c(et);function it(n,t){const e={};for(const r of n)r in t&&(e[r]=t[r]);return e}const ut=c(it);function ct(n,t){const e={...t};for(const r of n)delete e[r];return e}const ot=c(ct);function ft(n,t,e){if(Array.isArray(e)){const r=e.slice();return r[n]=t,r}return e&&typeof e=="object"?{...e,[n]:t}:{[n]:t}}const st=c(ft),b=n=>typeof n=="number"?Number.isInteger(n):typeof n=="string"?/^-?\d+$/.test(n):!1,lt=(n,t)=>{const e=typeof n=="number"?n:Number(n);return Number.isNaN(e)?-1:e<0?Math.max(t+e,0):e},O=n=>n!==null&&typeof n=="object";function g(n,t,e){if(n.length===0)return t;const[r,...u]=n,o=b(r),f=Array.isArray(e)?e.slice():O(e)?{...e}:o?[]:{};if(Array.isArray(f)&&b(r)){const a=lt(r,f.length),A=f[a],w=u.length===0?t:g(u,t,A);return f[a]=w,f}const s=O(f)?f[r]:void 0,l=u.length===0?t:g(u,t,s);return f[r]=l,f}const at=c(g);function dt(n,t){if(Array.isArray(t)){const e=t.slice(),r=typeof n=="number"?n:Number.isNaN(Number(n))?-1:Number(n);return r>=0&&r<e.length?e.splice(r,1):delete e[n],e}if(t&&typeof t=="object"){const{[n]:e,...r}=t;return r}return t}const ht=n=>typeof n=="number"?Number.isInteger(n):typeof n=="string"?/^-?\d+$/.test(n):!1,yt=(n,t)=>{const e=typeof n=="number"?n:Number(n);return Number.isNaN(e)?-1:e<0?t+e:e},mt=n=>n!==null&&typeof n=="object";function p(n,t){if(n.length===0||!mt(t))return t;const[e,...r]=n;if(Array.isArray(t)&&ht(e)){const o=yt(e,t.length);if(o<0||o>=t.length)return t;const f=t.slice();if(r.length===0)return f.splice(o,1),f;const s=p(r,f[o]);return f[o]=s,f}if(!Object.prototype.hasOwnProperty.call(t,e))return t;if(r.length===0){const{[e]:o,...f}=t;return f}const u={...t};return u[e]=p(r,u[e]),u}const gt=c(p);function pt(n,t){return{...n,...t}}const At=c(pt);function wt(n,t){const e=u=>typeof u=="object"&&u!==null&&!Array.isArray(u),r=(u,o)=>{const f={...u};for(const[s,l]of Object.entries(o)){const a=f[s];e(a)&&e(l)?f[s]=r(a,l):f[s]=l}return f};return e(n)&&e(t)?r(n,t):{...n,...t}}const bt=c(wt);function Ot(n){return n.reduce((e,r)=>({...e,...r}),{})}function Tt(n){return Object.keys(n)}function Mt(n){return Object.values(n)}function Nt(n){return Object.entries(n)}function Et(n){return t=>{const e={};for(const[r,u]of Object.entries(t))e[r]=n(u);return e}}function Pt(n,t){const e={...t};for(const r of Object.keys(n)){const u=n[r];typeof u=="function"&&(e[r]=u(t[r]))}return e}const St=c(Pt);function kt(n,t){return Object.prototype.hasOwnProperty.call(t,n)}const zt=c(kt);function It(n){return t=>{let e=t;for(const r of n){if(e==null||!Object.prototype.hasOwnProperty.call(e,r))return!1;e=e[r]}return!0}}function Wt(n,t){return h(n,t,new WeakMap)}function h(n,t,e){if(n===t||typeof n=="number"&&typeof t=="number"&&Number.isNaN(n)&&Number.isNaN(t))return!0;if(n===null||t===null||typeof n!="object"||typeof t!="object")return!1;if(e.has(n))return e.get(n)===t;if(e.set(n,t),n instanceof Date&&t instanceof Date)return n.getTime()===t.getTime();if(n instanceof Map&&t instanceof Map){if(n.size!==t.size)return!1;const o=Array.from(t.entries());for(const[f,s]of n.entries()){let l=!1;for(let a=0;a<o.length;a++){const[A,w]=o[a];if(h(f,A,e)&&h(s,w,e)){o.splice(a,1),l=!0;break}}if(!l)return!1}return!0}if(n instanceof Set&&t instanceof Set){if(n.size!==t.size)return!1;const o=Array.from(t.values());for(const f of n.values()){let s=!1;for(let l=0;l<o.length;l++)if(h(f,o[l],e)){o.splice(l,1),s=!0;break}if(!s)return!1}return!0}if(Array.isArray(n)&&Array.isArray(t)){if(n.length!==t.length)return!1;for(let o=0;o<n.length;o++)if(!h(n[o],t[o],e))return!1;return!0}const r=Reflect.ownKeys(n),u=Reflect.ownKeys(t);if(r.length!==u.length)return!1;for(const o of r)if(!Object.prototype.hasOwnProperty.call(t,o)||!h(n[o],t[o],e))return!1;return!0}const T=c(Wt);function Dt(n){return n==null}function Lt(n){return n==null?!0:typeof n=="string"||Array.isArray(n)?n.length===0:n instanceof Map||n instanceof Set?n.size===0:typeof n=="object"?Object.keys(n).length===0:!1}function _t(n){const t=n.toLowerCase();return e=>{if(e===null)return t==="null";if(e===void 0)return t==="undefined";const r=typeof e;return r!=="object"?r===t:Object.prototype.toString.call(e).slice(8,-1).toLowerCase()===t}}function Ct(n){return t=>t>n}function vt(n){return t=>t>=n}function Kt(n){return t=>t<n}function qt(n){return t=>t<=n}function Bt(n,t,e){return e<n?n:e>t?t:e}const Ft=c(Bt);function Vt(n,t){if(typeof t=="string"&&typeof n=="string")return t.includes(n);if(Array.isArray(t)){for(let e=0;e<t.length;e++)if(T(t[e],n))return!0;return!1}return!1}function Rt(n,t){return n+t}const $t=c(Rt);function Ut(n,t){return n-t}const jt=c(Ut);function Gt(n,t){return n*t}const Zt=c(Gt);function Ht(n,t){return n/t}const Jt=c(Ht);function Qt(n){return n.reduce((t,e)=>t+e,0)}function Xt(n){return n.length===0?NaN:n.reduce((e,r)=>e+r,0)/n.length}function Yt(n){return n.length===0?1/0:Math.min(...n)}function xt(n){return n.length===0?-1/0:Math.max(...n)}function ne(n){return Math.round(n)}function te(n){return Math.floor(n)}function ee(n){return Math.ceil(n)}function re(n,t){const e=Math.ceil(n),r=Math.floor(t);return r<e?e:Math.floor(Math.random()*(r-e+1))+e}const ie=c(re);function ue(n){return n.trim()}function ce(n,t){return t.split(n)}const oe=c(ce);function fe(n,t){return t.join(n)}const se=c(fe);function le(n,t,e){return e.replace(n,t)}const ae=c(le);function de(n){return n.toUpperCase()}function he(n){return n.toLowerCase()}function ye(n,t){if(typeof t=="string"&&typeof n=="string")return t.startsWith(n);if(Array.isArray(n)&&Array.isArray(t)){if(n.length===0)return!0;if(n.length>t.length)return!1;for(let e=0;e<n.length;e++)if(t[e]!==n[e])return!1;return!0}return!1}function me(n,t){if(typeof t=="string"&&typeof n=="string")return t.endsWith(n);if(Array.isArray(n)&&Array.isArray(t)){if(n.length===0)return!0;if(n.length>t.length)return!1;for(let e=0;e<n.length;e++){const r=t.length-n.length+e;if(t[r]!==n[e])return!1}return!0}return!1}function ge(n,t){return t.match(n)}const pe=c(ge);function Ae(...n){return async t=>{let e=t;for(const r of n)e=await r(e);return e}}function we(...n){return async t=>{let e=t;for(const r of n){if(m(e))return e;e=await r(e)}return e}}function M(n){return new Promise(t=>{setTimeout(t,n)})}function be(n,t){return new Promise((e,r)=>{const u=setTimeout(()=>r(new Error(`Timed out after ${n}ms`)),n);t.then(o=>{clearTimeout(u),e(o)}).catch(o=>{clearTimeout(u),r(o)})})}const Oe=c(be);function Te(n,t,e=0){return(async()=>{let r=0;for(;;)try{return await t()}catch(u){if(r+=1,r>n)throw u;e>0&&await M(e)}})()}const Me=c(Te);function Ne(n,t){let e;return function(...u){e&&clearTimeout(e);const o=this;e=setTimeout(()=>{e=void 0,n.apply(o,u)},t)}}const Ee=c(Ne);function Pe(n,t){let e;return function(...u){e||(n.apply(this,u),e=setTimeout(()=>{e=void 0},t))}}const Se=c(Pe);function ke(n,t){let e,r=!1,u,o;const f=()=>{e=void 0,r&&u&&(r=!1,n.apply(o,u))};return function(...l){if(!e){n.apply(this,l),e=setTimeout(f,t);return}r=!0,u=l,o=this,clearTimeout(e),e=setTimeout(f,t)}}const ze=c(ke);function Ie(n,t){let e=0,r=null,u=null;const o=(s,l)=>{e=Date.now(),n.apply(s,l)};return function(...s){const l=Date.now(),a=t-(l-e);a<=0?(u&&(clearTimeout(u),u=null),r=null,o(this,s)):(r=s,u||(u=setTimeout(()=>{u=null,r&&(o(this,r),r=null)},a)))}}const We=c(Ie);function De(n){return t=>t==null?null:n(t)}function Le(n){return t=>{const e=[];for(const r of t){const u=n(r);u!=null&&e.push(u)}return e}}function _e(n){return t=>t??n}function Ce(n){try{return{ok:!0,value:n()}}catch(t){return{ok:!1,error:t}}}function ve(n,t,e){return e==null?n():t(e)}const Ke=c(ve);function qe(n,t){if(!n)throw new Error(t??"Assertion failed")}const Be=c(qe);function Fe(n,t){if(!n)throw new Error(t??"Invariant failed")}const Ve=c(Fe);function Re(n){return t=>(n?console.log(n,t):console.log(t),t)}i.SideEffect=d,i.SideEffectClass=d,i.add=$t,i.append=qn,i.assert=Be,i.assoc=st,i.assocPath=at,i.ceil=ee,i.chunk=mn,i.clamp=Ft,i.complement=I,i.compose=S,i.concat=vn,i.cond=R,i.constant=D,i.curry=c,i.debounce=Ee,i.debounceLeading=Se,i.debounceLeadingTrailing=ze,i.delay=M,i.dissoc=dt,i.dissocPath=gt,i.div=Jt,i.drop=an,i.dropWhile=hn,i.endsWith=me,i.entries=Nt,i.equals=T,i.every=on,i.evolve=St,i.filter=Q,i.find=en,i.flatMap=nn,i.flatten=Vn,i.flattenDeep=Jn,i.flip=z,i.floor=te,i.fold=Ke,i.getOrElse=_e,i.groupBy=zn,i.gt=Ct,i.gte=vt,i.guard=G,i.has=zt,i.hasPath=It,i.head=Rn,i.identity=W,i.ifElse=K,i.includes=Vt,i.init=jn,i.invariant=Ve,i.isEmpty=Lt,i.isNil=Dt,i.isSideEffect=m,i.isType=_t,i.join=se,i.keys=Tt,i.last=Un,i.log=Re,i.lt=Kt,i.lte=qt,i.map=H,i.mapMaybe=Le,i.mapValues=Et,i.match=pe,i.matchSideEffect=N,i.max=xt,i.maybe=De,i.mean=Xt,i.memoize=C,i.merge=At,i.mergeAll=Ot,i.mergeDeep=bt,i.min=Yt,i.mul=Zt,i.omit=ot,i.once=_,i.partial=k,i.partition=Hn,i.path=tt,i.pathOr=rt,i.pick=ut,i.pipe=y,i.pipeAsync=Ae,i.pipeAsyncSideEffect=we,i.pipeSideEffect=P,i.prepend=Fn,i.prop=Xn,i.propOr=xn,i.randomInt=ie,i.range=Gn,i.reduce=Y,i.replace=ae,i.result=Ce,i.retry=Me,i.round=ne,i.runPipeResult=E,i.scan=_n,i.some=un,i.sort=Sn,i.sortBy=En,i.split=oe,i.startsWith=ye,i.sub=jt,i.sum=Qt,i.tail=$n,i.take=sn,i.takeWhile=Dn,i.tap=L,i.throttle=We,i.timeout=Oe,i.toLower=he,i.toUpper=de,i.trim=ue,i.tryCatch=U,i.uniq=On,i.uniqBy=Mn,i.unless=V,i.unzip=bn,i.values=Mt,i.when=B,i.zip=pn,i.zipIndex=In,i.zipWith=wn,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
2
+ //# sourceMappingURL=fp-pack.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-pack.umd.js","sources":["../src/implement/composition/pipe.ts","../src/implement/composition/sideEffect.ts","../src/implement/composition/pipeSideEffect.ts","../src/implement/composition/compose.ts","../src/implement/composition/curry.ts","../src/implement/composition/partial.ts","../src/implement/composition/flip.ts","../src/implement/composition/complement.ts","../src/implement/composition/identity.ts","../src/implement/composition/constant.ts","../src/implement/composition/tap.ts","../src/implement/composition/once.ts","../src/implement/composition/memoize.ts","../src/implement/control/ifElse.ts","../src/implement/control/when.ts","../src/implement/control/unless.ts","../src/implement/control/cond.ts","../src/implement/control/tryCatch.ts","../src/implement/control/guard.ts","../src/implement/array/map.ts","../src/implement/array/filter.ts","../src/implement/array/reduce.ts","../src/implement/array/flatMap.ts","../src/implement/array/find.ts","../src/implement/array/some.ts","../src/implement/array/every.ts","../src/implement/array/take.ts","../src/implement/array/drop.ts","../src/implement/array/dropWhile.ts","../src/implement/array/chunk.ts","../src/implement/array/zip.ts","../src/implement/array/zipWith.ts","../src/implement/array/unzip.ts","../src/implement/array/uniq.ts","../src/implement/array/uniqBy.ts","../src/implement/array/sortBy.ts","../src/implement/array/sort.ts","../src/implement/array/groupBy.ts","../src/implement/array/zipIndex.ts","../src/implement/array/takeWhile.ts","../src/implement/array/scan.ts","../src/implement/array/concat.ts","../src/implement/array/append.ts","../src/implement/array/prepend.ts","../src/implement/array/flatten.ts","../src/implement/array/head.ts","../src/implement/array/tail.ts","../src/implement/array/last.ts","../src/implement/array/init.ts","../src/implement/array/range.ts","../src/implement/array/partition.ts","../src/implement/array/flattenDeep.ts","../src/implement/object/prop.ts","../src/implement/object/propOr.ts","../src/implement/object/path.ts","../src/implement/object/pathOr.ts","../src/implement/object/pick.ts","../src/implement/object/omit.ts","../src/implement/object/assoc.ts","../src/implement/object/assocPath.ts","../src/implement/object/dissoc.ts","../src/implement/object/dissocPath.ts","../src/implement/object/merge.ts","../src/implement/object/mergeDeep.ts","../src/implement/object/mergeAll.ts","../src/implement/object/keys.ts","../src/implement/object/values.ts","../src/implement/object/entries.ts","../src/implement/object/mapValues.ts","../src/implement/object/evolve.ts","../src/implement/object/has.ts","../src/implement/object/hasPath.ts","../src/implement/equality/equals.ts","../src/implement/equality/isNil.ts","../src/implement/equality/isEmpty.ts","../src/implement/equality/isType.ts","../src/implement/equality/gt.ts","../src/implement/equality/gte.ts","../src/implement/equality/lt.ts","../src/implement/equality/lte.ts","../src/implement/equality/clamp.ts","../src/implement/equality/includes.ts","../src/implement/math/add.ts","../src/implement/math/sub.ts","../src/implement/math/mul.ts","../src/implement/math/div.ts","../src/implement/math/sum.ts","../src/implement/math/mean.ts","../src/implement/math/min.ts","../src/implement/math/max.ts","../src/implement/math/round.ts","../src/implement/math/floor.ts","../src/implement/math/ceil.ts","../src/implement/math/randomInt.ts","../src/implement/string/trim.ts","../src/implement/string/split.ts","../src/implement/string/join.ts","../src/implement/string/replace.ts","../src/implement/string/toUpper.ts","../src/implement/string/toLower.ts","../src/implement/string/startsWith.ts","../src/implement/string/endsWith.ts","../src/implement/string/match.ts","../src/implement/async/pipeAsync.ts","../src/implement/async/pipeAsyncSideEffect.ts","../src/implement/async/delay.ts","../src/implement/async/timeout.ts","../src/implement/async/retry.ts","../src/implement/async/debounce.ts","../src/implement/async/debounceLeading.ts","../src/implement/async/debounceLeadingTrailing.ts","../src/implement/async/throttle.ts","../src/implement/nullable/maybe.ts","../src/implement/nullable/mapMaybe.ts","../src/implement/nullable/getOrElse.ts","../src/implement/nullable/result.ts","../src/implement/nullable/fold.ts","../src/implement/debug/assert.ts","../src/implement/debug/invariant.ts","../src/implement/debug/log.ts"],"sourcesContent":["type UnaryFn<A, R> = (a: A) => R;\ntype PipeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, any>, ...UnaryFn<any, any>[]]\n ? A\n : never;\ntype PipeOutput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>]\n ? R\n : Fns extends [UnaryFn<any, infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<R, any>, ...UnaryFn<any, any>[]]\n ? PipeOutput<Rest>\n : never\n : never;\ntype Pipe<Fns extends UnaryFn<any, any>[]> = (input: PipeInput<Fns>) => PipeOutput<Fns>;\n\nfunction pipe<A, R>(ab: UnaryFn<A, R>): (a: A) => R;\nfunction pipe<A, B, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, R>): (a: A) => R;\nfunction pipe<A, B, C, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): (a: A) => R;\nfunction pipe<A, B, C, D, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, R>\n): (a: A) => R;\nfunction pipe<A, B, C, D, E, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): (a: A) => R;\n\nfunction pipe<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): Pipe<Fns>;\nfunction pipe(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;\nfunction pipe(...funcs: Array<(input: any) => any>) {\n return (init: any) => {\n return funcs.reduce((acc, fn) => fn(acc), init);\n };\n}\n\nexport default pipe;\n","/**\n * SideEffect - side effect container (never auto-executed)\n */\nexport class SideEffect<T = unknown> {\n readonly effect: () => T;\n readonly label?: string;\n\n constructor(effect: () => T, label?: string) {\n this.effect = effect;\n this.label = label;\n }\n\n static of<T>(effect: () => T, label?: string): SideEffect<T> {\n return new SideEffect(effect, label);\n }\n}\n\ntype MatchHandlers<T, RValue, REffect> = {\n value: (value: T) => RValue;\n effect: (sideEffect: SideEffect) => REffect;\n};\n\nexport function matchSideEffect<T, RValue, REffect = any>(\n result: T | SideEffect,\n handlers: MatchHandlers<T, RValue, REffect>\n): RValue | REffect {\n if (result instanceof SideEffect) {\n return handlers.effect(result);\n }\n return handlers.value(result as T);\n}\n\nexport function runPipeResult<T, R=any>(result: T | SideEffect<R>): T | R {\n if (isSideEffect(result)) {\n return result.effect() as R;\n }\n return result as T;\n}\n\nexport function isSideEffect(value: unknown): value is SideEffect<any> {\n return value instanceof SideEffect;\n}\n\nexport default SideEffect;\n","import SideEffect, { isSideEffect } from './sideEffect';\n\ntype MaybeSideEffect<T> = T | SideEffect<any>;\ntype NonSideEffect<T> = Exclude<T, SideEffect<any>>;\ntype UnaryFn<A, R> = (a: A) => MaybeSideEffect<R>;\ntype PipeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, any>, ...UnaryFn<any, any>[]]\n ? A\n : never;\ntype PipeOutput<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<any, infer R>]\n ? MaybeSideEffect<R>\n : Fns extends [UnaryFn<any, infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<NonSideEffect<R>, any>, ...UnaryFn<any, any>[]]\n ? PipeOutput<Rest>\n : never\n : never;\ntype Resolve<T> = T extends infer R ? R : never;\ntype PipeSideEffect<Fns extends UnaryFn<any, any>[]> = (\n input: PipeInput<Fns> | SideEffect<any>\n) => Resolve<PipeOutput<Fns>>;\n\nfunction pipeSideEffect<A, R>(ab: UnaryFn<A, R>): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, D, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\nfunction pipeSideEffect<A, B, C, D, E, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): (a: A | SideEffect<any>) => MaybeSideEffect<R>;\n\nfunction pipeSideEffect<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): PipeSideEffect<Fns>;\nfunction pipeSideEffect(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;\nfunction pipeSideEffect(...funcs: Array<(input: any) => any>) {\n return (init: any) => {\n let acc = init;\n for (const fn of funcs) {\n if (isSideEffect(acc)) {\n return acc;\n }\n acc = fn(acc);\n }\n return acc;\n };\n}\n\nexport default pipeSideEffect;\n","/**\n * compose - 함수를 우→좌로 합성\n */\n\ntype UnaryFn<A, R> = (a: A) => R;\ntype ComposeInput<Fns extends UnaryFn<any, any>[]> = Fns extends [...UnaryFn<any, any>[], UnaryFn<infer A, any>]\n ? A\n : never;\ntype ComposeChain<Fns extends UnaryFn<any, any>[]> = Fns extends [UnaryFn<infer A, infer R>]\n ? UnaryFn<A, R>\n : Fns extends [UnaryFn<infer A, infer R>, ...infer Rest]\n ? Rest extends [UnaryFn<R, any>, ...UnaryFn<any, any>[]]\n ? ComposeChain<Rest> extends UnaryFn<any, infer NextR>\n ? UnaryFn<A, NextR>\n : never\n : never\n : never;\ntype Compose<Fns extends UnaryFn<any, any>[]> = (input: ComposeInput<Fns>) => ComposeChain<Fns> extends UnaryFn<\n any,\n infer R\n>\n ? R\n : never;\n\nfunction compose<A, R>(ab: UnaryFn<A, R>): (a: A) => R;\nfunction compose<A, B, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, R>): (a: A) => R;\nfunction compose<A, B, C, R>(ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, R>): (a: A) => R;\nfunction compose<A, B, C, D, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, R>\n): (a: A) => R;\nfunction compose<A, B, C, D, E, R>(\n ab: UnaryFn<A, B>,\n bc: UnaryFn<B, C>,\n cd: UnaryFn<C, D>,\n de: UnaryFn<D, E>,\n ef: UnaryFn<E, R>\n): (a: A) => R;\n\nfunction compose<Fns extends [UnaryFn<any, any>, ...UnaryFn<any, any>[]]>(...funcs: Fns): Compose<Fns>;\nfunction compose(...funcs: Array<UnaryFn<any, any>>): (input: any) => any;\nfunction compose(...funcs: Array<(input: any) => any>) {\n return (value: any) => funcs.reduceRight((acc, fn) => fn(acc), value);\n}\n\nexport default compose;\n","/**\n * Curry function with stable TypeScript types.\n * Supports functions with 2-5 parameters and keeps data-last call order.\n */\n\ntype Curry2<Fn> = Fn extends (a: infer A, b: infer B) => infer R\n ? {\n (...args: [A]): (b: B) => R;\n (...args: [A, B]): R;\n }\n : never;\n\ntype Curry3<Fn> = Fn extends (a: infer A, b: infer B, c: infer C) => infer R\n ? {\n (...args: [A]): (b: B) => (c: C) => R;\n (...args: [A, B]): (c: C) => R;\n (...args: [A, B, C]): R;\n }\n : never;\n\ntype Curry4<Fn> = Fn extends (a: infer A, b: infer B, c: infer C, d: infer D) => infer R\n ? {\n (...args: [A]): (b: B) => (c: C) => (d: D) => R;\n (...args: [A, B]): (c: C) => (d: D) => R;\n (...args: [A, B, C]): (d: D) => R;\n (...args: [A, B, C, D]): R;\n }\n : never;\n\ntype Curry5<Fn> = Fn extends (a: infer A, b: infer B, c: infer C, d: infer D, e: infer E) => infer R\n ? {\n (...args: [A]): (b: B) => (c: C) => (d: D) => (e: E) => R;\n (...args: [A, B]): (c: C) => (d: D) => (e: E) => R;\n (...args: [A, B, C]): (d: D) => (e: E) => R;\n (...args: [A, B, C, D]): (e: E) => R;\n (...args: [A, B, C, D, E]): R;\n }\n : never;\n\ntype CurryVariadic<Fn extends (...args: any[]) => any> = Fn extends (...args: infer P) => infer R\n ? <T extends any[]>(\n ...args: T\n ) => T extends P ? R : P extends [...T, ...infer Rest] ? CurryVariadic<(...args: Rest) => R> : never\n : never;\n\ntype CurryByArity<Fn extends (...args: any[]) => any> = Parameters<Fn>['length'] extends 2\n ? Curry2<Fn>\n : Parameters<Fn>['length'] extends 3\n ? Curry3<Fn>\n : Parameters<Fn>['length'] extends 4\n ? Curry4<Fn>\n : Parameters<Fn>['length'] extends 5\n ? Curry5<Fn>\n : CurryVariadic<Fn>;\n\ntype Curried<Fn extends (...args: any[]) => any> = CurryByArity<Fn>;\n\nfunction curry<Fn extends (...args: any[]) => any>(fn: Fn): Curried<Fn>;\n\n// Implementation\nfunction curry(fn: (...args: any[]) => any, ...args: any[]): any {\n const curried = (accumulated: any[]) => {\n return accumulated.length >= fn.length\n ? fn(...accumulated)\n : (...nextArgs: any[]) => curried([...accumulated, ...nextArgs]);\n };\n\n return args.length === 0 ? curried([]) : curried(args);\n}\n\nexport default curry;\n","/**\n * partial - 인자를 미리 고정한 함수 생성\n */\nfunction partial<Args extends any[], Rest extends any[], R>(\n fn: (...args: [...Args, ...Rest]) => R,\n ...preset: Args\n): (...rest: Rest) => R {\n return function partiallyApplied(this: unknown, ...rest: Rest) {\n const all = [...preset, ...rest] as [...Args, ...Rest];\n return fn.apply(this as any, all);\n };\n}\n\nexport default partial;\n","/**\n * flip - 함수 인자 순서를 뒤집음\n */\nfunction flip<A, B, R>(fn: (a: A, b: B) => R): (b: B, a: A) => R;\nfunction flip<A, B, C, R>(fn: (a: A, b: B, c: C) => R): (c: C, b: B, a: A) => R;\nfunction flip<A, B, C, D, R>(fn: (a: A, b: B, c: C, d: D) => R): (d: D, c: C, b: B, a: A) => R;\nfunction flip<A, B, C, D, E, R>(fn: (a: A, b: B, c: C, d: D, e: E) => R): (e: E, d: D, c: C, b: B, a: A) => R;\nfunction flip<R>(fn: (...args: any[]) => R): (...reversed: any[]) => R;\nfunction flip<R>(fn: (...args: any[]) => R) {\n return function flipped(this: unknown, ...args: any[]) {\n const reversed = [...args].reverse();\n return fn.apply(this, reversed);\n };\n}\n\nexport default flip;\n","/**\n * complement - 조건 함수 반전\n */\nfunction complement<T extends any[]>(predicate: (...args: T) => boolean): (...args: T) => boolean;\nfunction complement<T extends any[]>(predicate: (...args: T) => boolean, ...args: T): boolean;\nfunction complement<T extends any[]>(predicate: (...args: T) => boolean, ...args: T) {\n if (args.length === 0) {\n return (...nextArgs: T) => !predicate(...nextArgs);\n }\n return !predicate(...args);\n}\n\nexport default complement;\n","/**\n * identity (id) - 입력을 그대로 반환\n */\nfunction identity<T>(x: T): T {\n return x;\n}\n\nexport default identity;\n","/**\n * constant (always) - 항상 같은 값을 반환\n */\nfunction constant<T>(value: T): () => T {\n return () => value;\n}\n\nexport default constant;\n","/**\n * tap - 값을 그대로 흘리며 side-effect 실행\n */\nfunction tap<T>(fn: (value: T) => void): (value: T) => T {\n return (value: T) => {\n fn(value);\n return value;\n };\n}\n\nexport default tap;\n","/**\n * once - 한 번만 실행되는 함수\n */\ntype AnyFn = (...args: any[]) => any;\n\nfunction once<T extends AnyFn>(fn: T): T {\n let called = false;\n let value: any;\n\n const wrapped = function (this: any, ...args: any[]) {\n if (!called) {\n called = true;\n value = fn.apply(this, args);\n }\n return value;\n };\n\n return wrapped as T;\n}\n\nexport default once;\n","/**\n * memoize - 동일 입력에 대해 결과 캐싱\n */\ntype AnyFn = (...args: any[]) => any;\n\nfunction memoize<T extends AnyFn>(fn: T): T {\n const cache = new Map<any, any>();\n const RESULT = Symbol('result');\n\n const memoized = function (this: any, ...args: any[]) {\n let node = cache;\n for (const arg of args) {\n if (!node.has(arg)) {\n node.set(arg, new Map());\n }\n node = node.get(arg);\n }\n\n if (node.has(RESULT)) {\n return node.get(RESULT);\n }\n\n const value = fn.apply(this, args);\n node.set(RESULT, value);\n return value;\n };\n\n return memoized as T;\n}\n\nexport default memoize;\n","import curry from '../composition/curry';\n\ntype IfElse = {\n <T, RTrue, RFalse>(\n ...args: [predicate: (value: T) => boolean]\n ): (onTrue: (value: T) => RTrue) => (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [predicate: (value: T) => boolean, onTrue: (value: T) => RTrue]\n ): (onFalse: (value: T) => RFalse) => (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [\n predicate: (value: T) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse\n ]\n ): (value: T) => RTrue | RFalse;\n <T, RTrue, RFalse>(\n ...args: [\n predicate: (value: T) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse,\n value: T\n ]\n ): RTrue | RFalse;\n};\n\n/**\n * ifElse - 조건에 따라 다른 함수 실행\n */\nfunction ifElse<T, RTrue, RFalse>(\n predicate: (value: T) => boolean,\n onTrue: (value: T) => RTrue,\n onFalse: (value: T) => RFalse,\n value: T\n): RTrue | RFalse {\n return predicate(value) ? onTrue(value) : onFalse(value);\n}\n\nconst curriedIfElse = curry(ifElse) as IfElse;\nexport default curriedIfElse;\n","import curry from '../composition/curry';\n\ntype Widen<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T;\n\ntype When = {\n <T>(...args: [predicate: (value: Widen<T>) => boolean]): (\n fn: (value: Widen<T>) => Widen<T>\n ) => (value: Widen<T>) => Widen<T>;\n <T>(\n ...args: [predicate: (value: Widen<T>) => boolean, fn: (value: Widen<T>) => Widen<T>]\n ): (value: Widen<T>) => Widen<T>;\n <T>(\n ...args: [predicate: (value: Widen<T>) => boolean, fn: (value: Widen<T>) => Widen<T>, value: Widen<T>]\n ): Widen<T>;\n};\n\n/**\n * when - 조건이 true일 때만 적용\n */\nfunction when<T>(\n predicate: (value: T) => boolean,\n fn: (value: T) => T,\n value: T\n): T {\n return predicate(value) ? fn(value) : value;\n}\n\nconst curriedWhen = curry(when) as When;\nexport default curriedWhen;\n","import curry from '../composition/curry';\n\ntype Widen<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T;\n\ntype Unless = {\n <T>(...args: [predicate: (value: Widen<T>) => boolean]): (\n fn: (value: Widen<T>) => Widen<T>\n ) => (value: Widen<T>) => Widen<T>;\n <T>(\n ...args: [predicate: (value: Widen<T>) => boolean, fn: (value: Widen<T>) => Widen<T>]\n ): (value: Widen<T>) => Widen<T>;\n <T>(\n ...args: [predicate: (value: Widen<T>) => boolean, fn: (value: Widen<T>) => Widen<T>, value: Widen<T>]\n ): Widen<T>;\n};\n\n/**\n * unless - 조건이 false일 때만 적용\n */\nfunction unless<T>(\n predicate: (value: T) => boolean,\n fn: (value: T) => T,\n value: T\n): T {\n return predicate(value) ? value : fn(value);\n}\n\nconst curriedUnless = curry(unless) as Unless;\nexport default curriedUnless;\n","/**\n * cond - 다중 조건 분기 (switch 대체)\n */\nfunction cond<T, R>(\n conditions: Array<[(value: T) => boolean, (value: T) => R]>\n): (value: T) => R | undefined {\n return (value: T) => {\n for (const [predicate, handler] of conditions) {\n if (predicate(value)) {\n return handler(value);\n }\n }\n return undefined;\n };\n}\n\nexport default cond;\n","import curry from '../composition/curry';\n\ntype TryCatch = {\n <T, R>(...args: [tryFn: (value: T) => R]): (\n catchFn: (error: Error, value: T) => R\n ) => (value: T) => R;\n <T, R>(\n ...args: [tryFn: (value: T) => R, catchFn: (error: Error, value: T) => R]\n ): (value: T) => R;\n <T, R>(\n ...args: [\n tryFn: (value: T) => R,\n catchFn: (error: Error, value: T) => R,\n value: T\n ]\n ): R;\n};\n\n/**\n * tryCatch - 예외를 함수형으로 처리\n */\nfunction tryCatch<T, R>(\n tryFn: (value: T) => R,\n catchFn: (error: Error, value: T) => R,\n value: T\n): R {\n try {\n return tryFn(value);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n return catchFn(error, value);\n }\n}\n\nconst curriedTryCatch = curry(tryCatch) as TryCatch;\nexport default curriedTryCatch;\n","import curry from '../composition/curry';\n\ntype Guard = {\n <T, U extends T>(\n ...args: [predicate: (value: T) => boolean]\n ): (defaultValue: U) => (value: T) => T;\n <T, U extends T>(\n ...args: [predicate: (value: T) => boolean, defaultValue: U]\n ): (value: T) => T;\n <T, U extends T>(\n ...args: [predicate: (value: T) => boolean, defaultValue: U, value: T]\n ): T;\n};\n\n/**\n * guard - 조건 불만족 시 early return\n */\nfunction guard<T, U extends T>(\n predicate: (value: T) => boolean,\n defaultValue: U,\n value: T\n): T {\n return predicate(value) ? value : defaultValue;\n}\n\nconst curriedGuard = curry(guard) as Guard;\nexport default curriedGuard;\n","import curry from '../composition/curry';\n\ntype Map = {\n <T, R>(...args: [fn: (value: T) => R]): (arr: T[]) => R[];\n <T, R>(...args: [fn: (value: T) => R, arr: T[]]): R[];\n};\n\n/**\n * map - 요소 변환\n */\nfunction map<T, R>(fn: (value: T) => R, arr: T[]): R[] {\n return arr.map(fn);\n}\n\nconst curriedMap = curry(map) as Map;\nexport default curriedMap;\n","import curry from '../composition/curry';\n\ntype Filter = {\n <T>(...args: [predicate: (value: T) => boolean]): (arr: T[]) => T[];\n <T>(...args: [predicate: (value: T) => boolean, arr: T[]]): T[];\n};\n\n/**\n * filter - 조건 필터링\n */\nfunction filter<T>(predicate: (value: T) => boolean, arr: T[]): T[] {\n return arr.filter(predicate);\n}\n\nconst curriedFilter = curry(filter) as Filter;\nexport default curriedFilter;\n","import curry from '../composition/curry';\n\ntype Reduce = {\n <T, R>(...args: [fn: (acc: R, value: T) => R]): (initial: R) => (arr: T[]) => R;\n <T, R>(...args: [fn: (acc: R, value: T) => R, initial: R]): (arr: T[]) => R;\n <T, R>(...args: [fn: (acc: R, value: T) => R, initial: R, arr: T[]]): R;\n};\n\n/**\n * reduce - 누적 연산\n */\nfunction reduce<T, R>(\n fn: (acc: R, value: T) => R,\n initial: R,\n arr: T[]\n): R {\n return arr.reduce(fn, initial);\n}\n\nconst curriedReduce = curry(reduce) as Reduce;\nexport default curriedReduce;\n","import curry from '../composition/curry';\n\ntype FlatMap = {\n <T, R>(...args: [fn: (value: T) => R[]]): (arr: T[]) => R[];\n <T, R>(...args: [fn: (value: T) => R[], arr: T[]]): R[];\n};\n\n/**\n * flatMap - map 후 flatten\n */\nfunction flatMap<T, R>(fn: (value: T) => R[], arr: T[]): R[] {\n return arr.flatMap(fn);\n}\n\nconst curriedFlatMap = curry(flatMap) as FlatMap;\nexport default curriedFlatMap;\n","import curry from '../composition/curry';\n\ntype Find = {\n <T>(...args: [predicate: (value: T) => boolean]): (arr: T[]) => T | undefined;\n <T>(...args: [predicate: (value: T) => boolean, arr: T[]]): T | undefined;\n};\n\n/**\n * find - 조건 만족 첫 요소\n */\nfunction find<T>(predicate: (value: T) => boolean, arr: T[]): T | undefined {\n return arr.find(predicate);\n}\n\nconst curriedFind = curry(find) as Find;\nexport default curriedFind;\n","import curry from '../composition/curry';\n\ntype Some = {\n <T>(...args: [predicate: (value: T) => boolean]): (arr: T[]) => boolean;\n <T>(...args: [predicate: (value: T) => boolean, arr: T[]]): boolean;\n};\n\n/**\n * some - 조건 검사 (하나라도 만족)\n */\nfunction some<T>(predicate: (value: T) => boolean, arr: T[]): boolean {\n for (let i = 0; i < arr.length; i++) {\n if (predicate(arr[i])) return true;\n }\n return false;\n}\n\nconst curriedSome = curry(some) as Some;\nexport default curriedSome;\n","import curry from '../composition/curry';\n\ntype Every = {\n <T>(...args: [predicate: (value: T) => boolean]): (arr: T[]) => boolean;\n <T>(...args: [predicate: (value: T) => boolean, arr: T[]]): boolean;\n};\n\n/**\n * every - 조건 검사 (모두 만족)\n */\nfunction every<T>(predicate: (value: T) => boolean, arr: T[]): boolean {\n return arr.every(predicate);\n}\n\nconst curriedEvery = curry(every) as Every;\nexport default curriedEvery;\n","import curry from '../composition/curry';\n\ntype Take = {\n (n: number): <T>(arr: T[]) => T[];\n <T>(...args: [n: number, arr: T[]]): T[];\n};\n\n/**\n * take - 앞에서 n개 선택\n */\nfunction take<T>(n: number, arr: T[]): T[] {\n if (n <= 0) return [];\n if (n >= arr.length) return [...arr];\n return arr.slice(0, n);\n}\n\nconst curriedTake = curry(take) as Take;\nexport default curriedTake;\n","import curry from '../composition/curry';\n\ntype Drop = {\n (n: number): <T>(arr: T[]) => T[];\n <T>(...args: [n: number, arr: T[]]): T[];\n};\n\n/**\n * drop - 앞에서 n개 제외\n */\nfunction drop<T>(n: number, arr: T[]): T[] {\n const count = Math.floor(n);\n if (!Number.isFinite(count) || count <= 0) {\n return arr;\n }\n return arr.slice(count);\n}\n\nconst curriedDrop = curry(drop) as Drop;\nexport default curriedDrop;\n","import curry from '../composition/curry';\n\ntype DropWhile = {\n <T>(...args: [predicate: (value: T) => boolean]): (arr: T[]) => T[];\n <T>(...args: [predicate: (value: T) => boolean, arr: T[]]): T[];\n};\n\n/**\n * dropWhile - 조건이 유지되는 동안 앞에서 제외\n */\nfunction dropWhile<T>(predicate: (value: T) => boolean, arr: T[]): T[] {\n const result: T[] = [];\n let dropping = true;\n for (const item of arr) {\n if (dropping && !predicate(item)) {\n dropping = false;\n }\n if (!dropping) {\n result.push(item);\n }\n }\n return result;\n}\n\nconst curriedDropWhile = curry(dropWhile) as DropWhile;\nexport default curriedDropWhile;\n","import curry from '../composition/curry';\n\ntype Chunk = {\n (size: number): <T>(arr: T[]) => T[][];\n <T>(...args: [size: number, arr: T[]]): T[][];\n};\n\n/**\n * chunk - 배열을 일정 크기로 분할\n */\nfunction chunk<T>(size: number, arr: T[]): T[][] {\n const chunkSize = Math.floor(size);\n if (!Number.isFinite(chunkSize) || chunkSize <= 0) {\n return [];\n }\n\n const result: T[][] = [];\n for (let i = 0; i < arr.length; i += chunkSize) {\n result.push(arr.slice(i, i + chunkSize));\n }\n return result;\n}\n\nconst curriedChunk = curry(chunk) as Chunk;\nexport default curriedChunk;\n","import curry from '../composition/curry';\n\ntype Zip = {\n <U>(...args: [arr2: U[]]): <T>(arr1: T[]) => Array<[T, U]>;\n <T, U>(...args: [arr2: U[], arr1: T[]]): Array<[T, U]>;\n};\n\n/**\n * zip - 배열 병합\n */\nfunction zip<T, U>(arr2: U[], arr1: T[]): Array<[T, U]> {\n const length = Math.min(arr1.length, arr2.length);\n const result: Array<[T, U]> = [];\n\n for (let i = 0; i < length; i += 1) {\n result.push([arr1[i], arr2[i]]);\n }\n\n return result;\n}\n\nconst curriedZip = curry(zip) as Zip;\nexport default curriedZip;\n","import curry from '../composition/curry';\n\ntype ZipWith = {\n <A, B, R>(...args: [fn: (a: A, b: B) => R]): (other: B[]) => (arr: A[]) => R[];\n <A, B, R>(...args: [fn: (a: A, b: B) => R, other: B[]]): (arr: A[]) => R[];\n <A, B, R>(...args: [fn: (a: A, b: B) => R, other: B[], arr: A[]]): R[];\n};\n\n/**\n * zipWith - 두 배열을 함수로 결합\n */\nfunction zipWith<A, B, R>(fn: (a: A, b: B) => R, other: B[], arr: A[]): R[] {\n const length = Math.min(arr.length, other.length);\n const result: R[] = [];\n for (let i = 0; i < length; i += 1) {\n result.push(fn(arr[i], other[i]));\n }\n return result;\n}\n\nconst curriedZipWith = curry(zipWith) as ZipWith;\nexport default curriedZipWith;\n","/**\n * unzip - 배열 분리\n */\nfunction unzip<T, U>(arr: Array<[T, U]>): [T[], U[]] {\n const left: T[] = [];\n const right: U[] = [];\n\n for (const [a, b] of arr) {\n left.push(a);\n right.push(b);\n }\n\n return [left, right];\n}\n\nexport default unzip;\n","/**\n * uniq - 중복 제거\n */\nfunction uniq<T>(arr: T[]): T[] {\n const seen = new Set<T>();\n const result: T[] = [];\n for (const item of arr) {\n if (!seen.has(item)) {\n seen.add(item);\n result.push(item);\n }\n }\n return result;\n}\n\nexport default uniq;\n","import curry from '../composition/curry';\n\ntype UniqBy = {\n <T>(...args: [fn: (value: T) => any]): (arr: T[]) => T[];\n <T>(...args: [fn: (value: T) => any, arr: T[]]): T[];\n};\n\n/**\n * uniqBy - 기준 함수로 중복 제거\n */\nfunction uniqBy<T>(fn: (value: T) => any, arr: T[]): T[] {\n const seen = new Set<any>();\n const result: T[] = [];\n for (const item of arr) {\n const key = fn(item);\n if (!seen.has(key)) {\n seen.add(key);\n result.push(item);\n }\n }\n return result;\n}\n\nconst curriedUniqBy = curry(uniqBy) as UniqBy;\nexport default curriedUniqBy;\n","import curry from '../composition/curry';\n\ntype SortBy = {\n <T>(...args: [fn: (value: T) => any]): (arr: T[]) => T[];\n <T>(...args: [fn: (value: T) => any, arr: T[]]): T[];\n};\n\n/**\n * sortBy - 기준 함수로 정렬\n */\nfunction sortBy<T>(fn: (value: T) => any, arr: T[]): T[] {\n return [...arr].sort((a, b) => {\n const aKey = fn(a);\n const bKey = fn(b);\n if (aKey < bKey) return -1;\n if (aKey > bKey) return 1;\n return 0;\n });\n}\n\nconst curriedSortBy = curry(sortBy) as SortBy;\nexport default curriedSortBy;\n","import curry from '../composition/curry';\n\ntype Sort = {\n <T>(...args: [compare: (a: T, b: T) => number]): (arr: T[]) => T[];\n <T>(...args: [compare: (a: T, b: T) => number, arr: T[]]): T[];\n};\n\n/**\n * sort - 비교 함수로 정렬 (불변)\n */\nfunction sort<T>(compare: (a: T, b: T) => number, arr: T[]): T[] {\n return [...arr].sort(compare);\n}\n\nconst curriedSort = curry(sort) as Sort;\nexport default curriedSort;\n","import curry from '../composition/curry';\n\ntype GroupBy = {\n <T>(...args: [fn: (value: T) => string]): (arr: T[]) => Record<string, T[]>;\n <T>(...args: [fn: (value: T) => string, arr: T[]]): Record<string, T[]>;\n};\n\n/**\n * groupBy - 키 기준 그룹화\n */\nfunction groupBy<T>(fn: (value: T) => string, arr: T[]): Record<string, T[]> {\n return arr.reduce<Record<string, T[]>>((acc, item) => {\n const key = fn(item);\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(item);\n return acc;\n }, {});\n}\n\nconst curriedGroupBy = curry(groupBy) as GroupBy;\nexport default curriedGroupBy;\n","/**\n * zipIndex - 인덱스와 값을 쌍으로 묶기\n */\nfunction zipIndex<T>(arr: T[]): Array<[number, T]> {\n return arr.map((value, index) => [index, value]);\n}\n\nexport default zipIndex;\n","import curry from '../composition/curry';\n\ntype TakeWhile = {\n <T>(...args: [predicate: (value: T) => boolean]): (arr: T[]) => T[];\n <T>(...args: [predicate: (value: T) => boolean, arr: T[]]): T[];\n};\n\n/**\n * takeWhile - 조건이 유지되는 동안 앞에서 가져오기\n */\nfunction takeWhile<T>(predicate: (value: T) => boolean, arr: T[]): T[] {\n const result: T[] = [];\n for (const item of arr) {\n if (!predicate(item)) {\n break;\n }\n result.push(item);\n }\n return result;\n}\n\nconst curriedTakeWhile = curry(takeWhile) as TakeWhile;\nexport default curriedTakeWhile;\n","import curry from '../composition/curry';\n\ntype Scan = {\n <T, R>(...args: [fn: (acc: R, value: T) => R]): (initial: R) => (arr: T[]) => R[];\n <T, R>(...args: [fn: (acc: R, value: T) => R, initial: R]): (arr: T[]) => R[];\n <T, R>(...args: [fn: (acc: R, value: T) => R, initial: R, arr: T[]]): R[];\n};\n\n/**\n * scan - 누적 중간값을 배열로 반환\n */\nfunction scan<T, R>(fn: (acc: R, value: T) => R, initial: R, arr: T[]): R[] {\n const result: R[] = [];\n let acc = initial;\n for (const item of arr) {\n acc = fn(acc, item);\n result.push(acc);\n }\n return result;\n}\n\nconst curriedScan = curry(scan) as Scan;\nexport default curriedScan;\n","import curry from '../composition/curry';\n\ntype Concat = {\n <T>(...args: [other: T[]]): (arr: T[]) => T[];\n <T>(...args: [other: T[], arr: T[]]): T[];\n};\n\n/**\n * concat - 두 배열 연결\n */\nfunction concat<T>(other: T[], arr: T[]): T[] {\n return [...arr, ...other];\n}\n\nconst curriedConcat = curry(concat) as Concat;\nexport default curriedConcat;\n","import curry from '../composition/curry';\n\ntype Append = {\n <T>(...args: [value: T]): (arr: T[]) => T[];\n <T>(...args: [value: T, arr: T[]]): T[];\n};\n\n/**\n * append - 배열 끝에 값 추가\n */\nfunction append<T>(value: T, arr: T[]): T[] {\n return [...arr, value];\n}\n\nconst curriedAppend = curry(append) as Append;\nexport default curriedAppend;\n","import curry from '../composition/curry';\n\ntype Prepend = {\n <T>(...args: [value: T]): (arr: T[]) => T[];\n <T>(...args: [value: T, arr: T[]]): T[];\n};\n\n/**\n * prepend - 배열 앞에 값 추가\n */\nfunction prepend<T>(value: T, arr: T[]): T[] {\n return [value, ...arr];\n}\n\nconst curriedPrepend = curry(prepend) as Prepend;\nexport default curriedPrepend;\n","/**\n * flatten - 1단계 배열 평탄화\n */\nfunction flatten<T>(arr: T[][]): T[] {\n return arr.flat();\n}\n\nexport default flatten;\n","/**\n * head - 첫 요소 가져오기\n */\nfunction head<T>(arr: T[]): T | undefined {\n return arr[0];\n}\n\nexport default head;\n","/**\n * tail - 첫 요소 제외\n */\nfunction tail<T>(arr: T[]): T[] {\n return arr.slice(1);\n}\n\nexport default tail;\n","/**\n * last - 마지막 요소 가져오기\n */\nfunction last<T>(arr: T[]): T | undefined {\n if (arr.length === 0) return undefined;\n return arr[arr.length - 1];\n}\n\nexport default last;\n","/**\n * init - 마지막 요소 제외\n */\nfunction init<T>(arr: T[]): T[] {\n if (arr.length <= 1) return [];\n return arr.slice(0, -1);\n}\n\nexport default init;\n","/**\n * range - 숫자 범위 생성 (end 제외)\n */\nfunction range(start: number, end: number): number[] {\n if (!Number.isFinite(start) || !Number.isFinite(end)) return [];\n if (start === end) return [];\n\n const step = start < end ? 1 : -1;\n const result: number[] = [];\n\n for (let value = start; step > 0 ? value < end : value > end; value += step) {\n result.push(value);\n }\n\n return result;\n}\n\nexport default range;\n","import curry from '../composition/curry';\n\ntype Partition = {\n <T>(...args: [predicate: (value: T) => boolean]): (arr: T[]) => [T[], T[]];\n <T>(...args: [predicate: (value: T) => boolean, arr: T[]]): [T[], T[]];\n};\n\n/**\n * partition - 조건에 따라 분리\n */\nfunction partition<T>(predicate: (value: T) => boolean, arr: T[]): [T[], T[]] {\n const truthy: T[] = [];\n const falsy: T[] = [];\n\n for (const item of arr) {\n if (predicate(item)) {\n truthy.push(item);\n } else {\n falsy.push(item);\n }\n }\n\n return [truthy, falsy];\n}\n\nconst curriedPartition = curry(partition) as Partition;\nexport default curriedPartition;\n","/**\n * flattenDeep - 깊은 배열 평탄화\n */\nfunction flattenDeep<T>(arr: any[]): T[] {\n const result: T[] = [];\n\n const walk = (items: any[]) => {\n for (const item of items) {\n if (Array.isArray(item)) {\n walk(item);\n } else {\n result.push(item);\n }\n }\n };\n\n walk(arr);\n return result;\n}\n\nexport default flattenDeep;\n","import curry from '../composition/curry';\n\ntype Prop = {\n <K extends PropertyKey>(...args: [key: K]): <T extends Record<K, unknown>>(obj: T) => T[K] | undefined;\n <T, K extends keyof T = keyof T>(...args: [key: K, obj: T]): T[K] | undefined;\n};\n\n/**\n * prop - 안전한 프로퍼티 접근\n */\nfunction prop<T, K extends keyof T = keyof T>(key: K, obj: T): T[K] | undefined {\n return obj?.[key];\n}\n\nconst curriedProp = curry(prop) as Prop;\nexport default curriedProp;\n","import curry from '../composition/curry';\n\ntype PropOr = {\n <D>(...args: [defaultValue: D]): <K extends PropertyKey>(\n key: K\n ) => <T extends Record<K, unknown>>(obj: T) => T[K] | D;\n <D, K extends PropertyKey>(\n ...args: [defaultValue: D, key: K]\n ): <T extends Record<K, unknown>>(obj: T) => T[K] | D;\n <T, K extends keyof T, D>(...args: [defaultValue: D, key: K, obj: T]): T[K] | D;\n};\n\n/**\n * propOr - 기본값이 있는 프로퍼티 접근\n */\nfunction propOr<T, K extends keyof T, D>(defaultValue: D, key: K, obj: T): T[K] | D {\n const value = obj?.[key];\n return value == null ? defaultValue : value;\n}\n\nconst curriedPropOr = curry(propOr) as PropOr;\nexport default curriedPropOr;\n","import curry from '../composition/curry';\n\ntype Path = {\n (pathArray: string[]): <T>(obj: any) => T | undefined;\n <T>(...args: [pathArray: string[], obj: any]): T | undefined;\n};\n\n/**\n * path - 안전한 깊은 프로퍼티 접근\n */\nfunction path<T>(pathArray: string[], obj: any): T | undefined {\n return pathArray.reduce((current, key) => (current == null ? undefined : current[key]), obj) as T | undefined;\n}\n\nconst curriedPath = curry(path) as Path;\nexport default curriedPath;\n","import curry from '../composition/curry';\n\ntype PathOr = {\n <D>(...args: [defaultValue: D]): <T>(pathArray: string[]) => (obj: any) => T | D;\n <D>(...args: [defaultValue: D, pathArray: string[]]): <T>(obj: any) => T | D;\n <T, D>(...args: [defaultValue: D, pathArray: string[], obj: any]): T | D;\n};\n\n/**\n * pathOr - 기본값이 있는 깊은 프로퍼티 접근\n */\nfunction pathOr<T, D>(defaultValue: D, pathArray: string[], obj: any): T | D {\n const value = pathArray.reduce((current, key) => (current == null ? undefined : current[key]), obj) as T | undefined;\n return value == null ? defaultValue : value;\n}\n\nconst curriedPathOr = curry(pathOr) as PathOr;\nexport default curriedPathOr;\n","import curry from '../composition/curry';\n\ntype PickFn = {\n <K extends PropertyKey>(...args: [keys: K[]]): <T extends Record<K, unknown>>(obj: T) => Pick<T, K>;\n <T extends object, K extends keyof T = keyof T>(...args: [keys: K[], obj: T]): Pick<T, K>;\n};\n\n/**\n * pick - 일부 속성 선택\n */\nfunction pick<T extends object, K extends keyof T = keyof T>(keys: K[], obj: T): Pick<T, K> {\n const result = {} as Pick<T, K>;\n for (const key of keys) {\n if (key in obj) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\nconst curriedPick = curry(pick) as PickFn;\nexport default curriedPick;\n","import curry from '../composition/curry';\n\ntype OmitFn = {\n <K extends PropertyKey>(...args: [keys: K[]]): <T extends Record<K, unknown>>(obj: T) => Omit<T, K>;\n <T extends object, K extends keyof T = keyof T>(...args: [keys: K[], obj: T]): Omit<T, K>;\n};\n\n/**\n * omit - 일부 속성 제거\n */\nfunction omit<T, K extends keyof T = keyof T>(keys: K[], obj: T): Omit<T, K> {\n const result = { ...(obj as object) } as T;\n for (const key of keys) {\n delete (result as Record<PropertyKey, unknown>)[key];\n }\n return result as Omit<T, K>;\n}\n\nconst curriedOmit = curry(omit) as OmitFn;\nexport default curriedOmit;\n","import curry from '../composition/curry';\n\ntype AssocKey = string | number | symbol;\n\ntype AssocValue<T, K extends AssocKey, V> = K extends keyof T\n ? (T[K] extends V ? T : Omit<T, K> & Record<K, V>)\n : T & Record<K, V>;\n\ntype AssocResult<T, K extends AssocKey, V> =\n T extends readonly (infer U)[]\n ? K extends number | `${number}`\n ? Array<V | U>\n : AssocValue<T, K, V>\n : AssocValue<T, K, V>;\n\ntype Assoc = {\n <K extends AssocKey>(...args: [key: K]): <V>(value: V) => <T>(obj: T) => AssocResult<T, K, V>;\n <K extends AssocKey, V>(...args: [key: K, value: V]): <T>(obj: T) => AssocResult<T, K, V>;\n <T, K extends AssocKey, V>(...args: [key: K, value: V, obj: T]): AssocResult<T, K, V>;\n};\n\n/**\n * assoc - 불변 객체 속성 설정\n */\nfunction assoc<T, K extends AssocKey, V>(key: K, value: V, obj: T): AssocResult<T, K, V> {\n if (Array.isArray(obj)) {\n const result = obj.slice();\n (result as any)[key] = value;\n return result as AssocResult<T, K, V>;\n }\n\n if (obj && typeof obj === 'object') {\n return {\n ...(obj as object),\n [key]: value,\n } as AssocResult<T, K, V>;\n }\n\n return { [key]: value } as AssocResult<T, K, V>;\n}\n\nconst curriedAssoc = curry(assoc) as Assoc;\nexport default curriedAssoc;\n","import curry from '../composition/curry';\n\ntype PathKey = string | number | symbol;\n\nconst isIndexKey = (key: PathKey): key is number | `${number}` => {\n if (typeof key === 'number') {\n return Number.isInteger(key);\n }\n if (typeof key === 'string') {\n return /^-?\\d+$/.test(key);\n }\n return false;\n};\n\nconst normalizeIndex = (key: number | `${number}`, length: number) => {\n const raw = typeof key === 'number' ? key : Number(key);\n if (Number.isNaN(raw)) {\n return -1;\n }\n if (raw < 0) {\n return Math.max(length + raw, 0);\n }\n return raw;\n};\n\nconst isObjectLike = (value: unknown): value is Record<PropertyKey, unknown> =>\n value !== null && typeof value === 'object';\n\ntype AssocPath = {\n <T = unknown>(\n ...args: [pathArray: PathKey[]]\n ): (value: unknown) => (obj: unknown) => T;\n <T = unknown>(...args: [pathArray: PathKey[], value: unknown]): (obj: unknown) => T;\n <T = unknown>(...args: [pathArray: PathKey[], value: unknown, obj: unknown]): T;\n};\n\n/**\n * assocPath - 경로 기반 값 설정 (불변)\n */\nfunction assocPath<T = unknown>(pathArray: PathKey[], value: unknown, obj: unknown): T {\n if (pathArray.length === 0) {\n return value as T;\n }\n\n const [key, ...rest] = pathArray;\n const useArray = isIndexKey(key);\n const base = Array.isArray(obj) ? obj.slice() : isObjectLike(obj) ? { ...(obj as object) } : useArray ? [] : {};\n\n if (Array.isArray(base) && isIndexKey(key)) {\n const index = normalizeIndex(key, base.length);\n const current = (base as unknown[])[index];\n const nextValue = rest.length === 0 ? value : assocPath(rest, value, current);\n (base as unknown[])[index] = nextValue;\n return base as T;\n }\n\n const current = isObjectLike(base) ? (base as Record<PropertyKey, unknown>)[key] : undefined;\n const nextValue = rest.length === 0 ? value : assocPath(rest, value, current);\n (base as Record<PropertyKey, unknown>)[key] = nextValue;\n return base as T;\n}\n\nconst curriedAssocPath = curry(assocPath) as AssocPath;\nexport default curriedAssocPath;\n","/**\n * dissoc - 불변 객체 속성 제거\n */\nfunction dissoc<T>(key: number, obj: readonly T[]): T[];\nfunction dissoc<T, K extends keyof T>(key: K, obj: T): Omit<T, K>;\nfunction dissoc<T, K extends keyof T>(key: K, obj: T): Omit<T, K> {\n if (Array.isArray(obj)) {\n const result = obj.slice();\n const index = typeof key === 'number' ? key : Number.isNaN(Number(key)) ? -1 : Number(key);\n if (index >= 0 && index < result.length) {\n result.splice(index, 1);\n } else {\n delete (result as unknown as Record<PropertyKey, unknown>)[key as unknown as PropertyKey];\n }\n return result as unknown as Omit<T, K>;\n }\n\n if (obj && typeof obj === 'object') {\n const { [key]: _removed, ...rest } = obj as Record<PropertyKey, unknown>;\n return rest as Omit<T, K>;\n }\n\n return obj as Omit<T, K>;\n}\n\nexport default dissoc;\n","import curry from '../composition/curry';\n\ntype PathKey = string | number | symbol;\n\nconst isIndexKey = (key: PathKey): key is number | `${number}` => {\n if (typeof key === 'number') {\n return Number.isInteger(key);\n }\n if (typeof key === 'string') {\n return /^-?\\d+$/.test(key);\n }\n return false;\n};\n\nconst normalizeIndex = (key: number | `${number}`, length: number) => {\n const raw = typeof key === 'number' ? key : Number(key);\n if (Number.isNaN(raw)) {\n return -1;\n }\n if (raw < 0) {\n return length + raw;\n }\n return raw;\n};\n\nconst isObjectLike = (value: unknown): value is Record<PropertyKey, unknown> =>\n value !== null && typeof value === 'object';\n\ntype DissocPath = {\n <T = unknown>(...args: [pathArray: PathKey[]]): (obj: T) => T;\n <T = unknown>(...args: [pathArray: PathKey[], obj: T]): T;\n};\n\n/**\n * dissocPath - 경로 기반 값 제거 (불변)\n */\nfunction dissocPath<T = unknown>(pathArray: PathKey[], obj: T): T {\n if (pathArray.length === 0) {\n return obj;\n }\n\n if (!isObjectLike(obj)) {\n return obj;\n }\n\n const [key, ...rest] = pathArray;\n\n if (Array.isArray(obj) && isIndexKey(key)) {\n const index = normalizeIndex(key, obj.length);\n if (index < 0 || index >= obj.length) {\n return obj;\n }\n\n const result = obj.slice();\n if (rest.length === 0) {\n result.splice(index, 1);\n return result as unknown as T;\n }\n\n const nextValue = dissocPath(rest, result[index]);\n result[index] = nextValue;\n return result as unknown as T;\n }\n\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n return obj;\n }\n\n if (rest.length === 0) {\n const { [key]: _removed, ...restObj } = obj as Record<PropertyKey, unknown>;\n return restObj as T;\n }\n\n const result = { ...(obj as object) } as Record<PropertyKey, unknown>;\n result[key] = dissocPath(rest, result[key]);\n return result as T;\n}\n\nconst curriedDissocPath = curry(dissocPath) as DissocPath;\nexport default curriedDissocPath;\n","import curry from '../composition/curry';\n\ntype Merge = {\n <T>(...args: [obj1: T]): <U>(obj2: U) => T & U;\n <T, U>(...args: [obj1: T, obj2: U]): T & U;\n};\n\n/**\n * merge - 객체 병합 (얕은 병합)\n */\nfunction merge<T, U>(obj1: T, obj2: U): T & U {\n return {\n ...(obj1 as object),\n ...(obj2 as object),\n } as T & U;\n}\n\nconst curriedMerge = curry(merge) as Merge;\nexport default curriedMerge;\n","import curry from '../composition/curry';\n\ntype MergeDeep = {\n <T>(...args: [obj1: T]): <U>(obj2: U) => T & U;\n <T, U>(...args: [obj1: T, obj2: U]): T & U;\n};\n\n/**\n * mergeDeep - 깊은 객체 병합\n */\nfunction mergeDeep<T, U>(obj1: T, obj2: U): T & U {\n const isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\n const mergeObjects = (left: Record<string, unknown>, right: Record<string, unknown>) => {\n const result: Record<string, unknown> = { ...left };\n\n for (const [key, value] of Object.entries(right)) {\n const existing = result[key];\n if (isPlainObject(existing) && isPlainObject(value)) {\n result[key] = mergeObjects(existing, value);\n } else {\n result[key] = value;\n }\n }\n\n return result;\n };\n\n if (isPlainObject(obj1) && isPlainObject(obj2)) {\n return mergeObjects(obj1, obj2) as T & U;\n }\n\n return {\n ...(obj1 as object),\n ...(obj2 as object),\n } as T & U;\n}\n\nconst curriedMergeDeep = curry(mergeDeep) as MergeDeep;\nexport default curriedMergeDeep;\n","/**\n * mergeAll - 객체 배열 병합 (얕은 병합)\n */\nfunction mergeAll<T extends object>(objects: T[]): T {\n const merged = objects.reduce<Record<string, unknown>>(\n (acc, obj) => ({ ...acc, ...(obj as Record<string, unknown>) }),\n {}\n );\n return merged as T;\n}\n\nexport default mergeAll;\n","/**\n * keys - 객체 키 배열\n */\nfunction keys<T extends object>(obj: T): Array<keyof T> {\n return Object.keys(obj) as Array<keyof T>;\n}\n\nexport default keys;\n","/**\n * values - 객체 값 배열\n */\nfunction values<T extends object>(obj: T): Array<T[keyof T]> {\n return Object.values(obj) as Array<T[keyof T]>;\n}\n\nexport default values;\n","/**\n * entries - 객체 엔트리 배열\n */\nfunction entries<T extends object>(obj: T): Array<[keyof T, T[keyof T]]> {\n return Object.entries(obj) as Array<[keyof T, T[keyof T]]>;\n}\n\nexport default entries;\n","/**\n * mapValues - 값만 변환\n */\nfunction mapValues<T extends object, R>(\n fn: (value: T[keyof T]) => R\n): (obj: T) => Record<keyof T, R> {\n return (obj: T) => {\n const result: Record<keyof T, R> = {} as Record<keyof T, R>;\n for (const [key, value] of Object.entries(obj) as Array<[keyof T, T[keyof T]]>) {\n result[key] = fn(value);\n }\n return result;\n };\n}\n\nexport default mapValues;\n","import curry from '../composition/curry';\n\ntype Evolve = {\n (\n transformations: Partial<Record<PropertyKey, (value: any) => any>>\n ): <T extends object>(obj: T) => T;\n <T extends object>(\n transformations: Partial<{ [K in keyof T]: (value: T[K]) => any }>,\n obj: T\n ): T;\n};\n\n/**\n * evolve - 구조 기반 변환\n */\nfunction evolve<T extends object>(\n transformations: Partial<{ [K in keyof T]: (value: T[K]) => any }>,\n obj: T\n): T {\n const result = { ...(obj as object) } as T;\n for (const key of Object.keys(transformations) as Array<keyof T>) {\n const transformer = transformations[key];\n if (typeof transformer === 'function') {\n result[key] = transformer(obj[key]);\n }\n }\n return result;\n}\n\nconst curriedEvolve = curry(evolve) as Evolve;\nexport default curriedEvolve;\n","import curry from '../composition/curry';\n\ntype Has = {\n <K extends PropertyKey>(...args: [key: K]): <T extends Record<K, unknown>>(obj: T) => boolean;\n <T extends object>(...args: [key: keyof T, obj: T]): boolean;\n};\n\n/**\n * has - 속성 존재 확인\n */\nfunction has<T extends object>(key: keyof T, obj: T): boolean {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nconst curriedHas = curry(has) as Has;\nexport default curriedHas;\n","/**\n * hasPath - 깊은 경로 존재 확인\n */\nfunction hasPath(pathArray: string[]): (obj: any) => boolean {\n return (obj: any) => {\n let current = obj;\n for (const key of pathArray) {\n if (current == null || !Object.prototype.hasOwnProperty.call(current, key)) {\n return false;\n }\n current = current[key];\n }\n return true;\n };\n}\n\nexport default hasPath;\n","import curry from '../composition/curry';\n\n/** equals - 깊은 비교 */\nfunction equals(a: any, b: any): boolean {\n return deepEqual(a, b, new WeakMap());\n}\n\nfunction deepEqual(a: any, b: any, seen: WeakMap<object, object>): boolean {\n if (a === b) return true;\n\n // Handle NaN\n if (typeof a === 'number' && typeof b === 'number') {\n if (Number.isNaN(a) && Number.isNaN(b)) return true;\n }\n\n if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object') {\n return false;\n }\n\n // Prevent circular reference issues\n if (seen.has(a)) return seen.get(a) === b;\n seen.set(a, b);\n\n // Date\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n // Map\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n const bEntries = Array.from(b.entries());\n for (const [aKey, aVal] of a.entries()) {\n let found = false;\n for (let i = 0; i < bEntries.length; i++) {\n const [bKey, bVal] = bEntries[i];\n if (deepEqual(aKey, bKey, seen) && deepEqual(aVal, bVal, seen)) {\n bEntries.splice(i, 1);\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n return true;\n }\n\n // Set\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n const bValues = Array.from(b.values());\n for (const aVal of a.values()) {\n let found = false;\n for (let i = 0; i < bValues.length; i++) {\n if (deepEqual(aVal, bValues[i], seen)) {\n bValues.splice(i, 1);\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n return true;\n }\n\n // Array\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], seen)) return false;\n }\n return true;\n }\n\n // Object (including symbol keys)\n const aKeys = Reflect.ownKeys(a);\n const bKeys = Reflect.ownKeys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (!deepEqual(a[key], b[key], seen)) return false;\n }\n\n return true;\n}\n\nexport default curry(equals);\n","/** isNil - null or undefined 체크 */\nfunction isNil(value: any): boolean {\n return value === null || value === undefined;\n}\nexport default isNil;\n","/** isEmpty - 비어있는지 검사 */\nfunction isEmpty(value: any): boolean {\n if (value == null) return true;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length === 0;\n }\n\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n\n if (typeof value === 'object') {\n return Object.keys(value).length === 0;\n }\n\n return false;\n}\nexport default isEmpty;\n","/** isType - 타입 체크 유틸 */\nfunction isType(type: string): (value: any) => boolean {\n const target = type.toLowerCase();\n return (value: any) => {\n if (value === null) return target === 'null';\n if (value === undefined) return target === 'undefined';\n const actual = typeof value;\n if (actual !== 'object') return actual === target;\n const tag = Object.prototype.toString.call(value).slice(8, -1).toLowerCase(); // e.g., 'array', 'date'\n return tag === target;\n };\n}\nexport default isType;\n","/** gt - 초과 비교 */\nfunction gt(a: number): (b: number) => boolean {\n return (b: number) => b > a;\n}\nexport default gt;\n","/** gte - 이상 비교 */\nfunction gte(a: number): (b: number) => boolean {\n return (b: number) => b >= a;\n}\nexport default gte;\n","/** lt - 미만 비교 */\nfunction lt(a: number): (b: number) => boolean {\n return (b: number) => b < a;\n}\nexport default lt;\n","/** lte - 이하 비교 */\nfunction lte(a: number): (b: number) => boolean {\n return (b: number) => b <= a;\n}\nexport default lte;\n","import curry from '../composition/curry';\n\n/** clamp - 범위 제한 */\nfunction clamp(min: number, max: number, value: number): number {\n if (value < min) return min;\n if (value > max) return max;\n return value;\n}\nexport default curry(clamp);\n","/** includes - 동등성 기반 포함 여부 (문자열 또는 배열) */\nimport equals from './equals';\n\nfunction includes(search: string, target: string): boolean;\nfunction includes<T>(search: T, target: T[]): boolean;\nfunction includes(search: any, target: any): boolean {\n if (typeof target === 'string' && typeof search === 'string') {\n return target.includes(search);\n }\n\n if (Array.isArray(target)) {\n for (let i = 0; i < target.length; i++) {\n if (equals(target[i], search)) return true;\n }\n return false;\n }\n\n return false;\n}\n\nexport default includes;\n","import curry from '../composition/curry';\n\n/** add - 덧셈 */\nfunction add(a: number, b: number): number {\n return a + b;\n}\nexport default curry(add);\n","import curry from '../composition/curry';\n\n/** sub - 뺄셈 */\nfunction sub(a: number, b: number): number {\n return a - b;\n}\nexport default curry(sub);\n","import curry from '../composition/curry';\n\n/** mul - 곱셈 */\nfunction mul(a: number, b: number): number {\n return a * b;\n}\nexport default curry(mul);\n","import curry from '../composition/curry';\n\n/** div - 나눗셈 */\nfunction div(a: number, b: number): number {\n return a / b;\n}\nexport default curry(div);\n","/** sum - 합계 */\nfunction sum(arr: number[]): number {\n return arr.reduce((total, value) => total + value, 0);\n}\nexport default sum;\n","/** mean - 평균 */\nfunction mean(arr: number[]): number {\n if (arr.length === 0) return NaN;\n const total = arr.reduce((acc, value) => acc + value, 0);\n return total / arr.length;\n}\nexport default mean;\n","/** min - 최소값 */\nfunction min(arr: number[]): number {\n if (arr.length === 0) return Infinity;\n return Math.min(...arr);\n}\nexport default min;\n","/** max - 최대값 */\nfunction max(arr: number[]): number {\n if (arr.length === 0) return -Infinity;\n return Math.max(...arr);\n}\nexport default max;\n","/** round - 반올림 */\nfunction round(value: number): number {\n return Math.round(value);\n}\nexport default round;\n","/** floor - 내림 */\nfunction floor(value: number): number {\n return Math.floor(value);\n}\nexport default floor;\n","/** ceil - 올림 */\nfunction ceil(value: number): number {\n return Math.ceil(value);\n}\nexport default ceil;\n","import curry from '../composition/curry';\n\n/** randomInt - 범위 랜덤 정수 */\nfunction randomInt(min: number, max: number): number {\n const lower = Math.ceil(min);\n const upper = Math.floor(max);\n\n if (upper < lower) {\n return lower;\n }\n\n return Math.floor(Math.random() * (upper - lower + 1)) + lower;\n}\nexport default curry(randomInt);\n","/** trim - 공백 제거 */\nfunction trim(str: string): string {\n return str.trim();\n}\nexport default trim;\n","import curry from '../composition/curry';\n\n/** split - 문자열 분할 */\nfunction split(separator: string, str: string): string[] {\n return str.split(separator);\n}\nexport default curry(split);\n","import curry from '../composition/curry';\n\n/** join - 배열 결합 */\nfunction join(separator: string, arr: string[]): string {\n return arr.join(separator);\n}\nexport default curry(join);\n","import curry from '../composition/curry';\n\n/** replace - 부분 치환 */\nfunction replace(pattern: string | RegExp, replacement: string, str: string): string {\n return str.replace(pattern, replacement);\n}\nexport default curry(replace);\n","/** toUpper - 대문자 변환 */\nfunction toUpper(str: string): string {\n return str.toUpperCase();\n}\nexport default toUpper;\n","/** toLower - 소문자 변환 */\nfunction toLower(str: string): string {\n return str.toLowerCase();\n}\nexport default toLower;\n","/** startsWith - 시작 문자열/배열 확인 */\nfunction startsWith(prefix: string, str: string): boolean;\nfunction startsWith<T>(prefix: T[], arr: T[]): boolean;\nfunction startsWith(prefix: string | any[], target: string | any[]): boolean {\n if (typeof target === 'string' && typeof prefix === 'string') {\n return target.startsWith(prefix);\n }\n\n if (Array.isArray(prefix) && Array.isArray(target)) {\n if (prefix.length === 0) return true;\n if (prefix.length > target.length) return false;\n for (let i = 0; i < prefix.length; i++) {\n if (target[i] !== prefix[i]) return false;\n }\n return true;\n }\n\n return false;\n}\nexport default startsWith;\n","/** endsWith - 끝 문자열/배열 확인 */\nfunction endsWith(suffix: string, str: string): boolean;\nfunction endsWith<T>(suffix: T[], arr: T[]): boolean;\nfunction endsWith(suffix: string | any[], target: string | any[]): boolean {\n if (typeof target === 'string' && typeof suffix === 'string') {\n return target.endsWith(suffix);\n }\n\n if (Array.isArray(suffix) && Array.isArray(target)) {\n if (suffix.length === 0) return true;\n if (suffix.length > target.length) return false;\n for (let i = 0; i < suffix.length; i++) {\n const targetIdx = target.length - suffix.length + i;\n if (target[targetIdx] !== suffix[i]) return false;\n }\n return true;\n }\n\n return false;\n}\nexport default endsWith;\n","import curry from '../composition/curry';\n\n/** match - 정규식 매칭 */\nfunction match(pattern: RegExp, str: string): RegExpMatchArray | null {\n return str.match(pattern);\n}\nexport default curry(match);\n","/** pipeAsync - 비동기 함수 합성 */\ntype AsyncOrSync<A, R> = (a: A) => R | Promise<R>;\ntype PipeInput<Fns extends AsyncOrSync<any, any>[]> = Fns extends [AsyncOrSync<infer A, any>, ...AsyncOrSync<any, any>[]]\n ? A\n : never;\ntype PipeOutput<Fns extends AsyncOrSync<any, any>[]> = Fns extends [AsyncOrSync<any, infer R>]\n ? Awaited<R>\n : Fns extends [AsyncOrSync<any, infer R>, ...infer Rest]\n ? Rest extends [AsyncOrSync<Awaited<R>, any>, ...AsyncOrSync<any, any>[]]\n ? PipeOutput<Rest>\n : never\n : never;\ntype PipeAsync<Fns extends AsyncOrSync<any, any>[]> = (input: PipeInput<Fns>) => Promise<PipeOutput<Fns>>;\n\nfunction pipeAsync<A, R>(ab: AsyncOrSync<A, R>): (a: A) => Promise<Awaited<R>>;\nfunction pipeAsync<A, B, R>(ab: AsyncOrSync<A, B>, bc: AsyncOrSync<Awaited<B>, R>): (a: A) => Promise<Awaited<R>>;\nfunction pipeAsync<A, B, C, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<Awaited<B>, C>,\n cd: AsyncOrSync<Awaited<C>, R>\n): (a: A) => Promise<Awaited<R>>;\nfunction pipeAsync<A, B, C, D, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<Awaited<B>, C>,\n cd: AsyncOrSync<Awaited<C>, D>,\n de: AsyncOrSync<Awaited<D>, R>\n): (a: A) => Promise<Awaited<R>>;\nfunction pipeAsync<A, B, C, D, E, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<Awaited<B>, C>,\n cd: AsyncOrSync<Awaited<C>, D>,\n de: AsyncOrSync<Awaited<D>, E>,\n ef: AsyncOrSync<Awaited<E>, R>\n): (a: A) => Promise<Awaited<R>>;\n\nfunction pipeAsync<Fns extends [AsyncOrSync<any, any>, ...AsyncOrSync<any, any>[]]>(...funcs: Fns): PipeAsync<Fns>;\nfunction pipeAsync(...funcs: Array<AsyncOrSync<any, any>>): (value: any) => Promise<any>;\nfunction pipeAsync(...funcs: Array<(arg: any) => any>) {\n return async (value: any) => {\n let acc = value;\n for (const fn of funcs) {\n acc = await fn(acc);\n }\n return acc;\n };\n}\n\nexport default pipeAsync;\n","import SideEffect, { isSideEffect } from '../composition/sideEffect';\n\n/** pipeAsyncSideEffect - SideEffect를 허용하는 비동기 함수 합성 */\ntype MaybeSideEffect<T> = T | SideEffect<any>;\ntype NonSideEffect<T> = Exclude<T, SideEffect<any>>;\ntype AsyncOrSync<A, R> = (a: A) => MaybeSideEffect<R> | Promise<MaybeSideEffect<R>>;\ntype PipeInput<Fns extends AsyncOrSync<any, any>[]> = Fns extends [\n AsyncOrSync<infer A, any>,\n ...AsyncOrSync<any, any>[]\n]\n ? A\n : never;\ntype PipeOutput<Fns extends AsyncOrSync<any, any>[]> = Fns extends [AsyncOrSync<any, infer R>]\n ? MaybeSideEffect<Awaited<R>>\n : Fns extends [AsyncOrSync<any, infer R>, ...infer Rest]\n ? Rest extends [AsyncOrSync<Awaited<NonSideEffect<R>>, any>, ...AsyncOrSync<any, any>[]]\n ? PipeOutput<Rest>\n : never\n : never;\ntype Resolve<T> = T extends infer R ? R : never;\ntype PipeAsyncSideEffect<Fns extends AsyncOrSync<any, any>[]> = (\n input: PipeInput<Fns> | SideEffect<any>\n) => Promise<Resolve<PipeOutput<Fns>>>;\n\nfunction pipeAsyncSideEffect<A, R>(\n ab: AsyncOrSync<A, R>\n): (a: A | SideEffect<any>) => Promise<MaybeSideEffect<Awaited<R>>>;\nfunction pipeAsyncSideEffect<A, B, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<Awaited<B>, R>\n): (a: A | SideEffect<any>) => Promise<MaybeSideEffect<Awaited<R>>>;\nfunction pipeAsyncSideEffect<A, B, C, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<Awaited<B>, C>,\n cd: AsyncOrSync<Awaited<C>, R>\n): (a: A | SideEffect<any>) => Promise<MaybeSideEffect<Awaited<R>>>;\nfunction pipeAsyncSideEffect<A, B, C, D, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<Awaited<B>, C>,\n cd: AsyncOrSync<Awaited<C>, D>,\n de: AsyncOrSync<Awaited<D>, R>\n): (a: A | SideEffect<any>) => Promise<MaybeSideEffect<Awaited<R>>>;\nfunction pipeAsyncSideEffect<A, B, C, D, E, R>(\n ab: AsyncOrSync<A, B>,\n bc: AsyncOrSync<Awaited<B>, C>,\n cd: AsyncOrSync<Awaited<C>, D>,\n de: AsyncOrSync<Awaited<D>, E>,\n ef: AsyncOrSync<Awaited<E>, R>\n): (a: A | SideEffect<any>) => Promise<MaybeSideEffect<Awaited<R>>>;\n\nfunction pipeAsyncSideEffect<Fns extends [AsyncOrSync<any, any>, ...AsyncOrSync<any, any>[]]>(\n ...funcs: Fns\n): PipeAsyncSideEffect<Fns>;\nfunction pipeAsyncSideEffect(...funcs: Array<AsyncOrSync<any, any>>): (value: any) => Promise<any>;\nfunction pipeAsyncSideEffect(...funcs: Array<(arg: any) => any>) {\n return async (value: any) => {\n let acc = value;\n for (const fn of funcs) {\n if (isSideEffect(acc)) {\n return acc;\n }\n acc = await fn(acc);\n }\n return acc;\n };\n}\n\nexport default pipeAsyncSideEffect;\n","/** delay - 일정 시간 대기 */\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\nexport default delay;\n","import curry from '../composition/curry';\n\ntype Timeout = {\n (ms: number): <T>(promise: Promise<T>) => Promise<T>;\n <T>(...args: [ms: number, promise: Promise<T>]): Promise<T>;\n};\n\n/** timeout - 제한 시간 내 실행 */\nfunction timeout<T>(ms: number, promise: Promise<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => reject(new Error(`Timed out after ${ms}ms`)), ms);\n promise\n .then((val) => {\n clearTimeout(timer);\n resolve(val);\n })\n .catch((err) => {\n clearTimeout(timer);\n reject(err);\n });\n });\n}\nconst curriedTimeout = curry(timeout) as Timeout;\nexport default curriedTimeout;\n","/** retry - 실패 시 재시도 (옵션 대기 시간 포함) */\nimport delay from './delay';\nimport curry from '../composition/curry';\n\ntype Retry = {\n (times: number): <T>(fn: () => Promise<T>, delayMs?: number) => Promise<T>;\n <T>(...args: [times: number, fn: () => Promise<T>, delayMs?: number]): Promise<T>;\n};\n\nfunction retry<T>(times: number, fn: () => Promise<T>, delayMs = 0): Promise<T> {\n return (async () => {\n let attempt = 0;\n while (true) {\n try {\n return await fn();\n } catch (err) {\n attempt += 1;\n if (attempt > times) throw err;\n if (delayMs > 0) {\n await delay(delayMs);\n }\n }\n }\n })();\n}\nconst curriedRetry = curry(retry) as Retry;\nexport default curriedRetry;\n","import curry from '../composition/curry';\n\ntype Debounce = {\n <T extends (...args: any[]) => any>(...args: [fn: T]): (ms: number) => T;\n <T extends (...args: any[]) => any>(...args: [fn: T, ms: number]): T;\n};\n\n/** debounce - 호출 제어 (디바운스) */\nfunction debounce<T extends (...args: any[]) => any>(fn: T, ms: number): T {\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const debounced = function (this: unknown, ...args: Parameters<T>) {\n if (timer) {\n clearTimeout(timer);\n }\n const context = this;\n timer = setTimeout(() => {\n timer = undefined;\n fn.apply(context, args);\n }, ms);\n };\n\n return debounced as T;\n}\nconst curriedDebounce = curry(debounce) as Debounce;\nexport default curriedDebounce;\n","import curry from '../composition/curry';\n\ntype DebounceLeading = {\n <T extends (...args: any[]) => any>(...args: [fn: T]): (ms: number) => T;\n <T extends (...args: any[]) => any>(...args: [fn: T, ms: number]): T;\n};\n\n/** debounceLeading - 첫 호출만 실행하는 디바운스 */\nfunction debounceLeading<T extends (...args: any[]) => any>(fn: T, ms: number): T {\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const debounced = function (this: unknown, ...args: Parameters<T>) {\n if (!timer) {\n fn.apply(this, args);\n timer = setTimeout(() => {\n timer = undefined;\n }, ms);\n }\n };\n\n return debounced as T;\n}\n\nconst curriedDebounceLeading = curry(debounceLeading) as DebounceLeading;\nexport default curriedDebounceLeading;\n","import curry from '../composition/curry';\n\ntype DebounceLeadingTrailing = {\n <T extends (...args: any[]) => any>(...args: [fn: T]): (ms: number) => T;\n <T extends (...args: any[]) => any>(...args: [fn: T, ms: number]): T;\n};\n\n/** debounceLeadingTrailing - 처음과 마지막에만 실행하는 디바운스 */\nfunction debounceLeadingTrailing<T extends (...args: any[]) => any>(fn: T, ms: number): T {\n let timer: ReturnType<typeof setTimeout> | undefined;\n let pending = false;\n let lastArgs: Parameters<T> | undefined;\n let lastThis: unknown;\n\n const flush = () => {\n timer = undefined;\n if (pending && lastArgs) {\n pending = false;\n fn.apply(lastThis, lastArgs);\n }\n };\n\n const debounced = function (this: unknown, ...args: Parameters<T>) {\n if (!timer) {\n fn.apply(this, args);\n timer = setTimeout(flush, ms);\n return;\n }\n\n pending = true;\n lastArgs = args;\n lastThis = this;\n clearTimeout(timer);\n timer = setTimeout(flush, ms);\n };\n\n return debounced as T;\n}\n\nconst curriedDebounceLeadingTrailing = curry(debounceLeadingTrailing) as DebounceLeadingTrailing;\nexport default curriedDebounceLeadingTrailing;\n","import curry from '../composition/curry';\n\ntype Throttle = {\n <T extends (...args: any[]) => any>(...args: [fn: T]): (ms: number) => T;\n <T extends (...args: any[]) => any>(...args: [fn: T, ms: number]): T;\n};\n\n/** throttle - 호출 제어 (쓰로틀) */\nfunction throttle<T extends (...args: any[]) => any>(fn: T, ms: number): T {\n let lastCall = 0;\n let trailingArgs: any[] | null = null;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const invoke = (ctx: any, args: any[]) => {\n lastCall = Date.now();\n fn.apply(ctx, args);\n };\n\n const throttled = function (this: any, ...args: any[]) {\n const now = Date.now();\n const remaining = ms - (now - lastCall);\n\n if (remaining <= 0) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n trailingArgs = null;\n invoke(this, args);\n } else {\n trailingArgs = args;\n if (!timeoutId) {\n timeoutId = setTimeout(() => {\n timeoutId = null;\n if (trailingArgs) {\n invoke(this, trailingArgs);\n trailingArgs = null;\n }\n }, remaining);\n }\n }\n } as T;\n\n return throttled;\n}\nconst curriedThrottle = curry(throttle) as Throttle;\nexport default curriedThrottle;\n","/** maybe - null-safe 연산 */\nfunction maybe<T, R>(fn: (value: T) => R): (value: T | null | undefined) => R | null {\n return (value: T | null | undefined) => {\n if (value === null || value === undefined) {\n return null;\n }\n return fn(value);\n };\n}\nexport default maybe;\n","/** mapMaybe - 값이 있는 항목만 변환 */\nfunction mapMaybe<T, R>(\n fn: (value: T) => R | null | undefined\n): (values: T[]) => R[] {\n return (values: T[]) => {\n const results: R[] = [];\n\n for (const value of values) {\n const mapped = fn(value);\n if (mapped !== null && mapped !== undefined) {\n results.push(mapped);\n }\n }\n\n return results;\n };\n}\nexport default mapMaybe;\n","/** getOrElse - 기본값 제공 */\nfunction getOrElse<T>(defaultValue: T): (value: T | null | undefined) => T {\n return (value: T | null | undefined) => {\n if (value === null || value === undefined) {\n return defaultValue;\n }\n return value;\n };\n}\nexport default getOrElse;\n","/** result - 성공 / 실패 래핑 */\nfunction result<T, E = Error>(fn: () => T): { ok: true; value: T } | { ok: false; error: E } {\n // TODO: implement\n try {\n return { ok: true, value: fn() };\n } catch (error) {\n return { ok: false, error: error as E };\n }\n}\nexport default result;\n","import curry from '../composition/curry';\n\ntype Fold = {\n <R>(...args: [onNone: () => R]): <T>(\n onSome: (value: T) => R\n ) => (value: T | null | undefined) => R;\n <T, R>(\n ...args: [onNone: () => R, onSome: (value: T) => R]\n ): (value: T | null | undefined) => R;\n <T, R>(\n ...args: [onNone: () => R, onSome: (value: T) => R, value: T | null | undefined]\n ): R;\n};\n\n/** fold - Maybe/Result 처리 */\nfunction fold<T, R>(\n onNone: () => R,\n onSome: (value: T) => R,\n value: T | null | undefined\n): R {\n if (value === null || value === undefined) {\n return onNone();\n }\n return onSome(value);\n}\nconst curriedFold = curry(fold) as Fold;\nexport default curriedFold;\n","import curry from '../composition/curry';\n\n/** assert - 조건 검증 */\nfunction assert(condition: boolean, message: string | undefined): void {\n if (!condition) {\n throw new Error(message ?? 'Assertion failed');\n }\n}\nexport default curry(assert);\n","import curry from '../composition/curry';\n\n/** invariant - 계약 위반 체크 */\nfunction invariant(condition: boolean, message: string | undefined): void {\n if (!condition) {\n throw new Error(message ?? 'Invariant failed');\n }\n}\nexport default curry(invariant);\n","/** log - tap 기반 로깅 */\nfunction log<T>(label?: string): (value: T) => T {\n return (value: T) => {\n if (label) {\n console.log(label, value);\n } else {\n console.log(value);\n }\n return value;\n };\n}\nexport default log;\n"],"names":["pipe","funcs","init","acc","fn","SideEffect","effect","label","matchSideEffect","result","handlers","runPipeResult","isSideEffect","value","pipeSideEffect","compose","curry","args","curried","accumulated","nextArgs","partial","preset","rest","all","flip","reversed","complement","predicate","identity","x","constant","tap","once","called","memoize","cache","RESULT","node","arg","ifElse","onTrue","onFalse","curriedIfElse","when","curriedWhen","unless","curriedUnless","cond","conditions","handler","tryCatch","tryFn","catchFn","err","error","curriedTryCatch","guard","defaultValue","curriedGuard","map","arr","curriedMap","filter","curriedFilter","reduce","initial","curriedReduce","flatMap","curriedFlatMap","find","curriedFind","some","i","curriedSome","every","curriedEvery","take","curriedTake","drop","count","curriedDrop","dropWhile","dropping","item","curriedDropWhile","chunk","size","chunkSize","curriedChunk","zip","arr2","arr1","length","curriedZip","zipWith","other","curriedZipWith","unzip","left","right","a","b","uniq","seen","uniqBy","key","curriedUniqBy","sortBy","aKey","bKey","curriedSortBy","sort","compare","curriedSort","groupBy","curriedGroupBy","zipIndex","index","takeWhile","curriedTakeWhile","scan","curriedScan","concat","curriedConcat","append","curriedAppend","prepend","curriedPrepend","flatten","head","tail","last","range","start","end","step","partition","truthy","falsy","curriedPartition","flattenDeep","walk","items","prop","obj","curriedProp","propOr","curriedPropOr","path","pathArray","current","curriedPath","pathOr","curriedPathOr","pick","keys","curriedPick","omit","curriedOmit","assoc","curriedAssoc","isIndexKey","normalizeIndex","raw","isObjectLike","assocPath","useArray","base","nextValue","curriedAssocPath","dissoc","_removed","dissocPath","restObj","curriedDissocPath","merge","obj1","obj2","curriedMerge","mergeDeep","isPlainObject","mergeObjects","existing","curriedMergeDeep","mergeAll","objects","values","entries","mapValues","evolve","transformations","transformer","curriedEvolve","has","curriedHas","hasPath","equals","deepEqual","bEntries","aVal","found","bVal","bValues","aKeys","bKeys","equals$1","isNil","isEmpty","isType","type","target","actual","gt","gte","lt","lte","clamp","min","max","clamp_default","includes","search","add","add_default","sub","sub_default","mul","mul_default","div","div_default","sum","total","mean","round","floor","ceil","randomInt","lower","upper","randomInt_default","trim","str","split","separator","split_default","join","join_default","replace","pattern","replacement","replace_default","toUpper","toLower","startsWith","prefix","endsWith","suffix","targetIdx","match","match_default","pipeAsync","pipeAsyncSideEffect","delay","ms","resolve","timeout","promise","reject","timer","val","curriedTimeout","retry","times","delayMs","attempt","curriedRetry","debounce","context","curriedDebounce","debounceLeading","curriedDebounceLeading","debounceLeadingTrailing","pending","lastArgs","lastThis","flush","curriedDebounceLeadingTrailing","throttle","lastCall","trailingArgs","timeoutId","invoke","ctx","now","remaining","curriedThrottle","maybe","mapMaybe","results","mapped","getOrElse","fold","onNone","onSome","curriedFold","assert","condition","message","assert_default","invariant","invariant_default","log"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ type Append = {
2
+ <T>(...args: [value: T]): (arr: T[]) => T[];
3
+ <T>(...args: [value: T, arr: T[]]): T[];
4
+ };
5
+ declare const curriedAppend: Append;
6
+ export default curriedAppend;
7
+ //# sourceMappingURL=append.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"append.d.ts","sourceRoot":"","sources":["../../../src/implement/array/append.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACZ,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5C,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;CACzC,CAAC;AASF,QAAA,MAAM,aAAa,EAAoB,MAAM,CAAC;AAC9C,eAAe,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ import n from "../composition/curry.mjs";
2
+ function p(r, e) {
3
+ return [...e, r];
4
+ }
5
+ const o = n(p);
6
+ export {
7
+ o as default
8
+ };
9
+ //# sourceMappingURL=append.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"append.mjs","sources":["../../../src/implement/array/append.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype Append = {\n <T>(...args: [value: T]): (arr: T[]) => T[];\n <T>(...args: [value: T, arr: T[]]): T[];\n};\n\n/**\n * append - 배열 끝에 값 추가\n */\nfunction append<T>(value: T, arr: T[]): T[] {\n return [...arr, value];\n}\n\nconst curriedAppend = curry(append) as Append;\nexport default curriedAppend;\n"],"names":["append","value","arr","curriedAppend","curry"],"mappings":";AAUA,SAASA,EAAUC,GAAUC,GAAe;AAC1C,SAAO,CAAC,GAAGA,GAAKD,CAAK;AACvB;AAEA,MAAME,IAAgBC,EAAMJ,CAAM;"}
@@ -0,0 +1,7 @@
1
+ type Chunk = {
2
+ (size: number): <T>(arr: T[]) => T[][];
3
+ <T>(...args: [size: number, arr: T[]]): T[][];
4
+ };
5
+ declare const curriedChunk: Chunk;
6
+ export default curriedChunk;
7
+ //# sourceMappingURL=chunk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../../../src/implement/array/chunk.ts"],"names":[],"mappings":"AAEA,KAAK,KAAK,GAAG;IACX,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IACvC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;CAC/C,CAAC;AAkBF,QAAA,MAAM,YAAY,EAAmB,KAAK,CAAC;AAC3C,eAAe,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ import i from "../composition/curry.mjs";
2
+ function o(u, e) {
3
+ const t = Math.floor(u);
4
+ if (!Number.isFinite(t) || t <= 0)
5
+ return [];
6
+ const n = [];
7
+ for (let r = 0; r < e.length; r += t)
8
+ n.push(e.slice(r, r + t));
9
+ return n;
10
+ }
11
+ const s = i(o);
12
+ export {
13
+ s as default
14
+ };
15
+ //# sourceMappingURL=chunk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk.mjs","sources":["../../../src/implement/array/chunk.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype Chunk = {\n (size: number): <T>(arr: T[]) => T[][];\n <T>(...args: [size: number, arr: T[]]): T[][];\n};\n\n/**\n * chunk - 배열을 일정 크기로 분할\n */\nfunction chunk<T>(size: number, arr: T[]): T[][] {\n const chunkSize = Math.floor(size);\n if (!Number.isFinite(chunkSize) || chunkSize <= 0) {\n return [];\n }\n\n const result: T[][] = [];\n for (let i = 0; i < arr.length; i += chunkSize) {\n result.push(arr.slice(i, i + chunkSize));\n }\n return result;\n}\n\nconst curriedChunk = curry(chunk) as Chunk;\nexport default curriedChunk;\n"],"names":["chunk","size","arr","chunkSize","result","i","curriedChunk","curry"],"mappings":";AAUA,SAASA,EAASC,GAAcC,GAAiB;AAC/C,QAAMC,IAAY,KAAK,MAAMF,CAAI;AACjC,MAAI,CAAC,OAAO,SAASE,CAAS,KAAKA,KAAa;AAC9C,WAAO,CAAA;AAGT,QAAMC,IAAgB,CAAA;AACtB,WAASC,IAAI,GAAGA,IAAIH,EAAI,QAAQG,KAAKF;AACnC,IAAAC,EAAO,KAAKF,EAAI,MAAMG,GAAGA,IAAIF,CAAS,CAAC;AAEzC,SAAOC;AACT;AAEA,MAAME,IAAeC,EAAMP,CAAK;"}
@@ -0,0 +1,7 @@
1
+ type Concat = {
2
+ <T>(...args: [other: T[]]): (arr: T[]) => T[];
3
+ <T>(...args: [other: T[], arr: T[]]): T[];
4
+ };
5
+ declare const curriedConcat: Concat;
6
+ export default curriedConcat;
7
+ //# sourceMappingURL=concat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../../../src/implement/array/concat.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACZ,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9C,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;CAC3C,CAAC;AASF,QAAA,MAAM,aAAa,EAAoB,MAAM,CAAC;AAC9C,eAAe,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ import c from "../composition/curry.mjs";
2
+ function o(r, t) {
3
+ return [...t, ...r];
4
+ }
5
+ const u = c(o);
6
+ export {
7
+ u as default
8
+ };
9
+ //# sourceMappingURL=concat.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concat.mjs","sources":["../../../src/implement/array/concat.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype Concat = {\n <T>(...args: [other: T[]]): (arr: T[]) => T[];\n <T>(...args: [other: T[], arr: T[]]): T[];\n};\n\n/**\n * concat - 두 배열 연결\n */\nfunction concat<T>(other: T[], arr: T[]): T[] {\n return [...arr, ...other];\n}\n\nconst curriedConcat = curry(concat) as Concat;\nexport default curriedConcat;\n"],"names":["concat","other","arr","curriedConcat","curry"],"mappings":";AAUA,SAASA,EAAUC,GAAYC,GAAe;AAC5C,SAAO,CAAC,GAAGA,GAAK,GAAGD,CAAK;AAC1B;AAEA,MAAME,IAAgBC,EAAMJ,CAAM;"}
@@ -0,0 +1,7 @@
1
+ type Drop = {
2
+ (n: number): <T>(arr: T[]) => T[];
3
+ <T>(...args: [n: number, arr: T[]]): T[];
4
+ };
5
+ declare const curriedDrop: Drop;
6
+ export default curriedDrop;
7
+ //# sourceMappingURL=drop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../../src/implement/array/drop.ts"],"names":[],"mappings":"AAEA,KAAK,IAAI,GAAG;IACV,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;CAC1C,CAAC;AAaF,QAAA,MAAM,WAAW,EAAkB,IAAI,CAAC;AACxC,eAAe,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ import e from "../composition/curry.mjs";
2
+ function i(t, o) {
3
+ const r = Math.floor(t);
4
+ return !Number.isFinite(r) || r <= 0 ? o : o.slice(r);
5
+ }
6
+ const u = e(i);
7
+ export {
8
+ u as default
9
+ };
10
+ //# sourceMappingURL=drop.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drop.mjs","sources":["../../../src/implement/array/drop.ts"],"sourcesContent":["import curry from '../composition/curry';\n\ntype Drop = {\n (n: number): <T>(arr: T[]) => T[];\n <T>(...args: [n: number, arr: T[]]): T[];\n};\n\n/**\n * drop - 앞에서 n개 제외\n */\nfunction drop<T>(n: number, arr: T[]): T[] {\n const count = Math.floor(n);\n if (!Number.isFinite(count) || count <= 0) {\n return arr;\n }\n return arr.slice(count);\n}\n\nconst curriedDrop = curry(drop) as Drop;\nexport default curriedDrop;\n"],"names":["drop","n","arr","count","curriedDrop","curry"],"mappings":";AAUA,SAASA,EAAQC,GAAWC,GAAe;AACzC,QAAMC,IAAQ,KAAK,MAAMF,CAAC;AAC1B,SAAI,CAAC,OAAO,SAASE,CAAK,KAAKA,KAAS,IAC/BD,IAEFA,EAAI,MAAMC,CAAK;AACxB;AAEA,MAAMC,IAAcC,EAAML,CAAI;"}
@@ -0,0 +1,7 @@
1
+ type DropWhile = {
2
+ <T>(...args: [predicate: (value: T) => boolean]): (arr: T[]) => T[];
3
+ <T>(...args: [predicate: (value: T) => boolean, arr: T[]]): T[];
4
+ };
5
+ declare const curriedDropWhile: DropWhile;
6
+ export default curriedDropWhile;
7
+ //# sourceMappingURL=dropWhile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropWhile.d.ts","sourceRoot":"","sources":["../../../src/implement/array/dropWhile.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACf,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IACpE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;CACjE,CAAC;AAmBF,QAAA,MAAM,gBAAgB,EAAuB,SAAS,CAAC;AACvD,eAAe,gBAAgB,CAAC"}