@vielzeug/toolkit 1.1.3 → 2.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 (764) hide show
  1. package/README.md +325 -452
  2. package/dist/array/chunk.cjs +2 -2
  3. package/dist/array/chunk.cjs.map +1 -1
  4. package/dist/array/chunk.d.ts +29 -0
  5. package/dist/array/chunk.d.ts.map +1 -0
  6. package/dist/array/chunk.js +22 -24
  7. package/dist/array/chunk.js.map +1 -1
  8. package/dist/array/contains.cjs +2 -2
  9. package/dist/array/contains.cjs.map +1 -1
  10. package/dist/array/contains.d.ts +19 -0
  11. package/dist/array/contains.d.ts.map +1 -0
  12. package/dist/array/contains.js +12 -9
  13. package/dist/array/contains.js.map +1 -1
  14. package/dist/array/fold.cjs +2 -0
  15. package/dist/array/fold.cjs.map +1 -0
  16. package/dist/array/fold.d.ts +21 -0
  17. package/dist/array/fold.d.ts.map +1 -0
  18. package/dist/array/fold.js +19 -0
  19. package/dist/array/fold.js.map +1 -0
  20. package/dist/array/group.cjs +2 -2
  21. package/dist/array/group.cjs.map +1 -1
  22. package/dist/array/group.d.ts +19 -0
  23. package/dist/array/group.d.ts.map +1 -0
  24. package/dist/array/group.js +18 -15
  25. package/dist/array/group.js.map +1 -1
  26. package/dist/array/index.d.ts +16 -0
  27. package/dist/array/index.d.ts.map +1 -0
  28. package/dist/array/keyBy.cjs +2 -0
  29. package/dist/array/keyBy.cjs.map +1 -0
  30. package/dist/array/keyBy.d.ts +20 -0
  31. package/dist/array/keyBy.d.ts.map +1 -0
  32. package/dist/array/keyBy.js +19 -0
  33. package/dist/array/keyBy.js.map +1 -0
  34. package/dist/array/list.cjs +2 -2
  35. package/dist/array/list.cjs.map +1 -1
  36. package/dist/array/list.d.ts +58 -0
  37. package/dist/array/list.d.ts.map +1 -0
  38. package/dist/array/list.js +103 -106
  39. package/dist/array/list.js.map +1 -1
  40. package/dist/array/pick.cjs +2 -2
  41. package/dist/array/pick.cjs.map +1 -1
  42. package/dist/array/pick.d.ts +19 -0
  43. package/dist/array/pick.d.ts.map +1 -0
  44. package/dist/array/pick.js +15 -14
  45. package/dist/array/pick.js.map +1 -1
  46. package/dist/array/remoteList.cjs +2 -2
  47. package/dist/array/remoteList.cjs.map +1 -1
  48. package/dist/array/remoteList.d.ts +64 -0
  49. package/dist/array/remoteList.d.ts.map +1 -0
  50. package/dist/array/remoteList.js +121 -122
  51. package/dist/array/remoteList.js.map +1 -1
  52. package/dist/array/replace.cjs +2 -0
  53. package/dist/array/replace.cjs.map +1 -0
  54. package/dist/array/replace.d.ts +20 -0
  55. package/dist/array/replace.d.ts.map +1 -0
  56. package/dist/array/replace.js +19 -0
  57. package/dist/array/replace.js.map +1 -0
  58. package/dist/array/rotate.cjs +2 -0
  59. package/dist/array/rotate.cjs.map +1 -0
  60. package/dist/array/rotate.d.ts +22 -0
  61. package/dist/array/rotate.d.ts.map +1 -0
  62. package/dist/array/rotate.js +19 -0
  63. package/dist/array/rotate.js.map +1 -0
  64. package/dist/array/search.cjs +2 -2
  65. package/dist/array/search.cjs.map +1 -1
  66. package/dist/array/search.d.ts +19 -0
  67. package/dist/array/search.d.ts.map +1 -0
  68. package/dist/array/search.js +23 -13
  69. package/dist/array/search.js.map +1 -1
  70. package/dist/array/select.cjs +2 -2
  71. package/dist/array/select.cjs.map +1 -1
  72. package/dist/array/select.d.ts +21 -0
  73. package/dist/array/select.d.ts.map +1 -0
  74. package/dist/array/select.js +16 -15
  75. package/dist/array/select.js.map +1 -1
  76. package/dist/array/sort.cjs +2 -2
  77. package/dist/array/sort.cjs.map +1 -1
  78. package/dist/array/sort.d.ts +26 -0
  79. package/dist/array/sort.d.ts.map +1 -0
  80. package/dist/array/sort.js +18 -12
  81. package/dist/array/sort.js.map +1 -1
  82. package/dist/array/toggle.cjs +2 -0
  83. package/dist/array/toggle.cjs.map +1 -0
  84. package/dist/array/toggle.d.ts +29 -0
  85. package/dist/array/toggle.d.ts.map +1 -0
  86. package/dist/array/toggle.js +9 -0
  87. package/dist/array/toggle.js.map +1 -0
  88. package/dist/array/uniq.cjs +2 -2
  89. package/dist/array/uniq.cjs.map +1 -1
  90. package/dist/array/uniq.d.ts +21 -0
  91. package/dist/array/uniq.d.ts.map +1 -0
  92. package/dist/array/uniq.js +15 -17
  93. package/dist/array/uniq.js.map +1 -1
  94. package/dist/async/attempt.cjs +2 -2
  95. package/dist/async/attempt.cjs.map +1 -1
  96. package/dist/async/attempt.d.ts +40 -0
  97. package/dist/async/attempt.d.ts.map +1 -0
  98. package/dist/async/attempt.js +19 -14
  99. package/dist/async/attempt.js.map +1 -1
  100. package/dist/async/defer.cjs +2 -2
  101. package/dist/async/defer.cjs.map +1 -1
  102. package/dist/async/defer.d.ts +23 -0
  103. package/dist/async/defer.d.ts.map +1 -0
  104. package/dist/async/defer.js +12 -9
  105. package/dist/async/defer.js.map +1 -1
  106. package/dist/async/index.d.ts +12 -0
  107. package/dist/async/index.d.ts.map +1 -0
  108. package/dist/async/parallel.cjs +2 -2
  109. package/dist/async/parallel.cjs.map +1 -1
  110. package/dist/async/parallel.d.ts +31 -0
  111. package/dist/async/parallel.d.ts.map +1 -0
  112. package/dist/async/parallel.js +26 -27
  113. package/dist/async/parallel.js.map +1 -1
  114. package/dist/async/pool.cjs +2 -2
  115. package/dist/async/pool.cjs.map +1 -1
  116. package/dist/async/pool.d.ts +21 -0
  117. package/dist/async/pool.d.ts.map +1 -0
  118. package/dist/async/pool.js +23 -21
  119. package/dist/async/pool.js.map +1 -1
  120. package/dist/async/predict.cjs +2 -2
  121. package/dist/async/predict.cjs.map +1 -1
  122. package/dist/async/predict.d.ts +24 -0
  123. package/dist/async/predict.d.ts.map +1 -0
  124. package/dist/async/predict.js +10 -12
  125. package/dist/async/predict.js.map +1 -1
  126. package/dist/async/queue.cjs +2 -2
  127. package/dist/async/queue.cjs.map +1 -1
  128. package/dist/async/queue.d.ts +43 -0
  129. package/dist/async/queue.d.ts.map +1 -0
  130. package/dist/async/queue.js +52 -56
  131. package/dist/async/queue.js.map +1 -1
  132. package/dist/async/race.cjs +2 -2
  133. package/dist/async/race.cjs.map +1 -1
  134. package/dist/async/race.d.ts +16 -0
  135. package/dist/async/race.d.ts.map +1 -0
  136. package/dist/async/race.js +8 -7
  137. package/dist/async/race.js.map +1 -1
  138. package/dist/async/retry.cjs +2 -2
  139. package/dist/async/retry.cjs.map +1 -1
  140. package/dist/async/retry.d.ts +32 -0
  141. package/dist/async/retry.d.ts.map +1 -0
  142. package/dist/async/retry.js +19 -24
  143. package/dist/async/retry.js.map +1 -1
  144. package/dist/async/scheduler.cjs +2 -0
  145. package/dist/async/scheduler.cjs.map +1 -0
  146. package/dist/async/scheduler.d.ts +51 -0
  147. package/dist/async/scheduler.d.ts.map +1 -0
  148. package/dist/async/scheduler.js +43 -0
  149. package/dist/async/scheduler.js.map +1 -0
  150. package/dist/async/sleep.cjs +2 -2
  151. package/dist/async/sleep.cjs.map +1 -1
  152. package/dist/async/sleep.d.ts +16 -0
  153. package/dist/async/sleep.d.ts.map +1 -0
  154. package/dist/async/sleep.js +11 -11
  155. package/dist/async/sleep.js.map +1 -1
  156. package/dist/async/waitFor.cjs +2 -2
  157. package/dist/async/waitFor.cjs.map +1 -1
  158. package/dist/async/waitFor.d.ts +33 -0
  159. package/dist/async/waitFor.d.ts.map +1 -0
  160. package/dist/async/waitFor.js +29 -36
  161. package/dist/async/waitFor.js.map +1 -1
  162. package/dist/date/expires.cjs +2 -2
  163. package/dist/date/expires.cjs.map +1 -1
  164. package/dist/date/expires.d.ts +15 -0
  165. package/dist/date/expires.d.ts.map +1 -0
  166. package/dist/date/expires.js +11 -10
  167. package/dist/date/expires.js.map +1 -1
  168. package/dist/date/index.d.ts +4 -0
  169. package/dist/date/index.d.ts.map +1 -0
  170. package/dist/date/interval.cjs +2 -2
  171. package/dist/date/interval.cjs.map +1 -1
  172. package/dist/date/interval.d.ts +25 -0
  173. package/dist/date/interval.d.ts.map +1 -0
  174. package/dist/date/interval.js +31 -37
  175. package/dist/date/interval.js.map +1 -1
  176. package/dist/date/timeDiff.cjs +2 -2
  177. package/dist/date/timeDiff.cjs.map +1 -1
  178. package/dist/date/timeDiff.d.ts +24 -0
  179. package/dist/date/timeDiff.d.ts.map +1 -0
  180. package/dist/date/timeDiff.js +58 -25
  181. package/dist/date/timeDiff.js.map +1 -1
  182. package/dist/function/assert.cjs +2 -3
  183. package/dist/function/assert.cjs.map +1 -1
  184. package/dist/function/assert.d.ts +38 -0
  185. package/dist/function/assert.d.ts.map +1 -0
  186. package/dist/function/assert.js +13 -11
  187. package/dist/function/assert.js.map +1 -1
  188. package/dist/function/assertParams.cjs +2 -2
  189. package/dist/function/assertParams.cjs.map +1 -1
  190. package/dist/function/assertParams.d.ts +24 -0
  191. package/dist/function/assertParams.d.ts.map +1 -0
  192. package/dist/function/assertParams.js +13 -12
  193. package/dist/function/assertParams.js.map +1 -1
  194. package/dist/function/compare.cjs +2 -2
  195. package/dist/function/compare.cjs.map +1 -1
  196. package/dist/function/compare.d.ts +23 -0
  197. package/dist/function/compare.d.ts.map +1 -0
  198. package/dist/function/compare.js +22 -21
  199. package/dist/function/compare.js.map +1 -1
  200. package/dist/function/compareBy.cjs +2 -2
  201. package/dist/function/compareBy.cjs.map +1 -1
  202. package/dist/function/compareBy.d.ts +24 -0
  203. package/dist/function/compareBy.d.ts.map +1 -0
  204. package/dist/function/compareBy.js +15 -14
  205. package/dist/function/compareBy.js.map +1 -1
  206. package/dist/function/compose.cjs +2 -2
  207. package/dist/function/compose.cjs.map +1 -1
  208. package/dist/function/compose.d.ts +22 -0
  209. package/dist/function/compose.d.ts.map +1 -0
  210. package/dist/function/compose.js +10 -13
  211. package/dist/function/compose.js.map +1 -1
  212. package/dist/function/curry.cjs +2 -2
  213. package/dist/function/curry.cjs.map +1 -1
  214. package/dist/function/curry.d.ts +21 -0
  215. package/dist/function/curry.d.ts.map +1 -0
  216. package/dist/function/curry.js +8 -7
  217. package/dist/function/curry.js.map +1 -1
  218. package/dist/function/debounce.cjs +2 -2
  219. package/dist/function/debounce.cjs.map +1 -1
  220. package/dist/function/debounce.d.ts +12 -0
  221. package/dist/function/debounce.d.ts.map +1 -0
  222. package/dist/function/debounce.js +34 -26
  223. package/dist/function/debounce.js.map +1 -1
  224. package/dist/function/fp.cjs +2 -2
  225. package/dist/function/fp.cjs.map +1 -1
  226. package/dist/function/fp.d.ts +24 -0
  227. package/dist/function/fp.d.ts.map +1 -0
  228. package/dist/function/fp.js +6 -10
  229. package/dist/function/fp.js.map +1 -1
  230. package/dist/function/index.d.ts +13 -0
  231. package/dist/function/index.d.ts.map +1 -0
  232. package/dist/function/memo.cjs +2 -2
  233. package/dist/function/memo.cjs.map +1 -1
  234. package/dist/function/memo.d.ts +30 -0
  235. package/dist/function/memo.d.ts.map +1 -0
  236. package/dist/function/memo.js +16 -24
  237. package/dist/function/memo.js.map +1 -1
  238. package/dist/function/once.cjs +2 -2
  239. package/dist/function/once.cjs.map +1 -1
  240. package/dist/function/once.d.ts +24 -0
  241. package/dist/function/once.d.ts.map +1 -0
  242. package/dist/function/once.js +10 -10
  243. package/dist/function/once.js.map +1 -1
  244. package/dist/function/pipe.cjs +2 -2
  245. package/dist/function/pipe.cjs.map +1 -1
  246. package/dist/function/pipe.d.ts +23 -0
  247. package/dist/function/pipe.d.ts.map +1 -0
  248. package/dist/function/pipe.js +10 -10
  249. package/dist/function/pipe.js.map +1 -1
  250. package/dist/function/throttle.cjs +2 -2
  251. package/dist/function/throttle.cjs.map +1 -1
  252. package/dist/function/throttle.d.ts +21 -0
  253. package/dist/function/throttle.d.ts.map +1 -0
  254. package/dist/function/throttle.js +45 -37
  255. package/dist/function/throttle.js.map +1 -1
  256. package/dist/index.cjs +1 -2
  257. package/dist/index.d.ts +77 -2813
  258. package/dist/index.d.ts.map +1 -0
  259. package/dist/index.js +75 -253
  260. package/dist/math/abs.cjs +2 -2
  261. package/dist/math/abs.cjs.map +1 -1
  262. package/dist/math/abs.d.ts +17 -0
  263. package/dist/math/abs.d.ts.map +1 -0
  264. package/dist/math/abs.js +7 -6
  265. package/dist/math/abs.js.map +1 -1
  266. package/dist/math/allocate.cjs +2 -2
  267. package/dist/math/allocate.cjs.map +1 -1
  268. package/dist/math/allocate.d.ts +24 -0
  269. package/dist/math/allocate.d.ts.map +1 -0
  270. package/dist/math/allocate.js +20 -28
  271. package/dist/math/allocate.js.map +1 -1
  272. package/dist/math/average.cjs +2 -2
  273. package/dist/math/average.cjs.map +1 -1
  274. package/dist/math/average.d.ts +16 -0
  275. package/dist/math/average.d.ts.map +1 -0
  276. package/dist/math/average.js +13 -24
  277. package/dist/math/average.js.map +1 -1
  278. package/dist/math/clamp.cjs +2 -2
  279. package/dist/math/clamp.cjs.map +1 -1
  280. package/dist/math/clamp.d.ts +18 -0
  281. package/dist/math/clamp.d.ts.map +1 -0
  282. package/dist/math/clamp.js +7 -6
  283. package/dist/math/clamp.js.map +1 -1
  284. package/dist/math/distribute.cjs +2 -2
  285. package/dist/math/distribute.cjs.map +1 -1
  286. package/dist/math/distribute.d.ts +24 -0
  287. package/dist/math/distribute.d.ts.map +1 -0
  288. package/dist/math/distribute.js +14 -17
  289. package/dist/math/distribute.js.map +1 -1
  290. package/dist/math/index.d.ts +14 -0
  291. package/dist/math/index.d.ts.map +1 -0
  292. package/dist/math/linspace.cjs +2 -0
  293. package/dist/math/linspace.cjs.map +1 -0
  294. package/dist/math/linspace.d.ts +19 -0
  295. package/dist/math/linspace.d.ts.map +1 -0
  296. package/dist/math/linspace.js +11 -0
  297. package/dist/math/linspace.js.map +1 -0
  298. package/dist/math/max.cjs +2 -2
  299. package/dist/math/max.cjs.map +1 -1
  300. package/dist/math/max.d.ts +23 -0
  301. package/dist/math/max.d.ts.map +1 -0
  302. package/dist/math/max.js +10 -11
  303. package/dist/math/max.js.map +1 -1
  304. package/dist/math/median.cjs +2 -2
  305. package/dist/math/median.cjs.map +1 -1
  306. package/dist/math/median.d.ts +17 -0
  307. package/dist/math/median.d.ts.map +1 -0
  308. package/dist/math/median.js +11 -10
  309. package/dist/math/median.js.map +1 -1
  310. package/dist/math/min.cjs +2 -2
  311. package/dist/math/min.cjs.map +1 -1
  312. package/dist/math/min.d.ts +23 -0
  313. package/dist/math/min.d.ts.map +1 -0
  314. package/dist/math/min.js +10 -11
  315. package/dist/math/min.js.map +1 -1
  316. package/dist/math/percent.cjs +2 -0
  317. package/dist/math/percent.cjs.map +1 -0
  318. package/dist/math/percent.d.ts +19 -0
  319. package/dist/math/percent.d.ts.map +1 -0
  320. package/dist/math/percent.js +8 -0
  321. package/dist/math/percent.js.map +1 -0
  322. package/dist/math/range.cjs +2 -2
  323. package/dist/math/range.cjs.map +1 -1
  324. package/dist/math/range.d.ts +23 -0
  325. package/dist/math/range.d.ts.map +1 -0
  326. package/dist/math/range.js +28 -17
  327. package/dist/math/range.js.map +1 -1
  328. package/dist/math/round.cjs +2 -2
  329. package/dist/math/round.cjs.map +1 -1
  330. package/dist/math/round.d.ts +21 -0
  331. package/dist/math/round.d.ts.map +1 -0
  332. package/dist/math/round.js +9 -8
  333. package/dist/math/round.js.map +1 -1
  334. package/dist/math/sum.cjs +2 -2
  335. package/dist/math/sum.cjs.map +1 -1
  336. package/dist/math/sum.d.ts +17 -0
  337. package/dist/math/sum.d.ts.map +1 -0
  338. package/dist/math/sum.js +11 -14
  339. package/dist/math/sum.js.map +1 -1
  340. package/dist/money/currency.cjs +2 -2
  341. package/dist/money/currency.cjs.map +1 -1
  342. package/dist/money/currency.d.ts +30 -0
  343. package/dist/money/currency.d.ts.map +1 -0
  344. package/dist/money/currency.js +19 -47
  345. package/dist/money/currency.js.map +1 -1
  346. package/dist/money/exchange.cjs +2 -2
  347. package/dist/money/exchange.cjs.map +1 -1
  348. package/dist/money/exchange.d.ts +29 -0
  349. package/dist/money/exchange.d.ts.map +1 -0
  350. package/dist/money/exchange.js +12 -12
  351. package/dist/money/exchange.js.map +1 -1
  352. package/dist/money/index.d.ts +4 -0
  353. package/dist/money/index.d.ts.map +1 -0
  354. package/dist/money/types.d.ts +9 -0
  355. package/dist/money/types.d.ts.map +1 -0
  356. package/dist/object/diff.cjs +2 -2
  357. package/dist/object/diff.cjs.map +1 -1
  358. package/dist/object/diff.d.ts +26 -0
  359. package/dist/object/diff.d.ts.map +1 -0
  360. package/dist/object/diff.js +19 -17
  361. package/dist/object/diff.js.map +1 -1
  362. package/dist/object/index.d.ts +9 -0
  363. package/dist/object/index.d.ts.map +1 -0
  364. package/dist/object/merge.cjs +2 -2
  365. package/dist/object/merge.cjs.map +1 -1
  366. package/dist/object/merge.d.ts +44 -0
  367. package/dist/object/merge.d.ts.map +1 -0
  368. package/dist/object/merge.js +27 -21
  369. package/dist/object/merge.js.map +1 -1
  370. package/dist/object/parseJSON.cjs +2 -2
  371. package/dist/object/parseJSON.cjs.map +1 -1
  372. package/dist/object/parseJSON.d.ts +32 -0
  373. package/dist/object/parseJSON.d.ts.map +1 -0
  374. package/dist/object/parseJSON.js +17 -18
  375. package/dist/object/parseJSON.js.map +1 -1
  376. package/dist/object/path.cjs +2 -2
  377. package/dist/object/path.cjs.map +1 -1
  378. package/dist/object/path.d.ts +32 -0
  379. package/dist/object/path.d.ts.map +1 -0
  380. package/dist/object/path.js +25 -23
  381. package/dist/object/path.js.map +1 -1
  382. package/dist/object/proxy.cjs +2 -0
  383. package/dist/object/proxy.cjs.map +1 -0
  384. package/dist/object/proxy.d.ts +30 -0
  385. package/dist/object/proxy.d.ts.map +1 -0
  386. package/dist/object/proxy.js +21 -0
  387. package/dist/object/proxy.js.map +1 -0
  388. package/dist/object/prune.cjs +2 -0
  389. package/dist/object/prune.cjs.map +1 -0
  390. package/dist/object/prune.d.ts +21 -0
  391. package/dist/object/prune.d.ts.map +1 -0
  392. package/dist/object/prune.js +31 -0
  393. package/dist/object/prune.js.map +1 -0
  394. package/dist/object/seek.cjs +2 -2
  395. package/dist/object/seek.cjs.map +1 -1
  396. package/dist/object/seek.d.ts +2 -0
  397. package/dist/object/seek.d.ts.map +1 -0
  398. package/dist/object/seek.js +25 -12
  399. package/dist/object/seek.js.map +1 -1
  400. package/dist/object/stash.cjs +2 -0
  401. package/dist/object/stash.cjs.map +1 -0
  402. package/dist/object/stash.d.ts +45 -0
  403. package/dist/object/stash.d.ts.map +1 -0
  404. package/dist/object/stash.js +99 -0
  405. package/dist/object/stash.js.map +1 -0
  406. package/dist/random/draw.cjs +2 -2
  407. package/dist/random/draw.cjs.map +1 -1
  408. package/dist/random/draw.d.ts +16 -0
  409. package/dist/random/draw.d.ts.map +1 -0
  410. package/dist/random/draw.js +13 -10
  411. package/dist/random/draw.js.map +1 -1
  412. package/dist/random/index.d.ts +5 -0
  413. package/dist/random/index.d.ts.map +1 -0
  414. package/dist/random/random.cjs +2 -2
  415. package/dist/random/random.cjs.map +1 -1
  416. package/dist/random/random.d.ts +14 -0
  417. package/dist/random/random.d.ts.map +1 -0
  418. package/dist/random/random.js +16 -9
  419. package/dist/random/random.js.map +1 -1
  420. package/dist/random/shuffle.cjs +2 -2
  421. package/dist/random/shuffle.cjs.map +1 -1
  422. package/dist/random/shuffle.d.ts +17 -0
  423. package/dist/random/shuffle.d.ts.map +1 -0
  424. package/dist/random/shuffle.js +18 -14
  425. package/dist/random/shuffle.js.map +1 -1
  426. package/dist/random/uuid.cjs +2 -2
  427. package/dist/random/uuid.cjs.map +1 -1
  428. package/dist/random/uuid.d.ts +12 -0
  429. package/dist/random/uuid.d.ts.map +1 -0
  430. package/dist/random/uuid.js +7 -9
  431. package/dist/random/uuid.js.map +1 -1
  432. package/dist/string/_caseUtils.cjs +2 -2
  433. package/dist/string/_caseUtils.cjs.map +1 -1
  434. package/dist/string/_caseUtils.d.ts +13 -0
  435. package/dist/string/_caseUtils.d.ts.map +1 -0
  436. package/dist/string/_caseUtils.js +8 -8
  437. package/dist/string/_caseUtils.js.map +1 -1
  438. package/dist/string/camelCase.cjs +2 -2
  439. package/dist/string/camelCase.cjs.map +1 -1
  440. package/dist/string/camelCase.d.ts +14 -0
  441. package/dist/string/camelCase.d.ts.map +1 -0
  442. package/dist/string/camelCase.js +8 -7
  443. package/dist/string/camelCase.js.map +1 -1
  444. package/dist/string/index.d.ts +7 -0
  445. package/dist/string/index.d.ts.map +1 -0
  446. package/dist/string/kebabCase.cjs +2 -2
  447. package/dist/string/kebabCase.cjs.map +1 -1
  448. package/dist/string/kebabCase.d.ts +15 -0
  449. package/dist/string/kebabCase.d.ts.map +1 -0
  450. package/dist/string/kebabCase.js +8 -7
  451. package/dist/string/kebabCase.js.map +1 -1
  452. package/dist/string/pascalCase.cjs +2 -2
  453. package/dist/string/pascalCase.cjs.map +1 -1
  454. package/dist/string/pascalCase.d.ts +15 -0
  455. package/dist/string/pascalCase.d.ts.map +1 -0
  456. package/dist/string/pascalCase.js +8 -7
  457. package/dist/string/pascalCase.js.map +1 -1
  458. package/dist/string/similarity.cjs +2 -2
  459. package/dist/string/similarity.cjs.map +1 -1
  460. package/dist/string/similarity.d.ts +20 -0
  461. package/dist/string/similarity.d.ts.map +1 -0
  462. package/dist/string/similarity.js +20 -36
  463. package/dist/string/similarity.js.map +1 -1
  464. package/dist/string/snakeCase.cjs +2 -2
  465. package/dist/string/snakeCase.cjs.map +1 -1
  466. package/dist/string/snakeCase.d.ts +15 -0
  467. package/dist/string/snakeCase.d.ts.map +1 -0
  468. package/dist/string/snakeCase.js +8 -7
  469. package/dist/string/snakeCase.js.map +1 -1
  470. package/dist/string/truncate.cjs +2 -2
  471. package/dist/string/truncate.cjs.map +1 -1
  472. package/dist/string/truncate.d.ts +28 -0
  473. package/dist/string/truncate.d.ts.map +1 -0
  474. package/dist/string/truncate.js +20 -17
  475. package/dist/string/truncate.js.map +1 -1
  476. package/dist/toolkit.cjs +2 -0
  477. package/dist/toolkit.cjs.map +1 -0
  478. package/dist/toolkit.js +1523 -0
  479. package/dist/toolkit.js.map +1 -0
  480. package/dist/typed/index.d.ts +24 -0
  481. package/dist/typed/index.d.ts.map +1 -0
  482. package/dist/typed/is.cjs +2 -2
  483. package/dist/typed/is.cjs.map +1 -1
  484. package/dist/typed/is.d.ts +95 -0
  485. package/dist/typed/is.d.ts.map +1 -0
  486. package/dist/typed/is.js +54 -42
  487. package/dist/typed/is.js.map +1 -1
  488. package/dist/typed/isArray.cjs +2 -2
  489. package/dist/typed/isArray.cjs.map +1 -1
  490. package/dist/typed/isArray.d.ts +16 -0
  491. package/dist/typed/isArray.d.ts.map +1 -0
  492. package/dist/typed/isArray.js +8 -8
  493. package/dist/typed/isArray.js.map +1 -1
  494. package/dist/typed/isBoolean.cjs +2 -2
  495. package/dist/typed/isBoolean.cjs.map +1 -1
  496. package/dist/typed/isBoolean.d.ts +23 -0
  497. package/dist/typed/isBoolean.d.ts.map +1 -0
  498. package/dist/typed/isBoolean.js +7 -6
  499. package/dist/typed/isBoolean.js.map +1 -1
  500. package/dist/typed/isDate.cjs +2 -2
  501. package/dist/typed/isDate.cjs.map +1 -1
  502. package/dist/typed/isDate.d.ts +16 -0
  503. package/dist/typed/isDate.d.ts.map +1 -0
  504. package/dist/typed/isDate.js +7 -8
  505. package/dist/typed/isDate.js.map +1 -1
  506. package/dist/typed/isDefined.cjs +2 -2
  507. package/dist/typed/isDefined.cjs.map +1 -1
  508. package/dist/typed/isDefined.d.ts +19 -0
  509. package/dist/typed/isDefined.d.ts.map +1 -0
  510. package/dist/typed/isDefined.js +7 -6
  511. package/dist/typed/isDefined.js.map +1 -1
  512. package/dist/typed/isEmpty.cjs +2 -2
  513. package/dist/typed/isEmpty.cjs.map +1 -1
  514. package/dist/typed/isEmpty.d.ts +24 -0
  515. package/dist/typed/isEmpty.d.ts.map +1 -0
  516. package/dist/typed/isEmpty.js +8 -9
  517. package/dist/typed/isEmpty.js.map +1 -1
  518. package/dist/typed/isEqual.cjs +2 -2
  519. package/dist/typed/isEqual.cjs.map +1 -1
  520. package/dist/typed/isEqual.d.ts +24 -0
  521. package/dist/typed/isEqual.d.ts.map +1 -0
  522. package/dist/typed/isEqual.js +27 -28
  523. package/dist/typed/isEqual.js.map +1 -1
  524. package/dist/typed/isEven.cjs +2 -2
  525. package/dist/typed/isEven.cjs.map +1 -1
  526. package/dist/typed/isEven.d.ts +9 -0
  527. package/dist/typed/isEven.d.ts.map +1 -0
  528. package/dist/typed/isEven.js +7 -6
  529. package/dist/typed/isEven.js.map +1 -1
  530. package/dist/typed/isFunction.cjs +2 -2
  531. package/dist/typed/isFunction.cjs.map +1 -1
  532. package/dist/typed/isFunction.d.ts +16 -0
  533. package/dist/typed/isFunction.d.ts.map +1 -0
  534. package/dist/typed/isFunction.js +7 -8
  535. package/dist/typed/isFunction.js.map +1 -1
  536. package/dist/typed/isMatch.cjs +2 -2
  537. package/dist/typed/isMatch.cjs.map +1 -1
  538. package/dist/typed/isMatch.d.ts +23 -0
  539. package/dist/typed/isMatch.d.ts.map +1 -0
  540. package/dist/typed/isMatch.js +16 -18
  541. package/dist/typed/isMatch.js.map +1 -1
  542. package/dist/typed/isNegative.cjs +2 -2
  543. package/dist/typed/isNegative.cjs.map +1 -1
  544. package/dist/typed/isNegative.d.ts +26 -0
  545. package/dist/typed/isNegative.d.ts.map +1 -0
  546. package/dist/typed/isNegative.js +7 -6
  547. package/dist/typed/isNegative.js.map +1 -1
  548. package/dist/typed/isNil.cjs +2 -2
  549. package/dist/typed/isNil.cjs.map +1 -1
  550. package/dist/typed/isNil.d.ts +17 -0
  551. package/dist/typed/isNil.d.ts.map +1 -0
  552. package/dist/typed/isNil.js +7 -8
  553. package/dist/typed/isNil.js.map +1 -1
  554. package/dist/typed/isNumber.cjs +2 -2
  555. package/dist/typed/isNumber.cjs.map +1 -1
  556. package/dist/typed/isNumber.d.ts +16 -0
  557. package/dist/typed/isNumber.d.ts.map +1 -0
  558. package/dist/typed/isNumber.js +8 -8
  559. package/dist/typed/isNumber.js.map +1 -1
  560. package/dist/typed/isObject.cjs +2 -2
  561. package/dist/typed/isObject.cjs.map +1 -1
  562. package/dist/typed/isObject.d.ts +19 -0
  563. package/dist/typed/isObject.d.ts.map +1 -0
  564. package/dist/typed/isObject.js +8 -8
  565. package/dist/typed/isObject.js.map +1 -1
  566. package/dist/typed/isOdd.cjs +2 -2
  567. package/dist/typed/isOdd.cjs.map +1 -1
  568. package/dist/typed/isOdd.d.ts +9 -0
  569. package/dist/typed/isOdd.d.ts.map +1 -0
  570. package/dist/typed/isOdd.js +7 -6
  571. package/dist/typed/isOdd.js.map +1 -1
  572. package/dist/typed/isPositive.cjs +2 -2
  573. package/dist/typed/isPositive.cjs.map +1 -1
  574. package/dist/typed/isPositive.d.ts +26 -0
  575. package/dist/typed/isPositive.d.ts.map +1 -0
  576. package/dist/typed/isPositive.js +7 -6
  577. package/dist/typed/isPositive.js.map +1 -1
  578. package/dist/typed/isPrimitive.cjs +2 -2
  579. package/dist/typed/isPrimitive.cjs.map +1 -1
  580. package/dist/typed/isPrimitive.d.ts +18 -0
  581. package/dist/typed/isPrimitive.d.ts.map +1 -0
  582. package/dist/typed/isPrimitive.js +8 -9
  583. package/dist/typed/isPrimitive.js.map +1 -1
  584. package/dist/typed/isPromise.cjs +2 -2
  585. package/dist/typed/isPromise.cjs.map +1 -1
  586. package/dist/typed/isPromise.d.ts +17 -0
  587. package/dist/typed/isPromise.d.ts.map +1 -0
  588. package/dist/typed/isPromise.js +7 -9
  589. package/dist/typed/isPromise.js.map +1 -1
  590. package/dist/typed/isRegex.cjs +2 -2
  591. package/dist/typed/isRegex.cjs.map +1 -1
  592. package/dist/typed/isRegex.d.ts +21 -0
  593. package/dist/typed/isRegex.d.ts.map +1 -0
  594. package/dist/typed/isRegex.js +7 -6
  595. package/dist/typed/isRegex.js.map +1 -1
  596. package/dist/typed/isString.cjs +2 -2
  597. package/dist/typed/isString.cjs.map +1 -1
  598. package/dist/typed/isString.d.ts +16 -0
  599. package/dist/typed/isString.d.ts.map +1 -0
  600. package/dist/typed/isString.js +8 -8
  601. package/dist/typed/isString.js.map +1 -1
  602. package/dist/typed/isWithin.cjs +2 -2
  603. package/dist/typed/isWithin.cjs.map +1 -1
  604. package/dist/typed/isWithin.d.ts +20 -0
  605. package/dist/typed/isWithin.d.ts.map +1 -0
  606. package/dist/typed/isWithin.js +9 -9
  607. package/dist/typed/isWithin.js.map +1 -1
  608. package/dist/typed/isZero.cjs +2 -2
  609. package/dist/typed/isZero.cjs.map +1 -1
  610. package/dist/typed/isZero.d.ts +25 -0
  611. package/dist/typed/isZero.d.ts.map +1 -0
  612. package/dist/typed/isZero.js +7 -6
  613. package/dist/typed/isZero.js.map +1 -1
  614. package/dist/typed/typeOf.cjs +2 -2
  615. package/dist/typed/typeOf.cjs.map +1 -1
  616. package/dist/typed/typeOf.d.ts +30 -0
  617. package/dist/typed/typeOf.d.ts.map +1 -0
  618. package/dist/typed/typeOf.js +11 -13
  619. package/dist/typed/typeOf.js.map +1 -1
  620. package/dist/types.d.ts +9 -0
  621. package/dist/types.d.ts.map +1 -0
  622. package/package.json +77 -12
  623. package/dist/array/aggregate.cjs +0 -2
  624. package/dist/array/aggregate.cjs.map +0 -1
  625. package/dist/array/aggregate.js +0 -16
  626. package/dist/array/aggregate.js.map +0 -1
  627. package/dist/array/alternate.cjs +0 -2
  628. package/dist/array/alternate.cjs.map +0 -1
  629. package/dist/array/alternate.js +0 -9
  630. package/dist/array/alternate.js.map +0 -1
  631. package/dist/array/arrange.cjs +0 -2
  632. package/dist/array/arrange.cjs.map +0 -1
  633. package/dist/array/arrange.js +0 -6
  634. package/dist/array/arrange.js.map +0 -1
  635. package/dist/array/compact.cjs +0 -2
  636. package/dist/array/compact.cjs.map +0 -1
  637. package/dist/array/compact.js +0 -9
  638. package/dist/array/compact.js.map +0 -1
  639. package/dist/array/every.cjs +0 -2
  640. package/dist/array/every.cjs.map +0 -1
  641. package/dist/array/every.js +0 -14
  642. package/dist/array/every.js.map +0 -1
  643. package/dist/array/filter.cjs +0 -2
  644. package/dist/array/filter.cjs.map +0 -1
  645. package/dist/array/filter.js +0 -14
  646. package/dist/array/filter.js.map +0 -1
  647. package/dist/array/find.cjs +0 -2
  648. package/dist/array/find.cjs.map +0 -1
  649. package/dist/array/find.js +0 -14
  650. package/dist/array/find.js.map +0 -1
  651. package/dist/array/findIndex.cjs +0 -2
  652. package/dist/array/findIndex.cjs.map +0 -1
  653. package/dist/array/findIndex.js +0 -14
  654. package/dist/array/findIndex.js.map +0 -1
  655. package/dist/array/findLast.cjs +0 -2
  656. package/dist/array/findLast.cjs.map +0 -1
  657. package/dist/array/findLast.js +0 -14
  658. package/dist/array/findLast.js.map +0 -1
  659. package/dist/array/flatten.cjs +0 -2
  660. package/dist/array/flatten.cjs.map +0 -1
  661. package/dist/array/flatten.js +0 -7
  662. package/dist/array/flatten.js.map +0 -1
  663. package/dist/array/map.cjs +0 -2
  664. package/dist/array/map.cjs.map +0 -1
  665. package/dist/array/map.js +0 -18
  666. package/dist/array/map.js.map +0 -1
  667. package/dist/array/reduce.cjs +0 -2
  668. package/dist/array/reduce.cjs.map +0 -1
  669. package/dist/array/reduce.js +0 -16
  670. package/dist/array/reduce.js.map +0 -1
  671. package/dist/array/shift.cjs +0 -2
  672. package/dist/array/shift.cjs.map +0 -1
  673. package/dist/array/shift.js +0 -13
  674. package/dist/array/shift.js.map +0 -1
  675. package/dist/array/some.cjs +0 -2
  676. package/dist/array/some.cjs.map +0 -1
  677. package/dist/array/some.js +0 -14
  678. package/dist/array/some.js.map +0 -1
  679. package/dist/array/substitute.cjs +0 -2
  680. package/dist/array/substitute.cjs.map +0 -1
  681. package/dist/array/substitute.js +0 -13
  682. package/dist/array/substitute.js.map +0 -1
  683. package/dist/async/delay.cjs +0 -2
  684. package/dist/async/delay.cjs.map +0 -1
  685. package/dist/async/delay.js +0 -8
  686. package/dist/async/delay.js.map +0 -1
  687. package/dist/function/proxy.cjs +0 -2
  688. package/dist/function/proxy.cjs.map +0 -1
  689. package/dist/function/proxy.js +0 -22
  690. package/dist/function/proxy.js.map +0 -1
  691. package/dist/function/prune.cjs +0 -2
  692. package/dist/function/prune.cjs.map +0 -1
  693. package/dist/function/prune.js +0 -30
  694. package/dist/function/prune.js.map +0 -1
  695. package/dist/function/worker.cjs +0 -14
  696. package/dist/function/worker.cjs.map +0 -1
  697. package/dist/function/worker.js +0 -29
  698. package/dist/function/worker.js.map +0 -1
  699. package/dist/index.cjs.map +0 -1
  700. package/dist/index.js.map +0 -1
  701. package/dist/logit/dist/logit.cjs +0 -2
  702. package/dist/logit/dist/logit.cjs.map +0 -1
  703. package/dist/logit/dist/logit.js +0 -263
  704. package/dist/logit/dist/logit.js.map +0 -1
  705. package/dist/math/add.cjs +0 -2
  706. package/dist/math/add.cjs.map +0 -1
  707. package/dist/math/add.js +0 -9
  708. package/dist/math/add.js.map +0 -1
  709. package/dist/math/boil.cjs +0 -2
  710. package/dist/math/boil.cjs.map +0 -1
  711. package/dist/math/boil.js +0 -17
  712. package/dist/math/boil.js.map +0 -1
  713. package/dist/math/divide.cjs +0 -2
  714. package/dist/math/divide.cjs.map +0 -1
  715. package/dist/math/divide.js +0 -11
  716. package/dist/math/divide.js.map +0 -1
  717. package/dist/math/multiply.cjs +0 -2
  718. package/dist/math/multiply.cjs.map +0 -1
  719. package/dist/math/multiply.js +0 -9
  720. package/dist/math/multiply.js.map +0 -1
  721. package/dist/math/rate.cjs +0 -2
  722. package/dist/math/rate.cjs.map +0 -1
  723. package/dist/math/rate.js +0 -9
  724. package/dist/math/rate.js.map +0 -1
  725. package/dist/math/subtract.cjs +0 -2
  726. package/dist/math/subtract.cjs.map +0 -1
  727. package/dist/math/subtract.js +0 -9
  728. package/dist/math/subtract.js.map +0 -1
  729. package/dist/object/cache.cjs +0 -2
  730. package/dist/object/cache.cjs.map +0 -1
  731. package/dist/object/cache.js +0 -63
  732. package/dist/object/cache.js.map +0 -1
  733. package/dist/object/clone.cjs +0 -2
  734. package/dist/object/clone.cjs.map +0 -1
  735. package/dist/object/clone.js +0 -17
  736. package/dist/object/clone.js.map +0 -1
  737. package/dist/object/entries.cjs +0 -2
  738. package/dist/object/entries.cjs.map +0 -1
  739. package/dist/object/entries.js +0 -9
  740. package/dist/object/entries.js.map +0 -1
  741. package/dist/object/keys.cjs +0 -2
  742. package/dist/object/keys.cjs.map +0 -1
  743. package/dist/object/keys.js +0 -9
  744. package/dist/object/keys.js.map +0 -1
  745. package/dist/object/values.cjs +0 -2
  746. package/dist/object/values.cjs.map +0 -1
  747. package/dist/object/values.js +0 -9
  748. package/dist/object/values.js.map +0 -1
  749. package/dist/typed/ge.cjs +0 -2
  750. package/dist/typed/ge.cjs.map +0 -1
  751. package/dist/typed/ge.js +0 -7
  752. package/dist/typed/ge.js.map +0 -1
  753. package/dist/typed/gt.cjs +0 -2
  754. package/dist/typed/gt.cjs.map +0 -1
  755. package/dist/typed/gt.js +0 -7
  756. package/dist/typed/gt.js.map +0 -1
  757. package/dist/typed/le.cjs +0 -2
  758. package/dist/typed/le.cjs.map +0 -1
  759. package/dist/typed/le.js +0 -7
  760. package/dist/typed/le.js.map +0 -1
  761. package/dist/typed/lt.cjs +0 -2
  762. package/dist/typed/lt.cjs.map +0 -1
  763. package/dist/typed/lt.js +0 -7
  764. package/dist/typed/lt.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"compare.cjs","sources":["../../src/function/compare.ts"],"sourcesContent":["/**\n * Compares two values and returns:\n * - 0 if they are equal\n * - 1 if the first value is greater\n * - -1 if the second value is greater\n *\n * @example\n * ```ts\n * compare('a', 'b'); // -1\n * compare(1, 2); // -1\n * compare(new Date('2023-01-01'), new Date('2023-01-02')); // -1\n * compare('a', 'a'); // 0\n * compare(1, 1); // 0\n * compare(new Date('2023-01-01'), new Date('2023-01-01')); // 0\n * ```\n *\n * @param a - The first value to compare.\n * @param b - The second value to compare.\n *\n * @returns 0 if equal, 1 if the first value is greater, -1 if the second value is greater.\n */\n// biome-ignore lint/suspicious/noExplicitAny: -\nexport const compare = (a: any, b: any): number => {\n if (a === b) return 0;\n if (a === undefined) return 1;\n if (b === undefined) return -1;\n if (a === null) return b === null ? 0 : -1;\n if (b === null) return 1;\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b);\n }\n\n if (typeof a === 'number' && typeof b === 'number') {\n return a - b;\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() - b.getTime();\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const aString = JSON.stringify(a);\n const bString = JSON.stringify(b);\n return aString.localeCompare(bString);\n }\n\n return String(a).localeCompare(String(b));\n};\n"],"names":["compare","a","b","aString","bString"],"mappings":"gFAsBO,MAAMA,EAAU,CAACC,EAAQC,IAAmB,CACjD,GAAID,IAAMC,EAAG,MAAO,GACpB,GAAID,IAAM,OAAW,MAAO,GAC5B,GAAIC,IAAM,OAAW,MAAO,GAC5B,GAAID,IAAM,KAAM,OAAOC,IAAM,KAAO,EAAI,GACxC,GAAIA,IAAM,KAAM,MAAO,GAEvB,GAAI,OAAOD,GAAM,UAAY,OAAOC,GAAM,SACxC,OAAOD,EAAE,cAAcC,CAAC,EAG1B,GAAI,OAAOD,GAAM,UAAY,OAAOC,GAAM,SACxC,OAAOD,EAAIC,EAGb,GAAID,aAAa,MAAQC,aAAa,KACpC,OAAOD,EAAE,UAAYC,EAAE,QAAA,EAGzB,GAAI,OAAOD,GAAM,UAAY,OAAOC,GAAM,SAAU,CAClD,MAAMC,EAAU,KAAK,UAAUF,CAAC,EAC1BG,EAAU,KAAK,UAAUF,CAAC,EAChC,OAAOC,EAAQ,cAAcC,CAAO,CACtC,CAEA,OAAO,OAAOH,CAAC,EAAE,cAAc,OAAOC,CAAC,CAAC,CAC1C"}
