@procore/globalization-toolkit 0.0.2 → 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.
Files changed (40) hide show
  1. package/.eslintrc.js +30 -0
  2. package/.husky/commit-msg +4 -0
  3. package/CHANGELOG.md +4 -0
  4. package/README.md +35 -4
  5. package/commitlint.config.js +1 -0
  6. package/dist/commitlint.config.d.ts +2 -0
  7. package/dist/commitlint.config.js +3 -0
  8. package/dist/commitlint.config.js.map +1 -0
  9. package/dist/src/Formatter.types.d.ts +4 -0
  10. package/dist/{numbers/NumberUtils.types.js → src/Formatter.types.js} +1 -1
  11. package/dist/src/Formatter.types.js.map +1 -0
  12. package/dist/src/index.d.ts +4 -0
  13. package/dist/src/index.js +14 -0
  14. package/dist/src/index.js.map +1 -0
  15. package/dist/src/numbers/CurrencyFormatter.d.ts +11 -0
  16. package/dist/src/numbers/CurrencyFormatter.js +57 -0
  17. package/dist/src/numbers/CurrencyFormatter.js.map +1 -0
  18. package/dist/src/numbers/CurrencyUtils.d.ts +2 -0
  19. package/dist/src/numbers/CurrencyUtils.js +10 -0
  20. package/dist/src/numbers/CurrencyUtils.js.map +1 -0
  21. package/dist/src/numbers/NumberFormatter.d.ts +11 -0
  22. package/dist/src/numbers/NumberFormatter.js +38 -0
  23. package/dist/src/numbers/NumberFormatter.js.map +1 -0
  24. package/dist/src/numbers/NumberUtils.d.ts +3 -0
  25. package/dist/src/numbers/NumberUtils.js +21 -0
  26. package/dist/src/numbers/NumberUtils.js.map +1 -0
  27. package/dist/src/numbers/Numbers.types.d.ts +17 -0
  28. package/dist/src/numbers/Numbers.types.js +15 -0
  29. package/dist/src/numbers/Numbers.types.js.map +1 -0
  30. package/dist/tsconfig.build.tsbuildinfo +1 -1
  31. package/package.json +65 -10
  32. package/tsconfig.json +1 -1
  33. package/dist/index.d.ts +0 -2
  34. package/dist/index.js +0 -10
  35. package/dist/index.js.map +0 -1
  36. package/dist/numbers/NumberUtils.d.ts +0 -6
  37. package/dist/numbers/NumberUtils.js +0 -35
  38. package/dist/numbers/NumberUtils.js.map +0 -1
  39. package/dist/numbers/NumberUtils.types.d.ts +0 -5
  40. package/dist/numbers/NumberUtils.types.js.map +0 -1
package/.eslintrc.js ADDED
@@ -0,0 +1,30 @@
1
+ module.exports = {
2
+ parser: "@typescript-eslint/parser",
3
+ parserOptions: {
4
+ project: "tsconfig.json",
5
+ sourceType: "module",
6
+ },
7
+ env: {
8
+ node: true,
9
+ jest: true,
10
+ },
11
+ extends: [
12
+ "plugin:@typescript-eslint/eslint-recommended",
13
+ "plugin:@typescript-eslint/recommended",
14
+ "plugin:prettier/recommended",
15
+ ],
16
+ ignorePatterns: [".eslintrc.js"],
17
+ root: true,
18
+ plugins: ["@typescript-eslint/eslint-plugin"],
19
+ "rules": {
20
+ },
21
+ rules: {
22
+ "@typescript-eslint/interface-name-prefix": "off",
23
+ "@typescript-eslint/explicit-function-return-type": "error",
24
+ "@typescript-eslint/explicit-module-boundary-types": "off",
25
+ "@typescript-eslint/no-explicit-any": "error",
26
+ "@typescript-eslint/no-empty-function": "off",
27
+ "multiline-comment-style": ["error", "starred-block"],
28
+ "valid-jsdoc": "warn",
29
+ },
30
+ }
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ . "$(dirname "$0")/_/husky.sh"
3
+
4
+ npx --no -- commitlint --edit "${1}"
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.1.0
2
+
3
+ - test semantic release
4
+
1
5
  # 0.0.2
2
6
 
3
7
  - test automatic release
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  i18n formatting library POC
4
4
 
