@ducatjs/money 0.2.2 → 0.3.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 (1327) hide show
  1. package/NOTICE +17 -8
  2. package/README.md +346 -43
  3. package/data/cldr-territories.json +2791 -0
  4. package/data/crypto-units.json +68 -0
  5. package/data/rbnf/de.txt +243 -0
  6. package/data/rbnf/en.txt +166 -0
  7. package/data/rbnf/es.txt +261 -0
  8. package/data/rbnf/fr.txt +159 -0
  9. package/data/rbnf/it.txt +502 -0
  10. package/data/rbnf/nl.txt +103 -0
  11. package/data/rbnf/pt.txt +171 -0
  12. package/dist/adyen-fx.js +1 -1
  13. package/dist/adyen-fx.js.map +1 -1
  14. package/dist/allocate.d.ts.map +1 -1
  15. package/dist/allocate.js +2 -3
  16. package/dist/allocate.js.map +1 -1
  17. package/dist/cash.d.ts +15 -0
  18. package/dist/cash.d.ts.map +1 -1
  19. package/dist/cash.js +17 -0
  20. package/dist/cash.js.map +1 -1
  21. package/dist/convert.d.ts.map +1 -1
  22. package/dist/convert.js +2 -3
  23. package/dist/convert.js.map +1 -1
  24. package/dist/crypto.d.ts +54 -0
  25. package/dist/crypto.d.ts.map +1 -0
  26. package/dist/crypto.js +89 -0
  27. package/dist/crypto.js.map +1 -0
  28. package/dist/currencies.d.ts +43 -0
  29. package/dist/currencies.d.ts.map +1 -0
  30. package/dist/currencies.js +91 -0
  31. package/dist/currencies.js.map +1 -0
  32. package/dist/currency.d.ts +9 -1
  33. package/dist/currency.d.ts.map +1 -1
  34. package/dist/currency.js +41 -14
  35. package/dist/currency.js.map +1 -1
  36. package/dist/decimal.d.ts +25 -3
  37. package/dist/decimal.d.ts.map +1 -1
  38. package/dist/decimal.js +78 -8
  39. package/dist/decimal.js.map +1 -1
  40. package/dist/ecb.d.ts +23 -8
  41. package/dist/ecb.d.ts.map +1 -1
  42. package/dist/ecb.js +46 -15
  43. package/dist/ecb.js.map +1 -1
  44. package/dist/entries/adyen-fx.d.ts +3 -0
  45. package/dist/entries/adyen-fx.d.ts.map +1 -0
  46. package/dist/entries/adyen-fx.js +5 -0
  47. package/dist/entries/adyen-fx.js.map +1 -0
  48. package/dist/entries/boc.d.ts +3 -0
  49. package/dist/entries/boc.d.ts.map +1 -0
  50. package/dist/entries/boc.js +5 -0
  51. package/dist/entries/boc.js.map +1 -0
  52. package/dist/entries/boe.d.ts +3 -0
  53. package/dist/entries/boe.d.ts.map +1 -0
  54. package/dist/entries/boe.js +5 -0
  55. package/dist/entries/boe.js.map +1 -0
  56. package/dist/entries/crypto.d.ts +3 -0
  57. package/dist/entries/crypto.d.ts.map +1 -0
  58. package/dist/entries/crypto.js +5 -0
  59. package/dist/entries/crypto.js.map +1 -0
  60. package/dist/entries/currencies.d.ts +3 -0
  61. package/dist/entries/currencies.d.ts.map +1 -0
  62. package/dist/entries/currencies.js +5 -0
  63. package/dist/entries/currencies.js.map +1 -0
  64. package/dist/entries/drizzle-mysql.d.ts +3 -0
  65. package/dist/entries/drizzle-mysql.d.ts.map +1 -0
  66. package/dist/entries/drizzle-mysql.js +5 -0
  67. package/dist/entries/drizzle-mysql.js.map +1 -0
  68. package/dist/entries/drizzle-pg.d.ts +3 -0
  69. package/dist/entries/drizzle-pg.d.ts.map +1 -0
  70. package/dist/entries/drizzle-pg.js +5 -0
  71. package/dist/entries/drizzle-pg.js.map +1 -0
  72. package/dist/entries/drizzle-sqlite.d.ts +3 -0
  73. package/dist/entries/drizzle-sqlite.d.ts.map +1 -0
  74. package/dist/entries/drizzle-sqlite.js +5 -0
  75. package/dist/entries/drizzle-sqlite.js.map +1 -0
  76. package/dist/entries/ecb.d.ts +3 -0
  77. package/dist/entries/ecb.d.ts.map +1 -0
  78. package/dist/entries/ecb.js +5 -0
  79. package/dist/entries/ecb.js.map +1 -0
  80. package/dist/entries/fed.d.ts +3 -0
  81. package/dist/entries/fed.d.ts.map +1 -0
  82. package/dist/entries/fed.js +5 -0
  83. package/dist/entries/fed.js.map +1 -0
  84. package/dist/entries/fetch.d.ts +3 -0
  85. package/dist/entries/fetch.d.ts.map +1 -0
  86. package/dist/entries/fetch.js +5 -0
  87. package/dist/entries/fetch.js.map +1 -0
  88. package/dist/entries/finance.d.ts +3 -0
  89. package/dist/entries/finance.d.ts.map +1 -0
  90. package/dist/entries/finance.js +5 -0
  91. package/dist/entries/finance.js.map +1 -0
  92. package/dist/entries/historic.d.ts +3 -0
  93. package/dist/entries/historic.d.ts.map +1 -0
  94. package/dist/entries/historic.js +5 -0
  95. package/dist/entries/historic.js.map +1 -0
  96. package/dist/entries/history.d.ts +3 -0
  97. package/dist/entries/history.d.ts.map +1 -0
  98. package/dist/entries/history.js +5 -0
  99. package/dist/entries/history.js.map +1 -0
  100. package/dist/entries/hmrc.d.ts +3 -0
  101. package/dist/entries/hmrc.d.ts.map +1 -0
  102. package/dist/entries/hmrc.js +5 -0
  103. package/dist/entries/hmrc.js.map +1 -0
  104. package/dist/entries/kysely.d.ts +3 -0
  105. package/dist/entries/kysely.d.ts.map +1 -0
  106. package/dist/entries/kysely.js +5 -0
  107. package/dist/entries/kysely.js.map +1 -0
  108. package/dist/entries/parse.d.ts +3 -0
  109. package/dist/entries/parse.d.ts.map +1 -0
  110. package/dist/entries/parse.js +5 -0
  111. package/dist/entries/parse.js.map +1 -0
  112. package/dist/entries/pg.d.ts +3 -0
  113. package/dist/entries/pg.d.ts.map +1 -0
  114. package/dist/entries/pg.js +5 -0
  115. package/dist/entries/pg.js.map +1 -0
  116. package/dist/entries/policy.d.ts +3 -0
  117. package/dist/entries/policy.d.ts.map +1 -0
  118. package/dist/entries/policy.js +5 -0
  119. package/dist/entries/policy.js.map +1 -0
  120. package/dist/entries/pricing.d.ts +3 -0
  121. package/dist/entries/pricing.d.ts.map +1 -0
  122. package/dist/entries/pricing.js +5 -0
  123. package/dist/entries/pricing.js.map +1 -0
  124. package/dist/entries/stripe-fx.d.ts +3 -0
  125. package/dist/entries/stripe-fx.d.ts.map +1 -0
  126. package/dist/entries/stripe-fx.js +5 -0
  127. package/dist/entries/stripe-fx.js.map +1 -0
  128. package/dist/entries/testing-arbitraries.d.ts +3 -0
  129. package/dist/entries/testing-arbitraries.d.ts.map +1 -0
  130. package/dist/entries/testing-arbitraries.js +5 -0
  131. package/dist/entries/testing-arbitraries.js.map +1 -0
  132. package/dist/entries/testing-index.d.ts +3 -0
  133. package/dist/entries/testing-index.d.ts.map +1 -0
  134. package/dist/entries/testing-index.js +5 -0
  135. package/dist/entries/testing-index.js.map +1 -0
  136. package/dist/entries/testing-jest.d.ts +3 -0
  137. package/dist/entries/testing-jest.d.ts.map +1 -0
  138. package/dist/entries/testing-jest.js +5 -0
  139. package/dist/entries/testing-jest.js.map +1 -0
  140. package/dist/entries/testing-vitest.d.ts +3 -0
  141. package/dist/entries/testing-vitest.d.ts.map +1 -0
  142. package/dist/entries/testing-vitest.js +5 -0
  143. package/dist/entries/testing-vitest.js.map +1 -0
  144. package/dist/entries/valibot.d.ts +3 -0
  145. package/dist/entries/valibot.d.ts.map +1 -0
  146. package/dist/entries/valibot.js +5 -0
  147. package/dist/entries/valibot.js.map +1 -0
  148. package/dist/entries/wire.d.ts +3 -0
  149. package/dist/entries/wire.d.ts.map +1 -0
  150. package/dist/entries/wire.js +5 -0
  151. package/dist/entries/wire.js.map +1 -0
  152. package/dist/entries/zod.d.ts +3 -0
  153. package/dist/entries/zod.d.ts.map +1 -0
  154. package/dist/entries/zod.js +5 -0
  155. package/dist/entries/zod.js.map +1 -0
  156. package/dist/exact.d.ts.map +1 -1
  157. package/dist/exact.js +3 -3
  158. package/dist/exact.js.map +1 -1
  159. package/dist/fetch.d.ts +7 -1
  160. package/dist/fetch.d.ts.map +1 -1
  161. package/dist/fetch.js +11 -2
  162. package/dist/fetch.js.map +1 -1
  163. package/dist/finance.d.ts +296 -0
  164. package/dist/finance.d.ts.map +1 -0
  165. package/dist/finance.js +825 -0
  166. package/dist/finance.js.map +1 -0
  167. package/dist/fixed-money.d.ts +12 -0
  168. package/dist/fixed-money.d.ts.map +1 -0
  169. package/dist/fixed-money.js +32 -0
  170. package/dist/fixed-money.js.map +1 -0
  171. package/dist/fixed.d.ts +26 -9
  172. package/dist/fixed.d.ts.map +1 -1
  173. package/dist/fixed.js +65 -48
  174. package/dist/fixed.js.map +1 -1
  175. package/dist/fn.d.ts +17 -1
  176. package/dist/fn.d.ts.map +1 -1
  177. package/dist/fn.js +17 -1
  178. package/dist/fn.js.map +1 -1
  179. package/dist/format.d.ts.map +1 -1
  180. package/dist/format.js +28 -9
  181. package/dist/format.js.map +1 -1
  182. package/dist/generated/crypto.d.ts +58 -0
  183. package/dist/generated/crypto.d.ts.map +1 -0
  184. package/dist/generated/crypto.js +15 -0
  185. package/dist/generated/crypto.js.map +1 -0
  186. package/dist/generated/iso/AED.d.ts +2 -0
  187. package/dist/generated/iso/AED.d.ts.map +1 -0
  188. package/dist/generated/iso/AED.js +5 -0
  189. package/dist/generated/iso/AED.js.map +1 -0
  190. package/dist/generated/iso/AFN.d.ts +2 -0
  191. package/dist/generated/iso/AFN.d.ts.map +1 -0
  192. package/dist/generated/iso/AFN.js +5 -0
  193. package/dist/generated/iso/AFN.js.map +1 -0
  194. package/dist/generated/iso/ALL.d.ts +2 -0
  195. package/dist/generated/iso/ALL.d.ts.map +1 -0
  196. package/dist/generated/iso/ALL.js +5 -0
  197. package/dist/generated/iso/ALL.js.map +1 -0
  198. package/dist/generated/iso/AMD.d.ts +2 -0
  199. package/dist/generated/iso/AMD.d.ts.map +1 -0
  200. package/dist/generated/iso/AMD.js +5 -0
  201. package/dist/generated/iso/AMD.js.map +1 -0
  202. package/dist/generated/iso/AOA.d.ts +2 -0
  203. package/dist/generated/iso/AOA.d.ts.map +1 -0
  204. package/dist/generated/iso/AOA.js +5 -0
  205. package/dist/generated/iso/AOA.js.map +1 -0
  206. package/dist/generated/iso/ARS.d.ts +2 -0
  207. package/dist/generated/iso/ARS.d.ts.map +1 -0
  208. package/dist/generated/iso/ARS.js +5 -0
  209. package/dist/generated/iso/ARS.js.map +1 -0
  210. package/dist/generated/iso/AUD.d.ts +2 -0
  211. package/dist/generated/iso/AUD.d.ts.map +1 -0
  212. package/dist/generated/iso/AUD.js +5 -0
  213. package/dist/generated/iso/AUD.js.map +1 -0
  214. package/dist/generated/iso/AWG.d.ts +2 -0
  215. package/dist/generated/iso/AWG.d.ts.map +1 -0
  216. package/dist/generated/iso/AWG.js +5 -0
  217. package/dist/generated/iso/AWG.js.map +1 -0
  218. package/dist/generated/iso/AZN.d.ts +2 -0
  219. package/dist/generated/iso/AZN.d.ts.map +1 -0
  220. package/dist/generated/iso/AZN.js +5 -0
  221. package/dist/generated/iso/AZN.js.map +1 -0
  222. package/dist/generated/iso/BAM.d.ts +2 -0
  223. package/dist/generated/iso/BAM.d.ts.map +1 -0
  224. package/dist/generated/iso/BAM.js +5 -0
  225. package/dist/generated/iso/BAM.js.map +1 -0
  226. package/dist/generated/iso/BBD.d.ts +2 -0
  227. package/dist/generated/iso/BBD.d.ts.map +1 -0
  228. package/dist/generated/iso/BBD.js +5 -0
  229. package/dist/generated/iso/BBD.js.map +1 -0
  230. package/dist/generated/iso/BDT.d.ts +2 -0
  231. package/dist/generated/iso/BDT.d.ts.map +1 -0
  232. package/dist/generated/iso/BDT.js +5 -0
  233. package/dist/generated/iso/BDT.js.map +1 -0
  234. package/dist/generated/iso/BHD.d.ts +2 -0
  235. package/dist/generated/iso/BHD.d.ts.map +1 -0
  236. package/dist/generated/iso/BHD.js +5 -0
  237. package/dist/generated/iso/BHD.js.map +1 -0
  238. package/dist/generated/iso/BIF.d.ts +2 -0
  239. package/dist/generated/iso/BIF.d.ts.map +1 -0
  240. package/dist/generated/iso/BIF.js +5 -0
  241. package/dist/generated/iso/BIF.js.map +1 -0
  242. package/dist/generated/iso/BMD.d.ts +2 -0
  243. package/dist/generated/iso/BMD.d.ts.map +1 -0
  244. package/dist/generated/iso/BMD.js +5 -0
  245. package/dist/generated/iso/BMD.js.map +1 -0
  246. package/dist/generated/iso/BND.d.ts +2 -0
  247. package/dist/generated/iso/BND.d.ts.map +1 -0
  248. package/dist/generated/iso/BND.js +5 -0
  249. package/dist/generated/iso/BND.js.map +1 -0
  250. package/dist/generated/iso/BOB.d.ts +2 -0
  251. package/dist/generated/iso/BOB.d.ts.map +1 -0
  252. package/dist/generated/iso/BOB.js +5 -0
  253. package/dist/generated/iso/BOB.js.map +1 -0
  254. package/dist/generated/iso/BOV.d.ts +2 -0
  255. package/dist/generated/iso/BOV.d.ts.map +1 -0
  256. package/dist/generated/iso/BOV.js +5 -0
  257. package/dist/generated/iso/BOV.js.map +1 -0
  258. package/dist/generated/iso/BRL.d.ts +2 -0
  259. package/dist/generated/iso/BRL.d.ts.map +1 -0
  260. package/dist/generated/iso/BRL.js +5 -0
  261. package/dist/generated/iso/BRL.js.map +1 -0
  262. package/dist/generated/iso/BSD.d.ts +2 -0
  263. package/dist/generated/iso/BSD.d.ts.map +1 -0
  264. package/dist/generated/iso/BSD.js +5 -0
  265. package/dist/generated/iso/BSD.js.map +1 -0
  266. package/dist/generated/iso/BTN.d.ts +2 -0
  267. package/dist/generated/iso/BTN.d.ts.map +1 -0
  268. package/dist/generated/iso/BTN.js +5 -0
  269. package/dist/generated/iso/BTN.js.map +1 -0
  270. package/dist/generated/iso/BWP.d.ts +2 -0
  271. package/dist/generated/iso/BWP.d.ts.map +1 -0
  272. package/dist/generated/iso/BWP.js +5 -0
  273. package/dist/generated/iso/BWP.js.map +1 -0
  274. package/dist/generated/iso/BYN.d.ts +2 -0
  275. package/dist/generated/iso/BYN.d.ts.map +1 -0
  276. package/dist/generated/iso/BYN.js +5 -0
  277. package/dist/generated/iso/BYN.js.map +1 -0
  278. package/dist/generated/iso/BZD.d.ts +2 -0
  279. package/dist/generated/iso/BZD.d.ts.map +1 -0
  280. package/dist/generated/iso/BZD.js +5 -0
  281. package/dist/generated/iso/BZD.js.map +1 -0
  282. package/dist/generated/iso/CAD.d.ts +2 -0
  283. package/dist/generated/iso/CAD.d.ts.map +1 -0
  284. package/dist/generated/iso/CAD.js +5 -0
  285. package/dist/generated/iso/CAD.js.map +1 -0
  286. package/dist/generated/iso/CDF.d.ts +2 -0
  287. package/dist/generated/iso/CDF.d.ts.map +1 -0
  288. package/dist/generated/iso/CDF.js +5 -0
  289. package/dist/generated/iso/CDF.js.map +1 -0
  290. package/dist/generated/iso/CHE.d.ts +2 -0
  291. package/dist/generated/iso/CHE.d.ts.map +1 -0
  292. package/dist/generated/iso/CHE.js +5 -0
  293. package/dist/generated/iso/CHE.js.map +1 -0
  294. package/dist/generated/iso/CHF.d.ts +2 -0
  295. package/dist/generated/iso/CHF.d.ts.map +1 -0
  296. package/dist/generated/iso/CHF.js +5 -0
  297. package/dist/generated/iso/CHF.js.map +1 -0
  298. package/dist/generated/iso/CHW.d.ts +2 -0
  299. package/dist/generated/iso/CHW.d.ts.map +1 -0
  300. package/dist/generated/iso/CHW.js +5 -0
  301. package/dist/generated/iso/CHW.js.map +1 -0
  302. package/dist/generated/iso/CLF.d.ts +2 -0
  303. package/dist/generated/iso/CLF.d.ts.map +1 -0
  304. package/dist/generated/iso/CLF.js +5 -0
  305. package/dist/generated/iso/CLF.js.map +1 -0
  306. package/dist/generated/iso/CLP.d.ts +2 -0
  307. package/dist/generated/iso/CLP.d.ts.map +1 -0
  308. package/dist/generated/iso/CLP.js +5 -0
  309. package/dist/generated/iso/CLP.js.map +1 -0
  310. package/dist/generated/iso/CNY.d.ts +2 -0
  311. package/dist/generated/iso/CNY.d.ts.map +1 -0
  312. package/dist/generated/iso/CNY.js +5 -0
  313. package/dist/generated/iso/CNY.js.map +1 -0
  314. package/dist/generated/iso/COP.d.ts +2 -0
  315. package/dist/generated/iso/COP.d.ts.map +1 -0
  316. package/dist/generated/iso/COP.js +5 -0
  317. package/dist/generated/iso/COP.js.map +1 -0
  318. package/dist/generated/iso/COU.d.ts +2 -0
  319. package/dist/generated/iso/COU.d.ts.map +1 -0
  320. package/dist/generated/iso/COU.js +5 -0
  321. package/dist/generated/iso/COU.js.map +1 -0
  322. package/dist/generated/iso/CRC.d.ts +2 -0
  323. package/dist/generated/iso/CRC.d.ts.map +1 -0
  324. package/dist/generated/iso/CRC.js +5 -0
  325. package/dist/generated/iso/CRC.js.map +1 -0
  326. package/dist/generated/iso/CUP.d.ts +2 -0
  327. package/dist/generated/iso/CUP.d.ts.map +1 -0
  328. package/dist/generated/iso/CUP.js +5 -0
  329. package/dist/generated/iso/CUP.js.map +1 -0
  330. package/dist/generated/iso/CVE.d.ts +2 -0
  331. package/dist/generated/iso/CVE.d.ts.map +1 -0
  332. package/dist/generated/iso/CVE.js +5 -0
  333. package/dist/generated/iso/CVE.js.map +1 -0
  334. package/dist/generated/iso/CZK.d.ts +2 -0
  335. package/dist/generated/iso/CZK.d.ts.map +1 -0
  336. package/dist/generated/iso/CZK.js +5 -0
  337. package/dist/generated/iso/CZK.js.map +1 -0
  338. package/dist/generated/iso/DJF.d.ts +2 -0
  339. package/dist/generated/iso/DJF.d.ts.map +1 -0
  340. package/dist/generated/iso/DJF.js +5 -0
  341. package/dist/generated/iso/DJF.js.map +1 -0
  342. package/dist/generated/iso/DKK.d.ts +2 -0
  343. package/dist/generated/iso/DKK.d.ts.map +1 -0
  344. package/dist/generated/iso/DKK.js +5 -0
  345. package/dist/generated/iso/DKK.js.map +1 -0
  346. package/dist/generated/iso/DOP.d.ts +2 -0
  347. package/dist/generated/iso/DOP.d.ts.map +1 -0
  348. package/dist/generated/iso/DOP.js +5 -0
  349. package/dist/generated/iso/DOP.js.map +1 -0
  350. package/dist/generated/iso/DZD.d.ts +2 -0
  351. package/dist/generated/iso/DZD.d.ts.map +1 -0
  352. package/dist/generated/iso/DZD.js +5 -0
  353. package/dist/generated/iso/DZD.js.map +1 -0
  354. package/dist/generated/iso/EGP.d.ts +2 -0
  355. package/dist/generated/iso/EGP.d.ts.map +1 -0
  356. package/dist/generated/iso/EGP.js +5 -0
  357. package/dist/generated/iso/EGP.js.map +1 -0
  358. package/dist/generated/iso/ERN.d.ts +2 -0
  359. package/dist/generated/iso/ERN.d.ts.map +1 -0
  360. package/dist/generated/iso/ERN.js +5 -0
  361. package/dist/generated/iso/ERN.js.map +1 -0
  362. package/dist/generated/iso/ETB.d.ts +2 -0
  363. package/dist/generated/iso/ETB.d.ts.map +1 -0
  364. package/dist/generated/iso/ETB.js +5 -0
  365. package/dist/generated/iso/ETB.js.map +1 -0
  366. package/dist/generated/iso/EUR.d.ts +2 -0
  367. package/dist/generated/iso/EUR.d.ts.map +1 -0
  368. package/dist/generated/iso/EUR.js +5 -0
  369. package/dist/generated/iso/EUR.js.map +1 -0
  370. package/dist/generated/iso/FJD.d.ts +2 -0
  371. package/dist/generated/iso/FJD.d.ts.map +1 -0
  372. package/dist/generated/iso/FJD.js +5 -0
  373. package/dist/generated/iso/FJD.js.map +1 -0
  374. package/dist/generated/iso/FKP.d.ts +2 -0
  375. package/dist/generated/iso/FKP.d.ts.map +1 -0
  376. package/dist/generated/iso/FKP.js +5 -0
  377. package/dist/generated/iso/FKP.js.map +1 -0
  378. package/dist/generated/iso/GBP.d.ts +2 -0
  379. package/dist/generated/iso/GBP.d.ts.map +1 -0
  380. package/dist/generated/iso/GBP.js +5 -0
  381. package/dist/generated/iso/GBP.js.map +1 -0
  382. package/dist/generated/iso/GEL.d.ts +2 -0
  383. package/dist/generated/iso/GEL.d.ts.map +1 -0
  384. package/dist/generated/iso/GEL.js +5 -0
  385. package/dist/generated/iso/GEL.js.map +1 -0
  386. package/dist/generated/iso/GHS.d.ts +2 -0
  387. package/dist/generated/iso/GHS.d.ts.map +1 -0
  388. package/dist/generated/iso/GHS.js +5 -0
  389. package/dist/generated/iso/GHS.js.map +1 -0
  390. package/dist/generated/iso/GIP.d.ts +2 -0
  391. package/dist/generated/iso/GIP.d.ts.map +1 -0
  392. package/dist/generated/iso/GIP.js +5 -0
  393. package/dist/generated/iso/GIP.js.map +1 -0
  394. package/dist/generated/iso/GMD.d.ts +2 -0
  395. package/dist/generated/iso/GMD.d.ts.map +1 -0
  396. package/dist/generated/iso/GMD.js +5 -0
  397. package/dist/generated/iso/GMD.js.map +1 -0
  398. package/dist/generated/iso/GNF.d.ts +2 -0
  399. package/dist/generated/iso/GNF.d.ts.map +1 -0
  400. package/dist/generated/iso/GNF.js +5 -0
  401. package/dist/generated/iso/GNF.js.map +1 -0
  402. package/dist/generated/iso/GTQ.d.ts +2 -0
  403. package/dist/generated/iso/GTQ.d.ts.map +1 -0
  404. package/dist/generated/iso/GTQ.js +5 -0
  405. package/dist/generated/iso/GTQ.js.map +1 -0
  406. package/dist/generated/iso/GYD.d.ts +2 -0
  407. package/dist/generated/iso/GYD.d.ts.map +1 -0
  408. package/dist/generated/iso/GYD.js +5 -0
  409. package/dist/generated/iso/GYD.js.map +1 -0
  410. package/dist/generated/iso/HKD.d.ts +2 -0
  411. package/dist/generated/iso/HKD.d.ts.map +1 -0
  412. package/dist/generated/iso/HKD.js +5 -0
  413. package/dist/generated/iso/HKD.js.map +1 -0
  414. package/dist/generated/iso/HNL.d.ts +2 -0
  415. package/dist/generated/iso/HNL.d.ts.map +1 -0
  416. package/dist/generated/iso/HNL.js +5 -0
  417. package/dist/generated/iso/HNL.js.map +1 -0
  418. package/dist/generated/iso/HTG.d.ts +2 -0
  419. package/dist/generated/iso/HTG.d.ts.map +1 -0
  420. package/dist/generated/iso/HTG.js +5 -0
  421. package/dist/generated/iso/HTG.js.map +1 -0
  422. package/dist/generated/iso/HUF.d.ts +2 -0
  423. package/dist/generated/iso/HUF.d.ts.map +1 -0
  424. package/dist/generated/iso/HUF.js +5 -0
  425. package/dist/generated/iso/HUF.js.map +1 -0
  426. package/dist/generated/iso/IDR.d.ts +2 -0
  427. package/dist/generated/iso/IDR.d.ts.map +1 -0
  428. package/dist/generated/iso/IDR.js +5 -0
  429. package/dist/generated/iso/IDR.js.map +1 -0
  430. package/dist/generated/iso/ILS.d.ts +2 -0
  431. package/dist/generated/iso/ILS.d.ts.map +1 -0
  432. package/dist/generated/iso/ILS.js +5 -0
  433. package/dist/generated/iso/ILS.js.map +1 -0
  434. package/dist/generated/iso/INR.d.ts +2 -0
  435. package/dist/generated/iso/INR.d.ts.map +1 -0
  436. package/dist/generated/iso/INR.js +5 -0
  437. package/dist/generated/iso/INR.js.map +1 -0
  438. package/dist/generated/iso/IQD.d.ts +2 -0
  439. package/dist/generated/iso/IQD.d.ts.map +1 -0
  440. package/dist/generated/iso/IQD.js +5 -0
  441. package/dist/generated/iso/IQD.js.map +1 -0
  442. package/dist/generated/iso/IRR.d.ts +2 -0
  443. package/dist/generated/iso/IRR.d.ts.map +1 -0
  444. package/dist/generated/iso/IRR.js +5 -0
  445. package/dist/generated/iso/IRR.js.map +1 -0
  446. package/dist/generated/iso/ISK.d.ts +2 -0
  447. package/dist/generated/iso/ISK.d.ts.map +1 -0
  448. package/dist/generated/iso/ISK.js +5 -0
  449. package/dist/generated/iso/ISK.js.map +1 -0
  450. package/dist/generated/iso/JMD.d.ts +2 -0
  451. package/dist/generated/iso/JMD.d.ts.map +1 -0
  452. package/dist/generated/iso/JMD.js +5 -0
  453. package/dist/generated/iso/JMD.js.map +1 -0
  454. package/dist/generated/iso/JOD.d.ts +2 -0
  455. package/dist/generated/iso/JOD.d.ts.map +1 -0
  456. package/dist/generated/iso/JOD.js +5 -0
  457. package/dist/generated/iso/JOD.js.map +1 -0
  458. package/dist/generated/iso/JPY.d.ts +2 -0
  459. package/dist/generated/iso/JPY.d.ts.map +1 -0
  460. package/dist/generated/iso/JPY.js +5 -0
  461. package/dist/generated/iso/JPY.js.map +1 -0
  462. package/dist/generated/iso/KES.d.ts +2 -0
  463. package/dist/generated/iso/KES.d.ts.map +1 -0
  464. package/dist/generated/iso/KES.js +5 -0
  465. package/dist/generated/iso/KES.js.map +1 -0
  466. package/dist/generated/iso/KGS.d.ts +2 -0
  467. package/dist/generated/iso/KGS.d.ts.map +1 -0
  468. package/dist/generated/iso/KGS.js +5 -0
  469. package/dist/generated/iso/KGS.js.map +1 -0
  470. package/dist/generated/iso/KHR.d.ts +2 -0
  471. package/dist/generated/iso/KHR.d.ts.map +1 -0
  472. package/dist/generated/iso/KHR.js +5 -0
  473. package/dist/generated/iso/KHR.js.map +1 -0
  474. package/dist/generated/iso/KMF.d.ts +2 -0
  475. package/dist/generated/iso/KMF.d.ts.map +1 -0
  476. package/dist/generated/iso/KMF.js +5 -0
  477. package/dist/generated/iso/KMF.js.map +1 -0
  478. package/dist/generated/iso/KPW.d.ts +2 -0
  479. package/dist/generated/iso/KPW.d.ts.map +1 -0
  480. package/dist/generated/iso/KPW.js +5 -0
  481. package/dist/generated/iso/KPW.js.map +1 -0
  482. package/dist/generated/iso/KRW.d.ts +2 -0
  483. package/dist/generated/iso/KRW.d.ts.map +1 -0
  484. package/dist/generated/iso/KRW.js +5 -0
  485. package/dist/generated/iso/KRW.js.map +1 -0
  486. package/dist/generated/iso/KWD.d.ts +2 -0
  487. package/dist/generated/iso/KWD.d.ts.map +1 -0
  488. package/dist/generated/iso/KWD.js +5 -0
  489. package/dist/generated/iso/KWD.js.map +1 -0
  490. package/dist/generated/iso/KYD.d.ts +2 -0
  491. package/dist/generated/iso/KYD.d.ts.map +1 -0
  492. package/dist/generated/iso/KYD.js +5 -0
  493. package/dist/generated/iso/KYD.js.map +1 -0
  494. package/dist/generated/iso/KZT.d.ts +2 -0
  495. package/dist/generated/iso/KZT.d.ts.map +1 -0
  496. package/dist/generated/iso/KZT.js +5 -0
  497. package/dist/generated/iso/KZT.js.map +1 -0
  498. package/dist/generated/iso/LAK.d.ts +2 -0
  499. package/dist/generated/iso/LAK.d.ts.map +1 -0
  500. package/dist/generated/iso/LAK.js +5 -0
  501. package/dist/generated/iso/LAK.js.map +1 -0
  502. package/dist/generated/iso/LBP.d.ts +2 -0
  503. package/dist/generated/iso/LBP.d.ts.map +1 -0
  504. package/dist/generated/iso/LBP.js +5 -0
  505. package/dist/generated/iso/LBP.js.map +1 -0
  506. package/dist/generated/iso/LKR.d.ts +2 -0
  507. package/dist/generated/iso/LKR.d.ts.map +1 -0
  508. package/dist/generated/iso/LKR.js +5 -0
  509. package/dist/generated/iso/LKR.js.map +1 -0
  510. package/dist/generated/iso/LRD.d.ts +2 -0
  511. package/dist/generated/iso/LRD.d.ts.map +1 -0
  512. package/dist/generated/iso/LRD.js +5 -0
  513. package/dist/generated/iso/LRD.js.map +1 -0
  514. package/dist/generated/iso/LSL.d.ts +2 -0
  515. package/dist/generated/iso/LSL.d.ts.map +1 -0
  516. package/dist/generated/iso/LSL.js +5 -0
  517. package/dist/generated/iso/LSL.js.map +1 -0
  518. package/dist/generated/iso/LYD.d.ts +2 -0
  519. package/dist/generated/iso/LYD.d.ts.map +1 -0
  520. package/dist/generated/iso/LYD.js +5 -0
  521. package/dist/generated/iso/LYD.js.map +1 -0
  522. package/dist/generated/iso/MAD.d.ts +2 -0
  523. package/dist/generated/iso/MAD.d.ts.map +1 -0
  524. package/dist/generated/iso/MAD.js +5 -0
  525. package/dist/generated/iso/MAD.js.map +1 -0
  526. package/dist/generated/iso/MDL.d.ts +2 -0
  527. package/dist/generated/iso/MDL.d.ts.map +1 -0
  528. package/dist/generated/iso/MDL.js +5 -0
  529. package/dist/generated/iso/MDL.js.map +1 -0
  530. package/dist/generated/iso/MGA.d.ts +2 -0
  531. package/dist/generated/iso/MGA.d.ts.map +1 -0
  532. package/dist/generated/iso/MGA.js +5 -0
  533. package/dist/generated/iso/MGA.js.map +1 -0
  534. package/dist/generated/iso/MKD.d.ts +2 -0
  535. package/dist/generated/iso/MKD.d.ts.map +1 -0
  536. package/dist/generated/iso/MKD.js +5 -0
  537. package/dist/generated/iso/MKD.js.map +1 -0
  538. package/dist/generated/iso/MMK.d.ts +2 -0
  539. package/dist/generated/iso/MMK.d.ts.map +1 -0
  540. package/dist/generated/iso/MMK.js +5 -0
  541. package/dist/generated/iso/MMK.js.map +1 -0
  542. package/dist/generated/iso/MNT.d.ts +2 -0
  543. package/dist/generated/iso/MNT.d.ts.map +1 -0
  544. package/dist/generated/iso/MNT.js +5 -0
  545. package/dist/generated/iso/MNT.js.map +1 -0
  546. package/dist/generated/iso/MOP.d.ts +2 -0
  547. package/dist/generated/iso/MOP.d.ts.map +1 -0
  548. package/dist/generated/iso/MOP.js +5 -0
  549. package/dist/generated/iso/MOP.js.map +1 -0
  550. package/dist/generated/iso/MRU.d.ts +2 -0
  551. package/dist/generated/iso/MRU.d.ts.map +1 -0
  552. package/dist/generated/iso/MRU.js +5 -0
  553. package/dist/generated/iso/MRU.js.map +1 -0
  554. package/dist/generated/iso/MUR.d.ts +2 -0
  555. package/dist/generated/iso/MUR.d.ts.map +1 -0
  556. package/dist/generated/iso/MUR.js +5 -0
  557. package/dist/generated/iso/MUR.js.map +1 -0
  558. package/dist/generated/iso/MVR.d.ts +2 -0
  559. package/dist/generated/iso/MVR.d.ts.map +1 -0
  560. package/dist/generated/iso/MVR.js +5 -0
  561. package/dist/generated/iso/MVR.js.map +1 -0
  562. package/dist/generated/iso/MWK.d.ts +2 -0
  563. package/dist/generated/iso/MWK.d.ts.map +1 -0
  564. package/dist/generated/iso/MWK.js +5 -0
  565. package/dist/generated/iso/MWK.js.map +1 -0
  566. package/dist/generated/iso/MXN.d.ts +2 -0
  567. package/dist/generated/iso/MXN.d.ts.map +1 -0
  568. package/dist/generated/iso/MXN.js +5 -0
  569. package/dist/generated/iso/MXN.js.map +1 -0
  570. package/dist/generated/iso/MXV.d.ts +2 -0
  571. package/dist/generated/iso/MXV.d.ts.map +1 -0
  572. package/dist/generated/iso/MXV.js +5 -0
  573. package/dist/generated/iso/MXV.js.map +1 -0
  574. package/dist/generated/iso/MYR.d.ts +2 -0
  575. package/dist/generated/iso/MYR.d.ts.map +1 -0
  576. package/dist/generated/iso/MYR.js +5 -0
  577. package/dist/generated/iso/MYR.js.map +1 -0
  578. package/dist/generated/iso/MZN.d.ts +2 -0
  579. package/dist/generated/iso/MZN.d.ts.map +1 -0
  580. package/dist/generated/iso/MZN.js +5 -0
  581. package/dist/generated/iso/MZN.js.map +1 -0
  582. package/dist/generated/iso/NAD.d.ts +2 -0
  583. package/dist/generated/iso/NAD.d.ts.map +1 -0
  584. package/dist/generated/iso/NAD.js +5 -0
  585. package/dist/generated/iso/NAD.js.map +1 -0
  586. package/dist/generated/iso/NGN.d.ts +2 -0
  587. package/dist/generated/iso/NGN.d.ts.map +1 -0
  588. package/dist/generated/iso/NGN.js +5 -0
  589. package/dist/generated/iso/NGN.js.map +1 -0
  590. package/dist/generated/iso/NIO.d.ts +2 -0
  591. package/dist/generated/iso/NIO.d.ts.map +1 -0
  592. package/dist/generated/iso/NIO.js +5 -0
  593. package/dist/generated/iso/NIO.js.map +1 -0
  594. package/dist/generated/iso/NOK.d.ts +2 -0
  595. package/dist/generated/iso/NOK.d.ts.map +1 -0
  596. package/dist/generated/iso/NOK.js +5 -0
  597. package/dist/generated/iso/NOK.js.map +1 -0
  598. package/dist/generated/iso/NPR.d.ts +2 -0
  599. package/dist/generated/iso/NPR.d.ts.map +1 -0
  600. package/dist/generated/iso/NPR.js +5 -0
  601. package/dist/generated/iso/NPR.js.map +1 -0
  602. package/dist/generated/iso/NZD.d.ts +2 -0
  603. package/dist/generated/iso/NZD.d.ts.map +1 -0
  604. package/dist/generated/iso/NZD.js +5 -0
  605. package/dist/generated/iso/NZD.js.map +1 -0
  606. package/dist/generated/iso/OMR.d.ts +2 -0
  607. package/dist/generated/iso/OMR.d.ts.map +1 -0
  608. package/dist/generated/iso/OMR.js +5 -0
  609. package/dist/generated/iso/OMR.js.map +1 -0
  610. package/dist/generated/iso/PAB.d.ts +2 -0
  611. package/dist/generated/iso/PAB.d.ts.map +1 -0
  612. package/dist/generated/iso/PAB.js +5 -0
  613. package/dist/generated/iso/PAB.js.map +1 -0
  614. package/dist/generated/iso/PEN.d.ts +2 -0
  615. package/dist/generated/iso/PEN.d.ts.map +1 -0
  616. package/dist/generated/iso/PEN.js +5 -0
  617. package/dist/generated/iso/PEN.js.map +1 -0
  618. package/dist/generated/iso/PGK.d.ts +2 -0
  619. package/dist/generated/iso/PGK.d.ts.map +1 -0
  620. package/dist/generated/iso/PGK.js +5 -0
  621. package/dist/generated/iso/PGK.js.map +1 -0
  622. package/dist/generated/iso/PHP.d.ts +2 -0
  623. package/dist/generated/iso/PHP.d.ts.map +1 -0
  624. package/dist/generated/iso/PHP.js +5 -0
  625. package/dist/generated/iso/PHP.js.map +1 -0
  626. package/dist/generated/iso/PKR.d.ts +2 -0
  627. package/dist/generated/iso/PKR.d.ts.map +1 -0
  628. package/dist/generated/iso/PKR.js +5 -0
  629. package/dist/generated/iso/PKR.js.map +1 -0
  630. package/dist/generated/iso/PLN.d.ts +2 -0
  631. package/dist/generated/iso/PLN.d.ts.map +1 -0
  632. package/dist/generated/iso/PLN.js +5 -0
  633. package/dist/generated/iso/PLN.js.map +1 -0
  634. package/dist/generated/iso/PYG.d.ts +2 -0
  635. package/dist/generated/iso/PYG.d.ts.map +1 -0
  636. package/dist/generated/iso/PYG.js +5 -0
  637. package/dist/generated/iso/PYG.js.map +1 -0
  638. package/dist/generated/iso/QAR.d.ts +2 -0
  639. package/dist/generated/iso/QAR.d.ts.map +1 -0
  640. package/dist/generated/iso/QAR.js +5 -0
  641. package/dist/generated/iso/QAR.js.map +1 -0
  642. package/dist/generated/iso/RON.d.ts +2 -0
  643. package/dist/generated/iso/RON.d.ts.map +1 -0
  644. package/dist/generated/iso/RON.js +5 -0
  645. package/dist/generated/iso/RON.js.map +1 -0
  646. package/dist/generated/iso/RSD.d.ts +2 -0
  647. package/dist/generated/iso/RSD.d.ts.map +1 -0
  648. package/dist/generated/iso/RSD.js +5 -0
  649. package/dist/generated/iso/RSD.js.map +1 -0
  650. package/dist/generated/iso/RUB.d.ts +2 -0
  651. package/dist/generated/iso/RUB.d.ts.map +1 -0
  652. package/dist/generated/iso/RUB.js +5 -0
  653. package/dist/generated/iso/RUB.js.map +1 -0
  654. package/dist/generated/iso/RWF.d.ts +2 -0
  655. package/dist/generated/iso/RWF.d.ts.map +1 -0
  656. package/dist/generated/iso/RWF.js +5 -0
  657. package/dist/generated/iso/RWF.js.map +1 -0
  658. package/dist/generated/iso/SAR.d.ts +2 -0
  659. package/dist/generated/iso/SAR.d.ts.map +1 -0
  660. package/dist/generated/iso/SAR.js +5 -0
  661. package/dist/generated/iso/SAR.js.map +1 -0
  662. package/dist/generated/iso/SBD.d.ts +2 -0
  663. package/dist/generated/iso/SBD.d.ts.map +1 -0
  664. package/dist/generated/iso/SBD.js +5 -0
  665. package/dist/generated/iso/SBD.js.map +1 -0
  666. package/dist/generated/iso/SCR.d.ts +2 -0
  667. package/dist/generated/iso/SCR.d.ts.map +1 -0
  668. package/dist/generated/iso/SCR.js +5 -0
  669. package/dist/generated/iso/SCR.js.map +1 -0
  670. package/dist/generated/iso/SDG.d.ts +2 -0
  671. package/dist/generated/iso/SDG.d.ts.map +1 -0
  672. package/dist/generated/iso/SDG.js +5 -0
  673. package/dist/generated/iso/SDG.js.map +1 -0
  674. package/dist/generated/iso/SEK.d.ts +2 -0
  675. package/dist/generated/iso/SEK.d.ts.map +1 -0
  676. package/dist/generated/iso/SEK.js +5 -0
  677. package/dist/generated/iso/SEK.js.map +1 -0
  678. package/dist/generated/iso/SGD.d.ts +2 -0
  679. package/dist/generated/iso/SGD.d.ts.map +1 -0
  680. package/dist/generated/iso/SGD.js +5 -0
  681. package/dist/generated/iso/SGD.js.map +1 -0
  682. package/dist/generated/iso/SHP.d.ts +2 -0
  683. package/dist/generated/iso/SHP.d.ts.map +1 -0
  684. package/dist/generated/iso/SHP.js +5 -0
  685. package/dist/generated/iso/SHP.js.map +1 -0
  686. package/dist/generated/iso/SLE.d.ts +2 -0
  687. package/dist/generated/iso/SLE.d.ts.map +1 -0
  688. package/dist/generated/iso/SLE.js +5 -0
  689. package/dist/generated/iso/SLE.js.map +1 -0
  690. package/dist/generated/iso/SOS.d.ts +2 -0
  691. package/dist/generated/iso/SOS.d.ts.map +1 -0
  692. package/dist/generated/iso/SOS.js +5 -0
  693. package/dist/generated/iso/SOS.js.map +1 -0
  694. package/dist/generated/iso/SRD.d.ts +2 -0
  695. package/dist/generated/iso/SRD.d.ts.map +1 -0
  696. package/dist/generated/iso/SRD.js +5 -0
  697. package/dist/generated/iso/SRD.js.map +1 -0
  698. package/dist/generated/iso/SSP.d.ts +2 -0
  699. package/dist/generated/iso/SSP.d.ts.map +1 -0
  700. package/dist/generated/iso/SSP.js +5 -0
  701. package/dist/generated/iso/SSP.js.map +1 -0
  702. package/dist/generated/iso/STN.d.ts +2 -0
  703. package/dist/generated/iso/STN.d.ts.map +1 -0
  704. package/dist/generated/iso/STN.js +5 -0
  705. package/dist/generated/iso/STN.js.map +1 -0
  706. package/dist/generated/iso/SVC.d.ts +2 -0
  707. package/dist/generated/iso/SVC.d.ts.map +1 -0
  708. package/dist/generated/iso/SVC.js +5 -0
  709. package/dist/generated/iso/SVC.js.map +1 -0
  710. package/dist/generated/iso/SYP.d.ts +2 -0
  711. package/dist/generated/iso/SYP.d.ts.map +1 -0
  712. package/dist/generated/iso/SYP.js +5 -0
  713. package/dist/generated/iso/SYP.js.map +1 -0
  714. package/dist/generated/iso/SZL.d.ts +2 -0
  715. package/dist/generated/iso/SZL.d.ts.map +1 -0
  716. package/dist/generated/iso/SZL.js +5 -0
  717. package/dist/generated/iso/SZL.js.map +1 -0
  718. package/dist/generated/iso/THB.d.ts +2 -0
  719. package/dist/generated/iso/THB.d.ts.map +1 -0
  720. package/dist/generated/iso/THB.js +5 -0
  721. package/dist/generated/iso/THB.js.map +1 -0
  722. package/dist/generated/iso/TJS.d.ts +2 -0
  723. package/dist/generated/iso/TJS.d.ts.map +1 -0
  724. package/dist/generated/iso/TJS.js +5 -0
  725. package/dist/generated/iso/TJS.js.map +1 -0
  726. package/dist/generated/iso/TMT.d.ts +2 -0
  727. package/dist/generated/iso/TMT.d.ts.map +1 -0
  728. package/dist/generated/iso/TMT.js +5 -0
  729. package/dist/generated/iso/TMT.js.map +1 -0
  730. package/dist/generated/iso/TND.d.ts +2 -0
  731. package/dist/generated/iso/TND.d.ts.map +1 -0
  732. package/dist/generated/iso/TND.js +5 -0
  733. package/dist/generated/iso/TND.js.map +1 -0
  734. package/dist/generated/iso/TOP.d.ts +2 -0
  735. package/dist/generated/iso/TOP.d.ts.map +1 -0
  736. package/dist/generated/iso/TOP.js +5 -0
  737. package/dist/generated/iso/TOP.js.map +1 -0
  738. package/dist/generated/iso/TRY.d.ts +2 -0
  739. package/dist/generated/iso/TRY.d.ts.map +1 -0
  740. package/dist/generated/iso/TRY.js +5 -0
  741. package/dist/generated/iso/TRY.js.map +1 -0
  742. package/dist/generated/iso/TTD.d.ts +2 -0
  743. package/dist/generated/iso/TTD.d.ts.map +1 -0
  744. package/dist/generated/iso/TTD.js +5 -0
  745. package/dist/generated/iso/TTD.js.map +1 -0
  746. package/dist/generated/iso/TWD.d.ts +2 -0
  747. package/dist/generated/iso/TWD.d.ts.map +1 -0
  748. package/dist/generated/iso/TWD.js +5 -0
  749. package/dist/generated/iso/TWD.js.map +1 -0
  750. package/dist/generated/iso/TZS.d.ts +2 -0
  751. package/dist/generated/iso/TZS.d.ts.map +1 -0
  752. package/dist/generated/iso/TZS.js +5 -0
  753. package/dist/generated/iso/TZS.js.map +1 -0
  754. package/dist/generated/iso/UAH.d.ts +2 -0
  755. package/dist/generated/iso/UAH.d.ts.map +1 -0
  756. package/dist/generated/iso/UAH.js +5 -0
  757. package/dist/generated/iso/UAH.js.map +1 -0
  758. package/dist/generated/iso/UGX.d.ts +2 -0
  759. package/dist/generated/iso/UGX.d.ts.map +1 -0
  760. package/dist/generated/iso/UGX.js +5 -0
  761. package/dist/generated/iso/UGX.js.map +1 -0
  762. package/dist/generated/iso/USD.d.ts +2 -0
  763. package/dist/generated/iso/USD.d.ts.map +1 -0
  764. package/dist/generated/iso/USD.js +5 -0
  765. package/dist/generated/iso/USD.js.map +1 -0
  766. package/dist/generated/iso/USN.d.ts +2 -0
  767. package/dist/generated/iso/USN.d.ts.map +1 -0
  768. package/dist/generated/iso/USN.js +5 -0
  769. package/dist/generated/iso/USN.js.map +1 -0
  770. package/dist/generated/iso/UYI.d.ts +2 -0
  771. package/dist/generated/iso/UYI.d.ts.map +1 -0
  772. package/dist/generated/iso/UYI.js +5 -0
  773. package/dist/generated/iso/UYI.js.map +1 -0
  774. package/dist/generated/iso/UYU.d.ts +2 -0
  775. package/dist/generated/iso/UYU.d.ts.map +1 -0
  776. package/dist/generated/iso/UYU.js +5 -0
  777. package/dist/generated/iso/UYU.js.map +1 -0
  778. package/dist/generated/iso/UYW.d.ts +2 -0
  779. package/dist/generated/iso/UYW.d.ts.map +1 -0
  780. package/dist/generated/iso/UYW.js +5 -0
  781. package/dist/generated/iso/UYW.js.map +1 -0
  782. package/dist/generated/iso/UZS.d.ts +2 -0
  783. package/dist/generated/iso/UZS.d.ts.map +1 -0
  784. package/dist/generated/iso/UZS.js +5 -0
  785. package/dist/generated/iso/UZS.js.map +1 -0
  786. package/dist/generated/iso/VED.d.ts +2 -0
  787. package/dist/generated/iso/VED.d.ts.map +1 -0
  788. package/dist/generated/iso/VED.js +5 -0
  789. package/dist/generated/iso/VED.js.map +1 -0
  790. package/dist/generated/iso/VES.d.ts +2 -0
  791. package/dist/generated/iso/VES.d.ts.map +1 -0
  792. package/dist/generated/iso/VES.js +5 -0
  793. package/dist/generated/iso/VES.js.map +1 -0
  794. package/dist/generated/iso/VND.d.ts +2 -0
  795. package/dist/generated/iso/VND.d.ts.map +1 -0
  796. package/dist/generated/iso/VND.js +5 -0
  797. package/dist/generated/iso/VND.js.map +1 -0
  798. package/dist/generated/iso/VUV.d.ts +2 -0
  799. package/dist/generated/iso/VUV.d.ts.map +1 -0
  800. package/dist/generated/iso/VUV.js +5 -0
  801. package/dist/generated/iso/VUV.js.map +1 -0
  802. package/dist/generated/iso/WST.d.ts +2 -0
  803. package/dist/generated/iso/WST.d.ts.map +1 -0
  804. package/dist/generated/iso/WST.js +5 -0
  805. package/dist/generated/iso/WST.js.map +1 -0
  806. package/dist/generated/iso/XAD.d.ts +2 -0
  807. package/dist/generated/iso/XAD.d.ts.map +1 -0
  808. package/dist/generated/iso/XAD.js +5 -0
  809. package/dist/generated/iso/XAD.js.map +1 -0
  810. package/dist/generated/iso/XAF.d.ts +2 -0
  811. package/dist/generated/iso/XAF.d.ts.map +1 -0
  812. package/dist/generated/iso/XAF.js +5 -0
  813. package/dist/generated/iso/XAF.js.map +1 -0
  814. package/dist/generated/iso/XCD.d.ts +2 -0
  815. package/dist/generated/iso/XCD.d.ts.map +1 -0
  816. package/dist/generated/iso/XCD.js +5 -0
  817. package/dist/generated/iso/XCD.js.map +1 -0
  818. package/dist/generated/iso/XCG.d.ts +2 -0
  819. package/dist/generated/iso/XCG.d.ts.map +1 -0
  820. package/dist/generated/iso/XCG.js +5 -0
  821. package/dist/generated/iso/XCG.js.map +1 -0
  822. package/dist/generated/iso/XOF.d.ts +2 -0
  823. package/dist/generated/iso/XOF.d.ts.map +1 -0
  824. package/dist/generated/iso/XOF.js +5 -0
  825. package/dist/generated/iso/XOF.js.map +1 -0
  826. package/dist/generated/iso/XPF.d.ts +2 -0
  827. package/dist/generated/iso/XPF.d.ts.map +1 -0
  828. package/dist/generated/iso/XPF.js +5 -0
  829. package/dist/generated/iso/XPF.js.map +1 -0
  830. package/dist/generated/iso/YER.d.ts +2 -0
  831. package/dist/generated/iso/YER.d.ts.map +1 -0
  832. package/dist/generated/iso/YER.js +5 -0
  833. package/dist/generated/iso/YER.js.map +1 -0
  834. package/dist/generated/iso/ZAR.d.ts +2 -0
  835. package/dist/generated/iso/ZAR.d.ts.map +1 -0
  836. package/dist/generated/iso/ZAR.js +5 -0
  837. package/dist/generated/iso/ZAR.js.map +1 -0
  838. package/dist/generated/iso/ZMW.d.ts +2 -0
  839. package/dist/generated/iso/ZMW.d.ts.map +1 -0
  840. package/dist/generated/iso/ZMW.js +5 -0
  841. package/dist/generated/iso/ZMW.js.map +1 -0
  842. package/dist/generated/iso/ZWG.d.ts +2 -0
  843. package/dist/generated/iso/ZWG.d.ts.map +1 -0
  844. package/dist/generated/iso/ZWG.js +5 -0
  845. package/dist/generated/iso/ZWG.js.map +1 -0
  846. package/dist/generated/iso4217-numeric.d.ts +3 -0
  847. package/dist/generated/iso4217-numeric.d.ts.map +1 -0
  848. package/dist/generated/iso4217-numeric.js +184 -0
  849. package/dist/generated/iso4217-numeric.js.map +1 -0
  850. package/dist/generated/rbnf-de.d.ts +3 -0
  851. package/dist/generated/rbnf-de.d.ts.map +1 -0
  852. package/dist/generated/rbnf-de.js +5 -0
  853. package/dist/generated/rbnf-de.js.map +1 -0
  854. package/dist/generated/rbnf-en.d.ts +3 -0
  855. package/dist/generated/rbnf-en.d.ts.map +1 -0
  856. package/dist/generated/rbnf-en.js +5 -0
  857. package/dist/generated/rbnf-en.js.map +1 -0
  858. package/dist/generated/rbnf-es.d.ts +3 -0
  859. package/dist/generated/rbnf-es.d.ts.map +1 -0
  860. package/dist/generated/rbnf-es.js +5 -0
  861. package/dist/generated/rbnf-es.js.map +1 -0
  862. package/dist/generated/rbnf-fr.d.ts +3 -0
  863. package/dist/generated/rbnf-fr.d.ts.map +1 -0
  864. package/dist/generated/rbnf-fr.js +5 -0
  865. package/dist/generated/rbnf-fr.js.map +1 -0
  866. package/dist/generated/rbnf-it.d.ts +3 -0
  867. package/dist/generated/rbnf-it.d.ts.map +1 -0
  868. package/dist/generated/rbnf-it.js +5 -0
  869. package/dist/generated/rbnf-it.js.map +1 -0
  870. package/dist/generated/rbnf-nl.d.ts +3 -0
  871. package/dist/generated/rbnf-nl.d.ts.map +1 -0
  872. package/dist/generated/rbnf-nl.js +5 -0
  873. package/dist/generated/rbnf-nl.js.map +1 -0
  874. package/dist/generated/rbnf-pt.d.ts +3 -0
  875. package/dist/generated/rbnf-pt.d.ts.map +1 -0
  876. package/dist/generated/rbnf-pt.js +5 -0
  877. package/dist/generated/rbnf-pt.js.map +1 -0
  878. package/dist/generated/territories.d.ts +6 -0
  879. package/dist/generated/territories.d.ts.map +1 -0
  880. package/dist/generated/territories.js +275 -0
  881. package/dist/generated/territories.js.map +1 -0
  882. package/dist/index.d.ts +1 -0
  883. package/dist/index.d.ts.map +1 -1
  884. package/dist/index.js +2 -0
  885. package/dist/index.js.map +1 -1
  886. package/dist/kysely.d.ts.map +1 -1
  887. package/dist/kysely.js +2 -2
  888. package/dist/kysely.js.map +1 -1
  889. package/dist/math.d.ts +41 -0
  890. package/dist/math.d.ts.map +1 -0
  891. package/dist/math.js +132 -0
  892. package/dist/math.js.map +1 -0
  893. package/dist/money.d.ts +39 -57
  894. package/dist/money.d.ts.map +1 -1
  895. package/dist/money.js +116 -128
  896. package/dist/money.js.map +1 -1
  897. package/dist/parse.js +7 -7
  898. package/dist/parse.js.map +1 -1
  899. package/dist/plugins/adyen.d.ts +2 -0
  900. package/dist/plugins/adyen.d.ts.map +1 -1
  901. package/dist/plugins/adyen.js +2 -0
  902. package/dist/plugins/adyen.js.map +1 -1
  903. package/dist/plugins/all.d.ts +18 -2
  904. package/dist/plugins/all.d.ts.map +1 -1
  905. package/dist/plugins/all.js +19 -2
  906. package/dist/plugins/all.js.map +1 -1
  907. package/dist/plugins/allocate.d.ts +1 -0
  908. package/dist/plugins/allocate.d.ts.map +1 -1
  909. package/dist/plugins/allocate.js +2 -0
  910. package/dist/plugins/allocate.js.map +1 -1
  911. package/dist/plugins/braintree.d.ts +1 -0
  912. package/dist/plugins/braintree.d.ts.map +1 -1
  913. package/dist/plugins/braintree.js +2 -0
  914. package/dist/plugins/braintree.js.map +1 -1
  915. package/dist/plugins/cash.d.ts +1 -0
  916. package/dist/plugins/cash.d.ts.map +1 -1
  917. package/dist/plugins/cash.js +2 -0
  918. package/dist/plugins/cash.js.map +1 -1
  919. package/dist/plugins/checkout.d.ts +1 -0
  920. package/dist/plugins/checkout.d.ts.map +1 -1
  921. package/dist/plugins/checkout.js +2 -0
  922. package/dist/plugins/checkout.js.map +1 -1
  923. package/dist/plugins/convert.d.ts +5 -0
  924. package/dist/plugins/convert.d.ts.map +1 -1
  925. package/dist/plugins/convert.js +2 -0
  926. package/dist/plugins/convert.js.map +1 -1
  927. package/dist/plugins/core.d.ts +78 -0
  928. package/dist/plugins/core.d.ts.map +1 -0
  929. package/dist/plugins/core.js +104 -0
  930. package/dist/plugins/core.js.map +1 -0
  931. package/dist/plugins/exact.d.ts +1 -0
  932. package/dist/plugins/exact.d.ts.map +1 -1
  933. package/dist/plugins/exact.js +2 -0
  934. package/dist/plugins/exact.js.map +1 -1
  935. package/dist/plugins/fixed-money.d.ts +31 -0
  936. package/dist/plugins/fixed-money.d.ts.map +1 -0
  937. package/dist/plugins/fixed-money.js +29 -0
  938. package/dist/plugins/fixed-money.js.map +1 -0
  939. package/dist/plugins/format.d.ts +5 -0
  940. package/dist/plugins/format.d.ts.map +1 -1
  941. package/dist/plugins/format.js +2 -0
  942. package/dist/plugins/format.js.map +1 -1
  943. package/dist/plugins/iso.d.ts +2 -0
  944. package/dist/plugins/iso.d.ts.map +1 -0
  945. package/dist/plugins/iso.js +9 -0
  946. package/dist/plugins/iso.js.map +1 -0
  947. package/dist/plugins/klarna.d.ts +1 -0
  948. package/dist/plugins/klarna.d.ts.map +1 -1
  949. package/dist/plugins/klarna.js +2 -0
  950. package/dist/plugins/klarna.js.map +1 -1
  951. package/dist/plugins/math.d.ts +20 -0
  952. package/dist/plugins/math.d.ts.map +1 -0
  953. package/dist/plugins/math.js +24 -0
  954. package/dist/plugins/math.js.map +1 -0
  955. package/dist/plugins/paypal.d.ts +5 -0
  956. package/dist/plugins/paypal.d.ts.map +1 -1
  957. package/dist/plugins/paypal.js +6 -0
  958. package/dist/plugins/paypal.js.map +1 -1
  959. package/dist/plugins/prisma.d.ts +5 -0
  960. package/dist/plugins/prisma.d.ts.map +1 -1
  961. package/dist/plugins/prisma.js +6 -0
  962. package/dist/plugins/prisma.js.map +1 -1
  963. package/dist/plugins/stripe.d.ts +5 -0
  964. package/dist/plugins/stripe.d.ts.map +1 -1
  965. package/dist/plugins/stripe.js +6 -0
  966. package/dist/plugins/stripe.js.map +1 -1
  967. package/dist/plugins/tax.d.ts +1 -0
  968. package/dist/plugins/tax.d.ts.map +1 -1
  969. package/dist/plugins/tax.js +6 -0
  970. package/dist/plugins/tax.js.map +1 -1
  971. package/dist/policy.d.ts.map +1 -1
  972. package/dist/policy.js +5 -6
  973. package/dist/policy.js.map +1 -1
  974. package/dist/pricing.d.ts +52 -0
  975. package/dist/pricing.d.ts.map +1 -0
  976. package/dist/pricing.js +100 -0
  977. package/dist/pricing.js.map +1 -0
  978. package/dist/prisma.d.ts.map +1 -1
  979. package/dist/prisma.js +6 -2
  980. package/dist/prisma.js.map +1 -1
  981. package/dist/provider.js +2 -2
  982. package/dist/provider.js.map +1 -1
  983. package/dist/rate-text.d.ts +6 -0
  984. package/dist/rate-text.d.ts.map +1 -1
  985. package/dist/rate-text.js +24 -1
  986. package/dist/rate-text.js.map +1 -1
  987. package/dist/rate.d.ts.map +1 -1
  988. package/dist/rate.js +2 -3
  989. package/dist/rate.js.map +1 -1
  990. package/dist/rbnf.d.ts +29 -0
  991. package/dist/rbnf.d.ts.map +1 -0
  992. package/dist/rbnf.js +301 -0
  993. package/dist/rbnf.js.map +1 -0
  994. package/dist/scale.d.ts +8 -0
  995. package/dist/scale.d.ts.map +1 -0
  996. package/dist/scale.js +34 -0
  997. package/dist/scale.js.map +1 -0
  998. package/dist/schema.d.ts.map +1 -1
  999. package/dist/schema.js +4 -5
  1000. package/dist/schema.js.map +1 -1
  1001. package/dist/territories.d.ts +40 -0
  1002. package/dist/territories.d.ts.map +1 -0
  1003. package/dist/territories.js +71 -0
  1004. package/dist/territories.js.map +1 -0
  1005. package/dist/testing/arbitraries.d.ts.map +1 -1
  1006. package/dist/testing/arbitraries.js +4 -4
  1007. package/dist/testing/arbitraries.js.map +1 -1
  1008. package/dist/testing/index.js +1 -1
  1009. package/dist/testing/index.js.map +1 -1
  1010. package/dist/tiers.d.ts +95 -0
  1011. package/dist/tiers.d.ts.map +1 -0
  1012. package/dist/tiers.js +173 -0
  1013. package/dist/tiers.js.map +1 -0
  1014. package/dist/valibot.d.ts.map +1 -1
  1015. package/dist/valibot.js +4 -1
  1016. package/dist/valibot.js.map +1 -1
  1017. package/dist/wire.d.ts +105 -0
  1018. package/dist/wire.d.ts.map +1 -0
  1019. package/dist/wire.js +212 -0
  1020. package/dist/wire.js.map +1 -0
  1021. package/dist/words/de.d.ts +4 -0
  1022. package/dist/words/de.d.ts.map +1 -0
  1023. package/dist/words/de.js +8 -0
  1024. package/dist/words/de.js.map +1 -0
  1025. package/dist/words/en.d.ts +4 -0
  1026. package/dist/words/en.d.ts.map +1 -0
  1027. package/dist/words/en.js +8 -0
  1028. package/dist/words/en.js.map +1 -0
  1029. package/dist/words/es.d.ts +4 -0
  1030. package/dist/words/es.d.ts.map +1 -0
  1031. package/dist/words/es.js +8 -0
  1032. package/dist/words/es.js.map +1 -0
  1033. package/dist/words/fr.d.ts +4 -0
  1034. package/dist/words/fr.d.ts.map +1 -0
  1035. package/dist/words/fr.js +8 -0
  1036. package/dist/words/fr.js.map +1 -0
  1037. package/dist/words/it.d.ts +4 -0
  1038. package/dist/words/it.d.ts.map +1 -0
  1039. package/dist/words/it.js +8 -0
  1040. package/dist/words/it.js.map +1 -0
  1041. package/dist/words/nl.d.ts +4 -0
  1042. package/dist/words/nl.d.ts.map +1 -0
  1043. package/dist/words/nl.js +8 -0
  1044. package/dist/words/nl.js.map +1 -0
  1045. package/dist/words/pt.d.ts +4 -0
  1046. package/dist/words/pt.d.ts.map +1 -0
  1047. package/dist/words/pt.js +8 -0
  1048. package/dist/words/pt.js.map +1 -0
  1049. package/dist/words.d.ts +63 -0
  1050. package/dist/words.d.ts.map +1 -0
  1051. package/dist/words.js +107 -0
  1052. package/dist/words.js.map +1 -0
  1053. package/dist/zod.d.ts.map +1 -1
  1054. package/dist/zod.js +1 -1
  1055. package/dist/zod.js.map +1 -1
  1056. package/package.json +312 -54
  1057. package/src/adyen-fx.ts +1 -1
  1058. package/src/allocate.ts +4 -3
  1059. package/src/cash.ts +26 -0
  1060. package/src/convert.ts +2 -3
  1061. package/src/crypto.ts +129 -0
  1062. package/src/currencies.ts +123 -0
  1063. package/src/currency.ts +45 -14
  1064. package/src/decimal.ts +98 -10
  1065. package/src/ecb.ts +75 -16
  1066. package/src/entries/adyen-fx.ts +5 -0
  1067. package/src/entries/boc.ts +5 -0
  1068. package/src/entries/boe.ts +5 -0
  1069. package/src/entries/crypto.ts +5 -0
  1070. package/src/entries/currencies.ts +5 -0
  1071. package/src/entries/drizzle-mysql.ts +5 -0
  1072. package/src/entries/drizzle-pg.ts +5 -0
  1073. package/src/entries/drizzle-sqlite.ts +5 -0
  1074. package/src/entries/ecb.ts +5 -0
  1075. package/src/entries/fed.ts +5 -0
  1076. package/src/entries/fetch.ts +5 -0
  1077. package/src/entries/finance.ts +5 -0
  1078. package/src/entries/historic.ts +5 -0
  1079. package/src/entries/history.ts +5 -0
  1080. package/src/entries/hmrc.ts +5 -0
  1081. package/src/entries/kysely.ts +5 -0
  1082. package/src/entries/parse.ts +5 -0
  1083. package/src/entries/pg.ts +5 -0
  1084. package/src/entries/policy.ts +5 -0
  1085. package/src/entries/pricing.ts +5 -0
  1086. package/src/entries/stripe-fx.ts +5 -0
  1087. package/src/entries/testing-arbitraries.ts +5 -0
  1088. package/src/entries/testing-index.ts +5 -0
  1089. package/src/entries/testing-jest.ts +5 -0
  1090. package/src/entries/testing-vitest.ts +5 -0
  1091. package/src/entries/valibot.ts +5 -0
  1092. package/src/entries/wire.ts +5 -0
  1093. package/src/entries/zod.ts +5 -0
  1094. package/src/exact.ts +3 -3
  1095. package/src/fetch.ts +20 -4
  1096. package/src/finance.ts +1219 -0
  1097. package/src/fixed-money.ts +38 -0
  1098. package/src/fixed.ts +74 -66
  1099. package/src/fn.ts +17 -0
  1100. package/src/format.ts +28 -9
  1101. package/src/generated/crypto.ts +15 -0
  1102. package/src/generated/iso/AED.ts +5 -0
  1103. package/src/generated/iso/AFN.ts +5 -0
  1104. package/src/generated/iso/ALL.ts +5 -0
  1105. package/src/generated/iso/AMD.ts +5 -0
  1106. package/src/generated/iso/AOA.ts +5 -0
  1107. package/src/generated/iso/ARS.ts +5 -0
  1108. package/src/generated/iso/AUD.ts +5 -0
  1109. package/src/generated/iso/AWG.ts +5 -0
  1110. package/src/generated/iso/AZN.ts +5 -0
  1111. package/src/generated/iso/BAM.ts +5 -0
  1112. package/src/generated/iso/BBD.ts +5 -0
  1113. package/src/generated/iso/BDT.ts +5 -0
  1114. package/src/generated/iso/BHD.ts +5 -0
  1115. package/src/generated/iso/BIF.ts +5 -0
  1116. package/src/generated/iso/BMD.ts +5 -0
  1117. package/src/generated/iso/BND.ts +5 -0
  1118. package/src/generated/iso/BOB.ts +5 -0
  1119. package/src/generated/iso/BOV.ts +5 -0
  1120. package/src/generated/iso/BRL.ts +5 -0
  1121. package/src/generated/iso/BSD.ts +5 -0
  1122. package/src/generated/iso/BTN.ts +5 -0
  1123. package/src/generated/iso/BWP.ts +5 -0
  1124. package/src/generated/iso/BYN.ts +5 -0
  1125. package/src/generated/iso/BZD.ts +5 -0
  1126. package/src/generated/iso/CAD.ts +5 -0
  1127. package/src/generated/iso/CDF.ts +5 -0
  1128. package/src/generated/iso/CHE.ts +5 -0
  1129. package/src/generated/iso/CHF.ts +5 -0
  1130. package/src/generated/iso/CHW.ts +5 -0
  1131. package/src/generated/iso/CLF.ts +5 -0
  1132. package/src/generated/iso/CLP.ts +5 -0
  1133. package/src/generated/iso/CNY.ts +5 -0
  1134. package/src/generated/iso/COP.ts +5 -0
  1135. package/src/generated/iso/COU.ts +5 -0
  1136. package/src/generated/iso/CRC.ts +5 -0
  1137. package/src/generated/iso/CUP.ts +5 -0
  1138. package/src/generated/iso/CVE.ts +5 -0
  1139. package/src/generated/iso/CZK.ts +5 -0
  1140. package/src/generated/iso/DJF.ts +5 -0
  1141. package/src/generated/iso/DKK.ts +5 -0
  1142. package/src/generated/iso/DOP.ts +5 -0
  1143. package/src/generated/iso/DZD.ts +5 -0
  1144. package/src/generated/iso/EGP.ts +5 -0
  1145. package/src/generated/iso/ERN.ts +5 -0
  1146. package/src/generated/iso/ETB.ts +5 -0
  1147. package/src/generated/iso/EUR.ts +5 -0
  1148. package/src/generated/iso/FJD.ts +5 -0
  1149. package/src/generated/iso/FKP.ts +5 -0
  1150. package/src/generated/iso/GBP.ts +5 -0
  1151. package/src/generated/iso/GEL.ts +5 -0
  1152. package/src/generated/iso/GHS.ts +5 -0
  1153. package/src/generated/iso/GIP.ts +5 -0
  1154. package/src/generated/iso/GMD.ts +5 -0
  1155. package/src/generated/iso/GNF.ts +5 -0
  1156. package/src/generated/iso/GTQ.ts +5 -0
  1157. package/src/generated/iso/GYD.ts +5 -0
  1158. package/src/generated/iso/HKD.ts +5 -0
  1159. package/src/generated/iso/HNL.ts +5 -0
  1160. package/src/generated/iso/HTG.ts +5 -0
  1161. package/src/generated/iso/HUF.ts +5 -0
  1162. package/src/generated/iso/IDR.ts +5 -0
  1163. package/src/generated/iso/ILS.ts +5 -0
  1164. package/src/generated/iso/INR.ts +5 -0
  1165. package/src/generated/iso/IQD.ts +5 -0
  1166. package/src/generated/iso/IRR.ts +5 -0
  1167. package/src/generated/iso/ISK.ts +5 -0
  1168. package/src/generated/iso/JMD.ts +5 -0
  1169. package/src/generated/iso/JOD.ts +5 -0
  1170. package/src/generated/iso/JPY.ts +5 -0
  1171. package/src/generated/iso/KES.ts +5 -0
  1172. package/src/generated/iso/KGS.ts +5 -0
  1173. package/src/generated/iso/KHR.ts +5 -0
  1174. package/src/generated/iso/KMF.ts +5 -0
  1175. package/src/generated/iso/KPW.ts +5 -0
  1176. package/src/generated/iso/KRW.ts +5 -0
  1177. package/src/generated/iso/KWD.ts +5 -0
  1178. package/src/generated/iso/KYD.ts +5 -0
  1179. package/src/generated/iso/KZT.ts +5 -0
  1180. package/src/generated/iso/LAK.ts +5 -0
  1181. package/src/generated/iso/LBP.ts +5 -0
  1182. package/src/generated/iso/LKR.ts +5 -0
  1183. package/src/generated/iso/LRD.ts +5 -0
  1184. package/src/generated/iso/LSL.ts +5 -0
  1185. package/src/generated/iso/LYD.ts +5 -0
  1186. package/src/generated/iso/MAD.ts +5 -0
  1187. package/src/generated/iso/MDL.ts +5 -0
  1188. package/src/generated/iso/MGA.ts +5 -0
  1189. package/src/generated/iso/MKD.ts +5 -0
  1190. package/src/generated/iso/MMK.ts +5 -0
  1191. package/src/generated/iso/MNT.ts +5 -0
  1192. package/src/generated/iso/MOP.ts +5 -0
  1193. package/src/generated/iso/MRU.ts +5 -0
  1194. package/src/generated/iso/MUR.ts +5 -0
  1195. package/src/generated/iso/MVR.ts +5 -0
  1196. package/src/generated/iso/MWK.ts +5 -0
  1197. package/src/generated/iso/MXN.ts +5 -0
  1198. package/src/generated/iso/MXV.ts +5 -0
  1199. package/src/generated/iso/MYR.ts +5 -0
  1200. package/src/generated/iso/MZN.ts +5 -0
  1201. package/src/generated/iso/NAD.ts +5 -0
  1202. package/src/generated/iso/NGN.ts +5 -0
  1203. package/src/generated/iso/NIO.ts +5 -0
  1204. package/src/generated/iso/NOK.ts +5 -0
  1205. package/src/generated/iso/NPR.ts +5 -0
  1206. package/src/generated/iso/NZD.ts +5 -0
  1207. package/src/generated/iso/OMR.ts +5 -0
  1208. package/src/generated/iso/PAB.ts +5 -0
  1209. package/src/generated/iso/PEN.ts +5 -0
  1210. package/src/generated/iso/PGK.ts +5 -0
  1211. package/src/generated/iso/PHP.ts +5 -0
  1212. package/src/generated/iso/PKR.ts +5 -0
  1213. package/src/generated/iso/PLN.ts +5 -0
  1214. package/src/generated/iso/PYG.ts +5 -0
  1215. package/src/generated/iso/QAR.ts +5 -0
  1216. package/src/generated/iso/RON.ts +5 -0
  1217. package/src/generated/iso/RSD.ts +5 -0
  1218. package/src/generated/iso/RUB.ts +5 -0
  1219. package/src/generated/iso/RWF.ts +5 -0
  1220. package/src/generated/iso/SAR.ts +5 -0
  1221. package/src/generated/iso/SBD.ts +5 -0
  1222. package/src/generated/iso/SCR.ts +5 -0
  1223. package/src/generated/iso/SDG.ts +5 -0
  1224. package/src/generated/iso/SEK.ts +5 -0
  1225. package/src/generated/iso/SGD.ts +5 -0
  1226. package/src/generated/iso/SHP.ts +5 -0
  1227. package/src/generated/iso/SLE.ts +5 -0
  1228. package/src/generated/iso/SOS.ts +5 -0
  1229. package/src/generated/iso/SRD.ts +5 -0
  1230. package/src/generated/iso/SSP.ts +5 -0
  1231. package/src/generated/iso/STN.ts +5 -0
  1232. package/src/generated/iso/SVC.ts +5 -0
  1233. package/src/generated/iso/SYP.ts +5 -0
  1234. package/src/generated/iso/SZL.ts +5 -0
  1235. package/src/generated/iso/THB.ts +5 -0
  1236. package/src/generated/iso/TJS.ts +5 -0
  1237. package/src/generated/iso/TMT.ts +5 -0
  1238. package/src/generated/iso/TND.ts +5 -0
  1239. package/src/generated/iso/TOP.ts +5 -0
  1240. package/src/generated/iso/TRY.ts +5 -0
  1241. package/src/generated/iso/TTD.ts +5 -0
  1242. package/src/generated/iso/TWD.ts +5 -0
  1243. package/src/generated/iso/TZS.ts +5 -0
  1244. package/src/generated/iso/UAH.ts +5 -0
  1245. package/src/generated/iso/UGX.ts +5 -0
  1246. package/src/generated/iso/USD.ts +5 -0
  1247. package/src/generated/iso/USN.ts +5 -0
  1248. package/src/generated/iso/UYI.ts +5 -0
  1249. package/src/generated/iso/UYU.ts +5 -0
  1250. package/src/generated/iso/UYW.ts +5 -0
  1251. package/src/generated/iso/UZS.ts +5 -0
  1252. package/src/generated/iso/VED.ts +5 -0
  1253. package/src/generated/iso/VES.ts +5 -0
  1254. package/src/generated/iso/VND.ts +5 -0
  1255. package/src/generated/iso/VUV.ts +5 -0
  1256. package/src/generated/iso/WST.ts +5 -0
  1257. package/src/generated/iso/XAD.ts +5 -0
  1258. package/src/generated/iso/XAF.ts +5 -0
  1259. package/src/generated/iso/XCD.ts +5 -0
  1260. package/src/generated/iso/XCG.ts +5 -0
  1261. package/src/generated/iso/XOF.ts +5 -0
  1262. package/src/generated/iso/XPF.ts +5 -0
  1263. package/src/generated/iso/YER.ts +5 -0
  1264. package/src/generated/iso/ZAR.ts +5 -0
  1265. package/src/generated/iso/ZMW.ts +5 -0
  1266. package/src/generated/iso/ZWG.ts +5 -0
  1267. package/src/generated/iso4217-numeric.ts +184 -0
  1268. package/src/generated/rbnf-de.ts +5 -0
  1269. package/src/generated/rbnf-en.ts +5 -0
  1270. package/src/generated/rbnf-es.ts +5 -0
  1271. package/src/generated/rbnf-fr.ts +5 -0
  1272. package/src/generated/rbnf-it.ts +5 -0
  1273. package/src/generated/rbnf-nl.ts +5 -0
  1274. package/src/generated/rbnf-pt.ts +5 -0
  1275. package/src/generated/territories.ts +277 -0
  1276. package/src/index.ts +3 -0
  1277. package/src/kysely.ts +4 -3
  1278. package/src/math.ts +167 -0
  1279. package/src/money.ts +136 -140
  1280. package/src/parse.ts +7 -7
  1281. package/src/plugins/adyen.ts +2 -0
  1282. package/src/plugins/all.ts +19 -1
  1283. package/src/plugins/allocate.ts +2 -0
  1284. package/src/plugins/braintree.ts +2 -0
  1285. package/src/plugins/cash.ts +2 -0
  1286. package/src/plugins/checkout.ts +2 -0
  1287. package/src/plugins/convert.ts +2 -0
  1288. package/src/plugins/core.ts +195 -0
  1289. package/src/plugins/exact.ts +2 -0
  1290. package/src/plugins/fixed-money.ts +57 -0
  1291. package/src/plugins/format.ts +2 -0
  1292. package/src/plugins/iso.ts +9 -0
  1293. package/src/plugins/klarna.ts +2 -0
  1294. package/src/plugins/math.ts +43 -0
  1295. package/src/plugins/paypal.ts +2 -0
  1296. package/src/plugins/prisma.ts +2 -0
  1297. package/src/plugins/stripe.ts +2 -0
  1298. package/src/plugins/tax.ts +2 -0
  1299. package/src/policy.ts +5 -8
  1300. package/src/pricing.ts +155 -0
  1301. package/src/prisma.ts +6 -1
  1302. package/src/provider.ts +2 -2
  1303. package/src/rate-text.ts +27 -1
  1304. package/src/rate.ts +2 -2
  1305. package/src/rbnf.ts +389 -0
  1306. package/src/scale.ts +42 -0
  1307. package/src/schema.ts +4 -7
  1308. package/src/territories.ts +102 -0
  1309. package/src/testing/arbitraries.ts +4 -4
  1310. package/src/testing/index.ts +1 -1
  1311. package/src/tiers.ts +284 -0
  1312. package/src/valibot.ts +4 -1
  1313. package/src/wire.ts +322 -0
  1314. package/src/words/de.ts +9 -0
  1315. package/src/words/en.ts +9 -0
  1316. package/src/words/es.ts +9 -0
  1317. package/src/words/fr.ts +9 -0
  1318. package/src/words/it.ts +9 -0
  1319. package/src/words/nl.ts +9 -0
  1320. package/src/words/pt.ts +9 -0
  1321. package/src/words.ts +168 -0
  1322. package/src/zod.ts +1 -1
  1323. package/dist/plugins/fixed.d.ts +0 -17
  1324. package/dist/plugins/fixed.d.ts.map +0 -1
  1325. package/dist/plugins/fixed.js +0 -13
  1326. package/dist/plugins/fixed.js.map +0 -1
  1327. package/src/plugins/fixed.ts +0 -29
