@ducatjs/money 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +51 -0
- package/README.md +617 -2
- package/assets/CREDITS.md +12 -0
- package/data/adyen-fx.json +19 -0
- package/data/adyen.json +171 -0
- package/data/braintree.json +223 -0
- package/data/cash-rounding.json +399 -0
- package/data/checkout.json +230 -0
- package/data/iso4217-list-one.xml +1956 -0
- package/data/klarna.json +95 -0
- package/data/paypal.json +65 -0
- package/data/stripe-fx.json +17 -0
- package/data/stripe.json +285 -0
- package/dist/adyen-fx.d.ts +25 -0
- package/dist/adyen-fx.d.ts.map +1 -0
- package/dist/adyen-fx.js +122 -0
- package/dist/adyen-fx.js.map +1 -0
- package/dist/adyen.d.ts +25 -0
- package/dist/adyen.d.ts.map +1 -0
- package/dist/adyen.js +34 -0
- package/dist/adyen.js.map +1 -0
- package/dist/allocate.d.ts +72 -0
- package/dist/allocate.d.ts.map +1 -0
- package/dist/allocate.js +314 -0
- package/dist/allocate.js.map +1 -0
- package/dist/bag.d.ts +58 -0
- package/dist/bag.d.ts.map +1 -0
- package/dist/bag.js +122 -0
- package/dist/bag.js.map +1 -0
- package/dist/braintree.d.ts +34 -0
- package/dist/braintree.d.ts.map +1 -0
- package/dist/braintree.js +45 -0
- package/dist/braintree.js.map +1 -0
- package/dist/cash.d.ts +35 -0
- package/dist/cash.d.ts.map +1 -0
- package/dist/cash.js +86 -0
- package/dist/cash.js.map +1 -0
- package/dist/checkout.d.ts +42 -0
- package/dist/checkout.d.ts.map +1 -0
- package/dist/checkout.js +52 -0
- package/dist/checkout.js.map +1 -0
- package/dist/convert.d.ts +51 -0
- package/dist/convert.d.ts.map +1 -0
- package/dist/convert.js +55 -0
- package/dist/convert.js.map +1 -0
- package/dist/currency.d.ts +22 -0
- package/dist/currency.d.ts.map +1 -0
- package/dist/currency.js +38 -0
- package/dist/currency.js.map +1 -0
- package/dist/decimal.d.ts +52 -0
- package/dist/decimal.d.ts.map +1 -0
- package/dist/decimal.js +251 -0
- package/dist/decimal.js.map +1 -0
- package/dist/ecb.d.ts +17 -0
- package/dist/ecb.d.ts.map +1 -0
- package/dist/ecb.js +147 -0
- package/dist/ecb.js.map +1 -0
- package/dist/exact.d.ts +62 -0
- package/dist/exact.d.ts.map +1 -0
- package/dist/exact.js +147 -0
- package/dist/exact.js.map +1 -0
- package/dist/fetch.d.ts +58 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +79 -0
- package/dist/fetch.js.map +1 -0
- package/dist/fixed.d.ts +121 -0
- package/dist/fixed.d.ts.map +1 -0
- package/dist/fixed.js +420 -0
- package/dist/fixed.js.map +1 -0
- package/dist/fn.d.ts +27 -0
- package/dist/fn.d.ts.map +1 -0
- package/dist/fn.js +30 -0
- package/dist/fn.js.map +1 -0
- package/dist/format.d.ts +13 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +90 -0
- package/dist/format.js.map +1 -0
- package/dist/generated/adyen.d.ts +3 -0
- package/dist/generated/adyen.d.ts.map +1 -0
- package/dist/generated/adyen.js +144 -0
- package/dist/generated/adyen.js.map +1 -0
- package/dist/generated/braintree.d.ts +3 -0
- package/dist/generated/braintree.d.ts.map +1 -0
- package/dist/generated/braintree.js +140 -0
- package/dist/generated/braintree.js.map +1 -0
- package/dist/generated/cash.d.ts +12 -0
- package/dist/generated/cash.d.ts.map +1 -0
- package/dist/generated/cash.js +364 -0
- package/dist/generated/cash.js.map +1 -0
- package/dist/generated/checkout.d.ts +3 -0
- package/dist/generated/checkout.d.ts.map +1 -0
- package/dist/generated/checkout.js +151 -0
- package/dist/generated/checkout.js.map +1 -0
- package/dist/generated/iso4217.d.ts +174 -0
- package/dist/generated/iso4217.d.ts.map +1 -0
- package/dist/generated/iso4217.js +175 -0
- package/dist/generated/iso4217.js.map +1 -0
- package/dist/generated/kernel.d.ts +17 -0
- package/dist/generated/kernel.d.ts.map +1 -0
- package/dist/generated/kernel.js +208 -0
- package/dist/generated/kernel.js.map +1 -0
- package/dist/generated/klarna.d.ts +3 -0
- package/dist/generated/klarna.d.ts.map +1 -0
- package/dist/generated/klarna.js +21 -0
- package/dist/generated/klarna.js.map +1 -0
- package/dist/generated/paypal.d.ts +3 -0
- package/dist/generated/paypal.d.ts.map +1 -0
- package/dist/generated/paypal.js +31 -0
- package/dist/generated/paypal.js.map +1 -0
- package/dist/generated/stripe.d.ts +8 -0
- package/dist/generated/stripe.d.ts.map +1 -0
- package/dist/generated/stripe.js +150 -0
- package/dist/generated/stripe.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/klarna.d.ts +31 -0
- package/dist/klarna.d.ts.map +1 -0
- package/dist/klarna.js +38 -0
- package/dist/klarna.js.map +1 -0
- package/dist/money.d.ts +218 -0
- package/dist/money.d.ts.map +1 -0
- package/dist/money.js +577 -0
- package/dist/money.js.map +1 -0
- package/dist/parse.d.ts +11 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +132 -0
- package/dist/parse.js.map +1 -0
- package/dist/paypal.d.ts +41 -0
- package/dist/paypal.d.ts.map +1 -0
- package/dist/paypal.js +58 -0
- package/dist/paypal.js.map +1 -0
- package/dist/plugins/adyen.d.ts +15 -0
- package/dist/plugins/adyen.d.ts.map +1 -0
- package/dist/plugins/adyen.js +10 -0
- package/dist/plugins/adyen.js.map +1 -0
- package/dist/plugins/all.d.ts +22 -0
- package/dist/plugins/all.d.ts.map +1 -0
- package/dist/plugins/all.js +23 -0
- package/dist/plugins/all.js.map +1 -0
- package/dist/plugins/allocate.d.ts +20 -0
- package/dist/plugins/allocate.d.ts.map +1 -0
- package/dist/plugins/allocate.js +26 -0
- package/dist/plugins/allocate.js.map +1 -0
- package/dist/plugins/braintree.d.ts +12 -0
- package/dist/plugins/braintree.d.ts.map +1 -0
- package/dist/plugins/braintree.js +12 -0
- package/dist/plugins/braintree.js.map +1 -0
- package/dist/plugins/cash.d.ts +19 -0
- package/dist/plugins/cash.d.ts.map +1 -0
- package/dist/plugins/cash.js +16 -0
- package/dist/plugins/cash.js.map +1 -0
- package/dist/plugins/checkout.d.ts +21 -0
- package/dist/plugins/checkout.d.ts.map +1 -0
- package/dist/plugins/checkout.js +16 -0
- package/dist/plugins/checkout.js.map +1 -0
- package/dist/plugins/convert.d.ts +20 -0
- package/dist/plugins/convert.d.ts.map +1 -0
- package/dist/plugins/convert.js +13 -0
- package/dist/plugins/convert.js.map +1 -0
- package/dist/plugins/exact.d.ts +15 -0
- package/dist/plugins/exact.d.ts.map +1 -0
- package/dist/plugins/exact.js +13 -0
- package/dist/plugins/exact.js.map +1 -0
- package/dist/plugins/fixed.d.ts +17 -0
- package/dist/plugins/fixed.d.ts.map +1 -0
- package/dist/plugins/fixed.js +13 -0
- package/dist/plugins/fixed.js.map +1 -0
- package/dist/plugins/format.d.ts +9 -0
- package/dist/plugins/format.d.ts.map +1 -0
- package/dist/plugins/format.js +16 -0
- package/dist/plugins/format.js.map +1 -0
- package/dist/plugins/klarna.d.ts +10 -0
- package/dist/plugins/klarna.d.ts.map +1 -0
- package/dist/plugins/klarna.js +10 -0
- package/dist/plugins/klarna.js.map +1 -0
- package/dist/plugins/paypal.d.ts +14 -0
- package/dist/plugins/paypal.d.ts.map +1 -0
- package/dist/plugins/paypal.js +16 -0
- package/dist/plugins/paypal.js.map +1 -0
- package/dist/plugins/prisma.d.ts +8 -0
- package/dist/plugins/prisma.d.ts.map +1 -0
- package/dist/plugins/prisma.js +13 -0
- package/dist/plugins/prisma.js.map +1 -0
- package/dist/plugins/stripe.d.ts +14 -0
- package/dist/plugins/stripe.d.ts.map +1 -0
- package/dist/plugins/stripe.js +16 -0
- package/dist/plugins/stripe.js.map +1 -0
- package/dist/plugins/tax.d.ts +21 -0
- package/dist/plugins/tax.d.ts.map +1 -0
- package/dist/plugins/tax.js +18 -0
- package/dist/plugins/tax.js.map +1 -0
- package/dist/prisma.d.ts +66 -0
- package/dist/prisma.d.ts.map +1 -0
- package/dist/prisma.js +66 -0
- package/dist/prisma.js.map +1 -0
- package/dist/processor.d.ts +28 -0
- package/dist/processor.d.ts.map +1 -0
- package/dist/processor.js +118 -0
- package/dist/processor.js.map +1 -0
- package/dist/provider.d.ts +89 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +240 -0
- package/dist/provider.js.map +1 -0
- package/dist/rate.d.ts +119 -0
- package/dist/rate.d.ts.map +1 -0
- package/dist/rate.js +271 -0
- package/dist/rate.js.map +1 -0
- package/dist/rounding-error.d.ts +9 -0
- package/dist/rounding-error.d.ts.map +1 -0
- package/dist/rounding-error.js +9 -0
- package/dist/rounding-error.js.map +1 -0
- package/dist/rounding.d.ts +50 -0
- package/dist/rounding.d.ts.map +1 -0
- package/dist/rounding.js +87 -0
- package/dist/rounding.js.map +1 -0
- package/dist/stripe-fx.d.ts +22 -0
- package/dist/stripe-fx.d.ts.map +1 -0
- package/dist/stripe-fx.js +30 -0
- package/dist/stripe-fx.js.map +1 -0
- package/dist/stripe.d.ts +36 -0
- package/dist/stripe.d.ts.map +1 -0
- package/dist/stripe.js +39 -0
- package/dist/stripe.js.map +1 -0
- package/dist/tax.d.ts +29 -0
- package/dist/tax.d.ts.map +1 -0
- package/dist/tax.js +39 -0
- package/dist/tax.js.map +1 -0
- package/package.json +171 -4
- package/src/adyen-fx.ts +154 -0
- package/src/adyen.ts +46 -0
- package/src/allocate.ts +393 -0
- package/src/bag.ts +170 -0
- package/src/braintree.ts +71 -0
- package/src/cash.ts +115 -0
- package/src/checkout.ts +77 -0
- package/src/convert.ts +159 -0
- package/src/currency.ts +61 -0
- package/src/decimal.ts +283 -0
- package/src/ecb.ts +162 -0
- package/src/exact.ts +182 -0
- package/src/fetch.ts +127 -0
- package/src/fixed.ts +558 -0
- package/src/fn.ts +80 -0
- package/src/format.ts +106 -0
- package/src/generated/adyen.ts +144 -0
- package/src/generated/braintree.ts +140 -0
- package/src/generated/cash.ts +375 -0
- package/src/generated/checkout.ts +151 -0
- package/src/generated/iso4217.ts +179 -0
- package/src/generated/kernel.ts +230 -0
- package/src/generated/klarna.ts +21 -0
- package/src/generated/paypal.ts +31 -0
- package/src/generated/stripe.ts +150 -0
- package/src/index.ts +37 -0
- package/src/klarna.ts +54 -0
- package/src/money.ts +781 -0
- package/src/parse.ts +144 -0
- package/src/paypal.ts +93 -0
- package/src/plugins/adyen.ts +25 -0
- package/src/plugins/all.ts +47 -0
- package/src/plugins/allocate.ts +53 -0
- package/src/plugins/braintree.ts +23 -0
- package/src/plugins/cash.ts +33 -0
- package/src/plugins/checkout.ts +32 -0
- package/src/plugins/convert.ts +50 -0
- package/src/plugins/exact.ts +23 -0
- package/src/plugins/fixed.ts +28 -0
- package/src/plugins/format.ts +28 -0
- package/src/plugins/klarna.ts +21 -0
- package/src/plugins/paypal.ts +29 -0
- package/src/plugins/prisma.ts +24 -0
- package/src/plugins/stripe.ts +29 -0
- package/src/plugins/tax.ts +41 -0
- package/src/prisma.ts +118 -0
- package/src/processor.ts +181 -0
- package/src/provider.ts +324 -0
- package/src/rate.ts +377 -0
- package/src/rounding-error.ts +8 -0
- package/src/rounding.ts +122 -0
- package/src/stripe-fx.ts +49 -0
- package/src/stripe.ts +69 -0
- package/src/tax.ts +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exact.js","sourceRoot":"","sources":["../src/exact.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,mGAAmG;AACnG,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAe,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAqB,MAAM,eAAe,CAAC;AAU1F;;GAEG;AACH,MAAM,OAAO,UAAU;IACZ,QAAQ,CAAI;IACZ,GAAG,CAAS;IACZ,GAAG,CAAS;IAErB,4BAA4B;IAC5B,YAAY,QAAW,EAAE,SAAiB,EAAE,WAAmB;QAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,6CAA6C;QAC5F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,6BAA6B;IAC7B,GAAG,CAAC,KAAoB;QACtB,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9D,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,6BAA6B;IAC7B,QAAQ,CAAC,KAAoB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,aAAa;IACb,MAAM;QACJ,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,8BAA8B;IAC9B,QAAQ,CAAC,MAAc;QACrB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,OAAe;QACpB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,YAAY,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjG,CAAC;IAED,sDAAsD;IACtD,OAAO,CAAoB,IAAiB;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,KAAoB;QAC1B,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,wEAAwE;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,KAAiB;QACtB,OAAO,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;IAC9F,CAAC;IAED,kBAAkB;IAClB,IAAI;QACF,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,kCAAkC;IAClC,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,2FAA2F;IAC3F,OAAO,CAAC,QAAgB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,iEAAiE;IACjE,KAAK,CACH,WAAyB,gBAAgB,EACzC,QAAgB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAE/C,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,kGAAkG;IAClG,iBAAiB,CAAC,WAAyB,gBAAgB,EAAE,KAAc;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,sCAAsC;IACtC,QAAQ;QACN,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC;IAED,iDAAiD;IACjD,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAY;QAC/B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;IACtF,CAAC;CACF;AAED,SAAS,kBAAkB,CAAC,KAAiB,EAAE,KAAiB;IAC9D,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAmB,KAAe;IACrD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,KAA+B,EAC/B,QAAY;IAEZ,MAAM,WAAW,GAAG,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;IACnD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,UAAU,CAAC;AACrC,CAAC"}
|
package/dist/fetch.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { RateTable } from './provider.js';
|
|
2
|
+
/**
|
|
3
|
+
* The part of the platform AbortSignal used here. Declared structurally so the library needs no DOM
|
|
4
|
+
* or Node types; any real AbortSignal fits.
|
|
5
|
+
*/
|
|
6
|
+
export interface AbortSignalLike {
|
|
7
|
+
readonly aborted: boolean;
|
|
8
|
+
readonly reason?: unknown;
|
|
9
|
+
addEventListener(type: 'abort', listener: () => void, options?: {
|
|
10
|
+
once?: boolean;
|
|
11
|
+
}): void;
|
|
12
|
+
removeEventListener(type: 'abort', listener: () => void): void;
|
|
13
|
+
}
|
|
14
|
+
/** The subset of the platform fetch used here (Node 24+, Deno, Bun, browsers, workers). */
|
|
15
|
+
export type Fetch = (url: string, init?: {
|
|
16
|
+
signal?: AbortSignalLike;
|
|
17
|
+
headers?: Record<string, string>;
|
|
18
|
+
}) => Promise<{
|
|
19
|
+
ok: boolean;
|
|
20
|
+
status: number;
|
|
21
|
+
text(): Promise<string>;
|
|
22
|
+
}>;
|
|
23
|
+
/** The ECB's eurofxref files: the latest day, the last 90 days, and the full history since 1999. */
|
|
24
|
+
export declare const ECB_URLS: {
|
|
25
|
+
readonly daily: "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml";
|
|
26
|
+
readonly '90d': "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml";
|
|
27
|
+
readonly all: "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml";
|
|
28
|
+
};
|
|
29
|
+
/** Options for fetching ECB reference rates. */
|
|
30
|
+
export interface FetchEcbOptions {
|
|
31
|
+
/** 'daily' (default): the latest day; '90d': the last 90 days; 'all': since 1999 (several MB). */
|
|
32
|
+
readonly history?: keyof typeof ECB_URLS;
|
|
33
|
+
/** An AbortSignal to cancel the request; it is combined with the timeout. */
|
|
34
|
+
readonly signal?: AbortSignalLike;
|
|
35
|
+
/**
|
|
36
|
+
* Milliseconds before the request is aborted (default 30 000; 0 for no timeout). It needs the
|
|
37
|
+
* platform's AbortSignal.timeout, which Node 24, Deno, Bun and current browsers all have.
|
|
38
|
+
*/
|
|
39
|
+
readonly timeout?: number;
|
|
40
|
+
/** A fetch to use instead of the global one (for proxies, retries or tests). */
|
|
41
|
+
readonly fetch?: Fetch;
|
|
42
|
+
}
|
|
43
|
+
/** Thrown when the HTTP request completes without a 2xx status. */
|
|
44
|
+
export declare class FetchRatesError extends Error {
|
|
45
|
+
readonly status: number;
|
|
46
|
+
readonly url: string;
|
|
47
|
+
constructor(url: string, status: number);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Fetches the ECB euro reference rates and parses them with parseEcbXml: EUR-based tables,
|
|
51
|
+
* newest first. The ECB publishes once per TARGET working day at about 16:00 CET and states
|
|
52
|
+
* that its rates are for information purposes only.
|
|
53
|
+
*
|
|
54
|
+
* const [latest] = await fetchEcb(); // the RateTable for the last published day
|
|
55
|
+
* const hist = snapshotsFrom(await fetchEcb({ history: '90d' }));
|
|
56
|
+
*/
|
|
57
|
+
export declare function fetchEcb(options?: FetchEcbOptions): Promise<RateTable[]>;
|
|
58
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1F,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAChE;AAED,2FAA2F;AAC3F,MAAM,MAAM,KAAK,GAAG,CAClB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,eAAe,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAClE,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAUvE,oGAAoG;AACpG,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAEX,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,OAAO,QAAQ,CAAC;IACzC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AAED,mEAAmE;AACnE,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAMxC;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA6B9E"}
|
package/dist/fetch.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Network fetchers for published reference rates, using the platform fetch. Opt-in: nothing else in
|
|
2
|
+
// the library imports this module, so core and @ducatjs/money/convert never touch the
|
|
3
|
+
// network. You decide when to call it and how to cache.
|
|
4
|
+
import { parseEcbXml } from './ecb.js';
|
|
5
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
6
|
+
/** The ECB's eurofxref files: the latest day, the last 90 days, and the full history since 1999. */
|
|
7
|
+
export const ECB_URLS = {
|
|
8
|
+
daily: 'https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml',
|
|
9
|
+
'90d': 'https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml',
|
|
10
|
+
all: 'https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml',
|
|
11
|
+
};
|
|
12
|
+
/** Thrown when the HTTP request completes without a 2xx status. */
|
|
13
|
+
export class FetchRatesError extends Error {
|
|
14
|
+
status;
|
|
15
|
+
url;
|
|
16
|
+
constructor(url, status) {
|
|
17
|
+
super(`GET ${url} failed with HTTP ${status}`);
|
|
18
|
+
this.name = 'FetchRatesError';
|
|
19
|
+
this.status = status;
|
|
20
|
+
this.url = url;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Fetches the ECB euro reference rates and parses them with parseEcbXml: EUR-based tables,
|
|
25
|
+
* newest first. The ECB publishes once per TARGET working day at about 16:00 CET and states
|
|
26
|
+
* that its rates are for information purposes only.
|
|
27
|
+
*
|
|
28
|
+
* const [latest] = await fetchEcb(); // the RateTable for the last published day
|
|
29
|
+
* const hist = snapshotsFrom(await fetchEcb({ history: '90d' }));
|
|
30
|
+
*/
|
|
31
|
+
export async function fetchEcb(options) {
|
|
32
|
+
const url = ECB_URLS[options?.history ?? 'daily'];
|
|
33
|
+
const fetchFunction = options?.fetch ?? globalThis.fetch;
|
|
34
|
+
if (fetchFunction === undefined) {
|
|
35
|
+
throw new TypeError('No fetch available: pass options.fetch');
|
|
36
|
+
}
|
|
37
|
+
const init = {
|
|
38
|
+
headers: { accept: 'application/xml' },
|
|
39
|
+
};
|
|
40
|
+
const signal = requestSignal(options?.signal, options?.timeout ?? DEFAULT_TIMEOUT_MS);
|
|
41
|
+
if (signal !== undefined) {
|
|
42
|
+
init.signal = signal;
|
|
43
|
+
}
|
|
44
|
+
const response = await fetchFunction(url, init);
|
|
45
|
+
if (!response.ok) {
|
|
46
|
+
throw new FetchRatesError(url, response.status);
|
|
47
|
+
}
|
|
48
|
+
const body = await response.text();
|
|
49
|
+
try {
|
|
50
|
+
return parseEcbXml(body);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// An error page or a captive portal is the usual cause, so say where the bad file came from.
|
|
54
|
+
if (error instanceof SyntaxError) {
|
|
55
|
+
throw new SyntaxError(`${error.message} (from ${url})`, { cause: error });
|
|
56
|
+
}
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** The caller's signal, a timeout signal, or both combined. */
|
|
61
|
+
function requestSignal(signal, timeout) {
|
|
62
|
+
if (!Number.isFinite(timeout) || timeout < 0) {
|
|
63
|
+
throw new RangeError(`timeout must be a non-negative number of milliseconds, got ${timeout}`);
|
|
64
|
+
}
|
|
65
|
+
const statics = globalThis.AbortSignal;
|
|
66
|
+
if (timeout === 0 || statics?.timeout === undefined) {
|
|
67
|
+
return signal;
|
|
68
|
+
}
|
|
69
|
+
const timeoutSignal = statics.timeout(timeout);
|
|
70
|
+
if (signal === undefined) {
|
|
71
|
+
return timeoutSignal;
|
|
72
|
+
}
|
|
73
|
+
if (statics.any === undefined) {
|
|
74
|
+
// Without AbortSignal.any the caller's signal wins: it is the one they can control.
|
|
75
|
+
return signal;
|
|
76
|
+
}
|
|
77
|
+
return statics.any([signal, timeoutSignal]);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
|
package/dist/fixed.d.ts
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { type Factor } from './decimal.js';
|
|
2
|
+
import { type CurrencyInput, type Money } from './money.js';
|
|
3
|
+
import { type RoundingMode } from './rounding.js';
|
|
4
|
+
declare const INTERNAL: unique symbol;
|
|
5
|
+
/** What `fixed()` accepts: a decimal string, a number, a bigint or a Fixed. */
|
|
6
|
+
export type FixedInput = string | number | bigint | Fixed;
|
|
7
|
+
/** Options for `fixed()`. */
|
|
8
|
+
export interface FixedOptions {
|
|
9
|
+
/** Decimal places to keep (default: as many as the input has; 0 for integers). */
|
|
10
|
+
readonly scale?: number;
|
|
11
|
+
/** How to round input with more decimals than `scale` (default 'unnecessary': throw). */
|
|
12
|
+
readonly rounding?: RoundingMode;
|
|
13
|
+
}
|
|
14
|
+
/** Options for multiply and divide. */
|
|
15
|
+
export interface ArithmeticOptions {
|
|
16
|
+
/** The result's scale (default: the scale of the value being multiplied or divided). */
|
|
17
|
+
readonly scale?: number;
|
|
18
|
+
}
|
|
19
|
+
/** The integer-and-scale form of a Fixed: `value / 10^scale`. */
|
|
20
|
+
export interface ScaledInteger {
|
|
21
|
+
readonly value: number | bigint;
|
|
22
|
+
readonly scale: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* An exact fixed-point decimal: `value / 10^scale`. Immutable. Create one with `fixed()` or
|
|
26
|
+
* `fromScaled()`. Mixed scales work as for Money: add, subtract and compare align to the larger
|
|
27
|
+
* scale exactly, and multiply and divide keep this value's scale.
|
|
28
|
+
*/
|
|
29
|
+
export declare class Fixed {
|
|
30
|
+
/** The scaled integer: a number while it is a safe integer, a bigint beyond. */
|
|
31
|
+
readonly value: number | bigint;
|
|
32
|
+
/** Decimal places. */
|
|
33
|
+
readonly scale: number;
|
|
34
|
+
/** @internal use fixed() or fromScaled() */
|
|
35
|
+
constructor(token: typeof INTERNAL, value: number | bigint, scale: number);
|
|
36
|
+
/** this + other, exactly, at the larger of the two scales. */
|
|
37
|
+
add(other: FixedInput): Fixed;
|
|
38
|
+
/** this − other, exactly, at the larger of the two scales. */
|
|
39
|
+
subtract(other: FixedInput): Fixed;
|
|
40
|
+
/**
|
|
41
|
+
* this × factor, rounded once to this value's scale or `options.scale` (default 'halfExpand').
|
|
42
|
+
* The factor is exact: an integer, a decimal string ('1.075'), a bigint, a `ratio()` or another
|
|
43
|
+
* Fixed. Give `scale` rather than calling toScale afterwards, which would round twice.
|
|
44
|
+
*/
|
|
45
|
+
multiply(factor: Factor | Fixed, rounding?: RoundingMode, options?: ArithmeticOptions): Fixed;
|
|
46
|
+
/**
|
|
47
|
+
* this ÷ divisor, rounded once to this value's scale or `options.scale` (default 'halfExpand'):
|
|
48
|
+
* `fixed('9.990').divide('1.2', 'halfEven', { scale: 2 })` is 8.32.
|
|
49
|
+
*/
|
|
50
|
+
divide(divisor: Factor | Fixed, rounding?: RoundingMode, options?: ArithmeticOptions): Fixed;
|
|
51
|
+
/** −this */
|
|
52
|
+
negate(): Fixed;
|
|
53
|
+
/** |this| */
|
|
54
|
+
abs(): Fixed;
|
|
55
|
+
/**
|
|
56
|
+
* Rounds to `scale` decimal places (default 0, an integer): `fixed('2.5').round('halfEven')` is
|
|
57
|
+
* 2. Money's round() defaults to the currency's exponent; a Fixed has none, so the default is 0.
|
|
58
|
+
*/
|
|
59
|
+
round(rounding: RoundingMode, scale?: number): Fixed;
|
|
60
|
+
/**
|
|
61
|
+
* Changes the scale: increasing it is always exact, decreasing it rounds (default 'halfExpand').
|
|
62
|
+
*/
|
|
63
|
+
toScale(scale: number, rounding?: RoundingMode): Fixed;
|
|
64
|
+
/** −1, 0 or 1, exactly, across scales and number/bigint. */
|
|
65
|
+
compare(other: FixedInput): -1 | 0 | 1;
|
|
66
|
+
/** The same value, at any scale: 1.0 equals 1.00. */
|
|
67
|
+
equals(other: FixedInput): boolean;
|
|
68
|
+
/** this < other */
|
|
69
|
+
lessThan(other: FixedInput): boolean;
|
|
70
|
+
/** this ≤ other */
|
|
71
|
+
lessThanOrEqual(other: FixedInput): boolean;
|
|
72
|
+
/** this > other */
|
|
73
|
+
greaterThan(other: FixedInput): boolean;
|
|
74
|
+
/** this ≥ other */
|
|
75
|
+
greaterThanOrEqual(other: FixedInput): boolean;
|
|
76
|
+
/** this = 0 */
|
|
77
|
+
isZero(): boolean;
|
|
78
|
+
/** this > 0 */
|
|
79
|
+
isPositive(): boolean;
|
|
80
|
+
/** this < 0 */
|
|
81
|
+
isNegative(): boolean;
|
|
82
|
+
/** −1, 0 or 1 */
|
|
83
|
+
sign(): -1 | 0 | 1;
|
|
84
|
+
/** The plain decimal string, with every decimal place of the scale: '12.340'. */
|
|
85
|
+
toString(): string;
|
|
86
|
+
/** The decimal string, as toString(), so JSON round-trips exactly through `fixed()`. */
|
|
87
|
+
toJSON(): string;
|
|
88
|
+
/** `{ value, scale }`, the exact integer form: value / 10^scale. */
|
|
89
|
+
toScaled(): ScaledInteger;
|
|
90
|
+
/**
|
|
91
|
+
* Money in `currency`, at its exponent. Throws RoundingError when that would drop digits, unless
|
|
92
|
+
* `rounding` is given: `fixed('1.005').toMoney('EUR', 'halfEven')` is 1.00 EUR.
|
|
93
|
+
*/
|
|
94
|
+
toMoney<C extends CurrencyInput>(currency: C, rounding?: RoundingMode): Money<C>;
|
|
95
|
+
/** Blocks `a + b`, `a > b` and `+a`: arithmetic and comparison go through the methods. */
|
|
96
|
+
[Symbol.toPrimitive](hint: string): string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Creates an exact fixed-point decimal.
|
|
100
|
+
*
|
|
101
|
+
* fixed('12.340') // 12.340: a string keeps its scale (3)
|
|
102
|
+
* fixed('1.005', { scale: 2, rounding: 'halfEven' }) // 1.00
|
|
103
|
+
* fixed(12) // 12, scale 0
|
|
104
|
+
* fixed(0.25) // 0.25: read at its shortest decimal form
|
|
105
|
+
* fixed(10n ** 30n)
|
|
106
|
+
*
|
|
107
|
+
* Numbers are taken at their shortest decimal form, and only when that has at most 15 significant
|
|
108
|
+
* digits, which a double always holds faithfully. So `fixed(0.1 + 0.2)` throws rather than becoming
|
|
109
|
+
* 0.30000000000000004; pass the decimal as a string, or give `scale` and `rounding`. Input with
|
|
110
|
+
* more decimals than `scale` throws unless `rounding` is given, and `rounding` needs a `scale`.
|
|
111
|
+
* Scales run from 0 to 1000.
|
|
112
|
+
*/
|
|
113
|
+
export declare function fixed(value: FixedInput, options?: FixedOptions): Fixed;
|
|
114
|
+
/** The Fixed `value / 10^scale`: `fromScaled(12345, 3)` is 12.345. `value` must be an integer. */
|
|
115
|
+
export declare function fromScaled(value: number | bigint, scale: number): Fixed;
|
|
116
|
+
/** Whether `value` is a Fixed. */
|
|
117
|
+
export declare function isFixed(value: unknown): value is Fixed;
|
|
118
|
+
/** The exact Fixed of a Money amount, at the money's scale: `money('12.34', 'EUR')` → 12.34. */
|
|
119
|
+
export declare function moneyToFixed(money: Money): Fixed;
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=fixed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixed.d.ts","sourceRoot":"","sources":["../src/fixed.ts"],"names":[],"mappings":"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"}
|