@vielzeug/toolkit 1.1.2 → 2.0.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 +419 -0
  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
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Creates an array of numbers progressing from start up to, but not including, end. A step is used to specify the difference between each number in the array.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const start = 0;
7
+ * const stop = 10;
8
+ * const step = 2;
9
+ *
10
+ * range(start, stop, step) // [0, 2, 4, 6, 8];
11
+ * ```
12
+ *
13
+ * @param start - The start of the range.
14
+ * @param stop - The end of the range.
15
+ * @param step - The value to increment or decrement by.
16
+ *
17
+ * @returns The range of numbers.
18
+ *
19
+ * @throws {TypeError} If start, stop, or step are not finite numbers.
20
+ * @throws {Error} If step is 0 or if range exceeds maximum size.
21
+ */
22
+ export declare function range(start: number, stop: number, step: number): number[];
23
+ //# sourceMappingURL=range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../src/math/range.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAoB9D"}
@@ -1,18 +1,29 @@
1
- import { assert as m } from "../function/assert.js";
2
- function b(r, i, e) {
3
- if (m(
4
- Number.isFinite(r) && Number.isFinite(i) && Number.isFinite(e),
5
- "start, stop, and step must be finite numbers",
6
- { args: { start: r, step: e, stop: i }, type: TypeError }
7
- ), m(e !== 0, "Step cannot be 0", { args: { step: e }, type: Error }), r === i)
8
- return [];
9
- const n = Math.max(0, Math.ceil((i - r) / e + Number.EPSILON));
10
- return m(n <= 1e7, "Range exceeds maximum allowed size of 10,000,000", {
11
- args: { length: n, start: r, step: e, stop: i },
12
- type: Error
13
- }), Array.from({ length: n }, (u, a) => r + a * e);
1
+ import { assert as e } from "../function/assert.js";
2
+ //#region src/math/range.ts
3
+ function t(t, n, r) {
4
+ if (e(Number.isFinite(t) && Number.isFinite(n) && Number.isFinite(r), "start, stop, and step must be finite numbers", {
5
+ args: {
6
+ start: t,
7
+ step: r,
8
+ stop: n
9
+ },
10
+ type: TypeError
11
+ }), e(r !== 0, "Step cannot be 0", {
12
+ args: { step: r },
13
+ type: Error
14
+ }), t === n) return [];
15
+ let i = Math.max(0, Math.ceil((n - t) / r + 2 ** -52));
16
+ return e(i <= 1e7, "Range exceeds maximum allowed size of 10,000,000", {
17
+ args: {
18
+ length: i,
19
+ start: t,
20
+ step: r,
21
+ stop: n
22
+ },
23
+ type: Error
24
+ }), Array.from({ length: i }, (e, n) => t + n * r);
14
25
  }
15
- export {
16
- b as range
17
- };
18
- //# sourceMappingURL=range.js.map
26
+ //#endregion
27
+ export { t as range };
28
+
29
+ //# sourceMappingURL=range.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"range.js","sources":["../../src/math/range.ts"],"sourcesContent":["import { assert } from '../function/assert';\n\n/**\n * Creates an array of numbers progressing from start up to, but not including, end. A step is used to specify the difference between each number in the array.\n *\n * @example\n * ```ts\n * const start = 0;\n * const stop = 10;\n * const step = 2;\n *\n * range(start, stop, step) // [0, 2, 4, 6, 8];\n * ```\n *\n * @param start - The start of the range.\n * @param stop - The end of the range.\n * @param step - The value to increment or decrement by.\n *\n * @returns The range of numbers.\n *\n * @throws {TypeError} If start, stop, or step are not finite numbers.\n * @throws {Error} If step is 0 or if range exceeds maximum size.\n */\nexport function range(start: number, stop: number, step: number) {\n assert(\n Number.isFinite(start) && Number.isFinite(stop) && Number.isFinite(step),\n 'start, stop, and step must be finite numbers',\n { args: { start, step, stop }, type: TypeError },\n );\n assert(step !== 0, 'Step cannot be 0', { args: { step }, type: Error });\n\n if (start === stop) {\n return [];\n }\n\n const length = Math.max(0, Math.ceil((stop - start) / step + Number.EPSILON));\n\n assert(length <= 10_000_000, 'Range exceeds maximum allowed size of 10,000,000', {\n args: { length, start, step, stop },\n type: Error,\n });\n\n return Array.from({ length }, (_, i) => start + i * step);\n}\n"],"names":["range","start","stop","step","assert","length","_","i"],"mappings":";AAuBO,SAASA,EAAMC,GAAeC,GAAcC,GAAc;AAQ/D,MAPAC;AAAA,IACE,OAAO,SAASH,CAAK,KAAK,OAAO,SAASC,CAAI,KAAK,OAAO,SAASC,CAAI;AAAA,IACvE;AAAA,IACA,EAAE,MAAM,EAAE,OAAAF,GAAO,MAAAE,GAAM,MAAAD,EAAA,GAAQ,MAAM,UAAA;AAAA,EAAU,GAEjDE,EAAOD,MAAS,GAAG,oBAAoB,EAAE,MAAM,EAAE,MAAAA,EAAA,GAAQ,MAAM,OAAO,GAElEF,MAAUC;AACZ,WAAO,CAAA;AAGT,QAAMG,IAAS,KAAK,IAAI,GAAG,KAAK,MAAMH,IAAOD,KAASE,IAAO,OAAO,OAAO,CAAC;AAE5E,SAAAC,EAAOC,KAAU,KAAY,oDAAoD;AAAA,IAC/E,MAAM,EAAE,QAAAA,GAAQ,OAAAJ,GAAO,MAAAE,GAAM,MAAAD,EAAA;AAAA,IAC7B,MAAM;AAAA,EAAA,CACP,GAEM,MAAM,KAAK,EAAE,QAAAG,EAAA,GAAU,CAACC,GAAGC,MAAMN,IAAQM,IAAIJ,CAAI;AAC1D;"}
1
+ {"version":3,"file":"range.js","names":[],"sources":["../../src/math/range.ts"],"sourcesContent":["import { assert } from '../function/assert';\n\n/**\n * Creates an array of numbers progressing from start up to, but not including, end. A step is used to specify the difference between each number in the array.\n *\n * @example\n * ```ts\n * const start = 0;\n * const stop = 10;\n * const step = 2;\n *\n * range(start, stop, step) // [0, 2, 4, 6, 8];\n * ```\n *\n * @param start - The start of the range.\n * @param stop - The end of the range.\n * @param step - The value to increment or decrement by.\n *\n * @returns The range of numbers.\n *\n * @throws {TypeError} If start, stop, or step are not finite numbers.\n * @throws {Error} If step is 0 or if range exceeds maximum size.\n */\nexport function range(start: number, stop: number, step: number) {\n assert(\n Number.isFinite(start) && Number.isFinite(stop) && Number.isFinite(step),\n 'start, stop, and step must be finite numbers',\n { args: { start, step, stop }, type: TypeError },\n );\n assert(step !== 0, 'Step cannot be 0', { args: { step }, type: Error });\n\n if (start === stop) {\n return [];\n }\n\n const length = Math.max(0, Math.ceil((stop - start) / step + Number.EPSILON));\n\n assert(length <= 10_000_000, 'Range exceeds maximum allowed size of 10,000,000', {\n args: { length, start, step, stop },\n type: Error,\n });\n\n return Array.from({ length }, (_, i) => start + i * step);\n}\n"],"mappings":";;AAuBA,SAAgB,EAAM,GAAe,GAAc,GAAc;AAQ/D,KAPA,EACE,OAAO,SAAS,EAAM,IAAI,OAAO,SAAS,EAAK,IAAI,OAAO,SAAS,EAAK,EACxE,gDACA;EAAE,MAAM;GAAE;GAAO;GAAM;GAAM;EAAE,MAAM;EAAW,CACjD,EACD,EAAO,MAAS,GAAG,oBAAoB;EAAE,MAAM,EAAE,SAAM;EAAE,MAAM;EAAO,CAAC,EAEnE,MAAU,EACZ,QAAO,EAAE;CAGX,IAAM,IAAS,KAAK,IAAI,GAAG,KAAK,MAAM,IAAO,KAAS,aAAsB,CAAC;AAO7E,QALA,EAAO,KAAU,KAAY,oDAAoD;EAC/E,MAAM;GAAE;GAAQ;GAAO;GAAM;GAAM;EACnC,MAAM;EACP,CAAC,EAEK,MAAM,KAAK,EAAE,WAAQ,GAAG,GAAG,MAAM,IAAQ,IAAI,EAAK"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function u(t,n=0,o=Math.round){if(n===0)return o(t);const r=10**Math.max(-323,Math.min(n,292));return o(t*r)/r}exports.round=u;
2
- //# sourceMappingURL=round.cjs.map
1
+ function e(e,t=0,n=Math.round){if(t===0)return n(e);let r=10**Math.max(-323,Math.min(t,292));return n(e*r)/r}exports.round=e;
2
+ //# sourceMappingURL=round.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"round.cjs","sources":["../../src/math/round.ts"],"sourcesContent":["/**\n * Rounds a number to a specified number of decimal places.\n *\n * The `precision` argument is limited to be within the range of -323 to +292 to avoid NaN results.\n *\n * @example\n * ```ts\n * round(123.456) // 123\n * round(123.456, -1) // 120\n * round(123.456, 1, Math.ceil) // 123.5\n * round(123.456, 1, Math.floor) // 123.4\n * ```\n *\n * @param value - The number to round.\n * @param precision - The number of decimal places to round to.\n * @param [parser] - (optional) function to convert the number to a value.\n *\n * @returns The rounded number.\n */\nexport function round(value: number, precision = 0, parser: (value: number) => number = Math.round): number {\n if (precision === 0) return parser(value);\n\n const factor = 10 ** Math.max(-323, Math.min(precision, 292));\n return parser(value * factor) / factor;\n}\n"],"names":["round","value","precision","parser","factor"],"mappings":"gFAmBO,SAASA,EAAMC,EAAeC,EAAY,EAAGC,EAAoC,KAAK,MAAe,CAC1G,GAAID,IAAc,EAAG,OAAOC,EAAOF,CAAK,EAExC,MAAMG,EAAS,IAAM,KAAK,IAAI,KAAM,KAAK,IAAIF,EAAW,GAAG,CAAC,EAC5D,OAAOC,EAAOF,EAAQG,CAAM,EAAIA,CAClC"}
1
+ {"version":3,"file":"round.cjs","names":[],"sources":["../../src/math/round.ts"],"sourcesContent":["/**\n * Rounds a number to a specified number of decimal places.\n *\n * The `precision` argument is limited to be within the range of -323 to +292 to avoid NaN results.\n *\n * @example\n * ```ts\n * round(123.456) // 123\n * round(123.456, -1) // 120\n * round(123.456, 1, Math.ceil) // 123.5\n * round(123.456, 1, Math.floor) // 123.4\n * ```\n *\n * @param value - The number to round.\n * @param precision - The number of decimal places to round to.\n * @param [parser] - (optional) function to convert the number to a value.\n *\n * @returns The rounded number.\n */\nexport function round(value: number, precision = 0, parser: (value: number) => number = Math.round): number {\n if (precision === 0) return parser(value);\n\n const factor = 10 ** Math.max(-323, Math.min(precision, 292));\n\n return parser(value * factor) / factor;\n}\n"],"mappings":"AAmBA,SAAgB,EAAM,EAAe,EAAY,EAAG,EAAoC,KAAK,MAAe,CAC1G,GAAI,IAAc,EAAG,OAAO,EAAO,EAAM,CAEzC,IAAM,EAAS,IAAM,KAAK,IAAI,KAAM,KAAK,IAAI,EAAW,IAAI,CAAC,CAE7D,OAAO,EAAO,EAAQ,EAAO,CAAG"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Rounds a number to a specified number of decimal places.
3
+ *
4
+ * The `precision` argument is limited to be within the range of -323 to +292 to avoid NaN results.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * round(123.456) // 123
9
+ * round(123.456, -1) // 120
10
+ * round(123.456, 1, Math.ceil) // 123.5
11
+ * round(123.456, 1, Math.floor) // 123.4
12
+ * ```
13
+ *
14
+ * @param value - The number to round.
15
+ * @param precision - The number of decimal places to round to.
16
+ * @param [parser] - (optional) function to convert the number to a value.
17
+ *
18
+ * @returns The rounded number.
19
+ */
20
+ export declare function round(value: number, precision?: number, parser?: (value: number) => number): number;
21
+ //# sourceMappingURL=round.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../src/math/round.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAI,EAAE,MAAM,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAmB,GAAG,MAAM,CAM1G"}
@@ -1,9 +1,10 @@
1
- function u(t, n = 0, o = Math.round) {
2
- if (n === 0) return o(t);
3
- const r = 10 ** Math.max(-323, Math.min(n, 292));
4
- return o(t * r) / r;
1
+ //#region src/math/round.ts
2
+ function e(e, t = 0, n = Math.round) {
3
+ if (t === 0) return n(e);
4
+ let r = 10 ** Math.max(-323, Math.min(t, 292));
5
+ return n(e * r) / r;
5
6
  }
6
- export {
7
- u as round
8
- };
9
- //# sourceMappingURL=round.js.map
7
+ //#endregion
8
+ export { e as round };
9
+
10
+ //# sourceMappingURL=round.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"round.js","sources":["../../src/math/round.ts"],"sourcesContent":["/**\n * Rounds a number to a specified number of decimal places.\n *\n * The `precision` argument is limited to be within the range of -323 to +292 to avoid NaN results.\n *\n * @example\n * ```ts\n * round(123.456) // 123\n * round(123.456, -1) // 120\n * round(123.456, 1, Math.ceil) // 123.5\n * round(123.456, 1, Math.floor) // 123.4\n * ```\n *\n * @param value - The number to round.\n * @param precision - The number of decimal places to round to.\n * @param [parser] - (optional) function to convert the number to a value.\n *\n * @returns The rounded number.\n */\nexport function round(value: number, precision = 0, parser: (value: number) => number = Math.round): number {\n if (precision === 0) return parser(value);\n\n const factor = 10 ** Math.max(-323, Math.min(precision, 292));\n return parser(value * factor) / factor;\n}\n"],"names":["round","value","precision","parser","factor"],"mappings":"AAmBO,SAASA,EAAMC,GAAeC,IAAY,GAAGC,IAAoC,KAAK,OAAe;AAC1G,MAAID,MAAc,EAAG,QAAOC,EAAOF,CAAK;AAExC,QAAMG,IAAS,MAAM,KAAK,IAAI,MAAM,KAAK,IAAIF,GAAW,GAAG,CAAC;AAC5D,SAAOC,EAAOF,IAAQG,CAAM,IAAIA;AAClC;"}
1
+ {"version":3,"file":"round.js","names":[],"sources":["../../src/math/round.ts"],"sourcesContent":["/**\n * Rounds a number to a specified number of decimal places.\n *\n * The `precision` argument is limited to be within the range of -323 to +292 to avoid NaN results.\n *\n * @example\n * ```ts\n * round(123.456) // 123\n * round(123.456, -1) // 120\n * round(123.456, 1, Math.ceil) // 123.5\n * round(123.456, 1, Math.floor) // 123.4\n * ```\n *\n * @param value - The number to round.\n * @param precision - The number of decimal places to round to.\n * @param [parser] - (optional) function to convert the number to a value.\n *\n * @returns The rounded number.\n */\nexport function round(value: number, precision = 0, parser: (value: number) => number = Math.round): number {\n if (precision === 0) return parser(value);\n\n const factor = 10 ** Math.max(-323, Math.min(precision, 292));\n\n return parser(value * factor) / factor;\n}\n"],"mappings":";AAmBA,SAAgB,EAAM,GAAe,IAAY,GAAG,IAAoC,KAAK,OAAe;AAC1G,KAAI,MAAc,EAAG,QAAO,EAAO,EAAM;CAEzC,IAAM,IAAS,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,GAAW,IAAI,CAAC;AAE7D,QAAO,EAAO,IAAQ,EAAO,GAAG"}
package/dist/math/sum.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function u(r,t){if(r.length!==0)return r.reduce((o,n)=>{const e=t?t(n):n;if(typeof e!="number")throw new TypeError(`Expected number, got ${typeof e}`);if(Number.isNaN(e))throw new TypeError("Cannot sum NaN values");return o+e},0)}exports.sum=u;
2
- //# sourceMappingURL=sum.cjs.map
1
+ function e(e,t){return e.length===0?0:e.reduce((e,n)=>{let r=t?t(n):n;if(Number.isNaN(r))throw TypeError(`Cannot sum NaN values`);return e+r},0)}exports.sum=e;
2
+ //# sourceMappingURL=sum.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sum.cjs","sources":["../../src/math/sum.ts"],"sourcesContent":["/**\n * Sum numbers in an array or numbers mapped by a callback function.\n *\n * @example\n * ```ts\n * sum([1, 2, 3]) // 6\n * sum([{value: 1}, {value: 2}, {value: 3}], (item) => item.value) // 6\n * sum(['apple', 'banana', 'cherry']) // TypeError\n * ```\n *\n * @param array - The array to sum.\n * @param callback - An optional callback function to map the values.\n *\n * @returns The sum of the numbers in the array or the sum of the mapped values.\n */\nexport function sum<T>(array: T[], callback?: (item: T) => number): number | undefined {\n if (array.length === 0) return undefined;\n\n return array.reduce<number>((acc, item) => {\n const val = callback ? callback(item) : item;\n if (typeof val !== 'number') {\n throw new TypeError(`Expected number, got ${typeof val}`);\n }\n if (Number.isNaN(val)) {\n throw new TypeError('Cannot sum NaN values');\n }\n return acc + val;\n }, 0);\n}\n"],"names":["sum","array","callback","acc","item","val"],"mappings":"gFAeO,SAASA,EAAOC,EAAYC,EAAoD,CACrF,GAAID,EAAM,SAAW,EAErB,OAAOA,EAAM,OAAe,CAACE,EAAKC,IAAS,CACzC,MAAMC,EAAMH,EAAWA,EAASE,CAAI,EAAIA,EACxC,GAAI,OAAOC,GAAQ,SACjB,MAAM,IAAI,UAAU,wBAAwB,OAAOA,CAAG,EAAE,EAE1D,GAAI,OAAO,MAAMA,CAAG,EAClB,MAAM,IAAI,UAAU,uBAAuB,EAE7C,OAAOF,EAAME,CACf,EAAG,CAAC,CACN"}
1
+ {"version":3,"file":"sum.cjs","names":[],"sources":["../../src/math/sum.ts"],"sourcesContent":["/**\n * Sum numbers in an array or numbers mapped by a callback function.\n *\n * @example\n * ```ts\n * sum([1, 2, 3]) // 6\n * sum([{value: 1}, {value: 2}, {value: 3}], (item) => item.value) // 6\n * sum(['apple', 'banana', 'cherry']) // TypeError\n * ```\n *\n * @param array - The array to sum.\n * @param callback - An optional callback function to map the values.\n *\n * @returns The sum of the numbers in the array or the sum of the mapped values.\n */\nexport function sum<T>(array: T[], callback?: (item: T) => number): number {\n if (array.length === 0) return 0;\n\n return array.reduce<number>((acc, item) => {\n const val = callback ? callback(item) : (item as unknown as number);\n\n if (Number.isNaN(val)) {\n throw new TypeError('Cannot sum NaN values');\n }\n\n return acc + val;\n }, 0);\n}\n"],"mappings":"AAeA,SAAgB,EAAO,EAAY,EAAwC,CAGzE,OAFI,EAAM,SAAW,EAAU,EAExB,EAAM,QAAgB,EAAK,IAAS,CACzC,IAAM,EAAM,EAAW,EAAS,EAAK,CAAI,EAEzC,GAAI,OAAO,MAAM,EAAI,CACnB,MAAU,UAAU,wBAAwB,CAG9C,OAAO,EAAM,GACZ,EAAE"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Sum numbers in an array or numbers mapped by a callback function.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * sum([1, 2, 3]) // 6
7
+ * sum([{value: 1}, {value: 2}, {value: 3}], (item) => item.value) // 6
8
+ * sum(['apple', 'banana', 'cherry']) // TypeError
9
+ * ```
10
+ *
11
+ * @param array - The array to sum.
12
+ * @param callback - An optional callback function to map the values.
13
+ *
14
+ * @returns The sum of the numbers in the array or the sum of the mapped values.
15
+ */
16
+ export declare function sum<T>(array: T[], callback?: (item: T) => number): number;
17
+ //# sourceMappingURL=sum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sum.d.ts","sourceRoot":"","sources":["../../src/math/sum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAYzE"}
package/dist/math/sum.js CHANGED
@@ -1,15 +1,12 @@
1
- function u(r, n) {
2
- if (r.length !== 0)
3
- return r.reduce((o, t) => {
4
- const e = n ? n(t) : t;
5
- if (typeof e != "number")
6
- throw new TypeError(`Expected number, got ${typeof e}`);
7
- if (Number.isNaN(e))
8
- throw new TypeError("Cannot sum NaN values");
9
- return o + e;
10
- }, 0);
1
+ //#region src/math/sum.ts
2
+ function e(e, t) {
3
+ return e.length === 0 ? 0 : e.reduce((e, n) => {
4
+ let r = t ? t(n) : n;
5
+ if (Number.isNaN(r)) throw TypeError("Cannot sum NaN values");
6
+ return e + r;
7
+ }, 0);
11
8
  }
12
- export {
13
- u as sum
14
- };
15
- //# sourceMappingURL=sum.js.map
9
+ //#endregion
10
+ export { e as sum };
11
+
12
+ //# sourceMappingURL=sum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sum.js","sources":["../../src/math/sum.ts"],"sourcesContent":["/**\n * Sum numbers in an array or numbers mapped by a callback function.\n *\n * @example\n * ```ts\n * sum([1, 2, 3]) // 6\n * sum([{value: 1}, {value: 2}, {value: 3}], (item) => item.value) // 6\n * sum(['apple', 'banana', 'cherry']) // TypeError\n * ```\n *\n * @param array - The array to sum.\n * @param callback - An optional callback function to map the values.\n *\n * @returns The sum of the numbers in the array or the sum of the mapped values.\n */\nexport function sum<T>(array: T[], callback?: (item: T) => number): number | undefined {\n if (array.length === 0) return undefined;\n\n return array.reduce<number>((acc, item) => {\n const val = callback ? callback(item) : item;\n if (typeof val !== 'number') {\n throw new TypeError(`Expected number, got ${typeof val}`);\n }\n if (Number.isNaN(val)) {\n throw new TypeError('Cannot sum NaN values');\n }\n return acc + val;\n }, 0);\n}\n"],"names":["sum","array","callback","acc","item","val"],"mappings":"AAeO,SAASA,EAAOC,GAAYC,GAAoD;AACrF,MAAID,EAAM,WAAW;AAErB,WAAOA,EAAM,OAAe,CAACE,GAAKC,MAAS;AACzC,YAAMC,IAAMH,IAAWA,EAASE,CAAI,IAAIA;AACxC,UAAI,OAAOC,KAAQ;AACjB,cAAM,IAAI,UAAU,wBAAwB,OAAOA,CAAG,EAAE;AAE1D,UAAI,OAAO,MAAMA,CAAG;AAClB,cAAM,IAAI,UAAU,uBAAuB;AAE7C,aAAOF,IAAME;AAAA,IACf,GAAG,CAAC;AACN;"}
1
+ {"version":3,"file":"sum.js","names":[],"sources":["../../src/math/sum.ts"],"sourcesContent":["/**\n * Sum numbers in an array or numbers mapped by a callback function.\n *\n * @example\n * ```ts\n * sum([1, 2, 3]) // 6\n * sum([{value: 1}, {value: 2}, {value: 3}], (item) => item.value) // 6\n * sum(['apple', 'banana', 'cherry']) // TypeError\n * ```\n *\n * @param array - The array to sum.\n * @param callback - An optional callback function to map the values.\n *\n * @returns The sum of the numbers in the array or the sum of the mapped values.\n */\nexport function sum<T>(array: T[], callback?: (item: T) => number): number {\n if (array.length === 0) return 0;\n\n return array.reduce<number>((acc, item) => {\n const val = callback ? callback(item) : (item as unknown as number);\n\n if (Number.isNaN(val)) {\n throw new TypeError('Cannot sum NaN values');\n }\n\n return acc + val;\n }, 0);\n}\n"],"mappings":";AAeA,SAAgB,EAAO,GAAY,GAAwC;AAGzE,QAFI,EAAM,WAAW,IAAU,IAExB,EAAM,QAAgB,GAAK,MAAS;EACzC,IAAM,IAAM,IAAW,EAAS,EAAK,GAAI;AAEzC,MAAI,OAAO,MAAM,EAAI,CACnB,OAAU,UAAU,wBAAwB;AAG9C,SAAO,IAAM;IACZ,EAAE"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function u(e,t={}){const{locale:c="en-US",style:i="symbol",minimumFractionDigits:s,maximumFractionDigits:a}=t,n=l(e.currency),o=10**n,m=Number(e.amount)/o;let r;switch(i){case"symbol":r="symbol";break;case"code":r="code";break;case"name":r="name";break;default:r="symbol"}return new Intl.NumberFormat(c,{currency:e.currency,currencyDisplay:r,maximumFractionDigits:a??n,minimumFractionDigits:s??n,style:"currency"}).format(m)}function l(e){const t=["BIF","CLP","DJF","GNF","JPY","KMF","KRW","MGA","PYG","RWF","UGX","VND","VUV","XAF","XOF","XPF"],c=["BHD","IQD","JOD","KWD","LYD","OMR","TND"];return t.includes(e.toUpperCase())?0:c.includes(e.toUpperCase())?3:2}exports.currency=u;
2
- //# sourceMappingURL=currency.cjs.map
1
+ function e(e,n={}){let{locale:r=`en-US`,maximumFractionDigits:i,minimumFractionDigits:a,style:o=`symbol`}=n,s=t(e.currency),c=10**s,l=Number(e.amount)/c;return new Intl.NumberFormat(r,{currency:e.currency,currencyDisplay:o,maximumFractionDigits:i??s,minimumFractionDigits:a??s,style:`currency`}).format(l)}function t(e){return new Intl.NumberFormat(`en`,{currency:e,style:`currency`}).resolvedOptions().maximumFractionDigits??2}exports.currency=e;
2
+ //# sourceMappingURL=currency.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency.cjs","sources":["../../src/money/currency.ts"],"sourcesContent":["import type { Money } from './types';\n\n/**\n * Options for currency formatting.\n */\nexport type CurrencyFormatOptions = {\n locale?: string; // BCP 47 language tag (e.g., 'en-US', 'de-DE')\n style?: 'symbol' | 'code' | 'name'; // Display style\n minimumFractionDigits?: number; // Minimum decimal places\n maximumFractionDigits?: number; // Maximum decimal places\n};\n\n/**\n * Formats a monetary amount as a currency string with proper locale and symbol.\n * Handles decimal places automatically based on currency.\n *\n * @example\n * ```ts\n * const money = { amount: 123456n, currency: 'USD' };\n *\n * currency(money); // '$1,234.56' (default en-US)\n * currency(money, { locale: 'de-DE' }); // '1.234,56 $'\n * currency(money, { style: 'code' }); // 'USD 1,234.56'\n * currency(money, { style: 'name' }); // '1,234.56 US dollars'\n * ```\n *\n * @param money - Money object to format\n * @param options - Formatting options\n * @returns Formatted currency string\n */\nexport function currency(money: Money, options: CurrencyFormatOptions = {}): string {\n const { locale = 'en-US', style = 'symbol', minimumFractionDigits, maximumFractionDigits } = options;\n\n // Get decimal places for currency (default to 2 for most currencies)\n const decimalPlaces = getCurrencyDecimals(money.currency);\n\n // Convert bigint amount to decimal (divide by 10^decimalPlaces)\n const divisor = 10 ** decimalPlaces;\n const amount = Number(money.amount) / divisor;\n\n // Determine Intl.NumberFormat style\n let currencyDisplay: 'symbol' | 'code' | 'name';\n switch (style) {\n case 'symbol':\n currencyDisplay = 'symbol';\n break;\n case 'code':\n currencyDisplay = 'code';\n break;\n case 'name':\n currencyDisplay = 'name';\n break;\n default:\n currencyDisplay = 'symbol';\n }\n\n const formatter = new Intl.NumberFormat(locale, {\n currency: money.currency,\n currencyDisplay,\n maximumFractionDigits: maximumFractionDigits ?? decimalPlaces,\n minimumFractionDigits: minimumFractionDigits ?? decimalPlaces,\n style: 'currency',\n });\n\n return formatter.format(amount);\n}\n\n/**\n * Gets the number of decimal places for a currency.\n * Most currencies use 2 decimal places, but some use 0 or 3.\n */\nfunction getCurrencyDecimals(currencyCode: string): number {\n const zeroDecimalCurrencies = [\n 'BIF',\n 'CLP',\n 'DJF',\n 'GNF',\n 'JPY',\n 'KMF',\n 'KRW',\n 'MGA',\n 'PYG',\n 'RWF',\n 'UGX',\n 'VND',\n 'VUV',\n 'XAF',\n 'XOF',\n 'XPF',\n ];\n const threeDecimalCurrencies = ['BHD', 'IQD', 'JOD', 'KWD', 'LYD', 'OMR', 'TND'];\n\n if (zeroDecimalCurrencies.includes(currencyCode.toUpperCase())) {\n return 0;\n }\n if (threeDecimalCurrencies.includes(currencyCode.toUpperCase())) {\n return 3;\n }\n return 2; // Default for most currencies\n}\n"],"names":["currency","money","options","locale","style","minimumFractionDigits","maximumFractionDigits","decimalPlaces","getCurrencyDecimals","divisor","amount","currencyDisplay","currencyCode","zeroDecimalCurrencies","threeDecimalCurrencies"],"mappings":"gFA8BO,SAASA,EAASC,EAAcC,EAAiC,GAAY,CAClF,KAAM,CAAE,OAAAC,EAAS,QAAS,MAAAC,EAAQ,SAAU,sBAAAC,EAAuB,sBAAAC,GAA0BJ,EAGvFK,EAAgBC,EAAoBP,EAAM,QAAQ,EAGlDQ,EAAU,IAAMF,EAChBG,EAAS,OAAOT,EAAM,MAAM,EAAIQ,EAGtC,IAAIE,EACJ,OAAQP,EAAA,CACN,IAAK,SACHO,EAAkB,SAClB,MACF,IAAK,OACHA,EAAkB,OAClB,MACF,IAAK,OACHA,EAAkB,OAClB,MACF,QACEA,EAAkB,QAAA,CAWtB,OARkB,IAAI,KAAK,aAAaR,EAAQ,CAC9C,SAAUF,EAAM,SAChB,gBAAAU,EACA,sBAAuBL,GAAyBC,EAChD,sBAAuBF,GAAyBE,EAChD,MAAO,UAAA,CACR,EAEgB,OAAOG,CAAM,CAChC,CAMA,SAASF,EAAoBI,EAA8B,CACzD,MAAMC,EAAwB,CAC5B,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEIC,EAAyB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAE/E,OAAID,EAAsB,SAASD,EAAa,YAAA,CAAa,EACpD,EAELE,EAAuB,SAASF,EAAa,YAAA,CAAa,EACrD,EAEF,CACT"}
1
+ {"version":3,"file":"currency.cjs","names":[],"sources":["../../src/money/currency.ts"],"sourcesContent":["import type { Money } from './types';\n\n/**\n * Options for currency formatting.\n */\nexport type CurrencyFormatOptions = {\n locale?: string; // BCP 47 language tag (e.g., 'en-US', 'de-DE')\n maximumFractionDigits?: number; // Maximum decimal places\n minimumFractionDigits?: number; // Minimum decimal places\n style?: 'symbol' | 'code' | 'name'; // Display style\n};\n\n/**\n * Formats a monetary amount as a currency string with proper locale and symbol.\n * Handles decimal places automatically based on currency.\n *\n * @example\n * ```ts\n * const money = { amount: 123456n, currency: 'USD' };\n *\n * currency(money); // '$1,234.56' (default en-US)\n * currency(money, { locale: 'de-DE' }); // '1.234,56 $'\n * currency(money, { style: 'code' }); // 'USD 1,234.56'\n * currency(money, { style: 'name' }); // '1,234.56 US dollars'\n * ```\n *\n * @param money - Money object to format\n * @param options - Formatting options\n * @returns Formatted currency string\n */\nexport function currency(money: Money, options: CurrencyFormatOptions = {}): string {\n const { locale = 'en-US', maximumFractionDigits, minimumFractionDigits, style = 'symbol' } = options;\n\n // Get decimal places for currency (default to 2 for most currencies)\n const decimalPlaces = getCurrencyDecimals(money.currency);\n\n // Convert bigint amount to decimal (divide by 10^decimalPlaces)\n const divisor = 10 ** decimalPlaces;\n const amount = Number(money.amount) / divisor;\n\n const formatter = new Intl.NumberFormat(locale, {\n currency: money.currency,\n currencyDisplay: style,\n maximumFractionDigits: maximumFractionDigits ?? decimalPlaces,\n minimumFractionDigits: minimumFractionDigits ?? decimalPlaces,\n style: 'currency',\n });\n\n return formatter.format(amount);\n}\n\nfunction getCurrencyDecimals(currencyCode: string): number {\n return (\n new Intl.NumberFormat('en', { currency: currencyCode, style: 'currency' }).resolvedOptions()\n .maximumFractionDigits ?? 2\n );\n}\n"],"mappings":"AA8BA,SAAgB,EAAS,EAAc,EAAiC,EAAE,CAAU,CAClF,GAAM,CAAE,SAAS,QAAS,wBAAuB,wBAAuB,QAAQ,UAAa,EAGvF,EAAgB,EAAoB,EAAM,SAAS,CAGnD,EAAU,IAAM,EAChB,EAAS,OAAO,EAAM,OAAO,CAAG,EAUtC,OARkB,IAAI,KAAK,aAAa,EAAQ,CAC9C,SAAU,EAAM,SAChB,gBAAiB,EACjB,sBAAuB,GAAyB,EAChD,sBAAuB,GAAyB,EAChD,MAAO,WACR,CAAC,CAEe,OAAO,EAAO,CAGjC,SAAS,EAAoB,EAA8B,CACzD,OACE,IAAI,KAAK,aAAa,KAAM,CAAE,SAAU,EAAc,MAAO,WAAY,CAAC,CAAC,iBAAiB,CACzF,uBAAyB"}
@@ -0,0 +1,30 @@
1
+ import type { Money } from './types';
2
+ /**
3
+ * Options for currency formatting.
4
+ */
5
+ export type CurrencyFormatOptions = {
6
+ locale?: string;
7
+ maximumFractionDigits?: number;
8
+ minimumFractionDigits?: number;
9
+ style?: 'symbol' | 'code' | 'name';
10
+ };
11
+ /**
12
+ * Formats a monetary amount as a currency string with proper locale and symbol.
13
+ * Handles decimal places automatically based on currency.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const money = { amount: 123456n, currency: 'USD' };
18
+ *
19
+ * currency(money); // '$1,234.56' (default en-US)
20
+ * currency(money, { locale: 'de-DE' }); // '1.234,56 $'
21
+ * currency(money, { style: 'code' }); // 'USD 1,234.56'
22
+ * currency(money, { style: 'name' }); // '1,234.56 US dollars'
23
+ * ```
24
+ *
25
+ * @param money - Money object to format
26
+ * @param options - Formatting options
27
+ * @returns Formatted currency string
28
+ */
29
+ export declare function currency(money: Money, options?: CurrencyFormatOptions): string;
30
+ //# sourceMappingURL=currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../src/money/currency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;CACpC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAmBlF"}
@@ -1,49 +1,21 @@
1
- function D(e, c = {}) {
2
- const { locale: t = "en-US", style: i = "symbol", minimumFractionDigits: s, maximumFractionDigits: a } = c, n = u(e.currency), m = 10 ** n, o = Number(e.amount) / m;
3
- let r;
4
- switch (i) {
5
- case "symbol":
6
- r = "symbol";
7
- break;
8
- case "code":
9
- r = "code";
10
- break;
11
- case "name":
12
- r = "name";
13
- break;
14
- default:
15
- r = "symbol";
16
- }
17
- return new Intl.NumberFormat(t, {
18
- currency: e.currency,
19
- currencyDisplay: r,
20
- maximumFractionDigits: a ?? n,
21
- minimumFractionDigits: s ?? n,
22
- style: "currency"
23
- }).format(o);
1
+ //#region src/money/currency.ts
2
+ function e(e, n = {}) {
3
+ let { locale: r = "en-US", maximumFractionDigits: i, minimumFractionDigits: a, style: o = "symbol" } = n, s = t(e.currency), c = 10 ** s, l = Number(e.amount) / c;
4
+ return new Intl.NumberFormat(r, {
5
+ currency: e.currency,
6
+ currencyDisplay: o,
7
+ maximumFractionDigits: i ?? s,
8
+ minimumFractionDigits: a ?? s,
9
+ style: "currency"
10
+ }).format(l);
24
11
  }
25
- function u(e) {
26
- const c = [
27
- "BIF",
28
- "CLP",
29
- "DJF",
30
- "GNF",
31
- "JPY",
32
- "KMF",
33
- "KRW",
34
- "MGA",
35
- "PYG",
36
- "RWF",
37
- "UGX",
38
- "VND",
39
- "VUV",
40
- "XAF",
41
- "XOF",
42
- "XPF"
43
- ], t = ["BHD", "IQD", "JOD", "KWD", "LYD", "OMR", "TND"];
44
- return c.includes(e.toUpperCase()) ? 0 : t.includes(e.toUpperCase()) ? 3 : 2;
12
+ function t(e) {
13
+ return new Intl.NumberFormat("en", {
14
+ currency: e,
15
+ style: "currency"
16
+ }).resolvedOptions().maximumFractionDigits ?? 2;
45
17
  }
46
- export {
47
- D as currency
48
- };
49
- //# sourceMappingURL=currency.js.map
18
+ //#endregion
19
+ export { e as currency };
20
+
21
+ //# sourceMappingURL=currency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency.js","sources":["../../src/money/currency.ts"],"sourcesContent":["import type { Money } from './types';\n\n/**\n * Options for currency formatting.\n */\nexport type CurrencyFormatOptions = {\n locale?: string; // BCP 47 language tag (e.g., 'en-US', 'de-DE')\n style?: 'symbol' | 'code' | 'name'; // Display style\n minimumFractionDigits?: number; // Minimum decimal places\n maximumFractionDigits?: number; // Maximum decimal places\n};\n\n/**\n * Formats a monetary amount as a currency string with proper locale and symbol.\n * Handles decimal places automatically based on currency.\n *\n * @example\n * ```ts\n * const money = { amount: 123456n, currency: 'USD' };\n *\n * currency(money); // '$1,234.56' (default en-US)\n * currency(money, { locale: 'de-DE' }); // '1.234,56 $'\n * currency(money, { style: 'code' }); // 'USD 1,234.56'\n * currency(money, { style: 'name' }); // '1,234.56 US dollars'\n * ```\n *\n * @param money - Money object to format\n * @param options - Formatting options\n * @returns Formatted currency string\n */\nexport function currency(money: Money, options: CurrencyFormatOptions = {}): string {\n const { locale = 'en-US', style = 'symbol', minimumFractionDigits, maximumFractionDigits } = options;\n\n // Get decimal places for currency (default to 2 for most currencies)\n const decimalPlaces = getCurrencyDecimals(money.currency);\n\n // Convert bigint amount to decimal (divide by 10^decimalPlaces)\n const divisor = 10 ** decimalPlaces;\n const amount = Number(money.amount) / divisor;\n\n // Determine Intl.NumberFormat style\n let currencyDisplay: 'symbol' | 'code' | 'name';\n switch (style) {\n case 'symbol':\n currencyDisplay = 'symbol';\n break;\n case 'code':\n currencyDisplay = 'code';\n break;\n case 'name':\n currencyDisplay = 'name';\n break;\n default:\n currencyDisplay = 'symbol';\n }\n\n const formatter = new Intl.NumberFormat(locale, {\n currency: money.currency,\n currencyDisplay,\n maximumFractionDigits: maximumFractionDigits ?? decimalPlaces,\n minimumFractionDigits: minimumFractionDigits ?? decimalPlaces,\n style: 'currency',\n });\n\n return formatter.format(amount);\n}\n\n/**\n * Gets the number of decimal places for a currency.\n * Most currencies use 2 decimal places, but some use 0 or 3.\n */\nfunction getCurrencyDecimals(currencyCode: string): number {\n const zeroDecimalCurrencies = [\n 'BIF',\n 'CLP',\n 'DJF',\n 'GNF',\n 'JPY',\n 'KMF',\n 'KRW',\n 'MGA',\n 'PYG',\n 'RWF',\n 'UGX',\n 'VND',\n 'VUV',\n 'XAF',\n 'XOF',\n 'XPF',\n ];\n const threeDecimalCurrencies = ['BHD', 'IQD', 'JOD', 'KWD', 'LYD', 'OMR', 'TND'];\n\n if (zeroDecimalCurrencies.includes(currencyCode.toUpperCase())) {\n return 0;\n }\n if (threeDecimalCurrencies.includes(currencyCode.toUpperCase())) {\n return 3;\n }\n return 2; // Default for most currencies\n}\n"],"names":["currency","money","options","locale","style","minimumFractionDigits","maximumFractionDigits","decimalPlaces","getCurrencyDecimals","divisor","amount","currencyDisplay","currencyCode","zeroDecimalCurrencies","threeDecimalCurrencies"],"mappings":"AA8BO,SAASA,EAASC,GAAcC,IAAiC,IAAY;AAClF,QAAM,EAAE,QAAAC,IAAS,SAAS,OAAAC,IAAQ,UAAU,uBAAAC,GAAuB,uBAAAC,MAA0BJ,GAGvFK,IAAgBC,EAAoBP,EAAM,QAAQ,GAGlDQ,IAAU,MAAMF,GAChBG,IAAS,OAAOT,EAAM,MAAM,IAAIQ;AAGtC,MAAIE;AACJ,UAAQP,GAAA;AAAA,IACN,KAAK;AACH,MAAAO,IAAkB;AAClB;AAAA,IACF,KAAK;AACH,MAAAA,IAAkB;AAClB;AAAA,IACF,KAAK;AACH,MAAAA,IAAkB;AAClB;AAAA,IACF;AACE,MAAAA,IAAkB;AAAA,EAAA;AAWtB,SARkB,IAAI,KAAK,aAAaR,GAAQ;AAAA,IAC9C,UAAUF,EAAM;AAAA,IAChB,iBAAAU;AAAA,IACA,uBAAuBL,KAAyBC;AAAA,IAChD,uBAAuBF,KAAyBE;AAAA,IAChD,OAAO;AAAA,EAAA,CACR,EAEgB,OAAOG,CAAM;AAChC;AAMA,SAASF,EAAoBI,GAA8B;AACzD,QAAMC,IAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAEIC,IAAyB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAE/E,SAAID,EAAsB,SAASD,EAAa,YAAA,CAAa,IACpD,IAELE,EAAuB,SAASF,EAAa,YAAA,CAAa,IACrD,IAEF;AACT;"}
1
+ {"version":3,"file":"currency.js","names":[],"sources":["../../src/money/currency.ts"],"sourcesContent":["import type { Money } from './types';\n\n/**\n * Options for currency formatting.\n */\nexport type CurrencyFormatOptions = {\n locale?: string; // BCP 47 language tag (e.g., 'en-US', 'de-DE')\n maximumFractionDigits?: number; // Maximum decimal places\n minimumFractionDigits?: number; // Minimum decimal places\n style?: 'symbol' | 'code' | 'name'; // Display style\n};\n\n/**\n * Formats a monetary amount as a currency string with proper locale and symbol.\n * Handles decimal places automatically based on currency.\n *\n * @example\n * ```ts\n * const money = { amount: 123456n, currency: 'USD' };\n *\n * currency(money); // '$1,234.56' (default en-US)\n * currency(money, { locale: 'de-DE' }); // '1.234,56 $'\n * currency(money, { style: 'code' }); // 'USD 1,234.56'\n * currency(money, { style: 'name' }); // '1,234.56 US dollars'\n * ```\n *\n * @param money - Money object to format\n * @param options - Formatting options\n * @returns Formatted currency string\n */\nexport function currency(money: Money, options: CurrencyFormatOptions = {}): string {\n const { locale = 'en-US', maximumFractionDigits, minimumFractionDigits, style = 'symbol' } = options;\n\n // Get decimal places for currency (default to 2 for most currencies)\n const decimalPlaces = getCurrencyDecimals(money.currency);\n\n // Convert bigint amount to decimal (divide by 10^decimalPlaces)\n const divisor = 10 ** decimalPlaces;\n const amount = Number(money.amount) / divisor;\n\n const formatter = new Intl.NumberFormat(locale, {\n currency: money.currency,\n currencyDisplay: style,\n maximumFractionDigits: maximumFractionDigits ?? decimalPlaces,\n minimumFractionDigits: minimumFractionDigits ?? decimalPlaces,\n style: 'currency',\n });\n\n return formatter.format(amount);\n}\n\nfunction getCurrencyDecimals(currencyCode: string): number {\n return (\n new Intl.NumberFormat('en', { currency: currencyCode, style: 'currency' }).resolvedOptions()\n .maximumFractionDigits ?? 2\n );\n}\n"],"mappings":";AA8BA,SAAgB,EAAS,GAAc,IAAiC,EAAE,EAAU;CAClF,IAAM,EAAE,YAAS,SAAS,0BAAuB,0BAAuB,WAAQ,aAAa,GAGvF,IAAgB,EAAoB,EAAM,SAAS,EAGnD,IAAU,MAAM,GAChB,IAAS,OAAO,EAAM,OAAO,GAAG;AAUtC,QARkB,IAAI,KAAK,aAAa,GAAQ;EAC9C,UAAU,EAAM;EAChB,iBAAiB;EACjB,uBAAuB,KAAyB;EAChD,uBAAuB,KAAyB;EAChD,OAAO;EACR,CAAC,CAEe,OAAO,EAAO;;AAGjC,SAAS,EAAoB,GAA8B;AACzD,QACE,IAAI,KAAK,aAAa,MAAM;EAAE,UAAU;EAAc,OAAO;EAAY,CAAC,CAAC,iBAAiB,CACzF,yBAAyB"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function r(e,t){if(e.currency!==t.from)throw new Error(`Currency mismatch: expected ${t.from}, got ${e.currency}`);const n=BigInt(Math.round(t.rate*1e6));return{amount:e.amount*n/1000000n,currency:t.to}}exports.exchange=r;
2
- //# sourceMappingURL=exchange.cjs.map
1
+ function e(e,t){if(e.currency!==t.from)throw Error(`Currency mismatch: expected ${t.from}, got ${e.currency}`);let n=BigInt(Math.round(t.rate*1e6));return{amount:e.amount*n/1000000n,currency:t.to}}exports.exchange=e;
2
+ //# sourceMappingURL=exchange.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange.cjs","sources":["../../src/money/exchange.ts"],"sourcesContent":["import type { Money } from './types';\n\n/**\n * Exchange rate for currency conversion.\n */\nexport type ExchangeRate = {\n from: string; // Source currency code\n to: string; // Target currency code\n rate: number; // Exchange rate multiplier\n};\n\n/**\n * Converts money from one currency to another using the provided exchange rate.\n * Maintains precision by using bigint arithmetic.\n *\n * @example\n * ```ts\n * const usd = { amount: 100000n, currency: 'USD' }; // $1,000.00\n * const rate = { from: 'USD', to: 'EUR', rate: 0.85 };\n *\n * exchange(usd, rate);\n * // { amount: 85000n, currency: 'EUR' } // €850.00\n * ```\n *\n * @param money - Money to convert\n * @param rate - Exchange rate information\n * @returns Converted money in target currency\n * @throws {Error} If source currency doesn't match rate.from\n */\nexport function exchange(money: Money, rate: ExchangeRate): Money {\n if (money.currency !== rate.from) {\n throw new Error(`Currency mismatch: expected ${rate.from}, got ${money.currency}`);\n }\n\n // Convert rate to avoid floating point issues\n // Multiply by 1000000 for precision, then divide back\n const rateBigInt = BigInt(Math.round(rate.rate * 1000000));\n const convertedAmount = (money.amount * rateBigInt) / 1000000n;\n\n return {\n amount: convertedAmount,\n currency: rate.to,\n };\n}\n"],"names":["exchange","money","rate","rateBigInt"],"mappings":"gFA6BO,SAASA,EAASC,EAAcC,EAA2B,CAChE,GAAID,EAAM,WAAaC,EAAK,KAC1B,MAAM,IAAI,MAAM,+BAA+BA,EAAK,IAAI,SAASD,EAAM,QAAQ,EAAE,EAKnF,MAAME,EAAa,OAAO,KAAK,MAAMD,EAAK,KAAO,GAAO,CAAC,EAGzD,MAAO,CACL,OAHuBD,EAAM,OAASE,EAAc,SAIpD,SAAUD,EAAK,EAAA,CAEnB"}
1
+ {"version":3,"file":"exchange.cjs","names":[],"sources":["../../src/money/exchange.ts"],"sourcesContent":["import type { Money } from './types';\n\n/**\n * Exchange rate for currency conversion.\n */\nexport type ExchangeRate = {\n from: string; // Source currency code\n rate: number; // Exchange rate multiplier\n to: string; // Target currency code\n};\n\n/**\n * Converts money from one currency to another using the provided exchange rate.\n * Maintains precision by using bigint arithmetic.\n *\n * @example\n * ```ts\n * const usd = { amount: 100000n, currency: 'USD' }; // $1,000.00\n * const rate = { from: 'USD', to: 'EUR', rate: 0.85 };\n *\n * exchange(usd, rate);\n * // { amount: 85000n, currency: 'EUR' } // €850.00\n * ```\n *\n * @param money - Money to convert\n * @param rate - Exchange rate information\n * @returns Converted money in target currency\n * @throws {Error} If source currency doesn't match rate.from\n */\nexport function exchange(money: Money, rate: ExchangeRate): Money {\n if (money.currency !== rate.from) {\n throw new Error(`Currency mismatch: expected ${rate.from}, got ${money.currency}`);\n }\n\n // Convert rate to avoid floating point issues\n // Multiply by 1000000 for precision, then divide back\n const rateBigInt = BigInt(Math.round(rate.rate * 1000000));\n const convertedAmount = (money.amount * rateBigInt) / 1000000n;\n\n return {\n amount: convertedAmount,\n currency: rate.to,\n };\n}\n"],"mappings":"AA6BA,SAAgB,EAAS,EAAc,EAA2B,CAChE,GAAI,EAAM,WAAa,EAAK,KAC1B,MAAU,MAAM,+BAA+B,EAAK,KAAK,QAAQ,EAAM,WAAW,CAKpF,IAAM,EAAa,OAAO,KAAK,MAAM,EAAK,KAAO,IAAQ,CAAC,CAG1D,MAAO,CACL,OAHuB,EAAM,OAAS,EAAc,SAIpD,SAAU,EAAK,GAChB"}
@@ -0,0 +1,29 @@
1
+ import type { Money } from './types';
2
+ /**
3
+ * Exchange rate for currency conversion.
4
+ */
5
+ export type ExchangeRate = {
6
+ from: string;
7
+ rate: number;
8
+ to: string;
9
+ };
10
+ /**
11
+ * Converts money from one currency to another using the provided exchange rate.
12
+ * Maintains precision by using bigint arithmetic.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const usd = { amount: 100000n, currency: 'USD' }; // $1,000.00
17
+ * const rate = { from: 'USD', to: 'EUR', rate: 0.85 };
18
+ *
19
+ * exchange(usd, rate);
20
+ * // { amount: 85000n, currency: 'EUR' } // €850.00
21
+ * ```
22
+ *
23
+ * @param money - Money to convert
24
+ * @param rate - Exchange rate information
25
+ * @returns Converted money in target currency
26
+ * @throws {Error} If source currency doesn't match rate.from
27
+ */
28
+ export declare function exchange(money: Money, rate: ExchangeRate): Money;
29
+ //# sourceMappingURL=exchange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/money/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,GAAG,KAAK,CAchE"}
@@ -1,13 +1,13 @@
1
- function o(r, n) {
2
- if (r.currency !== n.from)
3
- throw new Error(`Currency mismatch: expected ${n.from}, got ${r.currency}`);
4
- const t = BigInt(Math.round(n.rate * 1e6));
5
- return {
6
- amount: r.amount * t / 1000000n,
7
- currency: n.to
8
- };
1
+ //#region src/money/exchange.ts
2
+ function e(e, t) {
3
+ if (e.currency !== t.from) throw Error(`Currency mismatch: expected ${t.from}, got ${e.currency}`);
4
+ let n = BigInt(Math.round(t.rate * 1e6));
5
+ return {
6
+ amount: e.amount * n / 1000000n,
7
+ currency: t.to
8
+ };
9
9
  }
10
- export {
11
- o as exchange
12
- };
13
- //# sourceMappingURL=exchange.js.map
10
+ //#endregion
11
+ export { e as exchange };
12
+
13
+ //# sourceMappingURL=exchange.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange.js","sources":["../../src/money/exchange.ts"],"sourcesContent":["import type { Money } from './types';\n\n/**\n * Exchange rate for currency conversion.\n */\nexport type ExchangeRate = {\n from: string; // Source currency code\n to: string; // Target currency code\n rate: number; // Exchange rate multiplier\n};\n\n/**\n * Converts money from one currency to another using the provided exchange rate.\n * Maintains precision by using bigint arithmetic.\n *\n * @example\n * ```ts\n * const usd = { amount: 100000n, currency: 'USD' }; // $1,000.00\n * const rate = { from: 'USD', to: 'EUR', rate: 0.85 };\n *\n * exchange(usd, rate);\n * // { amount: 85000n, currency: 'EUR' } // €850.00\n * ```\n *\n * @param money - Money to convert\n * @param rate - Exchange rate information\n * @returns Converted money in target currency\n * @throws {Error} If source currency doesn't match rate.from\n */\nexport function exchange(money: Money, rate: ExchangeRate): Money {\n if (money.currency !== rate.from) {\n throw new Error(`Currency mismatch: expected ${rate.from}, got ${money.currency}`);\n }\n\n // Convert rate to avoid floating point issues\n // Multiply by 1000000 for precision, then divide back\n const rateBigInt = BigInt(Math.round(rate.rate * 1000000));\n const convertedAmount = (money.amount * rateBigInt) / 1000000n;\n\n return {\n amount: convertedAmount,\n currency: rate.to,\n };\n}\n"],"names":["exchange","money","rate","rateBigInt"],"mappings":"AA6BO,SAASA,EAASC,GAAcC,GAA2B;AAChE,MAAID,EAAM,aAAaC,EAAK;AAC1B,UAAM,IAAI,MAAM,+BAA+BA,EAAK,IAAI,SAASD,EAAM,QAAQ,EAAE;AAKnF,QAAME,IAAa,OAAO,KAAK,MAAMD,EAAK,OAAO,GAAO,CAAC;AAGzD,SAAO;AAAA,IACL,QAHuBD,EAAM,SAASE,IAAc;AAAA,IAIpD,UAAUD,EAAK;AAAA,EAAA;AAEnB;"}
1
+ {"version":3,"file":"exchange.js","names":[],"sources":["../../src/money/exchange.ts"],"sourcesContent":["import type { Money } from './types';\n\n/**\n * Exchange rate for currency conversion.\n */\nexport type ExchangeRate = {\n from: string; // Source currency code\n rate: number; // Exchange rate multiplier\n to: string; // Target currency code\n};\n\n/**\n * Converts money from one currency to another using the provided exchange rate.\n * Maintains precision by using bigint arithmetic.\n *\n * @example\n * ```ts\n * const usd = { amount: 100000n, currency: 'USD' }; // $1,000.00\n * const rate = { from: 'USD', to: 'EUR', rate: 0.85 };\n *\n * exchange(usd, rate);\n * // { amount: 85000n, currency: 'EUR' } // €850.00\n * ```\n *\n * @param money - Money to convert\n * @param rate - Exchange rate information\n * @returns Converted money in target currency\n * @throws {Error} If source currency doesn't match rate.from\n */\nexport function exchange(money: Money, rate: ExchangeRate): Money {\n if (money.currency !== rate.from) {\n throw new Error(`Currency mismatch: expected ${rate.from}, got ${money.currency}`);\n }\n\n // Convert rate to avoid floating point issues\n // Multiply by 1000000 for precision, then divide back\n const rateBigInt = BigInt(Math.round(rate.rate * 1000000));\n const convertedAmount = (money.amount * rateBigInt) / 1000000n;\n\n return {\n amount: convertedAmount,\n currency: rate.to,\n };\n}\n"],"mappings":";AA6BA,SAAgB,EAAS,GAAc,GAA2B;AAChE,KAAI,EAAM,aAAa,EAAK,KAC1B,OAAU,MAAM,+BAA+B,EAAK,KAAK,QAAQ,EAAM,WAAW;CAKpF,IAAM,IAAa,OAAO,KAAK,MAAM,EAAK,OAAO,IAAQ,CAAC;AAG1D,QAAO;EACL,QAHuB,EAAM,SAAS,IAAc;EAIpD,UAAU,EAAK;EAChB"}
@@ -0,0 +1,4 @@
1
+ export * from './currency';
2
+ export * from './exchange';
3
+ export * from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/money/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Represents a monetary amount with currency.
3
+ * Amount is stored as bigint (minor units/cents) for precision.
4
+ */
5
+ export type Money = {
6
+ readonly amount: bigint;
7
+ readonly currency: string;
8
+ };
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/money/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../typed/isEqual.cjs"),r=require("../typed/isObject.cjs");function u(s,i,f=b.isEqual){if(!s&&!i)return{};const n={};for(const e of new Set([...Object.keys(s??{}),...Object.keys(i??{})])){const t=s?.[e],c=i?.[e];if(r.isObject(t)&&r.isObject(c)){const o=u(t,c,f);Object.keys(o).length>0&&(n[e]=o)}else f(t,c)||(n[e]=t)}return n}exports.diff=u;
2
- //# sourceMappingURL=diff.cjs.map
1
+ const e=require(`../typed/isEqual.cjs`),t=require(`../typed/isObject.cjs`);var n=Symbol(`deleted`);function r(i,a,o=e.isEqual){if(!i&&!a)return{};let s={};for(let e of new Set([...Object.keys(i??{}),...Object.keys(a??{})])){let c=i?.[e],l=a?.[e];if(t.isObject(c)&&t.isObject(l)){let t=r(c,l,o);Object.keys(t).length>0&&(s[e]=t)}else o(c,l)||(s[e]=a!=null&&e in a&&(i==null||!(e in i))?n:c)}return s}exports.DELETED=n,exports.diff=r;
2
+ //# sourceMappingURL=diff.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff.cjs","sources":["../../src/object/diff.ts"],"sourcesContent":["import { isEqual } from '../typed/isEqual';\nimport { isObject } from '../typed/isObject';\nimport type { Obj } from '../types';\n\n/**\n * Computes the difference between two objects.\n *\n * @example\n * ```ts\n * const obj1 = { a: 1, b: 2, c: 3 };\n * const obj2 = { b: 2, c: 3, d: 4 };\n *\n * diff(obj1, obj2); // { d: 4 }\n * ```\n *\n * @param curr - The current object.\n * @param prev - The previous object.\n * @param [compareFn] - A custom function to compare values.\n * @returns An object containing new/modified properties.\n */\nexport function diff<T extends Obj>(\n curr?: T,\n prev?: T,\n compareFn: (a: unknown, b: unknown) => boolean = isEqual,\n): Partial<T> {\n if (!curr && !prev) return {} as Partial<T>;\n\n const result: Record<string, unknown> = {};\n\n for (const key of new Set([...Object.keys(curr ?? {}), ...Object.keys(prev ?? {})])) {\n const _curr = curr?.[key];\n const _prev = prev?.[key];\n\n if (isObject(_curr) && isObject(_prev)) {\n const nestedDiff = diff(_curr, _prev, compareFn) as Partial<T[keyof T]>;\n if (Object.keys(nestedDiff).length > 0) {\n result[key] = nestedDiff;\n }\n } else if (!compareFn(_curr, _prev)) {\n result[key] = _curr;\n }\n }\n\n return result as Partial<T>;\n}\n"],"names":["diff","curr","prev","compareFn","isEqual","result","key","_curr","_prev","isObject","nestedDiff"],"mappings":"2JAoBO,SAASA,EACdC,EACAC,EACAC,EAAiDC,EAAAA,QACrC,CACZ,GAAI,CAACH,GAAQ,CAACC,QAAa,CAAA,EAE3B,MAAMG,EAAkC,CAAA,EAExC,UAAWC,KAAO,IAAI,IAAI,CAAC,GAAG,OAAO,KAAKL,GAAQ,CAAA,CAAE,EAAG,GAAG,OAAO,KAAKC,GAAQ,CAAA,CAAE,CAAC,CAAC,EAAG,CACnF,MAAMK,EAAQN,IAAOK,CAAG,EAClBE,EAAQN,IAAOI,CAAG,EAExB,GAAIG,EAAAA,SAASF,CAAK,GAAKE,EAAAA,SAASD,CAAK,EAAG,CACtC,MAAME,EAAaV,EAAKO,EAAOC,EAAOL,CAAS,EAC3C,OAAO,KAAKO,CAAU,EAAE,OAAS,IACnCL,EAAOC,CAAG,EAAII,EAElB,MAAYP,EAAUI,EAAOC,CAAK,IAChCH,EAAOC,CAAG,EAAIC,EAElB,CAEA,OAAOF,CACT"}
1
+ {"version":3,"file":"diff.cjs","names":[],"sources":["../../src/object/diff.ts"],"sourcesContent":["import type { Obj } from '../types';\n\nimport { isEqual } from '../typed/isEqual';\nimport { isObject } from '../typed/isObject';\n\n/** Sentinel value returned by `diff` when a key exists in `prev` but not in `curr`. */\nexport const DELETED: unique symbol = Symbol('deleted');\n\nexport type DiffResult<T extends Obj> = { [K in keyof T]?: T[K] | typeof DELETED };\n\n/**\n * Computes the difference between two objects.\n *\n * Keys present in `prev` but absent in `curr` are marked with the `DELETED` sentinel.\n *\n * @example\n * ```ts\n * import { diff, DELETED } from '@vielzeug/toolkit';\n *\n * diff({ a: 1, b: 2 }, { a: 1, b: 2, c: 3 }); // { c: DELETED }\n * diff({ a: 1, b: 99 }, { a: 1, b: 2 }); // { b: 99 }\n * ```\n *\n * @param curr - The current object.\n * @param prev - The previous object.\n * @param [compareFn] - A custom function to compare values.\n * @returns An object containing new/modified/deleted properties.\n */\nexport function diff<T extends Obj>(\n curr?: T,\n prev?: T,\n compareFn: (a: unknown, b: unknown) => boolean = isEqual,\n): DiffResult<T> {\n if (!curr && !prev) return {};\n\n const result: Record<string, unknown> = {};\n\n for (const key of new Set([...Object.keys(curr ?? {}), ...Object.keys(prev ?? {})])) {\n const _curr = curr?.[key];\n const _prev = prev?.[key];\n\n if (isObject(_curr) && isObject(_prev)) {\n const nestedDiff = diff(_curr as Obj, _prev as Obj, compareFn);\n\n if (Object.keys(nestedDiff).length > 0) {\n result[key] = nestedDiff;\n }\n } else if (!compareFn(_curr, _prev)) {\n const wasDeleted = prev != null && key in prev && (curr == null || !(key in curr));\n\n result[key] = wasDeleted ? DELETED : _curr;\n }\n }\n\n return result as DiffResult<T>;\n}\n"],"mappings":"2EAMA,IAAa,EAAyB,OAAO,UAAU,CAsBvD,SAAgB,EACd,EACA,EACA,EAAiD,EAAA,QAClC,CACf,GAAI,CAAC,GAAQ,CAAC,EAAM,MAAO,EAAE,CAE7B,IAAM,EAAkC,EAAE,CAE1C,IAAK,IAAM,KAAO,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,GAAQ,EAAE,CAAC,CAAE,GAAG,OAAO,KAAK,GAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CACnF,IAAM,EAAQ,IAAO,GACf,EAAQ,IAAO,GAErB,GAAI,EAAA,SAAS,EAAM,EAAI,EAAA,SAAS,EAAM,CAAE,CACtC,IAAM,EAAa,EAAK,EAAc,EAAc,EAAU,CAE1D,OAAO,KAAK,EAAW,CAAC,OAAS,IACnC,EAAO,GAAO,QAEN,EAAU,EAAO,EAAM,GAGjC,EAAO,GAFY,GAAQ,MAAQ,KAAO,IAAS,GAAQ,MAAQ,EAAE,KAAO,IAEjD,EAAU,GAIzC,OAAO"}
@@ -0,0 +1,26 @@
1
+ import type { Obj } from '../types';
2
+ /** Sentinel value returned by `diff` when a key exists in `prev` but not in `curr`. */
3
+ export declare const DELETED: unique symbol;
4
+ export type DiffResult<T extends Obj> = {
5
+ [K in keyof T]?: T[K] | typeof DELETED;
6
+ };
7
+ /**
8
+ * Computes the difference between two objects.
9
+ *
10
+ * Keys present in `prev` but absent in `curr` are marked with the `DELETED` sentinel.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { diff, DELETED } from '@vielzeug/toolkit';
15
+ *
16
+ * diff({ a: 1, b: 2 }, { a: 1, b: 2, c: 3 }); // { c: DELETED }
17
+ * diff({ a: 1, b: 99 }, { a: 1, b: 2 }); // { b: 99 }
18
+ * ```
19
+ *
20
+ * @param curr - The current object.
21
+ * @param prev - The previous object.
22
+ * @param [compareFn] - A custom function to compare values.
23
+ * @returns An object containing new/modified/deleted properties.
24
+ */
25
+ export declare function diff<T extends Obj>(curr?: T, prev?: T, compareFn?: (a: unknown, b: unknown) => boolean): DiffResult<T>;
26
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/object/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAKpC,uFAAuF;AACvF,eAAO,MAAM,OAAO,EAAE,OAAO,MAA0B,CAAC;AAExD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO;CAAE,CAAC;AAEnF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,GAAG,EAChC,IAAI,CAAC,EAAE,CAAC,EACR,IAAI,CAAC,EAAE,CAAC,EACR,SAAS,GAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,OAAiB,GACvD,UAAU,CAAC,CAAC,CAAC,CAuBf"}