@@ -0,0 +1,91 @@
1
+ /**
2
+ * `@ducatjs/money/currencies`: currency facts beyond the exponent. ISO 4217 numeric codes both
3
+ * ways, the size of the minor unit, and names and symbols per locale, which come from the runtime's
4
+ * `Intl` rather than a bundled table. Which currencies a territory uses is in
5
+ * `@ducatjs/money/territories`.
6
+ */
7
+ import { currencyExponent } from './currency.js';
8
+ import { formatScaled } from './decimal.js';
9
+ import { ISO_NUMERIC_CODES } from './generated/iso4217-numeric.js';
10
+ // ---------------------------------------------------------------------------------------------
11
+ // Numeric codes
12
+ // ---------------------------------------------------------------------------------------------
13
+ /**
14
+ * The ISO 4217 numeric code of an active currency, three digits as published: `'978'` for EUR,
15
+ * `'008'` for ALL. Card networks, ISO 8583 and some ISO 20022 messages carry currencies this way.
16
+ * `undefined` for a code ISO doesn't list (a custom or withdrawn currency).
17
+ */
18
+ export function numericCode(currency) {
19
+ return Object.hasOwn(ISO_NUMERIC_CODES, currency) ? ISO_NUMERIC_CODES[currency] : undefined;
20
+ }
21
+ let currenciesByNumeric;
22
+ /**
23
+ * The active ISO 4217 currency with a numeric code: `currencyFromNumeric('978')` and
24
+ * `currencyFromNumeric(978)` are `'EUR'`, and `'008'`, `'8'` and `8` are all `'ALL'`. `undefined`
25
+ * for a number ISO doesn't assign; a value that isn't a whole number from 0 to 999 throws a
26
+ * RangeError.
27
+ */
28
+ export function currencyFromNumeric(numeric) {
29
+ const text = typeof numeric === 'number' ? String(numeric) : numeric.trim();
30
+ if (!/^\d{1,3}$/.test(text)) {
31
+ throw new RangeError(`Not an ISO 4217 numeric code: ${String(numeric)}`);
32
+ }
33
+ if (currenciesByNumeric === undefined) {
34
+ currenciesByNumeric = new Map();
35
+ for (const [currency, code] of Object.entries(ISO_NUMERIC_CODES)) {
36
+ currenciesByNumeric.set(code, currency);
37
+ }
38
+ }
39
+ return currenciesByNumeric.get(text.padStart(3, '0'));
40
+ }
41
+ // ---------------------------------------------------------------------------------------------
42
+ // Minor unit
43
+ // ---------------------------------------------------------------------------------------------
44
+ /**
45
+ * The size of the currency's minor unit, in major units, as an exact decimal string: `'0.01'` for
46
+ * EUR, `'1'` for JPY (no minor unit), `'0.001'` for KWD and BHD. It follows the exponent, so a
47
+ * currency registered with `defineCurrency` works too; an unknown code throws, as
48
+ * `currencyExponent` does. For the smallest coin, see `cashUnit` in `@ducatjs/money/cash`.
49
+ */
50
+ export function minorUnit(currency) {
51
+ return formatScaled(1, currencyExponent(currency));
52
+ }
53
+ // ---------------------------------------------------------------------------------------------
54
+ // Names and symbols, from Intl
55
+ // ---------------------------------------------------------------------------------------------
56
+ const displayNames = /* @__PURE__ */ new Map();
57
+ const symbolFormats = /* @__PURE__ */ new Map();
58
+ function cached(cache, key, build) {
59
+ let value = cache.get(key);
60
+ if (value === undefined) {
61
+ // a handful of locales in practice; the bound keeps a server that sees many from growing
62
+ if (cache.size >= 64) {
63
+ cache.clear();
64
+ }
65
+ value = build();
66
+ cache.set(key, value);
67
+ }
68
+ return value;
69
+ }
70
+ /**
71
+ * The currency's name in a locale, from the runtime's `Intl.DisplayNames`: `currencyName('EUR',
72
+ * 'en')` is 'Euro' and `currencyName('EUR', 'de')` is 'Euro'; `currencyName('CHF', 'fr')` is 'franc
73
+ * suisse'. `undefined` when the runtime has no name for the code. Names follow the runtime's CLDR
74
+ * data, so they can differ between runtimes and versions.
75
+ */
76
+ export function currencyName(currency, locale) {
77
+ const names = cached(displayNames, locale, () => new Intl.DisplayNames(locale, { type: 'currency', fallback: 'none' }));
78
+ return names.of(currency);
79
+ }
80
+ /**
81
+ * The currency's symbol in a locale, from the runtime's `Intl.NumberFormat`: `currencySymbol('EUR',
82
+ * 'en-US')` is '€', `currencySymbol('USD', 'en-CA')` is 'US$', and `currencySymbol('USD', 'en-CA',
83
+ * { display: 'narrow' })` is '$'. A currency without a symbol in that locale gives its code.
84
+ */
85
+ export function currencySymbol(currency, locale, options) {
86
+ const display = options?.display === 'narrow' ? 'narrowSymbol' : 'symbol';
87
+ const format = cached(symbolFormats, `${locale}\u0000${currency}\u0000${display}`, () => new Intl.NumberFormat(locale, { style: 'currency', currency, currencyDisplay: display }));
88
+ const part = format.formatToParts(0).find((candidate) => candidate.type === 'currency');
89
+ return part?.value ?? currency;
90
+ }
91
+ //# sourceMappingURL=currencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currencies.js","sourceRoot":"","sources":["../src/currencies.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@ export interface CustomCurrencies {
9
9
  }