1
+ {"version":3,"file":"compare.cjs","names":[],"sources":["../../src/function/compare.ts"],"sourcesContent":["/**\n * Compares two values and returns:\n * - 0 if they are equal\n * - 1 if the first value is greater\n * - -1 if the second value is greater\n *\n * @example\n * ```ts\n * compare('a', 'b'); // -1\n * compare(1, 2); // -1\n * compare(new Date('2023-01-01'), new Date('2023-01-02')); // -1\n * compare('a', 'a'); // 0\n * compare(1, 1); // 0\n * compare(new Date('2023-01-01'), new Date('2023-01-01')); // 0\n * ```\n *\n * @param a - The first value to compare.\n * @param b - The second value to compare.\n *\n * @returns 0 if equal, 1 if the first value is greater, -1 if the second value is greater.\n */\nexport const compare = (a: unknown, b: unknown): number => {\n if (a === b) return 0;\n\n if (a === undefined) return 1;\n\n if (b === undefined) return -1;\n\n if (a === null) return b === null ? 0 : -1;\n\n if (b === null) return 1;\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b);\n }\n\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a > b ? 1 : -1;\n }\n\n if (a instanceof Date && b instanceof Date) {\n const at = a.getTime();\n const bt = b.getTime();\n\n return at === bt ? 0 : at > bt ? 1 : -1;\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const aString = JSON.stringify(a);\n const bString = JSON.stringify(b);\n\n return aString.localeCompare(bString);\n }\n\n return String(a).localeCompare(String(b));\n};\n"],"mappings":"AAqBA,IAAa,GAAW,EAAY,IAAuB,CACzD,GAAI,IAAM,EAAG,MAAO,GAEpB,GAAI,IAAM,IAAA,GAAW,MAAO,GAE5B,GAAI,IAAM,IAAA,GAAW,MAAO,GAE5B,GAAI,IAAM,KAAM,OAAO,IAAM,KAAO,EAAI,GAExC,GAAI,IAAM,KAAM,MAAO,GAEvB,GAAI,OAAO,GAAM,UAAY,OAAO,GAAM,SACxC,OAAO,EAAE,cAAc,EAAE,CAG3B,GAAI,OAAO,GAAM,UAAY,OAAO,GAAM,SACxC,OAAO,IAAM,EAAI,EAAI,EAAI,EAAI,EAAI,GAGnC,GAAI,aAAa,MAAQ,aAAa,KAAM,CAC1C,IAAM,EAAK,EAAE,SAAS,CAChB,EAAK,EAAE,SAAS,CAEtB,OAAO,IAAO,EAAK,EAAI,EAAK,EAAK,EAAI,GAGvC,GAAI,OAAO,GAAM,UAAY,OAAO,GAAM,SAAU,CAClD,IAAM,EAAU,KAAK,UAAU,EAAE,CAC3B,EAAU,KAAK,UAAU,EAAE,CAEjC,OAAO,EAAQ,cAAc,EAAQ,CAGvC,OAAO,OAAO,EAAE,CAAC,cAAc,OAAO,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Compares two values and returns:
3
+ * - 0 if they are equal
4
+ * - 1 if the first value is greater
5
+ * - -1 if the second value is greater
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * compare('a', 'b'); // -1
10
+ * compare(1, 2); // -1
11
+ * compare(new Date('2023-01-01'), new Date('2023-01-02')); // -1
12
+ * compare('a', 'a'); // 0
13
+ * compare(1, 1); // 0
14
+ * compare(new Date('2023-01-01'), new Date('2023-01-01')); // 0
15
+ * ```
16
+ *
17
+ * @param a - The first value to compare.
18
+ * @param b - The second value to compare.
19
+ *
20
+ * @returns 0 if equal, 1 if the first value is greater, -1 if the second value is greater.
21
+ */
22
+ export declare const compare: (a: unknown, b: unknown) => number;
23
+ //# sourceMappingURL=compare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/function/compare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,KAAG,MAkChD,CAAC"}
@@ -1,22 +1,23 @@
1
- const i = (t, e) => {
2
- if (t === e) return 0;
3
- if (t === void 0) return 1;
4
- if (e === void 0) return -1;
5
- if (t === null) return e === null ? 0 : -1;
6
- if (e === null) return 1;
7
- if (typeof t == "string" && typeof e == "string")
8
- return t.localeCompare(e);
9
- if (typeof t == "number" && typeof e == "number")
10
- return t - e;
11
- if (t instanceof Date && e instanceof Date)
12
- return t.getTime() - e.getTime();
13
- if (typeof t == "object" && typeof e == "object") {
14
- const r = JSON.stringify(t), n = JSON.stringify(e);
15
- return r.localeCompare(n);
16
- }
17
- return String(t).localeCompare(String(e));
1
+ //#region src/function/compare.ts
2
+ var e = (e, t) => {
3
+ if (e === t) return 0;
4
+ if (e === void 0) return 1;
5
+ if (t === void 0) return -1;
6
+ if (e === null) return t === null ? 0 : -1;
7
+ if (t === null) return 1;
8
+ if (typeof e == "string" && typeof t == "string") return e.localeCompare(t);
9
+ if (typeof e == "number" && typeof t == "number") return e === t ? 0 : e > t ? 1 : -1;
10
+ if (e instanceof Date && t instanceof Date) {
11
+ let n = e.getTime(), r = t.getTime();
12
+ return n === r ? 0 : n > r ? 1 : -1;
13
+ }
14
+ if (typeof e == "object" && typeof t == "object") {
15
+ let n = JSON.stringify(e), r = JSON.stringify(t);
16
+ return n.localeCompare(r);
17
+ }
18
+ return String(e).localeCompare(String(t));
18
19
  };
19
- export {
20
- i as compare
21
- };
22
- //# sourceMappingURL=compare.js.map
20
+ //#endregion
21
+ export { e as compare };
22
+
23
+ //# sourceMappingURL=compare.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sources":["../../src/function/compare.ts"],"sourcesContent":["/**\n * Compares two values and returns:\n * - 0 if they are equal\n * - 1 if the first value is greater\n * - -1 if the second value is greater\n *\n * @example\n * ```ts\n * compare('a', 'b'); // -1\n * compare(1, 2); // -1\n * compare(new Date('2023-01-01'), new Date('2023-01-02')); // -1\n * compare('a', 'a'); // 0\n * compare(1, 1); // 0\n * compare(new Date('2023-01-01'), new Date('2023-01-01')); // 0\n * ```\n *\n * @param a - The first value to compare.\n * @param b - The second value to compare.\n *\n * @returns 0 if equal, 1 if the first value is greater, -1 if the second value is greater.\n */\n// biome-ignore lint/suspicious/noExplicitAny: -\nexport const compare = (a: any, b: any): number => {\n if (a === b) return 0;\n if (a === undefined) return 1;\n if (b === undefined) return -1;\n if (a === null) return b === null ? 0 : -1;\n if (b === null) return 1;\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b);\n }\n\n if (typeof a === 'number' && typeof b === 'number') {\n return a - b;\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() - b.getTime();\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const aString = JSON.stringify(a);\n const bString = JSON.stringify(b);\n return aString.localeCompare(bString);\n }\n\n return String(a).localeCompare(String(b));\n};\n"],"names":["compare","a","b","aString","bString"],"mappings":"AAsBO,MAAMA,IAAU,CAACC,GAAQC,MAAmB;AACjD,MAAID,MAAMC,EAAG,QAAO;AACpB,MAAID,MAAM,OAAW,QAAO;AAC5B,MAAIC,MAAM,OAAW,QAAO;AAC5B,MAAID,MAAM,KAAM,QAAOC,MAAM,OAAO,IAAI;AACxC,MAAIA,MAAM,KAAM,QAAO;AAEvB,MAAI,OAAOD,KAAM,YAAY,OAAOC,KAAM;AACxC,WAAOD,EAAE,cAAcC,CAAC;AAG1B,MAAI,OAAOD,KAAM,YAAY,OAAOC,KAAM;AACxC,WAAOD,IAAIC;AAGb,MAAID,aAAa,QAAQC,aAAa;AACpC,WAAOD,EAAE,YAAYC,EAAE,QAAA;AAGzB,MAAI,OAAOD,KAAM,YAAY,OAAOC,KAAM,UAAU;AAClD,UAAMC,IAAU,KAAK,UAAUF,CAAC,GAC1BG,IAAU,KAAK,UAAUF,CAAC;AAChC,WAAOC,EAAQ,cAAcC,CAAO;AAAA,EACtC;AAEA,SAAO,OAAOH,CAAC,EAAE,cAAc,OAAOC,CAAC,CAAC;AAC1C;"}
1
+ {"version":3,"file":"compare.js","names":[],"sources":["../../src/function/compare.ts"],"sourcesContent":["/**\n * Compares two values and returns:\n * - 0 if they are equal\n * - 1 if the first value is greater\n * - -1 if the second value is greater\n *\n * @example\n * ```ts\n * compare('a', 'b'); // -1\n * compare(1, 2); // -1\n * compare(new Date('2023-01-01'), new Date('2023-01-02')); // -1\n * compare('a', 'a'); // 0\n * compare(1, 1); // 0\n * compare(new Date('2023-01-01'), new Date('2023-01-01')); // 0\n * ```\n *\n * @param a - The first value to compare.\n * @param b - The second value to compare.\n *\n * @returns 0 if equal, 1 if the first value is greater, -1 if the second value is greater.\n */\nexport const compare = (a: unknown, b: unknown): number => {\n if (a === b) return 0;\n\n if (a === undefined) return 1;\n\n if (b === undefined) return -1;\n\n if (a === null) return b === null ? 0 : -1;\n\n if (b === null) return 1;\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b);\n }\n\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a > b ? 1 : -1;\n }\n\n if (a instanceof Date && b instanceof Date) {\n const at = a.getTime();\n const bt = b.getTime();\n\n return at === bt ? 0 : at > bt ? 1 : -1;\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const aString = JSON.stringify(a);\n const bString = JSON.stringify(b);\n\n return aString.localeCompare(bString);\n }\n\n return String(a).localeCompare(String(b));\n};\n"],"mappings":";AAqBA,IAAa,KAAW,GAAY,MAAuB;AACzD,KAAI,MAAM,EAAG,QAAO;AAEpB,KAAI,MAAM,KAAA,EAAW,QAAO;AAE5B,KAAI,MAAM,KAAA,EAAW,QAAO;AAE5B,KAAI,MAAM,KAAM,QAAO,MAAM,OAAO,IAAI;AAExC,KAAI,MAAM,KAAM,QAAO;AAEvB,KAAI,OAAO,KAAM,YAAY,OAAO,KAAM,SACxC,QAAO,EAAE,cAAc,EAAE;AAG3B,KAAI,OAAO,KAAM,YAAY,OAAO,KAAM,SACxC,QAAO,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI;AAGnC,KAAI,aAAa,QAAQ,aAAa,MAAM;EAC1C,IAAM,IAAK,EAAE,SAAS,EAChB,IAAK,EAAE,SAAS;AAEtB,SAAO,MAAO,IAAK,IAAI,IAAK,IAAK,IAAI;;AAGvC,KAAI,OAAO,KAAM,YAAY,OAAO,KAAM,UAAU;EAClD,IAAM,IAAU,KAAK,UAAU,EAAE,EAC3B,IAAU,KAAK,UAAU,EAAE;AAEjC,SAAO,EAAQ,cAAc,EAAQ;;AAGvC,QAAO,OAAO,EAAE,CAAC,cAAc,OAAO,EAAE,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./compare.cjs"),p=t=>{const o=Object.entries(t);return(c,n)=>{for(const[e,s]of o){const i=c[e],u=n[e],a=s==="desc"?-1:1,r=m.compare(i,u);if(r!==0)return r*a}return 0}};exports.compareBy=p;
2
- //# sourceMappingURL=compareBy.cjs.map
1
+ const e=require(`./compare.cjs`);var t=t=>{let n=Object.entries(t);return(t,r)=>{for(let[i,a]of n){let n=t[i],o=r[i],s=a===`desc`?-1:1,c=e.compare(n,o);if(c!==0)return c*s}return 0}};exports.compareBy=t;
2
+ //# sourceMappingURL=compareBy.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"compareBy.cjs","sources":["../../src/function/compareBy.ts"],"sourcesContent":["import { compare } from './compare';\n\n/**\n * Compares two objects based on multiple selectors.\n * The comparison is done in the order of the selectors provided.\n * Each selector can be 'asc' for ascending or 'desc' for descending order.\n *\n * @example\n * ```ts\n * const compareByNameAndAge = compareBy<{ name: string; age: number }>({\n * name: 'asc',\n * age: 'desc',\n * });\n *\n * const a = { name: 'Alice', age: 30 };\n * const b = { name: 'Bob', age: 25 };\n *\n * console.log(compareByNameAndAge(a, b)); // -1 (Alice < Bob)\n * ```\n *\n * @param selectors - An object where keys are properties to compare and values are 'asc' or 'desc'.\n *\n * @returns A comparison function that can be used with array sorting methods.\n */\nexport const compareBy = <T>(selectors: Partial<Record<keyof T, 'asc' | 'desc'>>) => {\n const entries = Object.entries(selectors) as [keyof T, 'asc' | 'desc'][];\n\n return (a: T, b: T) => {\n for (const [key, direction] of entries) {\n const v1 = a[key];\n const v2 = b[key];\n const dir = direction === 'desc' ? -1 : 1;\n\n const cmp = compare(v1, v2);\n if (cmp !== 0) return cmp * dir;\n }\n\n return 0;\n };\n};\n"],"names":["compareBy","selectors","entries","a","b","key","direction","v1","v2","dir","cmp","compare"],"mappings":"iHAwBaA,EAAgBC,GAAwD,CACnF,MAAMC,EAAU,OAAO,QAAQD,CAAS,EAExC,MAAO,CAACE,EAAMC,IAAS,CACrB,SAAW,CAACC,EAAKC,CAAS,IAAKJ,EAAS,CACtC,MAAMK,EAAKJ,EAAEE,CAAG,EACVG,EAAKJ,EAAEC,CAAG,EACVI,EAAMH,IAAc,OAAS,GAAK,EAElCI,EAAMC,EAAAA,QAAQJ,EAAIC,CAAE,EAC1B,GAAIE,IAAQ,EAAG,OAAOA,EAAMD,CAC9B,CAEA,MAAO,EACT,CACF"}
1
+ {"version":3,"file":"compareBy.cjs","names":[],"sources":["../../src/function/compareBy.ts"],"sourcesContent":["import { compare } from './compare';\n\n/**\n * Compares two objects based on multiple selectors.\n * The comparison is done in the order of the selectors provided.\n * Each selector can be 'asc' for ascending or 'desc' for descending order.\n *\n * @example\n * ```ts\n * const compareByNameAndAge = compareBy<{ name: string; age: number }>({\n * name: 'asc',\n * age: 'desc',\n * });\n *\n * const a = { name: 'Alice', age: 30 };\n * const b = { name: 'Bob', age: 25 };\n *\n * console.log(compareByNameAndAge(a, b)); // -1 (Alice < Bob)\n * ```\n *\n * @param selectors - An object where keys are properties to compare and values are 'asc' or 'desc'.\n *\n * @returns A comparison function that can be used with array sorting methods.\n */\nexport const compareBy = <T>(selectors: Partial<Record<keyof T, 'asc' | 'desc'>>) => {\n const entries = Object.entries(selectors) as [keyof T, 'asc' | 'desc'][];\n\n return (a: T, b: T) => {\n for (const [key, direction] of entries) {\n const v1 = a[key];\n const v2 = b[key];\n const dir = direction === 'desc' ? -1 : 1;\n\n const cmp = compare(v1, v2);\n\n if (cmp !== 0) return cmp * dir;\n }\n\n return 0;\n };\n};\n"],"mappings":"iCAwBA,IAAa,EAAgB,GAAwD,CACnF,IAAM,EAAU,OAAO,QAAQ,EAAU,CAEzC,OAAQ,EAAM,IAAS,CACrB,IAAK,GAAM,CAAC,EAAK,KAAc,EAAS,CACtC,IAAM,EAAK,EAAE,GACP,EAAK,EAAE,GACP,EAAM,IAAc,OAAS,GAAK,EAElC,EAAM,EAAA,QAAQ,EAAI,EAAG,CAE3B,GAAI,IAAQ,EAAG,OAAO,EAAM,EAG9B,MAAO"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Compares two objects based on multiple selectors.
3
+ * The comparison is done in the order of the selectors provided.
4
+ * Each selector can be 'asc' for ascending or 'desc' for descending order.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const compareByNameAndAge = compareBy<{ name: string; age: number }>({
9
+ * name: 'asc',
10
+ * age: 'desc',
11
+ * });
12
+ *
13
+ * const a = { name: 'Alice', age: 30 };
14
+ * const b = { name: 'Bob', age: 25 };
15
+ *
16
+ * console.log(compareByNameAndAge(a, b)); // -1 (Alice < Bob)
17
+ * ```
18
+ *
19
+ * @param selectors - An object where keys are properties to compare and values are 'asc' or 'desc'.
20
+ *
21
+ * @returns A comparison function that can be used with array sorting methods.
22
+ */
23
+ export declare const compareBy: <T>(selectors: Partial<Record<keyof T, "asc" | "desc">>) => (a: T, b: T) => number;
24
+ //# sourceMappingURL=compareBy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareBy.d.ts","sourceRoot":"","sources":["../../src/function/compareBy.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,WAAW,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,MAGtE,GAAG,CAAC,EAAE,GAAG,CAAC,WAanB,CAAC"}
@@ -1,15 +1,16 @@
1
- import { compare as f } from "./compare.js";
2
- const u = (o) => {
3
- const e = Object.entries(o);
4
- return (c, n) => {
5
- for (const [r, s] of e) {
6
- const i = c[r], m = n[r], p = s === "desc" ? -1 : 1, t = f(i, m);
7
- if (t !== 0) return t * p;
8
- }
9
- return 0;
10
- };
1
+ import { compare as e } from "./compare.js";
2
+ //#region src/function/compareBy.ts
3
+ var t = (t) => {
4
+ let n = Object.entries(t);
5
+ return (t, r) => {
6
+ for (let [i, a] of n) {
7
+ let n = t[i], o = r[i], s = a === "desc" ? -1 : 1, c = e(n, o);
8
+ if (c !== 0) return c * s;
9
+ }
10
+ return 0;
11
+ };
11
12
  };
12
- export {
13
- u as compareBy
14
- };
15
- //# sourceMappingURL=compareBy.js.map
13
+ //#endregion
14
+ export { t as compareBy };
15
+
16
+ //# sourceMappingURL=compareBy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compareBy.js","sources":["../../src/function/compareBy.ts"],"sourcesContent":["import { compare } from './compare';\n\n/**\n * Compares two objects based on multiple selectors.\n * The comparison is done in the order of the selectors provided.\n * Each selector can be 'asc' for ascending or 'desc' for descending order.\n *\n * @example\n * ```ts\n * const compareByNameAndAge = compareBy<{ name: string; age: number }>({\n * name: 'asc',\n * age: 'desc',\n * });\n *\n * const a = { name: 'Alice', age: 30 };\n * const b = { name: 'Bob', age: 25 };\n *\n * console.log(compareByNameAndAge(a, b)); // -1 (Alice < Bob)\n * ```\n *\n * @param selectors - An object where keys are properties to compare and values are 'asc' or 'desc'.\n *\n * @returns A comparison function that can be used with array sorting methods.\n */\nexport const compareBy = <T>(selectors: Partial<Record<keyof T, 'asc' | 'desc'>>) => {\n const entries = Object.entries(selectors) as [keyof T, 'asc' | 'desc'][];\n\n return (a: T, b: T) => {\n for (const [key, direction] of entries) {\n const v1 = a[key];\n const v2 = b[key];\n const dir = direction === 'desc' ? -1 : 1;\n\n const cmp = compare(v1, v2);\n if (cmp !== 0) return cmp * dir;\n }\n\n return 0;\n };\n};\n"],"names":["compareBy","selectors","entries","a","b","key","direction","v1","v2","dir","cmp","compare"],"mappings":";AAwBO,MAAMA,IAAY,CAAIC,MAAwD;AACnF,QAAMC,IAAU,OAAO,QAAQD,CAAS;AAExC,SAAO,CAACE,GAAMC,MAAS;AACrB,eAAW,CAACC,GAAKC,CAAS,KAAKJ,GAAS;AACtC,YAAMK,IAAKJ,EAAEE,CAAG,GACVG,IAAKJ,EAAEC,CAAG,GACVI,IAAMH,MAAc,SAAS,KAAK,GAElCI,IAAMC,EAAQJ,GAAIC,CAAE;AAC1B,UAAIE,MAAQ,EAAG,QAAOA,IAAMD;AAAA,IAC9B;AAEA,WAAO;AAAA,EACT;AACF;"}
1
+ {"version":3,"file":"compareBy.js","names":[],"sources":["../../src/function/compareBy.ts"],"sourcesContent":["import { compare } from './compare';\n\n/**\n * Compares two objects based on multiple selectors.\n * The comparison is done in the order of the selectors provided.\n * Each selector can be 'asc' for ascending or 'desc' for descending order.\n *\n * @example\n * ```ts\n * const compareByNameAndAge = compareBy<{ name: string; age: number }>({\n * name: 'asc',\n * age: 'desc',\n * });\n *\n * const a = { name: 'Alice', age: 30 };\n * const b = { name: 'Bob', age: 25 };\n *\n * console.log(compareByNameAndAge(a, b)); // -1 (Alice < Bob)\n * ```\n *\n * @param selectors - An object where keys are properties to compare and values are 'asc' or 'desc'.\n *\n * @returns A comparison function that can be used with array sorting methods.\n */\nexport const compareBy = <T>(selectors: Partial<Record<keyof T, 'asc' | 'desc'>>) => {\n const entries = Object.entries(selectors) as [keyof T, 'asc' | 'desc'][];\n\n return (a: T, b: T) => {\n for (const [key, direction] of entries) {\n const v1 = a[key];\n const v2 = b[key];\n const dir = direction === 'desc' ? -1 : 1;\n\n const cmp = compare(v1, v2);\n\n if (cmp !== 0) return cmp * dir;\n }\n\n return 0;\n };\n};\n"],"mappings":";;AAwBA,IAAa,KAAgB,MAAwD;CACnF,IAAM,IAAU,OAAO,QAAQ,EAAU;AAEzC,SAAQ,GAAM,MAAS;AACrB,OAAK,IAAM,CAAC,GAAK,MAAc,GAAS;GACtC,IAAM,IAAK,EAAE,IACP,IAAK,EAAE,IACP,IAAM,MAAc,SAAS,KAAK,GAElC,IAAM,EAAQ,GAAI,EAAG;AAE3B,OAAI,MAAQ,EAAG,QAAO,IAAM;;AAG9B,SAAO"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../typed/isPromise.cjs"),n=require("./assert.cjs");function u(...e){n.assert(e.length>0,"compose requires at least one function",{args:{fns:e}});const o=e[e.length-1],r=e.slice(0,-1);return((...i)=>r.reduceRight((t,s)=>c.isPromise(t)?t.then(s):s(t),o(...i)))}exports.compose=u;
2
- //# sourceMappingURL=compose.cjs.map
1
+ const e=require(`./assert.cjs`);function t(...t){e.assert(t.length>0,`compose requires at least one function`,{args:{fns:t}});let n=t[t.length-1],r=t.slice(0,-1);return((...e)=>r.reduceRight((e,t)=>t(e),n(...e)))}exports.compose=t;
2
+ //# sourceMappingURL=compose.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"compose.cjs","sources":["../../src/function/compose.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: - */\n\nimport { isPromise } from '../typed/isPromise';\nimport type { FnDynamic } from '../types';\nimport { assert } from './assert';\n\ntype LastParameters<T> = T extends [...any, infer Last extends FnDynamic] ? Parameters<Last> : never;\ntype FirstReturnType<F> = F extends [infer First extends FnDynamic, ...any] ? ReturnType<First> : never;\ntype ComposeReturn<T extends FnDynamic[]> = (\n ...args: LastParameters<T>\n) => FirstReturnType<T> extends Promise<any> ? Promise<Awaited<FirstReturnType<T>>> : FirstReturnType<T>;\n/**\n * Composes multiple functions into a single function. It starts from the rightmost function and proceeds to the left.\n *\n * @example\n * ```ts\n * const add = (x) => x + 2;\n * const multiply = (x) => x * 3;\n * const subtract = (x) => x - 4;\n * const composedFn = compose(subtract, multiply, add);\n * composedFn(5); // ((5 + 2) * 3) - 4 = 17\n * ```\n *\n * @example\n * ```ts\n * const square = async (x) => x * x;\n * const add = async (x) => x + 2;\n * const composedFn = compose(square, add);\n * await composedFn(4); // (4 * 4) + 2 = 18\n * ```\n *\n * @param fns - List of the functions to be composed.\n *\n * @returns A new function that is the composition of the input functions.\n */\nexport function compose<T extends FnDynamic[]>(...fns: T): ComposeReturn<T> {\n assert(fns.length > 0, 'compose requires at least one function', { args: { fns } });\n\n const lastFn = fns[fns.length - 1];\n const restFns = fns.slice(0, -1);\n\n return ((...args: LastParameters<T>) =>\n restFns.reduceRight(\n (prev, fn) => (isPromise(prev) ? prev.then(fn) : fn(prev)),\n lastFn(...args),\n )) as ComposeReturn<T>;\n}\n"],"names":["compose","fns","assert","lastFn","restFns","args","prev","fn","isPromise"],"mappings":"oJAmCO,SAASA,KAAkCC,EAA0B,CAC1EC,SAAOD,EAAI,OAAS,EAAG,yCAA0C,CAAE,KAAM,CAAE,IAAAA,CAAA,EAAO,EAElF,MAAME,EAASF,EAAIA,EAAI,OAAS,CAAC,EAC3BG,EAAUH,EAAI,MAAM,EAAG,EAAE,EAE/B,OAAQ,IAAII,IACVD,EAAQ,YACN,CAACE,EAAMC,IAAQC,EAAAA,UAAUF,CAAI,EAAIA,EAAK,KAAKC,CAAE,EAAIA,EAAGD,CAAI,EACxDH,EAAO,GAAGE,CAAI,CAAA,EAEpB"}
1
+ {"version":3,"file":"compose.cjs","names":[],"sources":["../../src/function/compose.ts"],"sourcesContent":["import type { Fn } from '../types';\n\nimport { assert } from './assert';\n\ntype LastParameters<T> = T extends [...any, infer Last extends Fn] ? Parameters<Last> : never;\ntype FirstReturnType<F> = F extends [infer First extends Fn, ...any] ? ReturnType<First> : never;\n\n/**\n * Composes multiple functions into a single function. It starts from the rightmost function and proceeds to the left.\n *\n * @example\n * ```ts\n * const add = (x) => x + 2;\n * const multiply = (x) => x * 3;\n * const subtract = (x) => x - 4;\n * const composedFn = compose(subtract, multiply, add);\n * composedFn(5); // ((5 + 2) * 3) - 4 = 17\n * ```\n *\n * @param fns - List of the functions to be composed.\n *\n * @returns A new function that is the composition of the input functions.\n */\nexport function compose<T extends Fn[]>(...fns: T): (...args: LastParameters<T>) => FirstReturnType<T> {\n assert(fns.length > 0, 'compose requires at least one function', { args: { fns } });\n\n const lastFn = fns[fns.length - 1];\n const restFns = fns.slice(0, -1);\n\n return ((...args: LastParameters<T>) => restFns.reduceRight((prev, fn) => fn(prev), lastFn(...args))) as (\n ...args: LastParameters<T>\n ) => FirstReturnType<T>;\n}\n"],"mappings":"gCAuBA,SAAgB,EAAwB,GAAG,EAA4D,CACrG,EAAA,OAAO,EAAI,OAAS,EAAG,yCAA0C,CAAE,KAAM,CAAE,MAAK,CAAE,CAAC,CAEnF,IAAM,EAAS,EAAI,EAAI,OAAS,GAC1B,EAAU,EAAI,MAAM,EAAG,GAAG,CAEhC,QAAS,GAAG,IAA4B,EAAQ,aAAa,EAAM,IAAO,EAAG,EAAK,CAAE,EAAO,GAAG,EAAK,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Fn } from '../types';
2
+ type LastParameters<T> = T extends [...any, infer Last extends Fn] ? Parameters<Last> : never;
3
+ type FirstReturnType<F> = F extends [infer First extends Fn, ...any] ? ReturnType<First> : never;
4
+ /**
5
+ * Composes multiple functions into a single function. It starts from the rightmost function and proceeds to the left.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * const add = (x) => x + 2;
10
+ * const multiply = (x) => x * 3;
11
+ * const subtract = (x) => x - 4;
12
+ * const composedFn = compose(subtract, multiply, add);
13
+ * composedFn(5); // ((5 + 2) * 3) - 4 = 17
14
+ * ```
15
+ *
16
+ * @param fns - List of the functions to be composed.
17
+ *
18
+ * @returns A new function that is the composition of the input functions.
19
+ */
20
+ export declare function compose<T extends Fn[]>(...fns: T): (...args: LastParameters<T>) => FirstReturnType<T>;
21
+ export {};
22
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/function/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAInC,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC9F,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAEjG;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CASrG"}
@@ -1,14 +1,11 @@
1
- import { isPromise as c } from "../typed/isPromise.js";
2
- import { assert as n } from "./assert.js";
3
- function l(...t) {
4
- n(t.length > 0, "compose requires at least one function", { args: { fns: t } });
5
- const r = t[t.length - 1], s = t.slice(0, -1);
6
- return ((...i) => s.reduceRight(
7
- (e, o) => c(e) ? e.then(o) : o(e),
8
- r(...i)
9
- ));
1
+ import { assert as e } from "./assert.js";
2
+ //#region src/function/compose.ts
3
+ function t(...t) {
4
+ e(t.length > 0, "compose requires at least one function", { args: { fns: t } });
5
+ let n = t[t.length - 1], r = t.slice(0, -1);
6
+ return ((...e) => r.reduceRight((e, t) => t(e), n(...e)));
10
7
  }
11
- export {
12
- l as compose
13
- };
14
- //# sourceMappingURL=compose.js.map
8
+ //#endregion
9
+ export { t as compose };
10
+
11
+ //# sourceMappingURL=compose.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sources":["../../src/function/compose.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: - */\n\nimport { isPromise } from '../typed/isPromise';\nimport type { FnDynamic } from '../types';\nimport { assert } from './assert';\n\ntype LastParameters<T> = T extends [...any, infer Last extends FnDynamic] ? Parameters<Last> : never;\ntype FirstReturnType<F> = F extends [infer First extends FnDynamic, ...any] ? ReturnType<First> : never;\ntype ComposeReturn<T extends FnDynamic[]> = (\n ...args: LastParameters<T>\n) => FirstReturnType<T> extends Promise<any> ? Promise<Awaited<FirstReturnType<T>>> : FirstReturnType<T>;\n/**\n * Composes multiple functions into a single function. It starts from the rightmost function and proceeds to the left.\n *\n * @example\n * ```ts\n * const add = (x) => x + 2;\n * const multiply = (x) => x * 3;\n * const subtract = (x) => x - 4;\n * const composedFn = compose(subtract, multiply, add);\n * composedFn(5); // ((5 + 2) * 3) - 4 = 17\n * ```\n *\n * @example\n * ```ts\n * const square = async (x) => x * x;\n * const add = async (x) => x + 2;\n * const composedFn = compose(square, add);\n * await composedFn(4); // (4 * 4) + 2 = 18\n * ```\n *\n * @param fns - List of the functions to be composed.\n *\n * @returns A new function that is the composition of the input functions.\n */\nexport function compose<T extends FnDynamic[]>(...fns: T): ComposeReturn<T> {\n assert(fns.length > 0, 'compose requires at least one function', { args: { fns } });\n\n const lastFn = fns[fns.length - 1];\n const restFns = fns.slice(0, -1);\n\n return ((...args: LastParameters<T>) =>\n restFns.reduceRight(\n (prev, fn) => (isPromise(prev) ? prev.then(fn) : fn(prev)),\n lastFn(...args),\n )) as ComposeReturn<T>;\n}\n"],"names":["compose","fns","assert","lastFn","restFns","args","prev","fn","isPromise"],"mappings":";;AAmCO,SAASA,KAAkCC,GAA0B;AAC1E,EAAAC,EAAOD,EAAI,SAAS,GAAG,0CAA0C,EAAE,MAAM,EAAE,KAAAA,EAAA,GAAO;AAElF,QAAME,IAASF,EAAIA,EAAI,SAAS,CAAC,GAC3BG,IAAUH,EAAI,MAAM,GAAG,EAAE;AAE/B,UAAQ,IAAII,MACVD,EAAQ;AAAA,IACN,CAACE,GAAMC,MAAQC,EAAUF,CAAI,IAAIA,EAAK,KAAKC,CAAE,IAAIA,EAAGD,CAAI;AAAA,IACxDH,EAAO,GAAGE,CAAI;AAAA,EAAA;AAEpB;"}
1
+ {"version":3,"file":"compose.js","names":[],"sources":["../../src/function/compose.ts"],"sourcesContent":["import type { Fn } from '../types';\n\nimport { assert } from './assert';\n\ntype LastParameters<T> = T extends [...any, infer Last extends Fn] ? Parameters<Last> : never;\ntype FirstReturnType<F> = F extends [infer First extends Fn, ...any] ? ReturnType<First> : never;\n\n/**\n * Composes multiple functions into a single function. It starts from the rightmost function and proceeds to the left.\n *\n * @example\n * ```ts\n * const add = (x) => x + 2;\n * const multiply = (x) => x * 3;\n * const subtract = (x) => x - 4;\n * const composedFn = compose(subtract, multiply, add);\n * composedFn(5); // ((5 + 2) * 3) - 4 = 17\n * ```\n *\n * @param fns - List of the functions to be composed.\n *\n * @returns A new function that is the composition of the input functions.\n */\nexport function compose<T extends Fn[]>(...fns: T): (...args: LastParameters<T>) => FirstReturnType<T> {\n assert(fns.length > 0, 'compose requires at least one function', { args: { fns } });\n\n const lastFn = fns[fns.length - 1];\n const restFns = fns.slice(0, -1);\n\n return ((...args: LastParameters<T>) => restFns.reduceRight((prev, fn) => fn(prev), lastFn(...args))) as (\n ...args: LastParameters<T>\n ) => FirstReturnType<T>;\n}\n"],"mappings":";;AAuBA,SAAgB,EAAwB,GAAG,GAA4D;AACrG,GAAO,EAAI,SAAS,GAAG,0CAA0C,EAAE,MAAM,EAAE,QAAK,EAAE,CAAC;CAEnF,IAAM,IAAS,EAAI,EAAI,SAAS,IAC1B,IAAU,EAAI,MAAM,GAAG,GAAG;AAEhC,UAAS,GAAG,MAA4B,EAAQ,aAAa,GAAM,MAAO,EAAG,EAAK,EAAE,EAAO,GAAG,EAAK,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function c(e,u=e.length){const t=(...r)=>r.length>=u?e(...r):(...n)=>t(...r,...n);return t}exports.curry=c;
2
- //# sourceMappingURL=curry.cjs.map
1
+ function e(e,t=e.length){let n=(...r)=>r.length>=t?e(...r):(...e)=>n(...r,...e);return n}exports.curry=e;
2
+ //# sourceMappingURL=curry.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"curry.cjs","sources":["../../src/function/curry.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: - */\n\n/**\n * Curries a function, allowing it to be called with partial arguments.\n *\n * @example\n * ```ts\n * const add = (a: number, b: number) => a + b;\n * const curriedAdd = curry(add);\n * curriedAdd(1)(2) // 3;\n * ```\n *\n * @param fn - The function to curry.\n * @param arity - The number of arguments the function expects. Defaults to the function's length.\n *\n * @returns A curried version of the function.\n */\n\n// Take first N items from tuple T\ntype Take<N extends number, T extends readonly unknown[], Acc extends readonly unknown[] = []> = Acc['length'] extends N\n ? Acc\n : T extends readonly [infer H, ...infer R]\n ? Take<N, R, readonly [...Acc, H]>\n : Acc;\n// Curried: at each step, accept a non-empty tuple of args A,\n// ensure it's a prefix of P, then either return R (if done) or recurse.\nexport type Curried<P extends readonly unknown[], R> = P extends readonly []\n ? () => R\n : <A extends readonly [unknown, ...(readonly unknown[])]>(\n ...args: A\n ) => P extends readonly [...A, ...infer Rest] ? (Rest extends readonly [] ? R : Curried<Rest, R>) : never;\n// Overloads to reflect default arity vs. a custom arity.\nexport function curry<T extends (...args: any[]) => any>(fn: T): Curried<Parameters<T>, ReturnType<T>>;\nexport function curry<T extends (...args: any[]) => any, N extends number>(\n fn: T,\n arity: N,\n): Curried<Take<N, Parameters<T>>, ReturnType<T>>;\n// Runtime implementation\nexport function curry(fn: (...args: any[]) => any, arity = fn.length) {\n const curried = (...args: any[]): any => {\n if (args.length >= arity) {\n return fn(...args);\n }\n return (...rest: any[]) => curried(...args, ...rest);\n };\n return curried as any;\n}\n"],"names":["curry","fn","arity","curried","args","rest"],"mappings":"gFAsCO,SAASA,EAAMC,EAA6BC,EAAQD,EAAG,OAAQ,CACpE,MAAME,EAAU,IAAIC,IACdA,EAAK,QAAUF,EACVD,EAAG,GAAGG,CAAI,EAEZ,IAAIC,IAAgBF,EAAQ,GAAGC,EAAM,GAAGC,CAAI,EAErD,OAAOF,CACT"}
1
+ {"version":3,"file":"curry.cjs","names":[],"sources":["../../src/function/curry.ts"],"sourcesContent":["/**\n * Curries a function, allowing it to be called with partial arguments.\n *\n * @example\n * ```ts\n * const add = (a: number, b: number) => a + b;\n * const curriedAdd = curry(add);\n * curriedAdd(1)(2) // 3;\n * ```\n *\n * @param fn - The function to curry.\n * @param arity - The number of arguments the function expects. Defaults to the function's length.\n *\n * @returns A curried version of the function.\n */\n\n// Take first N items from tuple T\ntype Take<N extends number, T extends readonly unknown[], Acc extends readonly unknown[] = []> = Acc['length'] extends N\n ? Acc\n : T extends readonly [infer H, ...infer R]\n ? Take<N, R, readonly [...Acc, H]>\n : Acc;\n// Curried: at each step, accept a non-empty tuple of args A,\n// ensure it's a prefix of P, then either return R (if done) or recurse.\nexport type Curried<P extends readonly unknown[], R> = P extends readonly []\n ? () => R\n : <A extends readonly [unknown, ...(readonly unknown[])]>(\n ...args: A\n ) => P extends readonly [...A, ...infer Rest] ? (Rest extends readonly [] ? R : Curried<Rest, R>) : never;\n// Overloads to reflect default arity vs. a custom arity.\nexport function curry<T extends (...args: any[]) => any>(fn: T): Curried<Parameters<T>, ReturnType<T>>;\nexport function curry<T extends (...args: any[]) => any, N extends number>(\n fn: T,\n arity: N,\n): Curried<Take<N, Parameters<T>>, ReturnType<T>>;\n// Runtime implementation\nexport function curry(fn: (...args: any[]) => any, arity = fn.length) {\n const curried = (...args: any[]): any => {\n if (args.length >= arity) {\n return fn(...args);\n }\n\n return (...rest: any[]) => curried(...args, ...rest);\n };\n\n return curried as any;\n}\n"],"mappings":"AAoCA,SAAgB,EAAM,EAA6B,EAAQ,EAAG,OAAQ,CACpE,IAAM,GAAW,GAAG,IACd,EAAK,QAAU,EACV,EAAG,GAAG,EAAK,EAGZ,GAAG,IAAgB,EAAQ,GAAG,EAAM,GAAG,EAAK,CAGtD,OAAO"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Curries a function, allowing it to be called with partial arguments.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const add = (a: number, b: number) => a + b;
7
+ * const curriedAdd = curry(add);
8
+ * curriedAdd(1)(2) // 3;
9
+ * ```
10
+ *
11
+ * @param fn - The function to curry.
12
+ * @param arity - The number of arguments the function expects. Defaults to the function's length.
13
+ *
14
+ * @returns A curried version of the function.
15
+ */
16
+ type Take<N extends number, T extends readonly unknown[], Acc extends readonly unknown[] = []> = Acc['length'] extends N ? Acc : T extends readonly [infer H, ...infer R] ? Take<N, R, readonly [...Acc, H]> : Acc;
17
+ export type Curried<P extends readonly unknown[], R> = P extends readonly [] ? () => R : <A extends readonly [unknown, ...(readonly unknown[])]>(...args: A) => P extends readonly [...A, ...infer Rest] ? (Rest extends readonly [] ? R : Curried<Rest, R>) : never;
18
+ export declare function curry<T extends (...args: any[]) => any>(fn: T): Curried<Parameters<T>, ReturnType<T>>;
19
+ export declare function curry<T extends (...args: any[]) => any, N extends number>(fn: T, arity: N): Curried<Take<N, Parameters<T>>, ReturnType<T>>;
20
+ export {};
21
+ //# sourceMappingURL=curry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curry.d.ts","sourceRoot":"","sources":["../../src/function/curry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,KAAK,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,GAAG,SAAS,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GACpH,GAAG,GACH,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,GACtC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAChC,GAAG,CAAC;AAGV,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,GACxE,MAAM,CAAC,GACP,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,EACpD,GAAG,IAAI,EAAE,CAAC,KACP,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,SAAS,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAE9G,wBAAgB,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG,wBAAgB,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,CAAC,SAAS,MAAM,EACvE,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,8 +1,9 @@
1
- function c(t, n = t.length) {
2
- const e = (...r) => r.length >= n ? t(...r) : (...u) => e(...r, ...u);
3
- return e;
1
+ //#region src/function/curry.ts
2
+ function e(e, t = e.length) {
3
+ let n = (...r) => r.length >= t ? e(...r) : (...e) => n(...r, ...e);
4
+ return n;
4
5
  }
5
- export {
6
- c as curry
7
- };
8
- //# sourceMappingURL=curry.js.map
6
+ //#endregion
7
+ export { e as curry };
8
+
9
+ //# sourceMappingURL=curry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"curry.js","sources":["../../src/function/curry.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: - */\n\n/**\n * Curries a function, allowing it to be called with partial arguments.\n *\n * @example\n * ```ts\n * const add = (a: number, b: number) => a + b;\n * const curriedAdd = curry(add);\n * curriedAdd(1)(2) // 3;\n * ```\n *\n * @param fn - The function to curry.\n * @param arity - The number of arguments the function expects. Defaults to the function's length.\n *\n * @returns A curried version of the function.\n */\n\n// Take first N items from tuple T\ntype Take<N extends number, T extends readonly unknown[], Acc extends readonly unknown[] = []> = Acc['length'] extends N\n ? Acc\n : T extends readonly [infer H, ...infer R]\n ? Take<N, R, readonly [...Acc, H]>\n : Acc;\n// Curried: at each step, accept a non-empty tuple of args A,\n// ensure it's a prefix of P, then either return R (if done) or recurse.\nexport type Curried<P extends readonly unknown[], R> = P extends readonly []\n ? () => R\n : <A extends readonly [unknown, ...(readonly unknown[])]>(\n ...args: A\n ) => P extends readonly [...A, ...infer Rest] ? (Rest extends readonly [] ? R : Curried<Rest, R>) : never;\n// Overloads to reflect default arity vs. a custom arity.\nexport function curry<T extends (...args: any[]) => any>(fn: T): Curried<Parameters<T>, ReturnType<T>>;\nexport function curry<T extends (...args: any[]) => any, N extends number>(\n fn: T,\n arity: N,\n): Curried<Take<N, Parameters<T>>, ReturnType<T>>;\n// Runtime implementation\nexport function curry(fn: (...args: any[]) => any, arity = fn.length) {\n const curried = (...args: any[]): any => {\n if (args.length >= arity) {\n return fn(...args);\n }\n return (...rest: any[]) => curried(...args, ...rest);\n };\n return curried as any;\n}\n"],"names":["curry","fn","arity","curried","args","rest"],"mappings":"AAsCO,SAASA,EAAMC,GAA6BC,IAAQD,EAAG,QAAQ;AACpE,QAAME,IAAU,IAAIC,MACdA,EAAK,UAAUF,IACVD,EAAG,GAAGG,CAAI,IAEZ,IAAIC,MAAgBF,EAAQ,GAAGC,GAAM,GAAGC,CAAI;AAErD,SAAOF;AACT;"}
1
+ {"version":3,"file":"curry.js","names":[],"sources":["../../src/function/curry.ts"],"sourcesContent":["/**\n * Curries a function, allowing it to be called with partial arguments.\n *\n * @example\n * ```ts\n * const add = (a: number, b: number) => a + b;\n * const curriedAdd = curry(add);\n * curriedAdd(1)(2) // 3;\n * ```\n *\n * @param fn - The function to curry.\n * @param arity - The number of arguments the function expects. Defaults to the function's length.\n *\n * @returns A curried version of the function.\n */\n\n// Take first N items from tuple T\ntype Take<N extends number, T extends readonly unknown[], Acc extends readonly unknown[] = []> = Acc['length'] extends N\n ? Acc\n : T extends readonly [infer H, ...infer R]\n ? Take<N, R, readonly [...Acc, H]>\n : Acc;\n// Curried: at each step, accept a non-empty tuple of args A,\n// ensure it's a prefix of P, then either return R (if done) or recurse.\nexport type Curried<P extends readonly unknown[], R> = P extends readonly []\n ? () => R\n : <A extends readonly [unknown, ...(readonly unknown[])]>(\n ...args: A\n ) => P extends readonly [...A, ...infer Rest] ? (Rest extends readonly [] ? R : Curried<Rest, R>) : never;\n// Overloads to reflect default arity vs. a custom arity.\nexport function curry<T extends (...args: any[]) => any>(fn: T): Curried<Parameters<T>, ReturnType<T>>;\nexport function curry<T extends (...args: any[]) => any, N extends number>(\n fn: T,\n arity: N,\n): Curried<Take<N, Parameters<T>>, ReturnType<T>>;\n// Runtime implementation\nexport function curry(fn: (...args: any[]) => any, arity = fn.length) {\n const curried = (...args: any[]): any => {\n if (args.length >= arity) {\n return fn(...args);\n }\n\n return (...rest: any[]) => curried(...args, ...rest);\n };\n\n return curried as any;\n}\n"],"mappings":";AAoCA,SAAgB,EAAM,GAA6B,IAAQ,EAAG,QAAQ;CACpE,IAAM,KAAW,GAAG,MACd,EAAK,UAAU,IACV,EAAG,GAAG,EAAK,IAGZ,GAAG,MAAgB,EAAQ,GAAG,GAAM,GAAG,EAAK;AAGtD,QAAO"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./assert.cjs");function v(s,o=300){l.assert(typeof s=="function","First argument must be a function",{args:{fn:s},type:TypeError}),l.assert(typeof o=="number"&&o>=0,"Delay must be a non-negative number",{args:{delay:o},type:TypeError});let e,t,r,c;const i=()=>{e!==void 0&&(clearTimeout(e),e=void 0)},a=()=>{if(i(),!t)return;const u=t,d=r;return t=void 0,r=void 0,c=s.apply(d,u),c},n=function(...u){t=u,r=this,i(),e=setTimeout(a,o)};return n.cancel=()=>{i(),t=void 0,r=void 0},n.flush=()=>a(),n.pending=()=>e!==void 0,n}exports.debounce=v;
2
- //# sourceMappingURL=debounce.cjs.map
1
+ const e=require(`./assert.cjs`),t=require(`../async/scheduler.cjs`);function n(n,r=300){e.assert(typeof n==`function`,`First argument must be a function`,{args:{fn:n},type:TypeError}),e.assert(typeof r==`number`&&r>=0,`Delay must be a non-negative number`,{args:{delay:r},type:TypeError});let i,a,o,s=()=>{i!==void 0&&(i.abort(),i=void 0)},c=()=>{let e=new AbortController,n=new t.Scheduler;i=e,n.postTask(l,{delay:r,priority:`user-visible`,signal:e.signal}).catch(()=>{})},l=()=>{if(s(),!a)return;let e=a,t=o;return a=void 0,o=void 0,n.apply(t,e)},u=function(...e){a=e,o=this,s(),c()};return u.cancel=()=>{s(),a=void 0,o=void 0},u.flush=()=>l(),u.pending=()=>i!==void 0,u}exports.debounce=n;
2
+ //# sourceMappingURL=debounce.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"debounce.cjs","sources":["../../src/function/debounce.ts"],"sourcesContent":["import type { Fn } from '../types';\nimport { assert } from './assert';\n\nexport type Debounced<T extends Fn> = ((this: ThisParameterType<T>, ...args: Parameters<T>) => void) & {\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n pending(): boolean;\n};\n\n/**\n * Debounce a function (trailing). Use `flush` to invoke immediately,\n * `cancel` to clear, and `pending` to check if an invocation is scheduled.\n */\nexport function debounce<T extends Fn>(fn: T, delay = 300): Debounced<T> {\n assert(typeof fn === 'function', 'First argument must be a function', {\n args: { fn },\n type: TypeError,\n });\n assert(typeof delay === 'number' && delay >= 0, 'Delay must be a non-negative number', {\n args: { delay },\n type: TypeError,\n });\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n let lastArgs: Parameters<T> | undefined;\n let lastThis: ThisParameterType<T> | undefined;\n let lastResult: ReturnType<T> | undefined;\n\n const clearTimer = () => {\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n };\n\n const invoke = () => {\n clearTimer();\n if (!lastArgs) return undefined; // nothing to invoke\n const args = lastArgs;\n const ctx = lastThis as ThisParameterType<T>;\n lastArgs = undefined;\n lastThis = undefined;\n // biome-ignore lint/suspicious/noExplicitAny: -\n lastResult = fn.apply(ctx as any, args);\n return lastResult;\n };\n\n const debounced = function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n lastArgs = args;\n lastThis = this;\n clearTimer();\n timer = setTimeout(invoke, delay);\n } as Debounced<T>;\n\n debounced.cancel = () => {\n clearTimer();\n lastArgs = undefined;\n lastThis = undefined;\n };\n\n debounced.flush = () => invoke() as ReturnType<T> | undefined;\n\n debounced.pending = () => timer !== undefined;\n\n return debounced;\n}\n"],"names":["debounce","fn","delay","assert","timer","lastArgs","lastThis","lastResult","clearTimer","invoke","args","ctx","debounced"],"mappings":"gHAaO,SAASA,EAAuBC,EAAOC,EAAQ,IAAmB,CACvEC,EAAAA,OAAO,OAAOF,GAAO,WAAY,oCAAqC,CACpE,KAAM,CAAE,GAAAA,CAAA,EACR,KAAM,SAAA,CACP,EACDE,EAAAA,OAAO,OAAOD,GAAU,UAAYA,GAAS,EAAG,sCAAuC,CACrF,KAAM,CAAE,MAAAA,CAAA,EACR,KAAM,SAAA,CACP,EAED,IAAIE,EACAC,EACAC,EACAC,EAEJ,MAAMC,EAAa,IAAM,CACnBJ,IAAU,SACZ,aAAaA,CAAK,EAClBA,EAAQ,OAEZ,EAEMK,EAAS,IAAM,CAEnB,GADAD,EAAA,EACI,CAACH,EAAU,OACf,MAAMK,EAAOL,EACPM,EAAML,EACZ,OAAAD,EAAW,OACXC,EAAW,OAEXC,EAAaN,EAAG,MAAMU,EAAYD,CAAI,EAC/BH,CACT,EAEMK,EAAY,YAAyCF,EAAqB,CAC9EL,EAAWK,EACXJ,EAAW,KACXE,EAAA,EACAJ,EAAQ,WAAWK,EAAQP,CAAK,CAClC,EAEA,OAAAU,EAAU,OAAS,IAAM,CACvBJ,EAAA,EACAH,EAAW,OACXC,EAAW,MACb,EAEAM,EAAU,MAAQ,IAAMH,EAAA,EAExBG,EAAU,QAAU,IAAMR,IAAU,OAE7BQ,CACT"}
1
+ {"version":3,"file":"debounce.cjs","names":[],"sources":["../../src/function/debounce.ts"],"sourcesContent":["import type { Fn } from '../types';\n\nimport { Scheduler } from '../async/scheduler';\nimport { assert } from './assert';\n\nexport type Debounced<T extends Fn> = ((this: ThisParameterType<T>, ...args: Parameters<T>) => void) & {\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n pending(): boolean;\n};\n\n/**\n * Debounce a function (trailing). Use `flush` to invoke immediately,\n * `cancel` to clear, and `pending` to check if an invocation is scheduled.\n */\nexport function debounce<T extends Fn>(fn: T, delay = 300): Debounced<T> {\n assert(typeof fn === 'function', 'First argument must be a function', {\n args: { fn },\n type: TypeError,\n });\n assert(typeof delay === 'number' && delay >= 0, 'Delay must be a non-negative number', {\n args: { delay },\n type: TypeError,\n });\n\n let timerController: AbortController | undefined;\n let lastArgs: Parameters<T> | undefined;\n let lastThis: ThisParameterType<T> | undefined;\n\n const clearTimer = () => {\n if (timerController !== undefined) {\n timerController.abort();\n timerController = undefined;\n }\n };\n\n const scheduleInvoke = () => {\n const controller = new AbortController();\n const scheduler = new Scheduler();\n\n timerController = controller;\n void scheduler\n .postTask(invoke, {\n delay,\n priority: 'user-visible',\n signal: controller.signal,\n })\n .catch(() => {\n // Aborts are expected when debounce is rescheduled or canceled.\n });\n };\n\n const invoke = () => {\n clearTimer();\n\n if (!lastArgs) return undefined; // nothing to invoke\n\n const args = lastArgs;\n const ctx = lastThis as ThisParameterType<T>;\n\n lastArgs = undefined;\n lastThis = undefined;\n\n return fn.apply(ctx as any, args) as ReturnType<T>;\n };\n\n const debounced = function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n lastArgs = args;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n lastThis = this;\n clearTimer();\n scheduleInvoke();\n } as Debounced<T>;\n\n debounced.cancel = () => {\n clearTimer();\n lastArgs = undefined;\n lastThis = undefined;\n };\n\n debounced.flush = () => invoke() as ReturnType<T> | undefined;\n\n debounced.pending = () => timerController !== undefined;\n\n return debounced;\n}\n"],"mappings":"oEAeA,SAAgB,EAAuB,EAAO,EAAQ,IAAmB,CACvE,EAAA,OAAO,OAAO,GAAO,WAAY,oCAAqC,CACpE,KAAM,CAAE,KAAI,CACZ,KAAM,UACP,CAAC,CACF,EAAA,OAAO,OAAO,GAAU,UAAY,GAAS,EAAG,sCAAuC,CACrF,KAAM,CAAE,QAAO,CACf,KAAM,UACP,CAAC,CAEF,IAAI,EACA,EACA,EAEE,MAAmB,CACnB,IAAoB,IAAA,KACtB,EAAgB,OAAO,CACvB,EAAkB,IAAA,KAIhB,MAAuB,CAC3B,IAAM,EAAa,IAAI,gBACjB,EAAY,IAAI,EAAA,UAEtB,EAAkB,EACb,EACF,SAAS,EAAQ,CAChB,QACA,SAAU,eACV,OAAQ,EAAW,OACpB,CAAC,CACD,UAAY,GAEX,EAGA,MAAe,CAGnB,GAFA,GAAY,CAER,CAAC,EAAU,OAEf,IAAM,EAAO,EACP,EAAM,EAKZ,MAHA,GAAW,IAAA,GACX,EAAW,IAAA,GAEJ,EAAG,MAAM,EAAY,EAAK,EAG7B,EAAY,SAAsC,GAAG,EAAqB,CAC9E,EAAW,EAEX,EAAW,KACX,GAAY,CACZ,GAAgB,EAalB,MAVA,GAAU,WAAe,CACvB,GAAY,CACZ,EAAW,IAAA,GACX,EAAW,IAAA,IAGb,EAAU,UAAc,GAAQ,CAEhC,EAAU,YAAgB,IAAoB,IAAA,GAEvC"}
@@ -0,0 +1,12 @@
1
+ import type { Fn } from '../types';
2
+ export type Debounced<T extends Fn> = ((this: ThisParameterType<T>, ...args: Parameters<T>) => void) & {
3
+ cancel(): void;
4
+ flush(): ReturnType<T> | undefined;
5
+ pending(): boolean;
6
+ };
7
+ /**
8
+ * Debounce a function (trailing). Use `flush` to invoke immediately,
9
+ * `cancel` to clear, and `pending` to check if an invocation is scheduled.
10
+ */
11
+ export declare function debounce<T extends Fn>(fn: T, delay?: number): Debounced<T>;
12
+ //# sourceMappingURL=debounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../src/function/debounce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAKnC,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG;IACrG,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAsEvE"}
@@ -1,27 +1,35 @@
1
- import { assert as l } from "./assert.js";
2
- function v(i, o = 300) {
3
- l(typeof i == "function", "First argument must be a function", {
4
- args: { fn: i },
5
- type: TypeError
6
- }), l(typeof o == "number" && o >= 0, "Delay must be a non-negative number", {
7
- args: { delay: o },
8
- type: TypeError
9
- });
10
- let t, e, r, c;
11
- const s = () => {
12
- t !== void 0 && (clearTimeout(t), t = void 0);
13
- }, a = () => {
14
- if (s(), !e) return;
15
- const u = e, m = r;
16
- return e = void 0, r = void 0, c = i.apply(m, u), c;
17
- }, n = function(...u) {
18
- e = u, r = this, s(), t = setTimeout(a, o);
19
- };
20
- return n.cancel = () => {
21
- s(), e = void 0, r = void 0;
22
- }, n.flush = () => a(), n.pending = () => t !== void 0, n;
1
+ import { assert as e } from "./assert.js";
2
+ import { Scheduler as t } from "../async/scheduler.js";
3
+ //#region src/function/debounce.ts
4
+ function n(n, r = 300) {
5
+ e(typeof n == "function", "First argument must be a function", {
6
+ args: { fn: n },
7
+ type: TypeError
8
+ }), e(typeof r == "number" && r >= 0, "Delay must be a non-negative number", {
9
+ args: { delay: r },
10
+ type: TypeError
11
+ });
12
+ let i, a, o, s = () => {
13
+ i !== void 0 && (i.abort(), i = void 0);
14
+ }, c = () => {
15
+ let e = new AbortController(), n = new t();
16
+ i = e, n.postTask(l, {
17
+ delay: r,
18
+ priority: "user-visible",
19
+ signal: e.signal
20
+ }).catch(() => {});
21
+ }, l = () => {
22
+ if (s(), !a) return;
23
+ let e = a, t = o;
24
+ return a = void 0, o = void 0, n.apply(t, e);
25
+ }, u = function(...e) {
26
+ a = e, o = this, s(), c();
27
+ };
28
+ return u.cancel = () => {
29
+ s(), a = void 0, o = void 0;
30
+ }, u.flush = () => l(), u.pending = () => i !== void 0, u;
23
31
  }
24
- export {
25
- v as debounce
26
- };
27
- //# sourceMappingURL=debounce.js.map
32
+ //#endregion
33
+ export { n as debounce };
34
+
35
+ //# sourceMappingURL=debounce.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debounce.js","sources":["../../src/function/debounce.ts"],"sourcesContent":["import type { Fn } from '../types';\nimport { assert } from './assert';\n\nexport type Debounced<T extends Fn> = ((this: ThisParameterType<T>, ...args: Parameters<T>) => void) & {\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n pending(): boolean;\n};\n\n/**\n * Debounce a function (trailing). Use `flush` to invoke immediately,\n * `cancel` to clear, and `pending` to check if an invocation is scheduled.\n */\nexport function debounce<T extends Fn>(fn: T, delay = 300): Debounced<T> {\n assert(typeof fn === 'function', 'First argument must be a function', {\n args: { fn },\n type: TypeError,\n });\n assert(typeof delay === 'number' && delay >= 0, 'Delay must be a non-negative number', {\n args: { delay },\n type: TypeError,\n });\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n let lastArgs: Parameters<T> | undefined;\n let lastThis: ThisParameterType<T> | undefined;\n let lastResult: ReturnType<T> | undefined;\n\n const clearTimer = () => {\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n };\n\n const invoke = () => {\n clearTimer();\n if (!lastArgs) return undefined; // nothing to invoke\n const args = lastArgs;\n const ctx = lastThis as ThisParameterType<T>;\n lastArgs = undefined;\n lastThis = undefined;\n // biome-ignore lint/suspicious/noExplicitAny: -\n lastResult = fn.apply(ctx as any, args);\n return lastResult;\n };\n\n const debounced = function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n lastArgs = args;\n lastThis = this;\n clearTimer();\n timer = setTimeout(invoke, delay);\n } as Debounced<T>;\n\n debounced.cancel = () => {\n clearTimer();\n lastArgs = undefined;\n lastThis = undefined;\n };\n\n debounced.flush = () => invoke() as ReturnType<T> | undefined;\n\n debounced.pending = () => timer !== undefined;\n\n return debounced;\n}\n"],"names":["debounce","fn","delay","assert","timer","lastArgs","lastThis","lastResult","clearTimer","invoke","args","ctx","debounced"],"mappings":";AAaO,SAASA,EAAuBC,GAAOC,IAAQ,KAAmB;AACvE,EAAAC,EAAO,OAAOF,KAAO,YAAY,qCAAqC;AAAA,IACpE,MAAM,EAAE,IAAAA,EAAA;AAAA,IACR,MAAM;AAAA,EAAA,CACP,GACDE,EAAO,OAAOD,KAAU,YAAYA,KAAS,GAAG,uCAAuC;AAAA,IACrF,MAAM,EAAE,OAAAA,EAAA;AAAA,IACR,MAAM;AAAA,EAAA,CACP;AAED,MAAIE,GACAC,GACAC,GACAC;AAEJ,QAAMC,IAAa,MAAM;AACvB,IAAIJ,MAAU,WACZ,aAAaA,CAAK,GAClBA,IAAQ;AAAA,EAEZ,GAEMK,IAAS,MAAM;AAEnB,QADAD,EAAA,GACI,CAACH,EAAU;AACf,UAAMK,IAAOL,GACPM,IAAML;AACZ,WAAAD,IAAW,QACXC,IAAW,QAEXC,IAAaN,EAAG,MAAMU,GAAYD,CAAI,GAC/BH;AAAA,EACT,GAEMK,IAAY,YAAyCF,GAAqB;AAC9E,IAAAL,IAAWK,GACXJ,IAAW,MACXE,EAAA,GACAJ,IAAQ,WAAWK,GAAQP,CAAK;AAAA,EAClC;AAEA,SAAAU,EAAU,SAAS,MAAM;AACvB,IAAAJ,EAAA,GACAH,IAAW,QACXC,IAAW;AAAA,EACb,GAEAM,EAAU,QAAQ,MAAMH,EAAA,GAExBG,EAAU,UAAU,MAAMR,MAAU,QAE7BQ;AACT;"}
1
+ {"version":3,"file":"debounce.js","names":[],"sources":["../../src/function/debounce.ts"],"sourcesContent":["import type { Fn } from '../types';\n\nimport { Scheduler } from '../async/scheduler';\nimport { assert } from './assert';\n\nexport type Debounced<T extends Fn> = ((this: ThisParameterType<T>, ...args: Parameters<T>) => void) & {\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n pending(): boolean;\n};\n\n/**\n * Debounce a function (trailing). Use `flush` to invoke immediately,\n * `cancel` to clear, and `pending` to check if an invocation is scheduled.\n */\nexport function debounce<T extends Fn>(fn: T, delay = 300): Debounced<T> {\n assert(typeof fn === 'function', 'First argument must be a function', {\n args: { fn },\n type: TypeError,\n });\n assert(typeof delay === 'number' && delay >= 0, 'Delay must be a non-negative number', {\n args: { delay },\n type: TypeError,\n });\n\n let timerController: AbortController | undefined;\n let lastArgs: Parameters<T> | undefined;\n let lastThis: ThisParameterType<T> | undefined;\n\n const clearTimer = () => {\n if (timerController !== undefined) {\n timerController.abort();\n timerController = undefined;\n }\n };\n\n const scheduleInvoke = () => {\n const controller = new AbortController();\n const scheduler = new Scheduler();\n\n timerController = controller;\n void scheduler\n .postTask(invoke, {\n delay,\n priority: 'user-visible',\n signal: controller.signal,\n })\n .catch(() => {\n // Aborts are expected when debounce is rescheduled or canceled.\n });\n };\n\n const invoke = () => {\n clearTimer();\n\n if (!lastArgs) return undefined; // nothing to invoke\n\n const args = lastArgs;\n const ctx = lastThis as ThisParameterType<T>;\n\n lastArgs = undefined;\n lastThis = undefined;\n\n return fn.apply(ctx as any, args) as ReturnType<T>;\n };\n\n const debounced = function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n lastArgs = args;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n lastThis = this;\n clearTimer();\n scheduleInvoke();\n } as Debounced<T>;\n\n debounced.cancel = () => {\n clearTimer();\n lastArgs = undefined;\n lastThis = undefined;\n };\n\n debounced.flush = () => invoke() as ReturnType<T> | undefined;\n\n debounced.pending = () => timerController !== undefined;\n\n return debounced;\n}\n"],"mappings":";;;AAeA,SAAgB,EAAuB,GAAO,IAAQ,KAAmB;AAKvE,CAJA,EAAO,OAAO,KAAO,YAAY,qCAAqC;EACpE,MAAM,EAAE,OAAI;EACZ,MAAM;EACP,CAAC,EACF,EAAO,OAAO,KAAU,YAAY,KAAS,GAAG,uCAAuC;EACrF,MAAM,EAAE,UAAO;EACf,MAAM;EACP,CAAC;CAEF,IAAI,GACA,GACA,GAEE,UAAmB;AACvB,EAAI,MAAoB,KAAA,MACtB,EAAgB,OAAO,EACvB,IAAkB,KAAA;IAIhB,UAAuB;EAC3B,IAAM,IAAa,IAAI,iBAAiB,EAClC,IAAY,IAAI,GAAW;AAG5B,EADL,IAAkB,GACb,EACF,SAAS,GAAQ;GAChB;GACA,UAAU;GACV,QAAQ,EAAW;GACpB,CAAC,CACD,YAAY,GAEX;IAGA,UAAe;AAGnB,MAFA,GAAY,EAER,CAAC,EAAU;EAEf,IAAM,IAAO,GACP,IAAM;AAKZ,SAHA,IAAW,KAAA,GACX,IAAW,KAAA,GAEJ,EAAG,MAAM,GAAY,EAAK;IAG7B,IAAY,SAAsC,GAAG,GAAqB;AAK9E,EAJA,IAAW,GAEX,IAAW,MACX,GAAY,EACZ,GAAgB;;AAalB,QAVA,EAAU,eAAe;AAGvB,EAFA,GAAY,EACZ,IAAW,KAAA,GACX,IAAW,KAAA;IAGb,EAAU,cAAc,GAAQ,EAEhC,EAAU,gBAAgB,MAAoB,KAAA,GAEvC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./assert.cjs"),o=(e,...n)=>(r.assert(e.fp,`"${e.name}" cannot be used in functional programming mode. Please use the original function.`),t=>e(t,...n));exports.fp=o;
2
- //# sourceMappingURL=fp.cjs.map
1
+ var e=(e,...t)=>n=>e(n,...t);exports.partial=e;
2
+ //# sourceMappingURL=fp.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fp.cjs","sources":["../../src/function/fp.ts"],"sourcesContent":["import type { Fn } from '../types';\nimport { assert } from './assert';\n\n// biome-ignore lint/suspicious/noExplicitAny: -\ntype RemoveFirstParameter<T extends Fn> = T extends (first: any, ...rest: infer R) => any ? R : never;\n\n/**\n * Creates a function that can be used in functional programming mode.\n * This function is a wrapper around the original function, allowing you to pass the first argument as an array.\n *\n * @example\n * ```ts\n * import { fp } from './fp';\n * import { map } from './map';\n *\n * const double = (num: number) => num * 2;\n * const doubleArray = fp(map, double);\n *\n * doubleArray([1, 2, 3]) // [2, 4, 6]\n * ```\n *\n * @param callback - The function to be wrapped.\n * @param args - The arguments to be passed to the function.\n *\n * @returns A function that takes an array and applies the original function to it.\n *\n * @throws {TypeError} If the function cannot be used in functional programming mode.\n */\nexport const fp = <T, F extends Fn = Fn>(callback: F, ...args: RemoveFirstParameter<F>) => {\n assert(\n // biome-ignore lint/suspicious/noExplicitAny: -\n (callback as any).fp,\n `\"${callback.name}\" cannot be used in functional programming mode. Please use the original function.`,\n );\n return (array: T[]) => callback(array, ...args);\n};\n"],"names":["fp","callback","args","assert","array"],"mappings":"gHA4BaA,EAAK,CAAuBC,KAAgBC,KACvDC,EAAAA,OAEGF,EAAiB,GAClB,IAAIA,EAAS,IAAI,oFAAA,EAEXG,GAAeH,EAASG,EAAO,GAAGF,CAAI"}
1
+ {"version":3,"file":"fp.cjs","names":[],"sources":["../../src/function/fp.ts"],"sourcesContent":["import type { Fn } from '../types';\n\ntype RemoveFirstParameter<T extends Fn> = T extends (first: any, ...rest: infer R) => any ? R : never;\ntype FirstParameter<T extends Fn> = T extends (first: infer A, ...rest: any[]) => any ? A : never;\n\n/**\n * Partially applies a multi-arg function by pre-filling every argument\n * except the first returning a unary function useful for pipeline composition.\n *\n * @example\n * ```ts\n * const double = (num: number) => num * 2;\n * const doubleAll = partial(select, double);\n * doubleAll([1, 2, 3]); // [2, 4, 6]\n *\n * // In a pipe\n * pipe(partial(select, (x: number) => x > 1 ? x * 2 : null))([1, 2, 3]); // [4, 6]\n * ```\n *\n * @param callback - Any function whose first argument is the collection.\n * @param args - The remaining arguments to pre-apply.\n * @returns A unary function `(collection) => ReturnType<F>`.\n */\nexport const partial = <F extends Fn>(callback: F, ...args: RemoveFirstParameter<F>) => {\n return (collection: FirstParameter<F>) => callback(collection, ...args);\n};\n"],"mappings":"AAuBA,IAAa,GAAyB,EAAa,GAAG,IAC5C,GAAkC,EAAS,EAAY,GAAG,EAAK"}
@@ -0,0 +1,24 @@
1
+ import type { Fn } from '../types';
2
+ type RemoveFirstParameter<T extends Fn> = T extends (first: any, ...rest: infer R) => any ? R : never;
3
+ type FirstParameter<T extends Fn> = T extends (first: infer A, ...rest: any[]) => any ? A : never;
4
+ /**
5
+ * Partially applies a multi-arg function by pre-filling every argument
6
+ * except the first — returning a unary function useful for pipeline composition.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const double = (num: number) => num * 2;
11
+ * const doubleAll = partial(select, double);
12
+ * doubleAll([1, 2, 3]); // [2, 4, 6]
13
+ *
14
+ * // In a pipe
15
+ * pipe(partial(select, (x: number) => x > 1 ? x * 2 : null))([1, 2, 3]); // [4, 6]
16
+ * ```
17
+ *
18
+ * @param callback - Any function whose first argument is the collection.
19
+ * @param args - The remaining arguments to pre-apply.
20
+ * @returns A unary function `(collection) => ReturnType<F>`.
21
+ */
22
+ export declare const partial: <F extends Fn>(callback: F, ...args: RemoveFirstParameter<F>) => (collection: FirstParameter<F>) => any;
23
+ export {};
24
+ //# sourceMappingURL=fp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/function/fp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC,KAAK,oBAAoB,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AACtG,KAAK,cAAc,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAElG;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,EAAE,EAAE,UAAU,CAAC,EAAE,GAAG,MAAM,oBAAoB,CAAC,CAAC,CAAC,MACzE,YAAY,cAAc,CAAC,CAAC,CAAC,QACtC,CAAC"}
@@ -1,10 +1,6 @@
1
- import { assert as r } from "./assert.js";
2
- const i = (n, ...e) => (r(
3
- // biome-ignore lint/suspicious/noExplicitAny: -
4
- n.fp,
5
- `"${n.name}" cannot be used in functional programming mode. Please use the original function.`
6
- ), (o) => n(o, ...e));
7
- export {
8
- i as fp
9
- };
10
- //# sourceMappingURL=fp.js.map
1
+ //#region src/function/fp.ts
2
+ var e = (e, ...t) => (n) => e(n, ...t);
3
+ //#endregion
4
+ export { e as partial };
5
+
6
+ //# sourceMappingURL=fp.js.map