@ducatjs/money 0.0.0 → 0.2.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 +1034 -3
- 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 +520 -0
- package/data/checkout.json +230 -0
- package/data/cldr-cash.json +101 -0
- package/data/historic.json +78 -0
- package/data/iso4217-list-one.xml +1956 -0
- package/data/iso4217-list-three.xml +1185 -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 +140 -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/boc.d.ts +31 -0
- package/dist/boc.d.ts.map +1 -0
- package/dist/boc.js +114 -0
- package/dist/boc.js.map +1 -0
- package/dist/boe.d.ts +33 -0
- package/dist/boe.d.ts.map +1 -0
- package/dist/boe.js +114 -0
- package/dist/boe.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 +64 -0
- package/dist/cash.d.ts.map +1 -0
- package/dist/cash.js +134 -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 +52 -0
- package/dist/convert.d.ts.map +1 -0
- package/dist/convert.js +65 -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/drizzle/mysql.d.ts +105 -0
- package/dist/drizzle/mysql.d.ts.map +1 -0
- package/dist/drizzle/mysql.js +60 -0
- package/dist/drizzle/mysql.js.map +1 -0
- package/dist/drizzle/pg.d.ts +103 -0
- package/dist/drizzle/pg.d.ts.map +1 -0
- package/dist/drizzle/pg.js +60 -0
- package/dist/drizzle/pg.js.map +1 -0
- package/dist/drizzle/sqlite.d.ts +102 -0
- package/dist/drizzle/sqlite.d.ts.map +1 -0
- package/dist/drizzle/sqlite.js +59 -0
- package/dist/drizzle/sqlite.js.map +1 -0
- package/dist/ecb.d.ts +52 -0
- package/dist/ecb.d.ts.map +1 -0
- package/dist/ecb.js +285 -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/fed.d.ts +35 -0
- package/dist/fed.d.ts.map +1 -0
- package/dist/fed.js +134 -0
- package/dist/fed.js.map +1 -0
- package/dist/fetch.d.ts +103 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +222 -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 +34 -0
- package/dist/fn.d.ts.map +1 -0
- package/dist/fn.js +37 -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 +14 -0
- package/dist/generated/cash.d.ts.map +1 -0
- package/dist/generated/cash.js +465 -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/historic.d.ts +337 -0
- package/dist/generated/historic.d.ts.map +1 -0
- package/dist/generated/historic.js +66 -0
- package/dist/generated/historic.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/historic.d.ts +40 -0
- package/dist/historic.d.ts.map +1 -0
- package/dist/historic.js +43 -0
- package/dist/historic.js.map +1 -0
- package/dist/history.d.ts +96 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +213 -0
- package/dist/history.js.map +1 -0
- package/dist/hmrc.d.ts +28 -0
- package/dist/hmrc.d.ts.map +1 -0
- package/dist/hmrc.js +108 -0
- package/dist/hmrc.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/kysely.d.ts +120 -0
- package/dist/kysely.d.ts.map +1 -0
- package/dist/kysely.js +309 -0
- package/dist/kysely.js.map +1 -0
- package/dist/money.d.ts +302 -0
- package/dist/money.d.ts.map +1 -0
- package/dist/money.js +703 -0
- package/dist/money.js.map +1 -0
- package/dist/parse.d.ts +55 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +419 -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/pg.d.ts +100 -0
- package/dist/pg.d.ts.map +1 -0
- package/dist/pg.js +343 -0
- package/dist/pg.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 +29 -0
- package/dist/plugins/all.d.ts.map +1 -0
- package/dist/plugins/all.js +30 -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 +19 -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 +20 -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/policy.d.ts +34 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +90 -0
- package/dist/policy.js.map +1 -0
- package/dist/prisma.d.ts +77 -0
- package/dist/prisma.d.ts.map +1 -0
- package/dist/prisma.js +76 -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 +103 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +280 -0
- package/dist/provider.js.map +1 -0
- package/dist/rate-text.d.ts +38 -0
- package/dist/rate-text.d.ts.map +1 -0
- package/dist/rate-text.js +143 -0
- package/dist/rate-text.js.map +1 -0
- package/dist/rate.d.ts +175 -0
- package/dist/rate.d.ts.map +1 -0
- package/dist/rate.js +371 -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/schema.d.ts +43 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +77 -0
- package/dist/schema.js.map +1 -0
- package/dist/sql.d.ts +54 -0
- package/dist/sql.d.ts.map +1 -0
- package/dist/sql.js +131 -0
- package/dist/sql.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 +33 -0
- package/dist/tax.d.ts.map +1 -0
- package/dist/tax.js +55 -0
- package/dist/tax.js.map +1 -0
- package/dist/testing/arbitraries.d.ts +43 -0
- package/dist/testing/arbitraries.d.ts.map +1 -0
- package/dist/testing/arbitraries.js +98 -0
- package/dist/testing/arbitraries.js.map +1 -0
- package/dist/testing/index.d.ts +67 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +159 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/jest.d.ts +2 -0
- package/dist/testing/jest.d.ts.map +1 -0
- package/dist/testing/jest.js +15 -0
- package/dist/testing/jest.js.map +1 -0
- package/dist/testing/vitest.d.ts +7 -0
- package/dist/testing/vitest.d.ts.map +1 -0
- package/dist/testing/vitest.js +12 -0
- package/dist/testing/vitest.js.map +1 -0
- package/dist/valibot.d.ts +33 -0
- package/dist/valibot.d.ts.map +1 -0
- package/dist/valibot.js +61 -0
- package/dist/valibot.js.map +1 -0
- package/dist/zod.d.ts +36 -0
- package/dist/zod.d.ts.map +1 -0
- package/dist/zod.js +58 -0
- package/dist/zod.js.map +1 -0
- package/package.json +280 -5
- package/src/adyen-fx.ts +175 -0
- package/src/adyen.ts +46 -0
- package/src/allocate.ts +393 -0
- package/src/bag.ts +170 -0
- package/src/boc.ts +136 -0
- package/src/boe.ts +131 -0
- package/src/braintree.ts +71 -0
- package/src/cash.ts +183 -0
- package/src/checkout.ts +77 -0
- package/src/convert.ts +177 -0
- package/src/currency.ts +61 -0
- package/src/decimal.ts +283 -0
- package/src/drizzle/mysql.ts +78 -0
- package/src/drizzle/pg.ts +78 -0
- package/src/drizzle/sqlite.ts +70 -0
- package/src/ecb.ts +328 -0
- package/src/exact.ts +182 -0
- package/src/fed.ts +146 -0
- package/src/fetch.ts +306 -0
- package/src/fixed.ts +558 -0
- package/src/fn.ts +94 -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 +478 -0
- package/src/generated/checkout.ts +151 -0
- package/src/generated/historic.ts +67 -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/historic.ts +77 -0
- package/src/history.ts +333 -0
- package/src/hmrc.ts +125 -0
- package/src/index.ts +41 -0
- package/src/klarna.ts +54 -0
- package/src/kysely.ts +588 -0
- package/src/money.ts +979 -0
- package/src/parse.ts +511 -0
- package/src/paypal.ts +93 -0
- package/src/pg.ts +410 -0
- package/src/plugins/adyen.ts +25 -0
- package/src/plugins/all.ts +57 -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 +49 -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 +40 -0
- package/src/policy.ts +124 -0
- package/src/prisma.ts +199 -0
- package/src/processor.ts +181 -0
- package/src/provider.ts +389 -0
- package/src/rate-text.ts +151 -0
- package/src/rate.ts +546 -0
- package/src/rounding-error.ts +8 -0
- package/src/rounding.ts +122 -0
- package/src/schema.ts +119 -0
- package/src/sql.ts +178 -0
- package/src/stripe-fx.ts +49 -0
- package/src/stripe.ts +69 -0
- package/src/tax.ts +102 -0
- package/src/testing/arbitraries.ts +134 -0
- package/src/testing/index.ts +247 -0
- package/src/testing/jest.ts +18 -0
- package/src/testing/vitest.ts +18 -0
- package/src/valibot.ts +87 -0
- package/src/zod.ts +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"money.js","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"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"}
|
package/dist/parse.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type CurrencyInput, type Money, type MoneyOptions } from './money.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parses a locale-formatted amount: parse('1.234,50 €', 'EUR', 'de-DE'), parse('CHF 1’234.50',
|
|
4
|
+
* 'CHF', 'de-CH'), parse('١٢٣٫٤٥ US$', 'USD', 'ar-EG'). Currency symbols/codes, spaces and bidi
|
|
5
|
+
* marks around the number are ignored (the currency is the `currency` argument, never guessed from
|
|
6
|
+
* the text). A minus sign (ASCII or U+2212) or accounting parentheses anywhere in the affixes make
|
|
7
|
+
* it negative. Inside the number only digits, the locale's group separator (before the decimal
|
|
8
|
+
* separator) and one decimal separator are allowed.
|
|
9
|
+
*
|
|
10
|
+
* Group separators must be where the locale puts them (`1.234,50` in de-DE, `1,23,456.78` in
|
|
11
|
+
* en-IN), because a misplaced one is usually a decimal separator from another locale: `78.00` in
|
|
12
|
+
* de-DE throws instead of becoming 7800.00. Pass `{ lenient: true }` to accept them anywhere.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parse<C extends CurrencyInput>(input: string, currency: C, locale?: string, options?: ParseOptions): Money<C>;
|
|
15
|
+
/** Options for `parse`. */
|
|
16
|
+
export interface ParseOptions extends MoneyOptions {
|
|
17
|
+
/** Accept group separators in any position, as before 0.2 (`1.5` in de-DE is then 15.00). */
|
|
18
|
+
readonly lenient?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** Options for `parseMoney`. */
|
|
21
|
+
export interface ParseMoneyOptions<C extends string = string> extends MoneyOptions {
|
|
22
|
+
/**
|
|
23
|
+
* The expected currency. It settles a symbol several currencies share (`$`, `kr`, `£`, `¥`), and
|
|
24
|
+
* a text naming another currency is an error. With `lenient`, a bare number is read in it.
|
|
25
|
+
*/
|
|
26
|
+
readonly hint?: C;
|
|
27
|
+
/**
|
|
28
|
+
* Your own meanings for symbols, which win over the locale's: `{ $: 'CAD' }` for a shop that only
|
|
29
|
+
* prices in Canadian dollars.
|
|
30
|
+
*/
|
|
31
|
+
readonly symbols?: Readonly<Record<string, C>>;
|
|
32
|
+
/** The currencies to detect (default: every ISO 4217 currency). Others are not recognised. */
|
|
33
|
+
readonly currencies?: readonly C[];
|
|
34
|
+
/**
|
|
35
|
+
* Accept group separators in any positions (as `parse` does with `lenient`), and a bare number when a `hint`
|
|
36
|
+
* is given. It never makes the currency a guess.
|
|
37
|
+
*/
|
|
38
|
+
readonly lenient?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parses a formatted amount and detects its currency from the text: `parseMoney('CHF 1’234.50',
|
|
42
|
+
* 'de-CH')`, `parseMoney('1.234,50 €', 'de-DE')`. Like the rest of ducat it never guesses:
|
|
43
|
+
*
|
|
44
|
+
* - it reads ISO codes (uppercase, among `currencies`) and symbols that mean one currency in the
|
|
45
|
+
* locale (or in English: US$, CA$, A$);
|
|
46
|
+
* - a symbol several currencies share (`$`, `kr`, `£`, `¥`) needs a `hint` or a `symbols` entry;
|
|
47
|
+
* - a currency other than the `hint`, two different currencies, or text that isn't a currency
|
|
48
|
+
* throws;
|
|
49
|
+
* - so does a locale this runtime has no Intl data for, and group separators in the wrong places
|
|
50
|
+
* (`lenient: true` accepts those, and a bare number when a `hint` is given).
|
|
51
|
+
*
|
|
52
|
+
* The number is read as `parse` reads it, with the detected currency's separators.
|
|
53
|
+
*/
|
|
54
|
+
export declare function parseMoney<C extends string = string>(input: string, locale: string, options?: ParseMoneyOptions<C>): Money<C>;
|
|
55
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAqFtF;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,aAAa,EAC3C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,EACX,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY,GACrB,KAAK,CAAC,CAAC,CAAC,CAqFV;AAED,2BAA2B;AAC3B,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,gCAAgC;AAChC,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,YAAY;IAChF;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,8FAA8F;IAC9F,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAyMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAClD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC7B,KAAK,CAAC,CAAC,CAAC,CA4EV"}
|
package/dist/parse.js
ADDED
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import { ISO_EXPONENTS, ISO_NON_MONETARY } from './currency.js';
|
|
2
|
+
import { money } from './money.js';
|
|
3
|
+
const symCache = new Map();
|
|
4
|
+
/**
|
|
5
|
+
* The group and decimal separators `format()` uses for this locale and currency. They come from a
|
|
6
|
+
* currency-style formatter, not a plain number one, because some locales use different separators
|
|
7
|
+
* for money: fr-CH writes 1 234.56 € but 1 234,56 for a number, and de-AT 1.234,56 € but 1 234,56.
|
|
8
|
+
*/
|
|
9
|
+
function symbols(locale, currency) {
|
|
10
|
+
const key = `${locale ?? ''}|${currency}`;
|
|
11
|
+
let found = symCache.get(key);
|
|
12
|
+
if (!found) {
|
|
13
|
+
const parts = separatorParts(locale, currency);
|
|
14
|
+
found = {
|
|
15
|
+
group: parts.find((part) => part.type === 'group')?.value ?? ',',
|
|
16
|
+
decimal: parts.find((part) => part.type === 'decimal')?.value ?? '.',
|
|
17
|
+
};
|
|
18
|
+
if (symCache.size > 256) {
|
|
19
|
+
symCache.clear();
|
|
20
|
+
}
|
|
21
|
+
symCache.set(key, found);
|
|
22
|
+
}
|
|
23
|
+
return found;
|
|
24
|
+
}
|
|
25
|
+
function separatorParts(locale, currency, currencySign = 'standard') {
|
|
26
|
+
try {
|
|
27
|
+
// Two fraction digits even for JPY and the like, so the decimal separator always appears.
|
|
28
|
+
return new Intl.NumberFormat(locale, {
|
|
29
|
+
style: 'currency',
|
|
30
|
+
currency,
|
|
31
|
+
currencySign,
|
|
32
|
+
useGrouping: true,
|
|
33
|
+
minimumFractionDigits: 2,
|
|
34
|
+
maximumFractionDigits: 2,
|
|
35
|
+
}).formatToParts(1234567.5);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Codes Intl rejects as currencies (custom ones that are not three letters): a number format's
|
|
39
|
+
// separators.
|
|
40
|
+
return new Intl.NumberFormat(locale, { useGrouping: true }).formatToParts(1234567.5);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Zero code points of the decimal digit blocks Intl uses (arab, arabext, deva, beng, thai,
|
|
44
|
+
// fullwide, ...).
|
|
45
|
+
const ZEROS = [
|
|
46
|
+
0x660, 0x6f0, 0x7c0, 0x966, 0x9e6, 0xa66, 0xae6, 0xb66, 0xbe6, 0xc66, 0xce6, 0xd66, 0xe50, 0xed0,
|
|
47
|
+
0xf20, 0x1040, 0x17e0, 0x1810, 0xff10,
|
|
48
|
+
];
|
|
49
|
+
const FULLWIDTH_ZERO = 0xff10;
|
|
50
|
+
const LAST_BLOCK_BEFORE_FULLWIDTH = 0x1810;
|
|
51
|
+
function asciiDigit(cp) {
|
|
52
|
+
if (cp >= 48 && cp <= 57) {
|
|
53
|
+
return cp - 48;
|
|
54
|
+
}
|
|
55
|
+
// Every non-digit character used to scan the whole table. Separators, signs and Latin-1 spaces
|
|
56
|
+
// are below the first block (U+0660); currency signs such as € (U+20AC) and the narrow no-break
|
|
57
|
+
// space (U+202F) fall in the gap before the fullwidth digits.
|
|
58
|
+
if (cp < ZEROS[0] || (cp > LAST_BLOCK_BEFORE_FULLWIDTH + 9 && cp < FULLWIDTH_ZERO)) {
|
|
59
|
+
return -1;
|
|
60
|
+
}
|
|
61
|
+
// ZEROS is sorted, so the first block above cp ends the search
|
|
62
|
+
for (let i = 0; i < ZEROS.length; i++) {
|
|
63
|
+
const zero = ZEROS[i];
|
|
64
|
+
if (cp < zero) {
|
|
65
|
+
return -1;
|
|
66
|
+
}
|
|
67
|
+
if (cp <= zero + 9) {
|
|
68
|
+
return cp - zero;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return -1;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Parses a locale-formatted amount: parse('1.234,50 €', 'EUR', 'de-DE'), parse('CHF 1’234.50',
|
|
75
|
+
* 'CHF', 'de-CH'), parse('١٢٣٫٤٥ US$', 'USD', 'ar-EG'). Currency symbols/codes, spaces and bidi
|
|
76
|
+
* marks around the number are ignored (the currency is the `currency` argument, never guessed from
|
|
77
|
+
* the text). A minus sign (ASCII or U+2212) or accounting parentheses anywhere in the affixes make
|
|
78
|
+
* it negative. Inside the number only digits, the locale's group separator (before the decimal
|
|
79
|
+
* separator) and one decimal separator are allowed.
|
|
80
|
+
*
|
|
81
|
+
* Group separators must be where the locale puts them (`1.234,50` in de-DE, `1,23,456.78` in
|
|
82
|
+
* en-IN), because a misplaced one is usually a decimal separator from another locale: `78.00` in
|
|
83
|
+
* de-DE throws instead of becoming 7800.00. Pass `{ lenient: true }` to accept them anywhere.
|
|
84
|
+
*/
|
|
85
|
+
export function parse(input, currency, locale, options) {
|
|
86
|
+
const localeSymbols = symbols(locale, currency);
|
|
87
|
+
const { group, decimal } = localeSymbols;
|
|
88
|
+
const chars = Array.from(input);
|
|
89
|
+
let first = -1;
|
|
90
|
+
let last = -1;
|
|
91
|
+
for (let i = 0; i < chars.length; i++) {
|
|
92
|
+
if (asciiDigit(chars[i].codePointAt(0)) >= 0) {
|
|
93
|
+
if (first < 0) {
|
|
94
|
+
first = i;
|
|
95
|
+
}
|
|
96
|
+
last = i;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (first < 0) {
|
|
100
|
+
throw new SyntaxError(`Cannot parse "${input}": no digits`);
|
|
101
|
+
}
|
|
102
|
+
const prefix = chars.slice(0, first).join('');
|
|
103
|
+
const suffix = chars.slice(last + 1).join('');
|
|
104
|
+
const affix = prefix + suffix;
|
|
105
|
+
if (!/^[\p{L}\p{Sc}\p{Z}\s\p{Cf}.()+\-−]*$/u.test(affix)) {
|
|
106
|
+
throw new SyntaxError(`Cannot parse "${input}": unexpected characters`);
|
|
107
|
+
}
|
|
108
|
+
const neg = /[-−(]/.test(affix);
|
|
109
|
+
const isGroup = (ch) => ch === group ||
|
|
110
|
+
(/^[\s\p{Z}]$/u.test(group) && /^[\s\p{Z}]$/u.test(ch)) ||
|
|
111
|
+
((group === '’' || group === "'") && (ch === "'" || ch === '’')) ||
|
|
112
|
+
ch === '٬';
|
|
113
|
+
let out = prefix.endsWith(decimal) ? '0.' : '';
|
|
114
|
+
let seenDecimal = out !== '';
|
|
115
|
+
// The integer part's digit runs between group separators, as counters (most input has none, and
|
|
116
|
+
// then nothing is checked): the first run, the length every middle run shares, and the last run.
|
|
117
|
+
let separators = 0;
|
|
118
|
+
let firstRun = 0;
|
|
119
|
+
let middleRun = -1;
|
|
120
|
+
let middleRunsAgree = true;
|
|
121
|
+
let lastRun = -1;
|
|
122
|
+
let digitsInGroup = 0;
|
|
123
|
+
for (let i = first; i <= last; i++) {
|
|
124
|
+
const ch = chars[i];
|
|
125
|
+
const digit = asciiDigit(ch.codePointAt(0));
|
|
126
|
+
if (digit >= 0) {
|
|
127
|
+
out += digit;
|
|
128
|
+
digitsInGroup++;
|
|
129
|
+
}
|
|
130
|
+
else if (ch === decimal || ch === '٫') {
|
|
131
|
+
if (seenDecimal) {
|
|
132
|
+
throw new SyntaxError(`Cannot parse "${input}": more than one decimal separator`);
|
|
133
|
+
}
|
|
134
|
+
seenDecimal = true;
|
|
135
|
+
out += '.';
|
|
136
|
+
lastRun = digitsInGroup;
|
|
137
|
+
}
|
|
138
|
+
else if (isGroup(ch)) {
|
|
139
|
+
if (seenDecimal) {
|
|
140
|
+
throw new SyntaxError(`Cannot parse "${input}": group separator after the decimal separator`);
|
|
141
|
+
}
|
|
142
|
+
if (separators === 0) {
|
|
143
|
+
firstRun = digitsInGroup;
|
|
144
|
+
}
|
|
145
|
+
else if (middleRun < 0) {
|
|
146
|
+
middleRun = digitsInGroup;
|
|
147
|
+
}
|
|
148
|
+
else if (middleRun !== digitsInGroup) {
|
|
149
|
+
middleRunsAgree = false;
|
|
150
|
+
}
|
|
151
|
+
separators++;
|
|
152
|
+
digitsInGroup = 0;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
throw new SyntaxError(`Cannot parse "${input}": unexpected "${ch}"`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (separators > 0 && options?.lenient !== true) {
|
|
159
|
+
if (lastRun < 0) {
|
|
160
|
+
lastRun = digitsInGroup;
|
|
161
|
+
}
|
|
162
|
+
localeSymbols.groupSizes ??= groupSizes(locale, currency);
|
|
163
|
+
checkRuns(input, localeSymbols.groupSizes, firstRun, middleRunsAgree ? middleRun : -2, lastRun);
|
|
164
|
+
}
|
|
165
|
+
// pass options through as they are unless they carry `lenient`, so the common call allocates nothing
|
|
166
|
+
let moneyOptions = options;
|
|
167
|
+
if (options !== undefined && 'lenient' in options) {
|
|
168
|
+
const { lenient: _lenient, ...rest } = options;
|
|
169
|
+
moneyOptions = rest;
|
|
170
|
+
}
|
|
171
|
+
return money((neg ? '-' : '') + out, currency, moneyOptions);
|
|
172
|
+
}
|
|
173
|
+
const symbolTables = new Map();
|
|
174
|
+
const groupSizeCache = new Map();
|
|
175
|
+
const supportedLocales = new Map();
|
|
176
|
+
/** Strips what surrounds a symbol in formatted output: spaces, no-break spaces and bidi marks. */
|
|
177
|
+
const normalizeSymbol = (text) => text.replace(/[\s\p{Z}\p{Cf}]/gu, '');
|
|
178
|
+
function currencySymbol(locale, currency, display) {
|
|
179
|
+
try {
|
|
180
|
+
const parts = new Intl.NumberFormat(locale, {
|
|
181
|
+
style: 'currency',
|
|
182
|
+
currency,
|
|
183
|
+
currencyDisplay: display,
|
|
184
|
+
}).formatToParts(1);
|
|
185
|
+
const value = parts.find((part) => part.type === 'currency')?.value;
|
|
186
|
+
return value === undefined ? undefined : normalizeSymbol(value);
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/** Language and region of a locale tag, the part Intl must have data for. */
|
|
193
|
+
function languageAndRegion(tag) {
|
|
194
|
+
const parsed = new Intl.Locale(tag);
|
|
195
|
+
return `${parsed.language}-${parsed.region ?? ''}`;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Throws unless Intl has data for the locale's language and region. Intl silently falls back to
|
|
199
|
+
* another locale (an unsupported tag, or a runtime with reduced ICU data), and that locale's
|
|
200
|
+
* separators and symbols would then decide the amount and the currency.
|
|
201
|
+
*/
|
|
202
|
+
function requireLocaleData(input, locale) {
|
|
203
|
+
let isSupported = supportedLocales.get(locale);
|
|
204
|
+
if (isSupported === undefined) {
|
|
205
|
+
const resolved = new Intl.NumberFormat(locale).resolvedOptions().locale;
|
|
206
|
+
isSupported = languageAndRegion(resolved) === languageAndRegion(locale);
|
|
207
|
+
if (supportedLocales.size >= 64) {
|
|
208
|
+
supportedLocales.clear();
|
|
209
|
+
}
|
|
210
|
+
supportedLocales.set(locale, isSupported);
|
|
211
|
+
}
|
|
212
|
+
if (!isSupported) {
|
|
213
|
+
throw new RangeError(`Cannot parse "${input}": this runtime has no Intl data for the locale ${locale}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* symbol → every currency it can mean in one locale (symbol and narrow symbol), from Intl's own
|
|
218
|
+
* data, so it follows the runtime's CLDR version. Built on first use, cached per locale (at most
|
|
219
|
+
* 16), and narrowed by a `currencies` option rather than rebuilt.
|
|
220
|
+
*/
|
|
221
|
+
function symbolTable(locale) {
|
|
222
|
+
let table = symbolTables.get(locale);
|
|
223
|
+
if (table !== undefined) {
|
|
224
|
+
return table;
|
|
225
|
+
}
|
|
226
|
+
table = new Map();
|
|
227
|
+
for (const currency of defaultCandidates()) {
|
|
228
|
+
for (const display of ['symbol', 'narrowSymbol']) {
|
|
229
|
+
const symbol = currencySymbol(locale, currency, display);
|
|
230
|
+
// A symbol that is just the code is handled as a code.
|
|
231
|
+
if (symbol !== undefined && symbol !== currency) {
|
|
232
|
+
let meanings = table.get(symbol);
|
|
233
|
+
if (meanings === undefined) {
|
|
234
|
+
meanings = new Set();
|
|
235
|
+
table.set(symbol, meanings);
|
|
236
|
+
}
|
|
237
|
+
meanings.add(currency);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (symbolTables.size >= 16) {
|
|
242
|
+
symbolTables.clear();
|
|
243
|
+
}
|
|
244
|
+
symbolTables.set(locale, table);
|
|
245
|
+
return table;
|
|
246
|
+
}
|
|
247
|
+
/** Where the English symbols come from: en has CA$, A$ and the like, en-CA has US$. */
|
|
248
|
+
const ENGLISH_SYMBOL_LOCALES = ['en', 'en-CA'];
|
|
249
|
+
let isoCodes;
|
|
250
|
+
/** Every ISO 4217 currency that money is counted in (not gold, test or fund codes). */
|
|
251
|
+
function defaultCandidates() {
|
|
252
|
+
isoCodes ??= Object.keys(ISO_EXPONENTS).filter((code) => !ISO_NON_MONETARY.includes(code));
|
|
253
|
+
return isoCodes;
|
|
254
|
+
}
|
|
255
|
+
/** The currencies one piece of affix text can mean; an empty list if it isn't a currency. */
|
|
256
|
+
function meaningsOf(piece, locale, candidates, symbols) {
|
|
257
|
+
const isCandidate = (code) => candidates === undefined ? defaultCandidates().includes(code) : candidates.has(code);
|
|
258
|
+
if (/^[A-Z]{3}$/.test(piece) && isCandidate(piece)) {
|
|
259
|
+
return [piece];
|
|
260
|
+
}
|
|
261
|
+
if (symbols !== undefined && Object.hasOwn(symbols, piece)) {
|
|
262
|
+
return [symbols[piece]];
|
|
263
|
+
}
|
|
264
|
+
// The locale's own symbols first, then English ones (US$, CA$, A$...), which many texts use.
|
|
265
|
+
for (const source of [locale, ...ENGLISH_SYMBOL_LOCALES]) {
|
|
266
|
+
const found = symbolTable(source).get(piece);
|
|
267
|
+
const meanings = found === undefined ? [] : [...found].filter(isCandidate);
|
|
268
|
+
if (meanings.length > 0) {
|
|
269
|
+
return meanings.sort();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return [];
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* The group sizes the locale formats this currency with, in its standard and its accounting
|
|
276
|
+
* format: they can differ (en-IN writes JP¥1,00,000, but (JP¥100,000) in accounting style).
|
|
277
|
+
*/
|
|
278
|
+
function groupSizes(locale, currency) {
|
|
279
|
+
const key = `${locale ?? ''}|${currency}`;
|
|
280
|
+
let sizes = groupSizeCache.get(key);
|
|
281
|
+
if (sizes === undefined) {
|
|
282
|
+
sizes = [];
|
|
283
|
+
for (const currencySign of ['standard', 'accounting']) {
|
|
284
|
+
const found = sizesOf(separatorParts(locale, currency, currencySign));
|
|
285
|
+
if (!sizes.some((known) => known[0] === found[0] && known[1] === found[1])) {
|
|
286
|
+
sizes.push(found);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
if (groupSizeCache.size >= 256) {
|
|
290
|
+
groupSizeCache.clear();
|
|
291
|
+
}
|
|
292
|
+
groupSizeCache.set(key, sizes);
|
|
293
|
+
}
|
|
294
|
+
return sizes;
|
|
295
|
+
}
|
|
296
|
+
function sizesOf(parts) {
|
|
297
|
+
const integers = parts.filter((part) => part.type === 'integer').map((part) => part.value.length);
|
|
298
|
+
// 1234567.5 formats as 1|234|567 (sizes 3, 3) or 12|34|567 (3, 2)
|
|
299
|
+
const primary = integers[integers.length - 1] ?? 3;
|
|
300
|
+
const secondary = integers.length >= 3 ? integers[integers.length - 2] : primary;
|
|
301
|
+
return [primary, secondary];
|
|
302
|
+
}
|
|
303
|
+
/** Throws unless the integer part's groups follow one of the locale's sizes (when it has groups). */
|
|
304
|
+
function checkGroups(input, integerPart, allSizes) {
|
|
305
|
+
// the caller has turned every separator into a comma
|
|
306
|
+
const runs = integerPart.split(',');
|
|
307
|
+
if (runs.length <= 1) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const middle = runs.slice(1, -1).map((run) => run.length);
|
|
311
|
+
let middleRun = -1;
|
|
312
|
+
if (middle.length > 0) {
|
|
313
|
+
middleRun = middle.every((length) => length === middle[0]) ? middle[0] : -2;
|
|
314
|
+
}
|
|
315
|
+
checkRuns(input, allSizes, runs[0].length, middleRun, runs[runs.length - 1].length);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Throws unless digit runs between group separators fit one of the sizes: 1,234,567 or 12,34,567
|
|
319
|
+
* has a leading run of 1 up to `secondary` digits, middle runs of `secondary` and a last run of
|
|
320
|
+
* `primary`. `middleRun` is the length all middle runs share, -1 for none, -2 if they differ.
|
|
321
|
+
*/
|
|
322
|
+
function checkRuns(input, allSizes, firstRun, middleRun, lastRun) {
|
|
323
|
+
for (let option = 0; option < allSizes.length; option++) {
|
|
324
|
+
const [primary, secondary] = allSizes[option];
|
|
325
|
+
if (lastRun === primary &&
|
|
326
|
+
firstRun >= 1 &&
|
|
327
|
+
firstRun <= secondary &&
|
|
328
|
+
(middleRun === -1 || middleRun === secondary)) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
throw new SyntaxError(`Cannot parse "${input}": group separators in the wrong places`);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Parses a formatted amount and detects its currency from the text: `parseMoney('CHF 1’234.50',
|
|
336
|
+
* 'de-CH')`, `parseMoney('1.234,50 €', 'de-DE')`. Like the rest of ducat it never guesses:
|
|
337
|
+
*
|
|
338
|
+
* - it reads ISO codes (uppercase, among `currencies`) and symbols that mean one currency in the
|
|
339
|
+
* locale (or in English: US$, CA$, A$);
|
|
340
|
+
* - a symbol several currencies share (`$`, `kr`, `£`, `¥`) needs a `hint` or a `symbols` entry;
|
|
341
|
+
* - a currency other than the `hint`, two different currencies, or text that isn't a currency
|
|
342
|
+
* throws;
|
|
343
|
+
* - so does a locale this runtime has no Intl data for, and group separators in the wrong places
|
|
344
|
+
* (`lenient: true` accepts those, and a bare number when a `hint` is given).
|
|
345
|
+
*
|
|
346
|
+
* The number is read as `parse` reads it, with the detected currency's separators.
|
|
347
|
+
*/
|
|
348
|
+
export function parseMoney(input, locale, options) {
|
|
349
|
+
const hint = options?.hint;
|
|
350
|
+
const lenient = options?.lenient === true;
|
|
351
|
+
const candidates = options?.currencies === undefined ? undefined : new Set(options.currencies);
|
|
352
|
+
requireLocaleData(input, locale);
|
|
353
|
+
// The text around the number: everything before the first digit and after the last.
|
|
354
|
+
const chars = Array.from(input);
|
|
355
|
+
let first = -1;
|
|
356
|
+
let last = -1;
|
|
357
|
+
for (let i = 0; i < chars.length; i++) {
|
|
358
|
+
if (asciiDigit(chars[i].codePointAt(0)) >= 0) {
|
|
359
|
+
if (first < 0) {
|
|
360
|
+
first = i;
|
|
361
|
+
}
|
|
362
|
+
last = i;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
if (first < 0) {
|
|
366
|
+
throw new SyntaxError(`Cannot parse "${input}": no digits`);
|
|
367
|
+
}
|
|
368
|
+
const affix = `${chars.slice(0, first).join('')} ${chars.slice(last + 1).join('')}`;
|
|
369
|
+
// Each piece of the affix must be a sign or a currency, and every currency must agree. A lone
|
|
370
|
+
// separator next to the number (".50 USD") belongs to the number, which parse reads.
|
|
371
|
+
let detected;
|
|
372
|
+
const pieces = affix
|
|
373
|
+
.split(/[\s\p{Z}\p{Cf}()+\-−]+/u)
|
|
374
|
+
.filter((piece) => piece !== '' && !/^[.,٫]$/u.test(piece));
|
|
375
|
+
for (const piece of pieces) {
|
|
376
|
+
const meanings = meaningsOf(piece, locale, candidates, options?.symbols);
|
|
377
|
+
let currency;
|
|
378
|
+
if (meanings.length === 1) {
|
|
379
|
+
currency = meanings[0];
|
|
380
|
+
}
|
|
381
|
+
else if (meanings.length === 0) {
|
|
382
|
+
throw new SyntaxError(`Cannot parse "${input}": "${piece}" is not a currency`);
|
|
383
|
+
}
|
|
384
|
+
else if (hint !== undefined && meanings.includes(hint)) {
|
|
385
|
+
currency = hint;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
throw new SyntaxError(`Cannot parse "${input}": "${piece}" could be ${meanings.join(', ')}; pass a hint or symbols`);
|
|
389
|
+
}
|
|
390
|
+
if (detected !== undefined && detected !== currency) {
|
|
391
|
+
throw new SyntaxError(`Cannot parse "${input}": both ${detected} and ${currency}`);
|
|
392
|
+
}
|
|
393
|
+
detected = currency;
|
|
394
|
+
}
|
|
395
|
+
if (detected === undefined) {
|
|
396
|
+
if (hint === undefined || !lenient) {
|
|
397
|
+
throw new SyntaxError(`Cannot parse "${input}": no currency in the text` +
|
|
398
|
+
(hint === undefined ? '' : '; pass lenient: true to read a bare number in the hint'));
|
|
399
|
+
}
|
|
400
|
+
detected = hint;
|
|
401
|
+
}
|
|
402
|
+
else if (hint !== undefined && detected !== hint) {
|
|
403
|
+
// a text that names another currency than expected is never a correct parse
|
|
404
|
+
throw new SyntaxError(`Cannot parse "${input}": ${detected}, expected ${hint}`);
|
|
405
|
+
}
|
|
406
|
+
if (!lenient) {
|
|
407
|
+
const { decimal } = symbols(locale, detected);
|
|
408
|
+
const number = chars.slice(first, last + 1).join('');
|
|
409
|
+
const decimalAt = Math.max(number.indexOf(decimal), number.indexOf('٫'));
|
|
410
|
+
const integerPart = decimalAt === -1 ? number : number.slice(0, decimalAt);
|
|
411
|
+
const asciiInteger = Array.from(integerPart, (ch) => {
|
|
412
|
+
const digit = asciiDigit(ch.codePointAt(0));
|
|
413
|
+
return digit >= 0 ? String(digit) : ',';
|
|
414
|
+
}).join('');
|
|
415
|
+
checkGroups(input, asciiInteger, groupSizes(locale, detected));
|
|
416
|
+
}
|
|
417
|
+
return parse(input, detected, locale, options);
|
|
418
|
+
}
|
|
419
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/paypal.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PayPal's amount view for the REST APIs (Orders v2, Payments v2):
|
|
3
|
+
* https://developer.paypal.com/api/rest/reference/currency-codes/, encoded in data/paypal.json.
|
|
4
|
+
* `value` is a decimal string in major units, with at most 15 digits before the point:
|
|
5
|
+
* - HUF, JPY and TWD don't support decimals: "1000", never "1000.00" (ISO 4217 gives HUF and TWD
|
|
6
|
+
* 2);
|
|
7
|
+
* - every other listed currency has 2 decimals: "10.99".
|
|
8
|
+
* BRL, CNY and MYR are for in-country accounts only; that isn't checked here.
|
|
9
|
+
*/
|
|
10
|
+
import { PAYPAL_EXPONENTS } from './generated/paypal.js';
|
|
11
|
+
import { type CurrencyInput, type Money } from './money.js';
|
|
12
|
+
import type { RoundingMode } from './rounding.js';
|
|
13
|
+
export { PAYPAL_EXPONENTS };
|
|
14
|
+
/** The number of decimals PayPal takes for a currency (JPY, HUF, TWD 0; the others 2). */
|
|
15
|
+
export declare function paypalExponent(currency: string): number;
|
|
16
|
+
/** Whether PayPal lists the currency (case-insensitive). */
|
|
17
|
+
export declare function isPayPalCurrency(currency: string): boolean;
|
|
18
|
+
/** Options for the PayPal amount: how to round when PayPal needs a coarser amount. */
|
|
19
|
+
export interface PayPalAmountOptions {
|
|
20
|
+
/**
|
|
21
|
+
* How to round when PayPal needs fewer decimals than the value has (default 'unnecessary':
|
|
22
|
+
* throw).
|
|
23
|
+
*/
|
|
24
|
+
readonly rounding?: RoundingMode;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The exact `value` string: toPayPalValue(money('10.99', 'USD')) === '10.99', HUF 1000 -> '1000'.
|
|
28
|
+
* Throws a RangeError for negative amounts (refunds are sent as positive amounts).
|
|
29
|
+
*/
|
|
30
|
+
export declare function toPayPalValue(money: Money, options?: PayPalAmountOptions): string;
|
|
31
|
+
/** A PayPal `money` object: `{ currency_code, value }`. */
|
|
32
|
+
export declare function toPayPal(money: Money, options?: PayPalAmountOptions): {
|
|
33
|
+
currency_code: string;
|
|
34
|
+
value: string;
|
|
35
|
+
};
|
|
36
|
+
/** Reads a PayPal `money` object exactly: fromPayPal({ currency_code: 'USD', value: '230.00' }). */
|
|
37
|
+
export declare function fromPayPal<C extends CurrencyInput>(amount: {
|
|
38
|
+
currency_code: C;
|
|
39
|
+
value: string;
|
|
40
|
+
}): Money<Uppercase<C>>;
|
|
41
|
+
//# sourceMappingURL=paypal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paypal.d.ts","sourceRoot":"","sources":["../src/paypal.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAW5B,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,sFAAsF;AACtF,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAoBjF;AAED,2DAA2D;AAC3D,wBAAgB,QAAQ,CACtB,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,mBAAmB,GAC5B;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAE1C;AAED,oGAAoG;AACpG,wBAAgB,UAAU,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE;IAC1D,aAAa,EAAE,CAAC,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAMtB"}
|