10
10
  /** A known currency code: ISO 4217, or one added to `CustomCurrencies`. */
11
11
  export type CurrencyCode = IsoCurrencyCode | (keyof CustomCurrencies & string);
12
+ /** @internal Registers an ISO 4217 code; the generated `iso/<CODE>` modules call it. */
13
+ export declare function isoCurrency(code: string, exponent: number): void;
14
+ /** @internal Registers every ISO 4217 code, for `@ducatjs/money/iso`. */
15
+ export declare function registerIsoCurrencies(): void;
12
16
  /**
13
17
  * Registers a currency that is not in ISO 4217 (crypto, loyalty points, withdrawn codes you still
14
18
  * hold balances in). ISO codes cannot be redefined: use an explicit `scale` for extra precision.
@@ -16,7 +20,11 @@ export type CurrencyCode = IsoCurrencyCode | (keyof CustomCurrencies & string);
16
20
  export declare function defineCurrency(code: string, exponent: number): void;
17
21
  /** The minor-unit exponent of a currency (EUR 2, JPY 0, KWD 3). Throws for unknown codes. */
18
22
  export declare function currencyExponent(code: string): number;
19
- /** Whether the code is an ISO 4217 currency or one registered with `defineCurrency`. */
23
+ /**
24
+ * Whether the code is registered: an ISO 4217 code (every one wherever an entry other than `/fn` is
25
+ * imported; in a `/fn`-only program, the ones imported from `@ducatjs/money/iso`), or a code from
26
+ * `defineCurrency`.
27
+ */
20
28
  export declare function isCurrency(code: string): code is CurrencyCode;
