@formatjs/intl-localematcher 0.2.25 → 0.2.29

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 (80) hide show
  1. package/BUILD +73 -0
  2. package/CHANGELOG.md +150 -0
  3. package/LICENSE.md +0 -0
  4. package/README.md +0 -0
  5. package/abstract/BestAvailableLocale.ts +24 -0
  6. package/abstract/BestFitMatcher.ts +80 -0
  7. package/abstract/CanonicalizeLocaleList.ts +8 -0
  8. package/abstract/LookupMatcher.ts +39 -0
  9. package/abstract/LookupSupportedLocales.ts +28 -0
  10. package/abstract/ResolveLocale.ts +100 -0
  11. package/abstract/UnicodeExtensionValue.ts +44 -0
  12. package/abstract/types.ts +5 -0
  13. package/abstract/utils.ts +11 -0
  14. package/index.ts +32 -0
  15. package/package.json +3 -3
  16. package/tests/BestFitMatcher.test.ts +23 -0
  17. package/tests/LookupMatcher.test.ts +17 -0
  18. package/tests/ResolveLocale.test.ts +47 -0
  19. package/tests/index.test.ts +242 -0
  20. package/tsconfig.json +5 -0
  21. package/abstract/BestAvailableLocale.d.ts +0 -7
  22. package/abstract/BestAvailableLocale.d.ts.map +0 -1
  23. package/abstract/BestAvailableLocale.js +0 -25
  24. package/abstract/BestFitMatcher.d.ts +0 -9
  25. package/abstract/BestFitMatcher.d.ts.map +0 -1
  26. package/abstract/BestFitMatcher.js +0 -65
  27. package/abstract/CanonicalizeLocaleList.d.ts +0 -6
  28. package/abstract/CanonicalizeLocaleList.d.ts.map +0 -1
  29. package/abstract/CanonicalizeLocaleList.js +0 -12
  30. package/abstract/LookupMatcher.d.ts +0 -9
  31. package/abstract/LookupMatcher.d.ts.map +0 -1
  32. package/abstract/LookupMatcher.js +0 -29
  33. package/abstract/LookupSupportedLocales.d.ts +0 -7
  34. package/abstract/LookupSupportedLocales.d.ts.map +0 -1
  35. package/abstract/LookupSupportedLocales.js +0 -23
  36. package/abstract/ResolveLocale.d.ts +0 -15
  37. package/abstract/ResolveLocale.d.ts.map +0 -1
  38. package/abstract/ResolveLocale.js +0 -78
  39. package/abstract/UnicodeExtensionValue.d.ts +0 -7
  40. package/abstract/UnicodeExtensionValue.d.ts.map +0 -1
  41. package/abstract/UnicodeExtensionValue.js +0 -50
  42. package/abstract/types.d.ts +0 -6
  43. package/abstract/types.d.ts.map +0 -1
  44. package/abstract/types.js +0 -2
  45. package/abstract/utils.d.ts +0 -3
  46. package/abstract/utils.d.ts.map +0 -1
  47. package/abstract/utils.js +0 -11
  48. package/index.d.ts +0 -7
  49. package/index.d.ts.map +0 -1
  50. package/index.js +0 -19
  51. package/lib/abstract/BestAvailableLocale.d.ts +0 -7
  52. package/lib/abstract/BestAvailableLocale.d.ts.map +0 -1
  53. package/lib/abstract/BestAvailableLocale.js +0 -21
  54. package/lib/abstract/BestFitMatcher.d.ts +0 -9
  55. package/lib/abstract/BestFitMatcher.d.ts.map +0 -1
  56. package/lib/abstract/BestFitMatcher.js +0 -61
  57. package/lib/abstract/CanonicalizeLocaleList.d.ts +0 -6
  58. package/lib/abstract/CanonicalizeLocaleList.d.ts.map +0 -1
  59. package/lib/abstract/CanonicalizeLocaleList.js +0 -8
  60. package/lib/abstract/LookupMatcher.d.ts +0 -9
  61. package/lib/abstract/LookupMatcher.d.ts.map +0 -1
  62. package/lib/abstract/LookupMatcher.js +0 -25
  63. package/lib/abstract/LookupSupportedLocales.d.ts +0 -7
  64. package/lib/abstract/LookupSupportedLocales.d.ts.map +0 -1
  65. package/lib/abstract/LookupSupportedLocales.js +0 -19
  66. package/lib/abstract/ResolveLocale.d.ts +0 -15
  67. package/lib/abstract/ResolveLocale.d.ts.map +0 -1
  68. package/lib/abstract/ResolveLocale.js +0 -74
  69. package/lib/abstract/UnicodeExtensionValue.d.ts +0 -7
  70. package/lib/abstract/UnicodeExtensionValue.d.ts.map +0 -1
  71. package/lib/abstract/UnicodeExtensionValue.js +0 -46
  72. package/lib/abstract/types.d.ts +0 -6
  73. package/lib/abstract/types.d.ts.map +0 -1
  74. package/lib/abstract/types.js +0 -1
  75. package/lib/abstract/utils.d.ts +0 -3
  76. package/lib/abstract/utils.d.ts.map +0 -1
  77. package/lib/abstract/utils.js +0 -7
  78. package/lib/index.d.ts +0 -7
  79. package/lib/index.d.ts.map +0 -1
  80. package/lib/index.js +0 -13
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnicodeExtensionValue = void 0;
4
- var utils_1 = require("./utils");
5
- /**
6
- * https://tc39.es/ecma402/#sec-unicodeextensionvalue
7
- * @param extension
8
- * @param key
9
- */
10
- function UnicodeExtensionValue(extension, key) {
11
- (0, utils_1.invariant)(key.length === 2, 'key must have 2 elements');
12
- var size = extension.length;
13
- var searchValue = "-".concat(key, "-");
14
- var pos = extension.indexOf(searchValue);
15
- if (pos !== -1) {
16
- var start = pos + 4;
17
- var end = start;
18
- var k = start;
19
- var done = false;
20
- while (!done) {
21
- var e = extension.indexOf('-', k);
22
- var len = void 0;
23
- if (e === -1) {
24
- len = size - k;
25
- }
26
- else {
27
- len = e - k;
28
- }
29
- if (len === 2) {
30
- done = true;
31
- }
32
- else if (e === -1) {
33
- end = size;
34
- done = true;
35
- }
36
- else {
37
- end = e;
38
- k = e + 1;
39
- }
40
- }
41
- return extension.slice(start, end);
42
- }
43
- searchValue = "-".concat(key);
44
- pos = extension.indexOf(searchValue);
45
- if (pos !== -1 && pos + 3 === size) {
46
- return '';
47
- }
48
- return undefined;
49
- }
50
- exports.UnicodeExtensionValue = UnicodeExtensionValue;
@@ -1,6 +0,0 @@
1
- export interface LookupMatcherResult {
2
- locale: string;
3
- extension?: string;
4
- nu?: string;
5
- }
6
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../packages/intl-localematcher/abstract/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ"}
package/abstract/types.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,3 +0,0 @@
1
- export declare const UNICODE_EXTENSION_SEQUENCE_REGEX: RegExp;
2
- export declare function invariant(condition: boolean, message: string, Err?: any): asserts condition;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/intl-localematcher/abstract/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,QAA4B,CAAA;AAEzE,wBAAgB,SAAS,CACvB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,GAAW,GACf,OAAO,CAAC,SAAS,CAInB"}
package/abstract/utils.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.invariant = exports.UNICODE_EXTENSION_SEQUENCE_REGEX = void 0;
4
- exports.UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
5
- function invariant(condition, message, Err) {
6
- if (Err === void 0) { Err = Error; }
7
- if (!condition) {
8
- throw new Err(message);
9
- }
10
- }
11
- exports.invariant = invariant;
package/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export interface Opts {
2
- algorithm: 'lookup' | 'best fit';
3
- }
4
- export declare function match(requestedLocales: string[], availableLocales: string[], defaultLocale: string, opts?: Opts): string;
5
- export { LookupSupportedLocales } from './abstract/LookupSupportedLocales';
6
- export { ResolveLocale } from './abstract/ResolveLocale';
7
- //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/intl-localematcher/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,IAAI;IACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAA;CACjC;AAED,wBAAgB,KAAK,CACnB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,IAAI,GACV,MAAM,CAgBR;AAED,OAAO,EAAC,sBAAsB,EAAC,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAA"}
package/index.js DELETED
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResolveLocale = exports.LookupSupportedLocales = exports.match = void 0;
4
- var CanonicalizeLocaleList_1 = require("./abstract/CanonicalizeLocaleList");
5
- var ResolveLocale_1 = require("./abstract/ResolveLocale");
6
- function match(requestedLocales, availableLocales, defaultLocale, opts) {
7
- var locales = availableLocales.reduce(function (all, l) {
8
- all.add(l);
9
- return all;
10
- }, new Set());
11
- return (0, ResolveLocale_1.ResolveLocale)(locales, (0, CanonicalizeLocaleList_1.CanonicalizeLocaleList)(requestedLocales), {
12
- localeMatcher: (opts === null || opts === void 0 ? void 0 : opts.algorithm) || 'best fit',
13
- }, [], {}, function () { return defaultLocale; }).locale;
14
- }
15
- exports.match = match;
16
- var LookupSupportedLocales_1 = require("./abstract/LookupSupportedLocales");
17
- Object.defineProperty(exports, "LookupSupportedLocales", { enumerable: true, get: function () { return LookupSupportedLocales_1.LookupSupportedLocales; } });
18
- var ResolveLocale_2 = require("./abstract/ResolveLocale");
19
- Object.defineProperty(exports, "ResolveLocale", { enumerable: true, get: function () { return ResolveLocale_2.ResolveLocale; } });
@@ -1,7 +0,0 @@
1
- /**
2
- * https://tc39.es/ecma402/#sec-bestavailablelocale
3
- * @param availableLocales
4
- * @param locale
5
- */
6
- export declare function BestAvailableLocale(availableLocales: Set<String>, locale: string): string | undefined;
7
- //# sourceMappingURL=BestAvailableLocale.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BestAvailableLocale.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/BestAvailableLocale.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,MAAM,EAAE,MAAM,sBAgBf"}
@@ -1,21 +0,0 @@
1
- /**
2
- * https://tc39.es/ecma402/#sec-bestavailablelocale
3
- * @param availableLocales
4
- * @param locale
5
- */
6
- export function BestAvailableLocale(availableLocales, locale) {
7
- var candidate = locale;
8
- while (true) {
9
- if (availableLocales.has(candidate)) {
10
- return candidate;
11
- }
12
- var pos = candidate.lastIndexOf('-');
13
- if (!~pos) {
14
- return undefined;
15
- }
16
- if (pos >= 2 && candidate[pos - 2] === '-') {
17
- pos -= 2;
18
- }
19
- candidate = candidate.slice(0, pos);
20
- }
21
- }
@@ -1,9 +0,0 @@
1
- import { LookupMatcherResult } from './types';
2
- /**
3
- * https://tc39.es/ecma402/#sec-bestfitmatcher
4
- * @param availableLocales
5
- * @param requestedLocales
6
- * @param getDefaultLocale
7
- */
8
- export declare function BestFitMatcher(availableLocales: Set<string>, requestedLocales: string[], getDefaultLocale: () => string): LookupMatcherResult;
9
- //# sourceMappingURL=BestFitMatcher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BestFitMatcher.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/BestFitMatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAA;AAG3C;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,gBAAgB,EAAE,MAAM,MAAM,GAC7B,mBAAmB,CAiErB"}
@@ -1,61 +0,0 @@
1
- import { BestAvailableLocale } from './BestAvailableLocale';
2
- import { UNICODE_EXTENSION_SEQUENCE_REGEX } from './utils';
3
- /**
4
- * https://tc39.es/ecma402/#sec-bestfitmatcher
5
- * @param availableLocales
6
- * @param requestedLocales
7
- * @param getDefaultLocale
8
- */
9
- export function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
10
- var minimizedAvailableLocaleMap = {};
11
- var availableLocaleMap = {};
12
- var canonicalizedLocaleMap = {};
13
- var minimizedAvailableLocales = new Set();
14
- availableLocales.forEach(function (locale) {
15
- var minimizedLocale = new Intl.Locale(locale)
16
- .minimize()
17
- .toString();
18
- var canonicalizedLocale = Intl.getCanonicalLocales(locale)[0] || locale;
19
- minimizedAvailableLocaleMap[minimizedLocale] = locale;
20
- availableLocaleMap[locale] = locale;
21
- canonicalizedLocaleMap[canonicalizedLocale] = locale;
22
- minimizedAvailableLocales.add(minimizedLocale);
23
- minimizedAvailableLocales.add(locale);
24
- minimizedAvailableLocales.add(canonicalizedLocale);
25
- });
26
- var foundLocale;
27
- for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
28
- var l = requestedLocales_1[_i];
29
- if (foundLocale) {
30
- break;
31
- }
32
- var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');
33
- if (availableLocales.has(noExtensionLocale)) {
34
- foundLocale = noExtensionLocale;
35
- break;
36
- }
37
- if (minimizedAvailableLocales.has(noExtensionLocale)) {
38
- foundLocale = noExtensionLocale;
39
- break;
40
- }
41
- var locale = new Intl.Locale(noExtensionLocale);
42
- var maximizedRequestedLocale = locale.maximize().toString();
43
- var minimizedRequestedLocale = locale.minimize().toString();
44
- // Check minimized locale
45
- if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
46
- foundLocale = minimizedRequestedLocale;
47
- break;
48
- }
49
- // Lookup algo on maximized locale
50
- foundLocale = BestAvailableLocale(minimizedAvailableLocales, maximizedRequestedLocale);
51
- }
52
- if (!foundLocale) {
53
- return { locale: getDefaultLocale() };
54
- }
55
- return {
56
- locale: availableLocaleMap[foundLocale] ||
57
- canonicalizedLocaleMap[foundLocale] ||
58
- minimizedAvailableLocaleMap[foundLocale] ||
59
- foundLocale,
60
- };
61
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * http://ecma-international.org/ecma-402/7.0/index.html#sec-canonicalizelocalelist
3
- * @param locales
4
- */
5
- export declare function CanonicalizeLocaleList(locales?: string | string[]): string[];
6
- //# sourceMappingURL=CanonicalizeLocaleList.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CanonicalizeLocaleList.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/CanonicalizeLocaleList.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAG5E"}
@@ -1,8 +0,0 @@
1
- /**
2
- * http://ecma-international.org/ecma-402/7.0/index.html#sec-canonicalizelocalelist
3
- * @param locales
4
- */
5
- export function CanonicalizeLocaleList(locales) {
6
- // TODO
7
- return Intl.getCanonicalLocales(locales);
8
- }
@@ -1,9 +0,0 @@
1
- import { LookupMatcherResult } from './types';
2
- /**
3
- * https://tc39.es/ecma402/#sec-lookupmatcher
4
- * @param availableLocales
5
- * @param requestedLocales
6
- * @param getDefaultLocale
7
- */
8
- export declare function LookupMatcher(availableLocales: Set<string>, requestedLocales: string[], getDefaultLocale: () => string): LookupMatcherResult;
9
- //# sourceMappingURL=LookupMatcher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LookupMatcher.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/LookupMatcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAA;AAE3C;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,gBAAgB,EAAE,MAAM,MAAM,GAC7B,mBAAmB,CAwBrB"}
@@ -1,25 +0,0 @@
1
- import { UNICODE_EXTENSION_SEQUENCE_REGEX } from './utils';
2
- import { BestAvailableLocale } from './BestAvailableLocale';
3
- /**
4
- * https://tc39.es/ecma402/#sec-lookupmatcher
5
- * @param availableLocales
6
- * @param requestedLocales
7
- * @param getDefaultLocale
8
- */
9
- export function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
10
- var result = { locale: '' };
11
- for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
12
- var locale = requestedLocales_1[_i];
13
- var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');
14
- var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
15
- if (availableLocale) {
16
- result.locale = availableLocale;
17
- if (locale !== noExtensionLocale) {
18
- result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);
19
- }
20
- return result;
21
- }
22
- }
23
- result.locale = getDefaultLocale();
24
- return result;
25
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * https://tc39.es/ecma402/#sec-lookupsupportedlocales
3
- * @param availableLocales
4
- * @param requestedLocales
5
- */
6
- export declare function LookupSupportedLocales(availableLocales: Set<string>, requestedLocales: string[]): string[];
7
- //# sourceMappingURL=LookupSupportedLocales.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LookupSupportedLocales.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/LookupSupportedLocales.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EAAE,YAiB3B"}
@@ -1,19 +0,0 @@
1
- import { UNICODE_EXTENSION_SEQUENCE_REGEX } from './utils';
2
- import { BestAvailableLocale } from './BestAvailableLocale';
3
- /**
4
- * https://tc39.es/ecma402/#sec-lookupsupportedlocales
5
- * @param availableLocales
6
- * @param requestedLocales
7
- */
8
- export function LookupSupportedLocales(availableLocales, requestedLocales) {
9
- var subset = [];
10
- for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
11
- var locale = requestedLocales_1[_i];
12
- var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');
13
- var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
14
- if (availableLocale) {
15
- subset.push(availableLocale);
16
- }
17
- }
18
- return subset;
19
- }
@@ -1,15 +0,0 @@
1
- export interface ResolveLocaleResult {
2
- locale: string;
3
- dataLocale: string;
4
- [k: string]: any;
5
- }
6
- /**
7
- * https://tc39.es/ecma402/#sec-resolvelocale
8
- */
9
- export declare function ResolveLocale<K extends string, D extends {
10
- [k in K]: any;
11
- }>(availableLocales: Set<string>, requestedLocales: string[], options: {
12
- localeMatcher: string;
13
- [k: string]: string;
14
- }, relevantExtensionKeys: K[], localeData: Record<string, D | undefined>, getDefaultLocale: () => string): ResolveLocaleResult;
15
- //# sourceMappingURL=ResolveLocale.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveLocale.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/ResolveLocale.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS;KAAE,CAAC,IAAI,CAAC,GAAG,GAAG;CAAC,EACvE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,OAAO,EAAE;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,EACrD,qBAAqB,EAAE,CAAC,EAAE,EAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,EACzC,gBAAgB,EAAE,MAAM,MAAM,GAC7B,mBAAmB,CA6ErB"}
@@ -1,74 +0,0 @@
1
- import { LookupMatcher } from './LookupMatcher';
2
- import { BestFitMatcher } from './BestFitMatcher';
3
- import { invariant } from './utils';
4
- import { UnicodeExtensionValue } from './UnicodeExtensionValue';
5
- /**
6
- * https://tc39.es/ecma402/#sec-resolvelocale
7
- */
8
- export function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
9
- var matcher = options.localeMatcher;
10
- var r;
11
- if (matcher === 'lookup') {
12
- r = LookupMatcher(availableLocales, requestedLocales, getDefaultLocale);
13
- }
14
- else {
15
- r = BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale);
16
- }
17
- var foundLocale = r.locale;
18
- var result = { locale: '', dataLocale: foundLocale };
19
- var supportedExtension = '-u';
20
- for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {
21
- var key = relevantExtensionKeys_1[_i];
22
- invariant(foundLocale in localeData, "Missing locale data for ".concat(foundLocale));
23
- var foundLocaleData = localeData[foundLocale];
24
- invariant(typeof foundLocaleData === 'object' && foundLocaleData !== null, "locale data ".concat(key, " must be an object"));
25
- var keyLocaleData = foundLocaleData[key];
26
- invariant(Array.isArray(keyLocaleData), "keyLocaleData for ".concat(key, " must be an array"));
27
- var value = keyLocaleData[0];
28
- invariant(typeof value === 'string' || value === null, "value must be string or null but got ".concat(typeof value, " in key ").concat(key));
29
- var supportedExtensionAddition = '';
30
- if (r.extension) {
31
- var requestedValue = UnicodeExtensionValue(r.extension, key);
32
- if (requestedValue !== undefined) {
33
- if (requestedValue !== '') {
34
- if (~keyLocaleData.indexOf(requestedValue)) {
35
- value = requestedValue;
36
- supportedExtensionAddition = "-".concat(key, "-").concat(value);
37
- }
38
- }
39
- else if (~requestedValue.indexOf('true')) {
40
- value = 'true';
41
- supportedExtensionAddition = "-".concat(key);
42
- }
43
- }
44
- }
45
- if (key in options) {
46
- var optionsValue = options[key];
47
- invariant(typeof optionsValue === 'string' ||
48
- typeof optionsValue === 'undefined' ||
49
- optionsValue === null, 'optionsValue must be String, Undefined or Null');
50
- if (~keyLocaleData.indexOf(optionsValue)) {
51
- if (optionsValue !== value) {
52
- value = optionsValue;
53
- supportedExtensionAddition = '';
54
- }
55
- }
56
- }
57
- result[key] = value;
58
- supportedExtension += supportedExtensionAddition;
59
- }
60
- if (supportedExtension.length > 2) {
61
- var privateIndex = foundLocale.indexOf('-x-');
62
- if (privateIndex === -1) {
63
- foundLocale = foundLocale + supportedExtension;
64
- }
65
- else {
66
- var preExtension = foundLocale.slice(0, privateIndex);
67
- var postExtension = foundLocale.slice(privateIndex, foundLocale.length);
68
- foundLocale = preExtension + supportedExtension + postExtension;
69
- }
70
- foundLocale = Intl.getCanonicalLocales(foundLocale)[0];
71
- }
72
- result.locale = foundLocale;
73
- return result;
74
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * https://tc39.es/ecma402/#sec-unicodeextensionvalue
3
- * @param extension
4
- * @param key
5
- */
6
- export declare function UnicodeExtensionValue(extension: string, key: string): string | undefined;
7
- //# sourceMappingURL=UnicodeExtensionValue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UnicodeExtensionValue.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/UnicodeExtensionValue.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,sBAoCnE"}
@@ -1,46 +0,0 @@
1
- import { invariant } from './utils';
2
- /**
3
- * https://tc39.es/ecma402/#sec-unicodeextensionvalue
4
- * @param extension
5
- * @param key
6
- */
7
- export function UnicodeExtensionValue(extension, key) {
8
- invariant(key.length === 2, 'key must have 2 elements');
9
- var size = extension.length;
10
- var searchValue = "-".concat(key, "-");
11
- var pos = extension.indexOf(searchValue);
12
- if (pos !== -1) {
13
- var start = pos + 4;
14
- var end = start;
15
- var k = start;
16
- var done = false;
17
- while (!done) {
18
- var e = extension.indexOf('-', k);
19
- var len = void 0;
20
- if (e === -1) {
21
- len = size - k;
22
- }
23
- else {
24
- len = e - k;
25
- }
26
- if (len === 2) {
27
- done = true;
28
- }
29
- else if (e === -1) {
30
- end = size;
31
- done = true;
32
- }
33
- else {
34
- end = e;
35
- k = e + 1;
36
- }
37
- }
38
- return extension.slice(start, end);
39
- }
40
- searchValue = "-".concat(key);
41
- pos = extension.indexOf(searchValue);
42
- if (pos !== -1 && pos + 3 === size) {
43
- return '';
44
- }
45
- return undefined;
46
- }
@@ -1,6 +0,0 @@
1
- export interface LookupMatcherResult {
2
- locale: string;
3
- extension?: string;
4
- nu?: string;
5
- }
6
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- export declare const UNICODE_EXTENSION_SEQUENCE_REGEX: RegExp;
2
- export declare function invariant(condition: boolean, message: string, Err?: any): asserts condition;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../packages/intl-localematcher/abstract/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,QAA4B,CAAA;AAEzE,wBAAgB,SAAS,CACvB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,GAAW,GACf,OAAO,CAAC,SAAS,CAInB"}
@@ -1,7 +0,0 @@
1
- export var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
2
- export function invariant(condition, message, Err) {
3
- if (Err === void 0) { Err = Error; }
4
- if (!condition) {
5
- throw new Err(message);
6
- }
7
- }
package/lib/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- export interface Opts {
2
- algorithm: 'lookup' | 'best fit';
3
- }
4
- export declare function match(requestedLocales: string[], availableLocales: string[], defaultLocale: string, opts?: Opts): string;
5
- export { LookupSupportedLocales } from './abstract/LookupSupportedLocales';
6
- export { ResolveLocale } from './abstract/ResolveLocale';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/intl-localematcher/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,IAAI;IACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAA;CACjC;AAED,wBAAgB,KAAK,CACnB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,IAAI,GACV,MAAM,CAgBR;AAED,OAAO,EAAC,sBAAsB,EAAC,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAA"}
package/lib/index.js DELETED
@@ -1,13 +0,0 @@
1
- import { CanonicalizeLocaleList } from './abstract/CanonicalizeLocaleList';
2
- import { ResolveLocale } from './abstract/ResolveLocale';
3
- export function match(requestedLocales, availableLocales, defaultLocale, opts) {
4
- var locales = availableLocales.reduce(function (all, l) {
5
- all.add(l);
6
- return all;
7
- }, new Set());
8
- return ResolveLocale(locales, CanonicalizeLocaleList(requestedLocales), {
9
- localeMatcher: (opts === null || opts === void 0 ? void 0 : opts.algorithm) || 'best fit',
10
- }, [], {}, function () { return defaultLocale; }).locale;
11
- }
12
- export { LookupSupportedLocales } from './abstract/LookupSupportedLocales';
13
- export { ResolveLocale } from './abstract/ResolveLocale';