5
5
  [![Maintainer](https://img.shields.io/badge/Maintainer-team--global--by--design-orange)](https://procoretech.slack.com/archives/C037J98SPHD)
6
-
6
+ [![CircleCI](https://circleci.com/gh/procore/globalization-toolkit/tree/main.svg?style=shield&circle-token=2f3787c62ef88e345956761b9d6e243f043a08a7)](https://circleci.com/gh/procore/globalization-toolkit/tree/main)
7
7
 
8
8
 
9
9
  compile typescript `tsc -p tsconfig.build.json --outDir ./dist` or `npm run build`
@@ -15,9 +15,40 @@ testing: `jest` or `npm run build`
15
15
  ### Install
16
16
 
17
17
  ```sh
18
- npm i --save @procore/globalization-toolkit
18
+ $ npm i --save @procore/globalization-toolkit
19
19
  ```
20
20
 
21
- ### Publishing
21
+ ## Committing Changes
22
+ To generate a new commit run
23
+ ```sh
24
+ $ npm run cm
25
+ ```
26
+ This script helps enforce proper formatting to help determine appropriate versioning.
27
+
28
+ Our repo follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification to determine [semantic versioning](https://semver.org/) and maintain a more easily readable commit history.
29
+ Commits are linted with [`commitlint`](https://github.com/conventional-changelog/commitlint) in a `pre-commit` hook, which will fail commits that do not follow the [configured rules](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#rules).
30
+ We use the command line tool [`commitizen`](https://github.com/commitizen/cz-cli#using-the-command-line-tool) to help walk you through generating a Conventional Commit.
31
+ To invoke this tool, run `npx cz` or use the script above.
32
+ If you set `PREPARE_COMMIT_MSG` to `true` in your environment, `commitizen` will run automatically each time you `git commit`.
33
+ This can cause odd behavior when doing things like amending or rebasing commits.
34
+ You can always quit the wizard with `Ctrl-C`.
35
+
36
+ ## Publishing
37
+ We use [`semantic-release`](https://semantic-release.gitbook.io/semantic-release/) to manage releases and publishing to NPM.
38
+ Semantic Release relies on the project commit history to create release notes and determine the next version.
39
+ Merges into the `main` branch will run `semantic-release`, but `semantic-release` will publish a release only for certain commit types.
40
+
41
+ Specifically, the following commit types do not trigger a release:
42
+
43
+ - `doc:` (documentation changes)
44
+ - `build(deps-dev):` (development dependency changes, typically version bumps by dependabot)
45
+ - `chore:` (misc changes tools and libraries that don't effect user-facing library code)
46
+ - `test:` (changes to specs/testing resources)
47
+ - `no-release:` (Or commits otherwise labeled to not release with `[skip release]` or `[release skip]`)
48
+
49
+ The specific steps that run can be found in [this section of the library's documentation](https://github.com/semantic-release/semantic-release#release-steps).
50
+
51
+ Details about how commit types are mapped to versioning can be found in the [commit analyzer documentation](https://github.com/semantic-release/commit-analyzer/#default-rules-matching).
22
52
 
23
- Creating a Release in github with the version tag starting with a 'v' will trigger CircleCI to publish a new release to npm.
53
+ When a PR is merged, each of its commits that is releasable will be added to the release notes automatically.
54
+ The release version will be determined by the commit whose type represents the highest SemVer value.
@@ -0,0 +1 @@
1
+ module.exports = {extends: ['@commitlint/config-conventional']}
@@ -0,0 +1,2 @@
1
+ declare const _extends: string[];
2
+ export { _extends as extends };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ module.exports = { extends: ['@commitlint/config-conventional'] };
3
+ //# sourceMappingURL=commitlint.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitlint.config.js","sourceRoot":"","sources":["../commitlint.config.js"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,CAAC,iCAAiC,CAAC,EAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare type Locale = string;
2
+ export declare type FormatterOptions = {
3
+ locale: Locale;
4
+ };
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=NumberUtils.types.js.map
3
+ //# sourceMappingURL=Formatter.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Formatter.types.js","sourceRoot":"","sources":["../../src/Formatter.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export { NumberFormatter, formatNumber, formatNumberToParts, parseNumber, } from "./numbers/NumberFormatter";
2
+ export { CurrencyFormatter, formatCurrency, formatCurrencyToParts, parseCurrency, } from "./numbers/CurrencyFormatter";
3
+ export type { NumberOptions, NumberFormatPart, CurrencyDisplay, CurrencySign, CurrencyOptions, } from "./numbers/Numbers.types";
4
+ export type { Locale, FormatterOptions } from "./Formatter.types";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCurrency = exports.formatCurrencyToParts = exports.formatCurrency = exports.CurrencyFormatter = exports.parseNumber = exports.formatNumberToParts = exports.formatNumber = exports.NumberFormatter = void 0;
4
+ var NumberFormatter_1 = require("./numbers/NumberFormatter");
5
+ Object.defineProperty(exports, "NumberFormatter", { enumerable: true, get: function () { return NumberFormatter_1.NumberFormatter; } });
6
+ Object.defineProperty(exports, "formatNumber", { enumerable: true, get: function () { return NumberFormatter_1.formatNumber; } });
7
+ Object.defineProperty(exports, "formatNumberToParts", { enumerable: true, get: function () { return NumberFormatter_1.formatNumberToParts; } });
8
+ Object.defineProperty(exports, "parseNumber", { enumerable: true, get: function () { return NumberFormatter_1.parseNumber; } });
9
+ var CurrencyFormatter_1 = require("./numbers/CurrencyFormatter");
10
+ Object.defineProperty(exports, "CurrencyFormatter", { enumerable: true, get: function () { return CurrencyFormatter_1.CurrencyFormatter; } });
11
+ Object.defineProperty(exports, "formatCurrency", { enumerable: true, get: function () { return CurrencyFormatter_1.formatCurrency; } });
12
+ Object.defineProperty(exports, "formatCurrencyToParts", { enumerable: true, get: function () { return CurrencyFormatter_1.formatCurrencyToParts; } });
13
+ Object.defineProperty(exports, "parseCurrency", { enumerable: true, get: function () { return CurrencyFormatter_1.parseCurrency; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,6DAKmC;AAJjC,kHAAA,eAAe,OAAA;AACf,+GAAA,YAAY,OAAA;AACZ,sHAAA,mBAAmB,OAAA;AACnB,8GAAA,WAAW,OAAA;AAEb,iEAKqC;AAJnC,sHAAA,iBAAiB,OAAA;AACjB,mHAAA,cAAc,OAAA;AACd,0HAAA,qBAAqB,OAAA;AACrB,kHAAA,aAAa,OAAA"}
@@ -0,0 +1,11 @@
1
+ import { CurrencyOptions, NumberFormatPart } from "./Numbers.types";
2
+ export declare class CurrencyFormatter {
3
+ formatter: Intl.NumberFormat;
4
+ constructor(currencyOptions: CurrencyOptions);
5
+ formatCurrency(value: number): string;
6
+ formatCurrencyToParts(value: number): NumberFormatPart[];
7
+ parseCurrency(value: string): number;
8
+ }
9
+ export declare function formatCurrency(value: number, currencyOptions: CurrencyOptions): string;
10
+ export declare function formatCurrencyToParts(value: number, currencyOptions: CurrencyOptions): NumberFormatPart[];
11
+ export declare function parseCurrency(value: string, currencyOptions: CurrencyOptions): number;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCurrency = exports.formatCurrencyToParts = exports.formatCurrency = exports.CurrencyFormatter = void 0;
4
+ const CurrencyUtils_1 = require("./CurrencyUtils");
5
+ class CurrencyFormatter {
6
+ constructor(currencyOptions) {
7
+ this.formatter = (0, CurrencyUtils_1.getCurrencyFormatter)(currencyOptions);
8
+ }
9
+ formatCurrency(value) {
10
+ return this.formatter.format(value);
11
+ }
12
+ formatCurrencyToParts(value) {
13
+ return this.formatter.formatToParts(value);
14
+ }
15
+ parseCurrency(value) {
16
+ const control = this.formatCurrencyToParts(-1e9 + 0.1);
17
+ const group = control.find((prop) => prop.type === "group")?.value;
18
+ const decimal = control.find((prop) => prop.type === "decimal")?.value;
19
+ const currency = control.find((prop) => prop.type === "currency")?.value;
20
+ const minusSign = control.find((prop) => prop.type === "minusSign")?.value;
21
+ const literals = control
22
+ .filter((prop) => prop.type === "literal")
23
+ .map((literal) => literal.value);
24
+ const sign = (minusSign && value.includes(minusSign)) ||
25
+ value.includes("-") ||
26
+ value.includes("(")
27
+ ? -1
28
+ : 1;
29
+ const converted = literals
30
+ .reduce((val, literal) => val.replaceAll(literal, ""), value)
31
+ .replaceAll(group, "")
32
+ .replace(decimal, ".")
33
+ .replace(currency, "")
34
+ .replace(minusSign, "")
35
+ .replace("-", "")
36
+ .replaceAll(/\s/g, "")
37
+ .trim();
38
+ return parseFloat(converted) * sign;
39
+ }
40
+ }
41
+ exports.CurrencyFormatter = CurrencyFormatter;
42
+ function formatCurrency(value, currencyOptions) {
43
+ const formatter = new CurrencyFormatter(currencyOptions);
44
+ return formatter.formatCurrency(value);
45
+ }
46
+ exports.formatCurrency = formatCurrency;
47
+ function formatCurrencyToParts(value, currencyOptions) {
48
+ const formatter = new CurrencyFormatter(currencyOptions);
49
+ return formatter.formatCurrencyToParts(value);
50
+ }
51
+ exports.formatCurrencyToParts = formatCurrencyToParts;
52
+ function parseCurrency(value, currencyOptions) {
53
+ const formatter = new CurrencyFormatter(currencyOptions);
54
+ return formatter.parseCurrency(value);
55
+ }
56
+ exports.parseCurrency = parseCurrency;
57
+ //# sourceMappingURL=CurrencyFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyFormatter.js","sourceRoot":"","sources":["../../../src/numbers/CurrencyFormatter.ts"],"names":[],"mappings":";;;AACA,mDAAuD;AAGvD,MAAa,iBAAiB;IAM5B,YAAY,eAAgC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAA,oCAAoB,EAAC,eAAe,CAAC,CAAC;IACzD,CAAC;IAOD,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAOD,qBAAqB,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAOD,aAAa,CAAC,KAAa;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,CAAC;QACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,CAAC;QACzE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK,CAAC;QAC3E,MAAM,QAAQ,GAAG,OAAO;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;aACzC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,IAAI,GACR,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YACjB,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC;QAWR,MAAM,SAAS,GAAG,QAAQ;aACvB,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC;aAC5D,UAAU,CAAC,KAAM,EAAE,EAAE,CAAC;aACtB,OAAO,CAAC,OAAQ,EAAE,GAAG,CAAC;aACtB,OAAO,CAAC,QAAS,EAAE,EAAE,CAAC;aACtB,OAAO,CAAC,SAAU,EAAE,EAAE,CAAC;aACvB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;aAChB,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;aACrB,IAAI,EAAE,CAAC;QAEV,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACtC,CAAC;CACF;AAvED,8CAuEC;AASD,SAAgB,cAAc,CAC5B,KAAa,EACb,eAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACzD,OAAO,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAND,wCAMC;AASD,SAAgB,qBAAqB,CACnC,KAAa,EACb,eAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACzD,OAAO,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAND,sDAMC;AASD,SAAgB,aAAa,CAC3B,KAAa,EACb,eAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACzD,OAAO,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAND,sCAMC"}
@@ -0,0 +1,2 @@
1
+ import { CurrencyOptions } from "./Numbers.types";
2
+ export declare function getCurrencyFormatter(options: CurrencyOptions): Intl.NumberFormat;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCurrencyFormatter = void 0;
4
+ const NumberUtils_1 = require("./NumberUtils");
5
+ function getCurrencyFormatter(options) {
6
+ const intlOptions = (0, NumberUtils_1.transformOptions)(options);
7
+ return new Intl.NumberFormat(options.locale, intlOptions);
8
+ }
9
+ exports.getCurrencyFormatter = getCurrencyFormatter;
10
+ //# sourceMappingURL=CurrencyUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyUtils.js","sourceRoot":"","sources":["../../../src/numbers/CurrencyUtils.ts"],"names":[],"mappings":";;;AAGA,+CAAiD;AAGjD,SAAgB,oBAAoB,CAClC,OAAwB;IAExB,MAAM,WAAW,GAA6B,IAAA,8BAAgB,EAAC,OAAO,CAAC,CAAC;IAExE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC;AAND,oDAMC"}
@@ -0,0 +1,11 @@
1
+ import { NumberOptions, NumberFormatPart } from "./Numbers.types";
2
+ export declare class NumberFormatter {
3
+ formatter: Intl.NumberFormat;
4
+ constructor(numberOptions: NumberOptions);
5
+ formatNumber(value: number): string;
6
+ formatNumberToParts(value: number): NumberFormatPart[];
7
+ parseNumber(value: string): number;
8
+ }
9
+ export declare function formatNumber(value: number, numberOptions: NumberOptions): string;
10
+ export declare function formatNumberToParts(value: number, numberOptions: NumberOptions): NumberFormatPart[];
11
+ export declare function parseNumber(value: string, numberOptions: NumberOptions): number;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseNumber = exports.formatNumberToParts = exports.formatNumber = exports.NumberFormatter = void 0;
4
+ const NumberUtils_1 = require("./NumberUtils");
5
+ class NumberFormatter {
6
+ constructor(numberOptions) {
7
+ this.formatter = (0, NumberUtils_1.getNumberFormatter)(numberOptions);
8
+ }
9
+ formatNumber(value) {
10
+ return this.formatter.format(value);
11
+ }
12
+ formatNumberToParts(value) {
13
+ return this.formatter.formatToParts(value);
14
+ }
15
+ parseNumber(value) {
16
+ const control = this.formatNumberToParts(1e9 + 0.1);
17
+ const group = control.find((prop) => prop.type === "group")?.value;
18
+ const decimal = control.find((prop) => prop.type === "decimal")?.value;
19
+ return parseFloat(value.replace(group, "").replace(decimal, "."));
20
+ }
21
+ }
22
+ exports.NumberFormatter = NumberFormatter;
23
+ function formatNumber(value, numberOptions) {
24
+ const formatter = new NumberFormatter(numberOptions);
25
+ return formatter.formatNumber(value);
26
+ }
27
+ exports.formatNumber = formatNumber;
28
+ function formatNumberToParts(value, numberOptions) {
29
+ const formatter = new NumberFormatter(numberOptions);
30
+ return formatter.formatNumberToParts(value);
31
+ }
32
+ exports.formatNumberToParts = formatNumberToParts;
33
+ function parseNumber(value, numberOptions) {
34
+ const formatter = new NumberFormatter(numberOptions);
35
+ return formatter.parseNumber(value);
36
+ }
37
+ exports.parseNumber = parseNumber;
38
+ //# sourceMappingURL=NumberFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberFormatter.js","sourceRoot":"","sources":["../../../src/numbers/NumberFormatter.ts"],"names":[],"mappings":";;;AAAA,+CAAmD;AAGnD,MAAa,eAAe;IAM1B,YAAY,aAA4B;QACtC,IAAI,CAAC,SAAS,GAAG,IAAA,gCAAkB,EAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAOD,YAAY,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAOD,mBAAmB,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAOD,WAAW,CAAC,KAAa;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,CAAC;QAGvE,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;CACF;AAzCD,0CAyCC;AASD,SAAgB,YAAY,CAC1B,KAAa,EACb,aAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;IACrD,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAND,oCAMC;AASD,SAAgB,mBAAmB,CACjC,KAAa,EACb,aAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;IACrD,OAAO,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAND,kDAMC;AASD,SAAgB,WAAW,CACzB,KAAa,EACb,aAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;IACrD,OAAO,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAND,kCAMC"}
@@ -0,0 +1,3 @@
1
+ import { CurrencyOptions, NumberOptions } from "./Numbers.types";
2
+ export declare function getNumberFormatter(options: NumberOptions | CurrencyOptions): Intl.NumberFormat;
3
+ export declare function transformOptions(options: NumberOptions | CurrencyOptions): Intl.NumberFormatOptions;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformOptions = exports.getNumberFormatter = void 0;
4
+ const Numbers_types_1 = require("./Numbers.types");
5
+ function getNumberFormatter(options) {
6
+ const intlOptions = transformOptions(options);
7
+ return new Intl.NumberFormat(options.locale, intlOptions);
8
+ }
9
+ exports.getNumberFormatter = getNumberFormatter;
10
+ function transformOptions(options) {
11
+ const numberFormatOptions = {};
12
+ if ((0, Numbers_types_1.isCurrencyOptions)(options)) {
13
+ numberFormatOptions.style = "currency";
14
+ numberFormatOptions.currency = options.currencyIsoCode;
15
+ numberFormatOptions.currencyDisplay = options.currencyDisplay;
16
+ numberFormatOptions.currencySign = options.currencySign;
17
+ }
18
+ return numberFormatOptions;
19
+ }
20
+ exports.transformOptions = transformOptions;
21
+ //# sourceMappingURL=NumberUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberUtils.js","sourceRoot":"","sources":["../../../src/numbers/NumberUtils.ts"],"names":[],"mappings":";;;AAAA,mDAIyB;AAEzB,SAAgB,kBAAkB,CAChC,OAAwC;IAGxC,MAAM,WAAW,GAA6B,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAExE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC;AAPD,gDAOC;AAED,SAAgB,gBAAgB,CAC9B,OAAwC;IAExC,MAAM,mBAAmB,GAA6B,EAAE,CAAC;IAEzD,IAAI,IAAA,iCAAiB,EAAC,OAAO,CAAC,EAAE;QAC9B,mBAAmB,CAAC,KAAK,GAAG,UAAU,CAAC;QACvC,mBAAmB,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;QACvD,mBAAmB,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC9D,mBAAmB,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;KACzD;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAbD,4CAaC"}
@@ -0,0 +1,17 @@
1
+ import { FormatterOptions } from "src";
2
+ export declare type NumberOptions = FormatterOptions;
3
+ export declare type NumberFormatPart = {
4
+ type: string;
5
+ value: string;
6
+ };
7
+ declare const currencyDisplayValues: readonly ["symbol", "narrowSymbol", "code", "name"];
8
+ export declare type CurrencyDisplay = typeof currencyDisplayValues[number];
9
+ declare const currencySignValues: readonly ["accounting", "standard"];
10
+ export declare type CurrencySign = typeof currencySignValues[number];
11
+ export interface CurrencyOptions extends NumberOptions {
12
+ currencyIsoCode: string;
13
+ currencyDisplay?: CurrencyDisplay;
14
+ currencySign?: CurrencySign;
15
+ }
16
+ export declare function isCurrencyOptions(options: NumberOptions | CurrencyOptions): options is CurrencyOptions;
17
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCurrencyOptions = void 0;
4
+ const currencyDisplayValues = [
5
+ "symbol",
6
+ "narrowSymbol",
7
+ "code",
8
+ "name",
9
+ ];
10
+ const currencySignValues = ["accounting", "standard"];
11
+ function isCurrencyOptions(options) {
12
+ return options.currencyIsoCode !== undefined;
13
+ }
14
+ exports.isCurrencyOptions = isCurrencyOptions;
15
+ //# sourceMappingURL=Numbers.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Numbers.types.js","sourceRoot":"","sources":["../../../src/numbers/Numbers.types.ts"],"names":[],"mappings":";;;AAwBA,MAAM,qBAAqB,GAAG;IAC5B,QAAQ;IACR,cAAc;IACd,MAAM;IACN,MAAM;CACE,CAAC;AAGX,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,UAAU,CAAU,CAAC;AAS/D,SAAgB,iBAAiB,CAC/B,OAAwC;IAExC,OAAQ,OAA2B,CAAC,eAAe,KAAK,SAAS,CAAC;AACpE,CAAC;AAJD,8CAIC"}
@@ -1 +1 @@
1
- {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/numbers/NumberUtils.types.ts","../src/numbers/NumberUtils.ts","../src/index.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@types/jest/node_modules/jest-diff/build/cleanupSemantic.d.ts","../node_modules/@types/jest/node_modules/pretty-format/build/types.d.ts","../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../node_modules/@types/jest/node_modules/jest-diff/build/types.d.ts","../node_modules/@types/jest/node_modules/jest-diff/build/diffLines.d.ts","../node_modules/@types/jest/node_modules/jest-diff/build/printDiffs.d.ts","../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../node_modules/@types/jest/node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"3ac1b83264055b28c0165688fda6dfcc39001e9e7828f649299101c23ad0a0c3","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"72704b10d97777e15f1a581b73f88273037ef752d2e50b72287bd0a90af64fe6","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"5075b36ab861c8c0c45377cb8c96270d7c65f0eeaf105d53fac6850da61f1027","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"2b58a8f805a359fabec613cbb055303d092717c9025978f0066ec2d5be26ecc0","3cd93c77726042d0144b6b990696f295ec6a371a9e526186d43893d7db95f479","b7157e93fe87c18f3e8e516b6baed7b37dbaf3733ddf3bd0c481d5ea19fa62ce","0cba3a5d7b81356222594442753cf90dd2892e5ccfe1d262aaca6896ba6c1380","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"e5979905796fe2740d85fbaf4f11f42b7ee1851421afe750823220813421b1af",{"version":"fcdcb42da18dd98dc286b1876dd425791772036012ae61263c011a76b13a190f","affectsGlobalScope":true},"1dab5ab6bcf11de47ab9db295df8c4f1d92ffa750e8f095e88c71ce4c3299628","f71f46ccd5a90566f0a37b25b23bc4684381ab2180bdf6733f4e6624474e1894",{"version":"54e65985a3ee3cec182e6a555e20974ea936fc8b8d1738c14e8ed8a42bd921d4","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","5b30f550565fd0a7524282c81c27fe8534099e2cd26170ca80852308f07ae68d","34e5de87d983bc6aefef8b17658556e3157003e8d9555d3cb098c6bef0b5fbc8","d97cd8a4a42f557fc62271369ed0461c8e50d47b7f9c8ad0b5462f53306f6060","f27371653aded82b2b160f7a7033fb4a5b1534b6f6081ef7be1468f0f15327d3","c762cd6754b13a461c54b59d0ae0ab7aeef3c292c6cf889873f786ee4d8e75c9","f4ea7d5df644785bd9fbf419930cbaec118f0d8b4160037d2339b8e23c059e79",{"version":"bfea28e6162ed21a0aeed181b623dcf250aa79abf49e24a6b7e012655af36d81","affectsGlobalScope":true},"b8aca9d0c81abb02bec9b7621983ae65bde71da6727580070602bd2500a9ce2a","ae97e20f2e10dbeec193d6a2f9cd9a367a1e293e7d6b33b68bacea166afd7792","10d4796a130577d57003a77b95d8723530bbec84718e364aa2129fa8ffba0378","063f53ff674228c190efa19dd9448bcbd540acdbb48a928f4cf3a1b9f9478e43","bf73c576885408d4a176f44a9035d798827cc5020d58284cb18d7573430d9022","7ae078ca42a670445ae0c6a97c029cb83d143d62abd1730efb33f68f0b2c0e82",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"963fe86b2ebd07a34b92b52c6532ab45ec5ccda218a6c477de354fcad2aae0cb","12eea70b5e11e924bb0543aea5eadc16ced318aa26001b453b0d561c2fd0bd1e","08777cd9318d294646b121838574e1dd7acbb22c21a03df84e1f2c87b1ad47f2","08a90bcdc717df3d50a2ce178d966a8c353fd23e5c392fd3594a6e39d9bb6304",{"version":"4cd4cff679c9b3d9239fd7bf70293ca4594583767526916af8e5d5a47d0219c7","affectsGlobalScope":true},"2a12d2da5ac4c4979401a3f6eaafa874747a37c365e4bc18aa2b171ae134d21b","002b837927b53f3714308ecd96f72ee8a053b8aeb28213d8ec6de23ed1608b66","1dc9c847473bb47279e398b22c740c83ea37a5c88bf66629666e3cf4c5b9f99c","a9e4a5a24bf2c44de4c98274975a1a705a0abbaad04df3557c2d3cd8b1727949","00fa7ce8bc8acc560dc341bbfdf37840a8c59e6a67c9bfa3fa5f36254df35db2","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","5f0ed51db151c2cdc4fa3bb0f44ce6066912ad001b607a34e65a96c52eb76248",{"version":"af9771b066ec35ffa1c7db391b018d2469d55e51b98ae95e62b6cbef1b0169ca","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","103d70bfbeb3cd3a3f26d1705bf986322d8738c2c143f38ebb743b1e228d7444","f52fbf64c7e480271a9096763c4882d356b05cab05bf56a64e68a95313cd2ce2","59bdb65f28d7ce52ccfc906e9aaf422f8b8534b2d21c32a27d7819be5ad81df7",{"version":"3a2da34079a2567161c1359316a32e712404b56566c45332ac9dcee015ecce9f","affectsGlobalScope":true},"28a2e7383fd898c386ffdcacedf0ec0845e5d1a86b5a43f25b86bc315f556b79","3aff9c8c36192e46a84afe7b926136d520487155154ab9ba982a8b544ea8fc95","a880cf8d85af2e4189c709b0fea613741649c0e40fffb4360ec70762563d5de0","85bbf436a15bbeda4db888be3062d47f99c66fd05d7c50f0f6473a9151b6a070","9f9c49c95ecd25e0cb2587751925976cf64fd184714cb11e213749c80cf0f927","f0c75c08a71f9212c93a719a25fb0320d53f2e50ca89a812640e08f8ad8c408c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"9cafe917bf667f1027b2bb62e2de454ecd2119c80873ad76fc41d941089753b8","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190","7f82ef88bdb67d9a850dd1c7cd2d690f33e0f0acd208e3c9eba086f3670d4f73",{"version":"4564f780fd20582c57ae218a4cd017717181ab0e228639d905ef054288655b5e","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"outDir":"./","removeComments":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":7},"fileIdsList":[[86,97,102],[86],[86,95,98],[86,95,98,99,100],[86,97],[86,94,101],[86,96],[43,86],[46,86],[47,52,86],[48,58,59,66,75,85,86],[48,49,58,66,86],[50,86],[51,52,59,67,86],[52,75,82,86],[53,55,58,66,86],[54,86],[55,56,86],[57,58,86],[58,86],[58,59,60,75,85,86],[58,59,60,75,86],[86,90],[61,66,75,85,86],[58,59,61,62,66,75,82,85,86],[61,63,75,82,85,86],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92],[58,64,86],[65,85,86],[55,58,66,75,86],[67,86],[68,86],[46,69,86],[70,84,86,90],[71,86],[72,86],[58,73,86],[73,74,86,88],[58,75,76,77,86],[75,77,86],[75,76,86],[78,86],[79,86],[58,80,81,86],[80,81,86],[52,66,75,82,86],[83,86],[66,84,86],[47,61,72,85,86],[52,86],[75,86,87],[86,88],[86,89],[47,52,58,60,69,75,85,86,88,90],[75,86,91],[40,41,86],[40,86]],"referencedMap":[[103,1],[95,2],[99,3],[101,4],[100,3],[98,5],[102,6],[97,7],[96,2],[43,8],[44,8],[46,9],[47,10],[48,11],[49,12],[50,13],[51,14],[52,15],[53,16],[54,17],[55,18],[56,18],[57,19],[58,20],[59,21],[60,22],[45,23],[92,2],[61,24],[62,25],[63,26],[93,27],[64,28],[65,29],[66,30],[67,31],[68,32],[69,33],[70,34],[71,35],[72,36],[73,37],[74,38],[75,39],[77,40],[76,41],[78,42],[79,43],[80,44],[81,45],[82,46],[83,47],[84,48],[85,49],[86,50],[87,51],[88,52],[89,53],[90,54],[91,55],[94,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[38,2],[34,2],[35,2],[36,2],[37,2],[1,2],[39,2],[42,56],[41,57],[40,2]],"exportedModulesMap":[[103,1],[95,2],[99,3],[101,4],[100,3],[98,5],[102,6],[97,7],[96,2],[43,8],[44,8],[46,9],[47,10],[48,11],[49,12],[50,13],[51,14],[52,15],[53,16],[54,17],[55,18],[56,18],[57,19],[58,20],[59,21],[60,22],[45,23],[92,2],[61,24],[62,25],[63,26],[93,27],[64,28],[65,29],[66,30],[67,31],[68,32],[69,33],[70,34],[71,35],[72,36],[73,37],[74,38],[75,39],[77,40],[76,41],[78,42],[79,43],[80,44],[81,45],[82,46],[83,47],[84,48],[85,49],[86,50],[87,51],[88,52],[89,53],[90,54],[91,55],[94,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[38,2],[34,2],[35,2],[36,2],[37,2],[1,2],[39,2],[42,56],[41,57],[40,2]],"semanticDiagnosticsPerFile":[103,95,99,101,100,98,102,97,96,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,92,61,62,63,93,64,65,66,67,68,69,70,71,72,73,74,75,77,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,94,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,38,34,35,36,37,1,39,42,41,40]},"version":"4.6.4"}
1
+ {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../commitlint.config.js","../src/Formatter.types.ts","../src/numbers/Numbers.types.ts","../src/numbers/NumberUtils.ts","../src/numbers/NumberFormatter.ts","../src/numbers/CurrencyUtils.ts","../src/numbers/CurrencyFormatter.ts","../src/index.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/jest-diff/build/cleanupSemantic.d.ts","../node_modules/pretty-format/build/types.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/types.d.ts","../node_modules/jest-diff/build/diffLines.d.ts","../node_modules/jest-diff/build/printDiffs.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","3eb679a56cab01203a1ba7edeade937f6a2a4c718513b2cd930b579807fa9359","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"ff667ee99e5a28c3dc5063a3cfd4d3436699e3fb035d4451037da7f567da542a","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"6ea9ab679ea030cf46c16a711a316078e9e02619ebaf07a7fcd16964aba88f2d","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},{"version":"f59c049b2d71703d12dabd28da6708923d642882cd862083ddf14c737ce569ec","signature":"69ab7100906a4ed0ad331ee20d92ada7266f29d7e7c178fca8a8ed7deb345c6b"},{"version":"9b59c27b4ef90cbb4a98cbc3d444d85725658f904490ccc45e385304d1a6690e","signature":"d491049d09e2052f8e93416b892c5de684e633799f42c1116739793d49e09582"},{"version":"b87b5f79b7b663196e3586577c16d634dff5638037d3194f66b442dec6811d50","signature":"2642b260f40dcd925175d5223efb349ddaa03b04733ecccb6e3fb33c8c5c6fa6"},{"version":"6eb854397d7d4a0b5128d1cfec00792036cb0be73c2159b80d383361bb207d0a","signature":"9eaeeff7865040b7a0df533aa7d169141d649294fee9038794f4fa951eee89bd"},{"version":"2735be437e9417055be581088371f52ccb0696ab930dcc294bdc918f7ffb1f4d","signature":"b2dfc07de2ad834d084fa440c9cd5e8215c05d2a86895394946c9080ee9c6667"},{"version":"21636b0e3cfd78946194a55dd677189663837de7ca2ffe2730154819cdf58599","signature":"81ea53f1cd852ffaf5e574567f90ef3eb30dff6bbd29999394a54bab9782ca0c"},{"version":"0911f2c96ccc03b399e327d1b4c75df5355c6a0227511fdc60b66e2f0c00156e","signature":"d72f1d7a14238d56533a54813eb97cf04447f5e5ccec3a48d426a8eabae03b28"},{"version":"1119f745bde79c20bf77d3facf0726a29feacc77c43221ecf7a12f81fb815d0f","signature":"471f864bd445fc87f9ec140bde71e6b67387f9a14e8091263bbb49478e47fdf6"},"9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"3e4624c306340ad303cc536a07004e81336c3f088308a9e4a9f4c957a3cda2fd","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","025fc13211ed47d2798269017af3ec869122a050d5431a6ad3c1997900e65c58","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"249a2b90439cdfd51709539fbfa4dfe0791cbae6efce1e9b327ba8f8cd703f49","affectsGlobalScope":true},"40b991dc3365179e1365643589e168d7ea0588b4dd5bbb3a974ffefa7cb05e7f","bf057bb805c5e1c0e795ac7c759d40ebbe0e9894df9be3413bbdd8d1a2fc229e","74f2bb83d1ccf390f48681be57a30c09e85b4c7a801267746e382b2386fc667e","7bac475dcdd9f7e4e9da934d32c305bc889c4ce3c8ac0ef45a93a8d670fff607","5d357e7965026197a3152fa4e990fa7a4cbaf1578a17dff920ff1a71a325e198","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"3b145a2351f5cf16abf999c8d5f4481c74dffdc54ec1e9a89992e2622e1226c5","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","d270fd4b565eda11a0a737c181892316b7a1ace06c7988d0246219c3df11db06","70caef0271088abc5f5ae7ff6d84421d35bb192b690fbaa1b2ecf2b0ef01deb6",{"version":"59a638a504490fecaacf0020b9814b6abee37edb66047eb1ab9f7c2274bf1da0","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","8c4c1a64db28930732033c31418f817dcb9d09d706766707ae6d38f23faf0c53","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","12a70315c8281e46d65696086dd25827408e967b305a22276ae2779fe519e0fe","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","29d613c3964ea75b2b4e0d17098245c34529282e9cc72b7e4eeb2a7b12c27cb7",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2af17363f8a062e3a8cd1b26030af0058b3f86e783f4fc6aa9f57247f240ebaa","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","dfe08140492cdc135fb7fd9c4a652c05207b61a436906079b87da1d3111314bf","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","089e1f8603cbc35ab977c8dcc662eb754b82fca32ed1dfb16bd682726c2d5432","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"82fc37849846a3a0264047621d5beb6ce2ddeb2f83bdee2c79523af3c3282d97","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190","7f82ef88bdb67d9a850dd1c7cd2d690f33e0f0acd208e3c9eba086f3670d4f73",{"version":"ccfd8774cd9b929f63ff7dcf657977eb0652e3547f1fcac1b3a1dc5db22d4d58","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"outDir":"./","removeComments":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":7},"fileIdsList":[[106],[106,117,122],[62,106],[65,106],[66,71,106],[67,77,78,85,94,105,106],[67,68,77,85,106],[69,106],[70,71,78,86,106],[71,94,102,106],[72,74,77,85,106],[73,106],[74,75,106],[76,77,106],[77,106],[77,78,79,94,105,106],[77,78,79,94,97,106],[106,110],[80,85,94,105,106],[77,78,80,81,85,94,102,105,106],[80,82,94,102,105,106],[62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],[77,83,106],[84,105,106],[74,77,85,94,106],[86,106],[87,106],[65,88,106],[89,104,106,110],[90,106],[91,106],[77,92,106],[92,93,106,108],[77,94,95,96,97,106],[94,96,106],[94,95,106],[97,106],[98,106],[77,100,101,106],[100,101,106],[71,85,94,102,106],[103,106],[85,104,106],[66,80,91,105,106],[71,106],[94,106,107],[106,108],[106,109],[66,71,77,79,88,94,105,106,108,110],[94,106,111],[106,115,118],[106,115,118,119,120],[106,117],[106,114,121],[106,116],[55,56,58,60,106],[56,59,106],[56,57,106],[56,106],[61,106],[55,56,58,60],[56],[61]],"referencedMap":[[54,1],[123,2],[62,3],[63,3],[65,4],[66,5],[67,6],[68,7],[69,8],[70,9],[71,10],[72,11],[73,12],[74,13],[75,13],[76,14],[77,15],[78,16],[79,17],[64,18],[112,1],[80,19],[81,20],[82,21],[113,22],[83,23],[84,24],[85,25],[86,26],[87,27],[88,28],[89,29],[90,30],[91,31],[92,32],[93,33],[94,34],[96,35],[95,36],[97,37],[98,38],[99,1],[100,39],[101,40],[102,41],[103,42],[104,43],[105,44],[106,45],[107,46],[108,47],[109,48],[110,49],[111,50],[114,1],[115,1],[119,51],[121,52],[120,51],[118,53],[122,54],[117,55],[116,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[33,1],[34,1],[35,1],[36,1],[7,1],[37,1],[42,1],[43,1],[38,1],[39,1],[40,1],[41,1],[8,1],[47,1],[44,1],[45,1],[46,1],[48,1],[9,1],[49,1],[50,1],[51,1],[52,1],[1,1],[10,1],[53,1],[55,1],[61,56],[60,57],[59,58],[58,58],[57,59],[56,60]],"exportedModulesMap":[[123,2],[62,3],[63,3],[65,4],[66,5],[67,6],[68,7],[69,8],[70,9],[71,10],[72,11],[73,12],[74,13],[75,13],[76,14],[77,15],[78,16],[79,17],[64,18],[112,1],[80,19],[81,20],[82,21],[113,22],[83,23],[84,24],[85,25],[86,26],[87,27],[88,28],[89,29],[90,30],[91,31],[92,32],[93,33],[94,34],[96,35],[95,36],[97,37],[98,38],[99,1],[100,39],[101,40],[102,41],[103,42],[104,43],[105,44],[106,45],[107,46],[108,47],[109,48],[110,49],[111,50],[114,1],[115,1],[119,51],[121,52],[120,51],[118,53],[122,54],[117,55],[116,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[33,1],[34,1],[35,1],[36,1],[7,1],[37,1],[42,1],[43,1],[38,1],[39,1],[40,1],[41,1],[8,1],[47,1],[44,1],[45,1],[46,1],[48,1],[9,1],[49,1],[50,1],[51,1],[52,1],[1,1],[10,1],[53,1],[61,61],[60,62],[59,62],[58,62],[57,62],[56,63]],"semanticDiagnosticsPerFile":[54,123,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,64,112,80,81,82,113,83,84,85,86,87,88,89,90,91,92,93,94,96,95,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,114,115,119,121,120,118,122,117,116,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,37,42,43,38,39,40,41,8,47,44,45,46,48,9,49,50,51,52,1,10,53,55,61,60,59,58,57,56]},"version":"4.7.3"}
package/package.json CHANGED
@@ -1,24 +1,79 @@
1
1
  {
2
2
  "name": "@procore/globalization-toolkit",
3
- "version": "0.0.2",
4
3
  "description": "",
5
4
  "main": "./dist/index.js",
6
5
  "types": "./dist/index.d.ts",
7
6
  "scripts": {
8
- "test": "jest",
9
7
  "build": "tsc -p tsconfig.build.json --outDir ./dist",
10
- "clean": "rm -r dist"
8
+ "clean": "rm -r dist",
9
+ "cm": "cz",
10
+ "format": "prettier \"src/**/*.ts\" --write ",
11
+ "format:check": "prettier \"src/**/*.ts\" --check ",
12
+ "lint": "eslint \"src/**/*.ts\" --fix",
13
+ "lint:check": "eslint \"src/**/*.ts\"",
14
+ "test": "jest"
11
15
  },
12
- "SCRIPTS-COMMENTS": {
13
- "BUILD": "can we remove --outDir since it's defined in tsconfig?"
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/procore/globalization-toolkit.git"
19
+ },
20
+ "publishConfig": {
21
+ "registry": "https://registry.npmjs.org/",
22
+ "tag": "latest"
14
23
  },
15
- "author": "",
16
24
  "license": "ISC",
17
25
  "devDependencies": {
18
- "@types/jest": "^27.5.1",
19
- "@types/node": "^17.0.33",
26
+ "@commitlint/cli": "^17.0.2",
27
+ "@commitlint/config-conventional": "^17.0.2",
28
+ "@types/jest": "^27.5.2",
29
+ "@types/node": "^18.0.0",
30
+ "@typescript-eslint/eslint-plugin": "^5.28.0",
31
+ "@typescript-eslint/parser": "^5.28.0",
32
+ "commitizen": "^4.2.4",
33
+ "cz-conventional-changelog": "^3.2.0",
34
+ "eslint": "^8.17.0",
35
+ "eslint-config-prettier": "^8.5.0",
36
+ "eslint-plugin-prettier": "^4.0.0",
37
+ "husky": "^8.0.1",
20
38
  "jest": "^28.1.0",
21
- "ts-jest": "^28.0.2",
39
+ "prettier": "^2.7.0",
40
+ "semantic-release": "^19.0.3",
41
+ "ts-jest": "^28.0.5",
22
42
  "ts-node": "^10.7.0"
23
- }
43
+ },
44
+ "config": {
45
+ "commitizen": {
46
+ "path": "./node_modules/cz-conventional-changelog"
47
+ }
48
+ },
49
+ "release": {
50
+ "branches": [
51
+ "main"
52
+ ],
53
+ "repositoryUrl": "git@github.com:procore/globalization-toolkit.git",
54
+ "plugins": [
55
+ [
56
+ "@semantic-release/commit-analyzer",
57
+ {
58
+ "preset": "conventionalcommits",
59
+ "releaseRules": [
60
+ {
61
+ "type": "build",
62
+ "scope": "deps-dev",
63
+ "release": false
64
+ },
65
+ {
66
+ "type": "build",
67
+ "scope": "deps",
68
+ "release": "patch"
69
+ }
70
+ ]
71
+ }
72
+ ],
73
+ "@semantic-release/release-notes-generator",
74
+ "@semantic-release/npm",
75
+ "@semantic-release/github"
76
+ ]
77
+ },
78
+ "version": "0.2.0"
24
79
  }
package/tsconfig.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "allowJs": true,
17
17
  "esModuleInterop": true,
18
18
  "moduleResolution": "node",
19
- "lib": ["ES2020", "dom"],
19
+ "lib": ["ES2020", "ESNext", "DOM", "es2021.intl", "ESNext.Intl"],
20
20
  "strict": true,
21
21
  "strictNullChecks": true,
22
22
  "strictFunctionTypes": true,
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export { formatterFactory, format, formatToParts, truncateFraction, parse, } from "./numbers/NumberUtils";
2
- export type { Locale, FormatterProps } from "./numbers/NumberUtils.types";
package/dist/index.js DELETED
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parse = exports.truncateFraction = exports.formatToParts = exports.format = exports.formatterFactory = void 0;
4
- var NumberUtils_1 = require("./numbers/NumberUtils");
5
- Object.defineProperty(exports, "formatterFactory", { enumerable: true, get: function () { return NumberUtils_1.formatterFactory; } });
6
- Object.defineProperty(exports, "format", { enumerable: true, get: function () { return NumberUtils_1.format; } });
7
- Object.defineProperty(exports, "formatToParts", { enumerable: true, get: function () { return NumberUtils_1.formatToParts; } });
8
- Object.defineProperty(exports, "truncateFraction", { enumerable: true, get: function () { return NumberUtils_1.truncateFraction; } });
9
- Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return NumberUtils_1.parse; } });
10
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAM+B;AAL7B,+GAAA,gBAAgB,OAAA;AAChB,qGAAA,MAAM,OAAA;AACN,4GAAA,aAAa,OAAA;AACb,+GAAA,gBAAgB,OAAA;AAChB,oGAAA,KAAK,OAAA"}
@@ -1,6 +0,0 @@
1
- import { FormatterProps } from "./NumberUtils.types";
2
- export declare function formatterFactory(formatterProps: FormatterProps): Intl.NumberFormat;
3
- export declare function format(value: number, formatterProps: FormatterProps): string;
4
- export declare function formatToParts(value: number, formatterProps: FormatterProps): Intl.NumberFormatPart[];
5
- export declare function truncateFraction(value: number): number;
6
- export declare function parse(value: string, formatterProps: FormatterProps): number;
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parse = exports.truncateFraction = exports.formatToParts = exports.format = exports.formatterFactory = void 0;
4
- function formatterFactory(formatterProps) {
5
- try {
6
- return new Intl.NumberFormat(formatterProps.locale, formatterProps.options);
7
- }
8
- catch (error) {
9
- console.error(`@procore/globalization-toolkit Intl.NumberFormat error for locale ${formatterProps.locale}. Will fall back to en-US`, error);
10
- return new Intl.NumberFormat('en-US', formatterProps.options);
11
- }
12
- }
13
- exports.formatterFactory = formatterFactory;
14
- function format(value, formatterProps) {
15
- const formatter = formatterFactory(formatterProps);
16
- return formatter.format(value);
17
- }
18
- exports.format = format;
19
- function formatToParts(value, formatterProps) {
20
- const formatter = formatterFactory(formatterProps);
21
- return formatter.formatToParts(value);
22
- }
23
- exports.formatToParts = formatToParts;
24
- function truncateFraction(value) {
25
- return Math.trunc(value);
26
- }
27
- exports.truncateFraction = truncateFraction;
28
- function parse(value, formatterProps) {
29
- const control = formatToParts(1e9 + 0.1, formatterProps);
30
- const group = control.find((prop) => prop.type === 'group')?.value;
31
- const decimal = control.find((prop) => prop.type === 'decimal')?.value;
32
- return parseFloat(value.replace(group, '').replace(decimal, '.'));
33
- }
34
- exports.parse = parse;
35
- //# sourceMappingURL=NumberUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NumberUtils.js","sourceRoot":"","sources":["../../src/numbers/NumberUtils.ts"],"names":[],"mappings":";;;AAEA,SAAgB,gBAAgB,CAC9B,cAA8B;IAE9B,IAAI;QACF,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;KAC7E;IAAC,OAAO,KAAK,EAAE;QAEd,OAAO,CAAC,KAAK,CACX,qEAAqE,cAAc,CAAC,MAAM,2BAA2B,EACrH,KAAK,CACN,CAAC;QACF,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;KAC/D;AACH,CAAC;AAbD,4CAaC;AAED,SAAgB,MAAM,CAAC,KAAa,EAAE,cAA8B;IAClE,MAAM,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAHD,wBAGC;AAED,SAAgB,aAAa,CAC3B,KAAa,EACb,cAA8B;IAE9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAND,sCAMC;AAED,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAFD,4CAEC;AAED,SAAgB,KAAK,CAAC,KAAa,EAAE,cAA8B;IACjE,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,GAAG,GAAG,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,CAAC;IACnE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,CAAC;IAEvE,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AAND,sBAMC"}
@@ -1,5 +0,0 @@
1
- export declare type Locale = string;
2
- export declare type FormatterProps = {
3
- locale: Locale;
4
- options?: Intl.NumberFormatOptions;
5
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"NumberUtils.types.js","sourceRoot":"","sources":["../../src/numbers/NumberUtils.types.ts"],"names":[],"mappings":""}