21
29
  export { ISO_EXPONENTS, ISO_4217_PUBLISHED, ISO_NON_MONETARY, type IsoCurrencyCode, } from './generated/iso4217.js';
22
30
  //# sourceMappingURL=currency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../src/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE7E;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;CAAG;AAEpC,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC;AAK/E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAYnE;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYrD;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAE7D;AAED,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../src/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE7E;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;CAAG;AAEpC,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC;AAoB/E,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAgBnE;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD;AASD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAE7D;AAED,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC"}
package/dist/currency.js CHANGED
@@ -1,6 +1,27 @@
1
1
  import { ISO_EXPONENTS } from './generated/iso4217.js';
2
- const custom = new Map();
3
2
  const iso = ISO_EXPONENTS;
3
+ // The exponents of the currencies this program can use. `@ducatjs/money/iso/<CODE>` and
4
+ // `defineCurrency` add codes to `known` one at a time; `@ducatjs/money/iso` (which every entry except
5
+ // `/fn` imports) makes the ISO table literal its prototype rather than copying it. That keeps the
6
+ // lookup as fast as reading the literal directly: V8 folds a load through a stable prototype, while
7
+ // a copy of 165 keys, or a null-prototype object, is a slow dictionary (#243 doubled fromMinor's
8
+ // time that way). `known` has a prototype, so a value counts only when it's a number: `toString`
9
+ // is a function and `__proto__` an object. A number someone puts on Object.prototype would count,
10
+ // as it did when main read the ISO literal directly; the alternative is an own-property check on
11
+ // every lookup.
12
+ const known = {};
13
+ function exponentOf(code) {
14
+ const exponent = known[code];
15
+ return typeof exponent === 'number' ? exponent : undefined;
16
+ }
17
+ /** @internal Registers an ISO 4217 code; the generated `iso/<CODE>` modules call it. */
18
+ export function isoCurrency(code, exponent) {
19
+ known[code] = exponent;
20
+ }
21
+ /** @internal Registers every ISO 4217 code, for `@ducatjs/money/iso`. */
22
+ export function registerIsoCurrencies() {
23
+ Object.setPrototypeOf(known, iso);
24
+ }
4
25
  /**
5
26
  * Registers a currency that is not in ISO 4217 (crypto, loyalty points, withdrawn codes you still
6
27
  * hold balances in). ISO codes cannot be redefined: use an explicit `scale` for extra precision.
@@ -12,27 +33,33 @@ export function defineCurrency(code, exponent) {
12
33
  if (typeof iso[code] === 'number') {
13
34
  throw new TypeError(`${code} is an ISO 4217 currency and cannot be redefined`);
14
35
  }
15
- const prev = custom.get(code);
36
+ // `known` has a prototype, where `__proto__` is a setter and `toString` a method
37
+ if (code in Object.prototype) {
38
+ throw new TypeError(`${code} can't be a currency code`);
39
+ }
40
+ const prev = exponentOf(code);
16
41
  if (prev !== undefined && prev !== exponent) {
17
42
  throw new TypeError(`${code} is already defined with exponent ${prev}`);
18
43
  }
19
- custom.set(code, exponent);
44
+ known[code] = exponent;
20
45
  }
21
46
  /** The minor-unit exponent of a currency (EUR 2, JPY 0, KWD 3). Throws for unknown codes. */
22
47
  export function currencyExponent(code) {
23
- const isoExponent = iso[code];
24
- if (typeof isoExponent === 'number') {
25
- return isoExponent;
26
- }
27
- const customExponent = custom.get(code);
28
- if (customExponent !== undefined) {
29
- return customExponent;
30
- }
31
- throw new RangeError(`Unknown currency "${code}" (not ISO 4217 and not registered with defineCurrency)`);
48
+ const exponent = exponentOf(code);
49
+ return exponent === undefined ? unknownCurrency(code) : exponent;
50
+ }
51
+ function unknownCurrency(code) {
52
+ throw new RangeError(
53
+ // true wherever it's thrown: with the root entry every ISO code is registered already
54
+ `Unknown currency "${code}" (ISO codes with /fn alone: import @ducatjs/money/iso; others: defineCurrency)`);
32
55
  }
33
- /** Whether the code is an ISO 4217 currency or one registered with `defineCurrency`. */
56
+ /**
57
+ * Whether the code is registered: an ISO 4217 code (every one wherever an entry other than `/fn` is
58
+ * imported; in a `/fn`-only program, the ones imported from `@ducatjs/money/iso`), or a code from
59
+ * `defineCurrency`.
60
+ */
34
61
  export function isCurrency(code) {
35
- return typeof iso[code] === 'number' || custom.has(code);
62
+ return exponentOf(code) !== undefined;
36
63
  }
37
64
  export { ISO_EXPONENTS, ISO_4217_PUBLISHED, ISO_NON_MONETARY, } from './generated/iso4217.js';
38
65
  //# sourceMappingURL=currency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency.js","sourceRoot":"","sources":["../src/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,wBAAwB,CAAC;AAc7E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;AACzC,MAAM,GAAG,GAAG,aAAiD,CAAC;AAE9D;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;QACjE,MAAM,IAAI,UAAU,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,kDAAkD,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,qCAAqC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,UAAU,CAClB,qBAAqB,IAAI,yDAAyD,CACnF,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"currency.js","sourceRoot":"","sources":["../src/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,wBAAwB,CAAC;AAc7E,MAAM,GAAG,GAAG,aAAiD,CAAC;AAE9D,wFAAwF;AACxF,sGAAsG;AACtG,kGAAkG;AAClG,oGAAoG;AACpG,iGAAiG;AACjG,iGAAiG;AACjG,kGAAkG;AAClG,iGAAiG;AACjG,gBAAgB;AAChB,MAAM,KAAK,GAA2B,EAAE,CAAC;AAEzC,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB;IACxD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AACzB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;QACjE,MAAM,IAAI,UAAU,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,kDAAkD,CAAC,CAAC;IACjF,CAAC;IACD,iFAAiF;IACjF,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,2BAA2B,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,qCAAqC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AACzB,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,IAAI,UAAU;IAClB,sFAAsF;IACtF,qBAAqB,IAAI,iFAAiF,CAC3G,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AACxC,CAAC;AAED,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC"}
package/dist/decimal.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { Fixed } from './fixed.js';
1
2
  /**
2
3
  * An exact rational factor num/den (den > 0). `n`/`d` hold the same values as numbers when both are
3
4
  * safe.
@@ -10,8 +11,11 @@ export interface Ratio {
10
11
  /** den as a number, or NaN when it is not a safe integer */
11
12
  readonly d: number;
12
13
  }
13
- /** Anything accepted where a multiplier, rate or percentage is expected. */
14
- export type Factor = number | bigint | string | Ratio;
14
+ /**
15
+ * Anything accepted where a multiplier, rate or percentage is expected. A `Fixed` is read exactly,
16
+ * as its scaled integer over 10^scale.
17
+ */
18
+ export type Factor = number | bigint | string | Ratio | Fixed;
15
19
  /** 10^exponent as a bigint, cached. */
16
20
  export declare function pow10n(exponent: number): bigint;
17
21
  /** 10^e as a number for 0 <= e <= 15 (all exact and safe). */
@@ -39,9 +43,27 @@ export declare function parseDecimal(input: string): {
39
43
  digits: bigint;
40
44
  scale: number;
41
45
  };
46
+ /**
47
+ * A double holds 15 significant decimal digits faithfully (DBL_DIG): a number whose shortest form
48
+ * has no more than that is the decimal its author wrote. 0.1 + 0.2 reads back as
49
+ * 0.30000000000000004 and 1 / 0.52 as 1.9230769230769231 (17 digits): those are float artefacts.
50
+ */
51
+ export declare const MAX_FAITHFUL_DIGITS = 15;
52
+ /**
53
+ * A number's shortest decimal form, which must have at most 15 significant digits (see
54
+ * MAX_FAITHFUL_DIGITS). `fix` says what to do instead, for the error message.
55
+ */
56
+ export declare function faithfulDecimal(value: number, fix: string): string;
57
+ /**
58
+ * Returns `scale` if it is a valid scale: an integer from 0 to MAX_DECIMAL_SCALE. Scales are never
59
+ * negative: round to tens or hundreds with an increment (`roundToIncrement`, a rounding policy).
60
+ */
61
+ export declare function checkScale(scale: number): number;
42
62
  /**
43
63
  * Builds an exact ratio. `ratio('1.075')`, `ratio(3, 4)`, `ratio(10n)`, `ratio('1/3')`.
44
- * Numbers are taken at their shortest decimal representation: `ratio(0.1)` is exactly 1/10.
64
+ * Numbers are taken at their shortest decimal representation: `ratio(0.1)` is exactly 1/10. One
65
+ * with more than 15 significant digits (`1 / 0.52` is 1.9230769230769231) throws a RangeError,
66
+ * since a float artefact can't be told from a decimal someone wrote; pass a string instead.
45
67
  * Pre-build ratios you use in hot loops; strings are also cached (up to 1024 entries).
46
68
  */
47
69
  export declare function ratio(value: Factor, den?: Factor): Ratio;
@@ -1 +1 @@
1
- {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAGtD,uCAAuC;AACvC,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/C;AACD,8DAA8D;AAC9D,eAAO,MAAM,KAAK,mLAER,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,MACC,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoDnD;AAID;;;GAGG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkB7E;AA2CD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CA8CxD;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAiB1D;AAKD,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmC1E"}
1
+ {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAG9D,uCAAuC;AACvC,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/C;AACD,8DAA8D;AAC9D,eAAO,MAAM,KAAK,mLAER,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,MACC,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoDnD;AAID;;;GAGG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkB7E;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAelE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AA2DD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAqExD;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAiB1D;AAKD,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmC1E"}
package/dist/decimal.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // converted through their shortest round-trip decimal representation (String(x)), never multiplied.
3
3
  /** The largest minor-unit count held as a number (2^53 - 1); larger values are bigints. */
4
4
  const MAX_SAFE_MINOR = Number.MAX_SAFE_INTEGER;
5
- const MAXN = BigInt(MAX_SAFE_MINOR);
5
+ const MAXN = /* @__PURE__ */ BigInt(MAX_SAFE_MINOR);
6
6
  const POW10N = [];
7
7
  /** 10^exponent as a bigint, cached. */
8
8
  export function pow10n(exponent) {
@@ -85,7 +85,7 @@ const EXP_RE = /^([+-]?)(\d+)(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/;
85
85
  export const MAX_DECIMAL_SCALE = 1000;
86
86
  /** Parses a decimal string, allowing exponent notation ("1e-7", as produced by String(1e-7)). */
87
87
  export function parseDecimal(input) {
88
- const match = EXP_RE.exec(input.trim());
88
+ const match = EXP_RE.exec(input);
89
89
  if (!match) {
90
90
  throw new SyntaxError(`Invalid decimal string "${input}"`);
91
91
  }
@@ -103,6 +103,45 @@ export function parseDecimal(input) {
103
103
  }
104
104
  return { digits: sign === '-' ? -digits : digits, scale };
105
105
  }
106
+ /**
107
+ * A double holds 15 significant decimal digits faithfully (DBL_DIG): a number whose shortest form
108
+ * has no more than that is the decimal its author wrote. 0.1 + 0.2 reads back as
109
+ * 0.30000000000000004 and 1 / 0.52 as 1.9230769230769231 (17 digits): those are float artefacts.
110
+ */
111
+ export const MAX_FAITHFUL_DIGITS = 15;
112
+ /**
113
+ * A number's shortest decimal form, which must have at most 15 significant digits (see
114
+ * MAX_FAITHFUL_DIGITS). `fix` says what to do instead, for the error message.
115
+ */
116
+ export function faithfulDecimal(value, fix) {
117
+ // The shortest form has at most 15 digits exactly when rounding to 15 digits gives the same
118
+ // double back: shortest means the fewest digits that round-trip.
119
+ // Safe integers are exact whatever their digit count, and NaN and the infinities pass through
120
+ // for the caller's parser to reject. (Today's callers take safe integers on a path of their own.)
121
+ if (!Number.isSafeInteger(value) &&
122
+ Number.isFinite(value) &&
123
+ Number(value.toPrecision(MAX_FAITHFUL_DIGITS)) !== value) {
124
+ throw new RangeError(`${value} has more than ${MAX_FAITHFUL_DIGITS} significant digits; ${fix}`);
125
+ }
126
+ return String(value);
127
+ }
128
+ /**
129
+ * Returns `scale` if it is a valid scale: an integer from 0 to MAX_DECIMAL_SCALE. Scales are never
130
+ * negative: round to tens or hundreds with an increment (`roundToIncrement`, a rounding policy).
131
+ */
132
+ export function checkScale(scale) {
133
+ // On hot paths (Fixed, ExactMoney, policies), so one comparison does most of the work: `>>> 0`
134
+ // leaves an integer from 0 to 2^32 - 1 unchanged and changes negatives, fractions, NaN and the
135
+ // infinities.
136
+ if (scale >>> 0 !== scale || scale > MAX_DECIMAL_SCALE) {
137
+ invalidScale(scale);
138
+ }
139
+ return scale;
140
+ }
141
+ // Kept out of checkScale, so the check stays small enough to inline.
142
+ function invalidScale(scale) {
143
+ throw new RangeError(`Invalid scale ${scale}: use an integer from 0 to ${MAX_DECIMAL_SCALE}`);
144
+ }
106
145
  function gcd(left, right) {
107
146
  if (left < 0n) {
108
147
  left = -left;
@@ -138,11 +177,21 @@ function makeRatio(num, den) {
138
177
  }
139
178
  return { num, den, n: safeNumberOrNaN(num), d: safeNumberOrNaN(den) };
140
179
  }
141
- const cache = new Map();
180
+ /**
181
+ * The error for a value that isn't a factor. Untyped code passes all sorts here (a Fixed, a
182
+ * `{ num: 1, den: 2 }` of numbers, null), and without this check they fail later with an unrelated
183
+ * BigInt error, or are returned as if they were a Ratio.
184
+ */
185
+ function notAFactor(value) {
186
+ return new TypeError(`Expected a number, bigint, decimal string, Ratio or Fixed, got ${typeof value} ${String(value)}`);
187
+ }
188
+ const cache = /* @__PURE__ */ new Map();
142
189
  const INT_RATIOS = [];
143
190
  /**
144
191
  * Builds an exact ratio. `ratio('1.075')`, `ratio(3, 4)`, `ratio(10n)`, `ratio('1/3')`.
145
- * Numbers are taken at their shortest decimal representation: `ratio(0.1)` is exactly 1/10.
192
+ * Numbers are taken at their shortest decimal representation: `ratio(0.1)` is exactly 1/10. One
193
+ * with more than 15 significant digits (`1 / 0.52` is 1.9230769230769231) throws a RangeError,
194
+ * since a float artefact can't be told from a decimal someone wrote; pass a string instead.
146
195
  * Pre-build ratios you use in hot loops; strings are also cached (up to 1024 entries).
147
196
  */
148
197
  export function ratio(value, den) {
@@ -156,7 +205,25 @@ export function ratio(value, den) {
156
205
  return makeRatio(numeratorRatio.num * denominatorRatio.den, numeratorRatio.den * denominatorRatio.num);
157
206
  }
158
207
  if (typeof value === 'object') {
159
- return value;
208
+ // A Ratio from ratio() passes straight through: the hot path for factors built once. A
209
+ // hand-made { num, den } of bigints is rebuilt, so it is reduced and has `n` and `d`.
210
+ const asRatio = value;
211
+ if (typeof asRatio?.num === 'bigint' && typeof asRatio.den === 'bigint') {
212
+ return typeof asRatio.n === 'number' && typeof asRatio.d === 'number'
213
+ ? asRatio
214
+ : makeRatio(asRatio.num, asRatio.den);
215
+ }
216
+ // A Fixed, read through its scaled form rather than `instanceof`, so the core doesn't load
217
+ // `/fixed`. The scale is checked because a lookalike object could carry any value.
218
+ const scaled = value?.value;
219
+ const scale = value?.scale;
220
+ if ((typeof scaled === 'bigint' || Number.isSafeInteger(scaled)) &&
221
+ typeof scale === 'number' &&
222
+ scale >>> 0 === scale &&
223
+ scale <= MAX_DECIMAL_SCALE) {
224
+ return makeRatio(BigInt(scaled), pow10n(scale));
225
+ }
226
+ throw notAFactor(value);
160
227
  }
161
228
  if (typeof value === 'number') {
162
229
  if (Number.isSafeInteger(value)) {
@@ -168,16 +235,19 @@ export function ratio(value, den) {
168
235
  if (!Number.isFinite(value)) {
169
236
  throw new RangeError(`Invalid factor ${value}`);
170
237
  }
171
- value = String(value);
238
+ value = faithfulDecimal(value, 'pass it as a string');
172
239
  }
173
240
  if (typeof value === 'bigint') {
174
241
  return makeRatio(value, 1n);
175
242
  }
243
+ if (typeof value !== 'string') {
244
+ throw notAFactor(value);
245
+ }
176
246
  let cached = cache.get(value);
177
247
  if (cached === undefined) {
178
248
  const slash = value.indexOf('/');
179
249
  if (slash > 0) {
180
- cached = ratio(value.slice(0, slash).trim(), value.slice(slash + 1).trim());
250
+ cached = ratio(value.slice(0, slash), value.slice(slash + 1));
181
251
  }
182
252
  else {
183
253
  const { digits, scale } = parseDecimal(value);
@@ -210,7 +280,7 @@ export function ratioToDecimal(value) {
210
280
  return formatScaled(value.num * (pow10n(scale) / value.den), scale);
211
281
  }
212
282
  // Zero padding for the fraction digits, built once: indexing it is faster than padStart.
213
- const ZPAD = Array.from({ length: 16 }, (_, length) => '0'.repeat(length));
283
+ const ZPAD = /* @__PURE__ */ Array.from({ length: 16 }, (_, length) => '0'.repeat(length));
214
284
  /** Formats an integer at `scale` as a plain decimal string ("-0.05"). */
215
285
  export function formatScaled(minor, scale) {
216
286
  if (typeof minor === 'number' && scale <= 15) {
@@ -1 +1 @@
1
- {"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,oGAAoG;AAEpG,2FAA2F;AAC3F,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAkBpC,MAAM,MAAM,GAAa,EAAE,CAAC;AAC5B,uCAAuC;AACvC,MAAM,UAAU,MAAM,CAAC,QAAgB;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AACD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACzE,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAmB,EAAE,CAC/D,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa;IAEb,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,EAAE,CAAC,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;QAC/C,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QAClB,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACpB,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YAC7B,UAAU,EAAE,CAAC;YACb,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,KAAK,EAAE,CAAC;YACV,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,mEAAmE;gBACnE,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;oBACpB,GAAG,GAAG,IAAI,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACN,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,EAAE,CAAC,OAAO,IAAI,KAAK,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YAC9D,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,qCAAqC;IACrC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,+DAA+D;IAC/D,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,MAAM,GAAG,+CAA+C,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,iGAAiG;AACjG,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,WAAW,CAAC,2BAA2B,KAAK,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACnC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC5E,kDAAkD;QAClD,MAAM,IAAI,UAAU,CAAC,qDAAqD,iBAAiB,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,GAAG,MAAM,CAAC,GAAI,GAAG,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa;IACtC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;QACd,IAAI,GAAG,CAAC,IAAI,CAAC;IACf,CAAC;IACD,kGAAkG;IAClG,yEAAyE;IACzE,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;QAC/B,IAAI,GAAG,KAAK,CAAC;QACb,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8FAA8F;AAC9F,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW;IACzC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACb,GAAG,GAAG,CAAC,GAAG,CAAC;QACX,GAAG,GAAG,CAAC,GAAG,CAAC;IACb,CAAC;IACD,gDAAgD;IAChD,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACjB,GAAG,IAAI,OAAO,CAAC;YACf,GAAG,IAAI,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;AACvC,MAAM,UAAU,GAAY,EAAE,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAY;IAC/C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,yEAAyE;QACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,SAAS,CACd,cAAc,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,EACzC,cAAc,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAC1C,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;gBAC9B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,IAAI,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,oBAAoB,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,oBAAoB,IAAI,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC;IACT,CAAC;IACD,OAAO,oBAAoB,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,oBAAoB,IAAI,EAAE,CAAC;QAC3B,KAAK,EAAE,CAAC;IACV,CAAC;IACD,IAAI,oBAAoB,KAAK,EAAE,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,yFAAyF;AACzF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3E,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,KAAsB,EAAE,KAAa;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC7C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,yFAAyF;QACzF,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,IAAI,SAAS,GAAG,IAAI,IAAI,cAAc,EAAE,CAAC;YACvC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YACzC,IAAI,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;YACxC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,KAAK,IAAI,CAAC,CAAC;gBACX,QAAQ,IAAI,IAAI,CAAC;YACnB,CAAC;iBAAM,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC5B,KAAK,IAAI,CAAC,CAAC;gBACX,QAAQ,IAAI,IAAI,CAAC;YACnB,CAAC;YACD,IAAI,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,cAAc,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAClC,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC;YACxE,CAAC;YACD,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,cAAc,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,MAAM,GACR,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QAC1D,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,oGAAoG;AAIpG,2FAA2F;AAC3F,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/C,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAqBpD,MAAM,MAAM,GAAa,EAAE,CAAC;AAC5B,uCAAuC;AACvC,MAAM,UAAU,MAAM,CAAC,QAAgB;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AACD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACzE,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAmB,EAAE,CAC/D,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa;IAEb,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,EAAE,CAAC,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;QAC/C,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QAClB,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACpB,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YAC7B,UAAU,EAAE,CAAC;YACb,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,KAAK,EAAE,CAAC;YACV,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,mEAAmE;gBACnE,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;oBACpB,GAAG,GAAG,IAAI,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACN,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,EAAE,CAAC,OAAO,IAAI,KAAK,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YAC9D,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,qCAAqC;IACrC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,+DAA+D;IAC/D,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,MAAM,GAAG,+CAA+C,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,iGAAiG;AACjG,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,WAAW,CAAC,2BAA2B,KAAK,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACnC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC5E,kDAAkD;QAClD,MAAM,IAAI,UAAU,CAAC,qDAAqD,iBAAiB,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,GAAG,MAAM,CAAC,GAAI,GAAG,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,GAAW;IACxD,4FAA4F;IAC5F,iEAAiE;IACjE,8FAA8F;IAC9F,kGAAkG;IAClG,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,KAAK,KAAK,EACxD,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,GAAG,KAAK,kBAAkB,mBAAmB,wBAAwB,GAAG,EAAE,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,+FAA+F;IAC/F,+FAA+F;IAC/F,cAAc;IACd,IAAI,KAAK,KAAK,CAAC,KAAK,KAAK,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QACvD,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,IAAI,UAAU,CAAC,iBAAiB,KAAK,8BAA8B,iBAAiB,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa;IACtC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;QACd,IAAI,GAAG,CAAC,IAAI,CAAC;IACf,CAAC;IACD,kGAAkG;IAClG,yEAAyE;IACzE,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;QAC/B,IAAI,GAAG,KAAK,CAAC;QACb,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8FAA8F;AAC9F,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW;IACzC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QACb,GAAG,GAAG,CAAC,GAAG,CAAC;QACX,GAAG,GAAG,CAAC,GAAG,CAAC;IACb,CAAC;IACD,gDAAgD;IAChD,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACjB,GAAG,IAAI,OAAO,CAAC;YACf,GAAG,IAAI,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,SAAS,CAClB,kEAAkE,OAAO,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,GAAG,EAAiB,CAAC;AACvD,MAAM,UAAU,GAAY,EAAE,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAY;IAC/C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,yEAAyE;QACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,SAAS,CACd,cAAc,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,EACzC,cAAc,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAC1C,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,uFAAuF;QACvF,sFAAsF;QACtF,MAAM,OAAO,GAAG,KAA8B,CAAC;QAC/C,IAAI,OAAO,OAAO,EAAE,GAAG,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACxE,OAAO,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ;gBACnE,CAAC,CAAE,OAAiB;gBACpB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,2FAA2F;QAC3F,mFAAmF;QACnF,MAAM,MAAM,GAAI,KAA+B,EAAE,KAAK,CAAC;QACvD,MAAM,KAAK,GAAI,KAA+B,EAAE,KAAK,CAAC;QACtD,IACE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5D,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,CAAC,KAAK,KAAK;YACrB,KAAK,IAAI,iBAAiB,EAC1B,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,MAAyB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;gBAC9B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,IAAI,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,oBAAoB,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,oBAAoB,IAAI,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC;IACT,CAAC;IACD,OAAO,oBAAoB,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,oBAAoB,IAAI,EAAE,CAAC;QAC3B,KAAK,EAAE,CAAC;IACV,CAAC;IACD,IAAI,oBAAoB,KAAK,EAAE,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,yFAAyF;AACzF,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3F,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,KAAsB,EAAE,KAAa;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC7C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,yFAAyF;QACzF,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,IAAI,SAAS,GAAG,IAAI,IAAI,cAAc,EAAE,CAAC;YACvC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YACzC,IAAI,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;YACxC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,KAAK,IAAI,CAAC,CAAC;gBACX,QAAQ,IAAI,IAAI,CAAC;YACnB,CAAC;iBAAM,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC5B,KAAK,IAAI,CAAC,CAAC;gBACX,QAAQ,IAAI,IAAI,CAAC;YACnB,CAAC;YACD,IAAI,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,cAAc,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAClC,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC;YACxE,CAAC;YACD,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,cAAc,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,MAAM,GACR,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QAC1D,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC"}
package/dist/ecb.d.ts CHANGED
@@ -1,21 +1,36 @@
1
1
  import { type RateTable } from './provider.js';
2
+ /** When each day's ECB rates became available: a publication time, for point-in-time lookups. */
3
+ export type EcbAvailableAt = boolean | ((day: string) => string | Date);
4
+ /** Options for parseEcbXml and parseEcbCsv. */
5
+ export interface EcbOptions {
6
+ /**
7
+ * When each day's rates became available, so that a historical lookup (`asOf` a time) can't
8
+ * use a rate before it was published. `true` gives the ECB's documented publication time, 16:00
9
+ * CET on the day (Frankfurt time: 15:00 UTC in winter, 14:00 UTC in summer); a function gives
10
+ * your own, say from your own fetch log, since the ECB's time is approximate and a delay moves
11
+ * it. Default: none, so a query at any time on the day gets that day's rates.
12
+ */
13
+ readonly availableAt?: EcbAvailableAt;
14
+ }
2
15
  /**
3
16
  * Parses eurofxref-daily.xml, eurofxref-hist-90d.xml or eurofxref-hist.xml into one EUR-based table
4
17
  * per day, newest first. Each rate is EUR → currency, with `source: 'ECB'`, `type: 'reference'` and
5
18
  * `asOf` the publication day. A day without any rates is left out, so a lookback goes on to the day
6
- * before. A rate entry that can't be read throws SyntaxError.
19
+ * before. A rate entry that can't be read throws SyntaxError. Pass `availableAt: true` to give each
20
+ * table the ECB's publication time, 16:00 CET (see `EcbOptions`).
7
21
  *
8
22
  * const [latest] = parseEcbXml(await readFile('eurofxref-daily.xml', 'utf8'));
9
23
  */
10
- export declare function parseEcbXml(xml: string): RateTable[];
24
+ export declare function parseEcbXml(xml: string, options?: EcbOptions): RateTable[];
11
25
  /**
12
26
  * Parses eurofxref.csv or eurofxref-hist.csv (from the ECB's zips) the way parseEcbXml does.
13
27
  * 'N/A' and blank cells (currencies not quoted that day) are listed in the table's `missing`, and a
14
- * day with no rates at all is left out, so a lookback goes on to the day before.
28
+ * day with no rates at all is left out, so a lookback goes on to the day before. `availableAt` works
29
+ * as in parseEcbXml.
15
30
  */
16
- export declare function parseEcbCsv(csv: string): RateTable[];
31
+ export declare function parseEcbCsv(csv: string, options?: EcbOptions): RateTable[];
17
32
  /** Options for parseEcbSdmxCsv. */
18
- export interface EcbSdmxOptions {
33
+ export interface EcbSdmxOptions extends EcbOptions {
19
34
  /**
20
35
  * The decimals each currency is published with, for a file without the DECIMALS column (as
21
36
  * fetched with `detail=dataonly`). A DECIMALS column in the file takes precedence.
@@ -41,9 +56,9 @@ export declare function parseEcbSdmxDecimals(csv: string): Record<string, number
41
56
  * throws SyntaxError rather than being read as a daily rate. Discontinued series simply end, so
42
57
  * the tables of their last days include them.
43
58
  *
44
- * No `availableAt` is set, as with parseEcbXml: the API gives no publication time, and the ECB
45
- * publishes at about 16:00 CET. So a backtest that asks for 10:00 CET on a day still gets that
46
- * day's rate; ask for the day before if that matters.
59
+ * The API gives no publication time, so no `availableAt` is set unless asked for, as with
60
+ * parseEcbXml: without it, a backtest that asks for 10:00 CET on a day still gets that day's rate.
61
+ * Pass `availableAt: true` for the ECB's documented 16:00 CET, or a function for your own.
47
62
  *
48
63
  * const tables = parseEcbSdmxCsv(await (await fetch(url)).text());
49
64
  * const history = rateHistory(tables); // from @ducatjs/money/convert/history
package/dist/ecb.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ecb.d.ts","sourceRoot":"","sources":["../src/ecb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAoE1D;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAgBpD;AAiCD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CA+BpD;AASD,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD;AA+CD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxE;AAWD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,EAAE,CAwDlF"}
1
+ {"version":3,"file":"ecb.d.ts","sourceRoot":"","sources":["../src/ecb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AA+B1D,iGAAiG;AACjG,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC;AAExE,+CAA+C;AAC/C,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC;CACvC;AA8ED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,EAAE,CAiB1E;AAiCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,EAAE,CAgC1E;AASD,mCAAmC;AACnC,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD;AA+CD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxE;AAWD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,EAAE,CAyDlF"}