@formatjs/intl-localematcher 0.6.1 → 0.7.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 (54) hide show
  1. package/abstract/BestAvailableLocale.js +1 -4
  2. package/abstract/BestFitMatcher.d.ts +1 -1
  3. package/abstract/BestFitMatcher.js +4 -7
  4. package/abstract/CanonicalizeLocaleList.js +1 -4
  5. package/abstract/CanonicalizeUValue.js +3 -6
  6. package/abstract/CanonicalizeUnicodeLocaleId.js +1 -4
  7. package/abstract/InsertUnicodeExtensionAndCanonicalize.d.ts +1 -1
  8. package/abstract/InsertUnicodeExtensionAndCanonicalize.js +6 -9
  9. package/abstract/LookupMatcher.d.ts +1 -1
  10. package/abstract/LookupMatcher.js +5 -8
  11. package/abstract/LookupSupportedLocales.js +5 -8
  12. package/abstract/ResolveLocale.js +15 -18
  13. package/abstract/UnicodeExtensionComponents.d.ts +1 -1
  14. package/abstract/UnicodeExtensionComponents.js +6 -9
  15. package/abstract/UnicodeExtensionValue.js +3 -6
  16. package/abstract/languageMatching.js +1 -4
  17. package/abstract/regions.generated.js +1 -4
  18. package/abstract/types.js +1 -2
  19. package/abstract/utils.js +13 -19
  20. package/index.d.ts +2 -2
  21. package/index.js +6 -12
  22. package/package.json +6 -3
  23. package/lib/abstract/BestAvailableLocale.d.ts +0 -6
  24. package/lib/abstract/BestAvailableLocale.js +0 -21
  25. package/lib/abstract/BestFitMatcher.d.ts +0 -8
  26. package/lib/abstract/BestFitMatcher.js +0 -31
  27. package/lib/abstract/CanonicalizeLocaleList.d.ts +0 -5
  28. package/lib/abstract/CanonicalizeLocaleList.js +0 -7
  29. package/lib/abstract/CanonicalizeUValue.d.ts +0 -1
  30. package/lib/abstract/CanonicalizeUValue.js +0 -8
  31. package/lib/abstract/CanonicalizeUnicodeLocaleId.d.ts +0 -1
  32. package/lib/abstract/CanonicalizeUnicodeLocaleId.js +0 -3
  33. package/lib/abstract/InsertUnicodeExtensionAndCanonicalize.d.ts +0 -2
  34. package/lib/abstract/InsertUnicodeExtensionAndCanonicalize.js +0 -32
  35. package/lib/abstract/LookupMatcher.d.ts +0 -8
  36. package/lib/abstract/LookupMatcher.js +0 -25
  37. package/lib/abstract/LookupSupportedLocales.d.ts +0 -6
  38. package/lib/abstract/LookupSupportedLocales.js +0 -19
  39. package/lib/abstract/ResolveLocale.d.ts +0 -14
  40. package/lib/abstract/ResolveLocale.js +0 -100
  41. package/lib/abstract/UnicodeExtensionComponents.d.ts +0 -5
  42. package/lib/abstract/UnicodeExtensionComponents.js +0 -42
  43. package/lib/abstract/UnicodeExtensionValue.d.ts +0 -6
  44. package/lib/abstract/UnicodeExtensionValue.js +0 -46
  45. package/lib/abstract/languageMatching.d.ts +0 -2240
  46. package/lib/abstract/languageMatching.js +0 -2620
  47. package/lib/abstract/regions.generated.d.ts +0 -1
  48. package/lib/abstract/regions.generated.js +0 -1334
  49. package/lib/abstract/types.d.ts +0 -9
  50. package/lib/abstract/types.js +0 -1
  51. package/lib/abstract/utils.d.ts +0 -10
  52. package/lib/abstract/utils.js +0 -165
  53. package/lib/index.d.ts +0 -6
  54. package/lib/index.js +0 -9
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BestAvailableLocale = BestAvailableLocale;
4
1
  /**
5
2
  * https://tc39.es/ecma402/#sec-bestavailablelocale
6
3
  * @param availableLocales
7
4
  * @param locale
8
5
  */
9
- function BestAvailableLocale(availableLocales, locale) {
6
+ export function BestAvailableLocale(availableLocales, locale) {
10
7
  var candidate = locale;
11
8
  while (true) {
12
9
  if (availableLocales.indexOf(candidate) > -1) {
@@ -1,4 +1,4 @@
1
- import { LookupMatcherResult } from './types';
1
+ import { LookupMatcherResult } from './types.js';
2
2
  /**
3
3
  * https://tc39.es/ecma402/#sec-bestfitmatcher
4
4
  * @param availableLocales
@@ -1,24 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BestFitMatcher = BestFitMatcher;
4
- var utils_1 = require("./utils");
1
+ import { UNICODE_EXTENSION_SEQUENCE_REGEX, findBestMatch } from './utils.js';
5
2
  /**
6
3
  * https://tc39.es/ecma402/#sec-bestfitmatcher
7
4
  * @param availableLocales
8
5
  * @param requestedLocales
9
6
  * @param getDefaultLocale
10
7
  */
11
- function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
8
+ export function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
12
9
  var foundLocale;
13
10
  var extension;
14
11
  var noExtensionLocales = [];
15
12
  var noExtensionLocaleMap = requestedLocales.reduce(function (all, l) {
16
- var noExtensionLocale = l.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');
13
+ var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');
17
14
  noExtensionLocales.push(noExtensionLocale);
18
15
  all[noExtensionLocale] = l;
19
16
  return all;
20
17
  }, {});
21
- var result = (0, utils_1.findBestMatch)(noExtensionLocales, availableLocales);
18
+ var result = findBestMatch(noExtensionLocales, availableLocales);
22
19
  if (result.matchedSupportedLocale && result.matchedDesiredLocale) {
23
20
  foundLocale = result.matchedSupportedLocale;
24
21
  extension =
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CanonicalizeLocaleList = CanonicalizeLocaleList;
4
1
  /**
5
2
  * http://ecma-international.org/ecma-402/7.0/index.html#sec-canonicalizelocalelist
6
3
  * @param locales
7
4
  */
8
- function CanonicalizeLocaleList(locales) {
5
+ export function CanonicalizeLocaleList(locales) {
9
6
  return Intl.getCanonicalLocales(locales);
10
7
  }
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CanonicalizeUValue = CanonicalizeUValue;
4
- var utils_1 = require("./utils");
5
- function CanonicalizeUValue(ukey, uvalue) {
1
+ import { invariant } from './utils.js';
2
+ export function CanonicalizeUValue(ukey, uvalue) {
6
3
  // TODO: Implement algorithm for CanonicalizeUValue per https://tc39.es/ecma402/#sec-canonicalizeuvalue
7
4
  var lowerValue = uvalue.toLowerCase();
8
- (0, utils_1.invariant)(ukey !== undefined, "ukey must be defined");
5
+ invariant(ukey !== undefined, "ukey must be defined");
9
6
  var canonicalized = lowerValue;
10
7
  return canonicalized;
11
8
  }
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CanonicalizeUnicodeLocaleId = CanonicalizeUnicodeLocaleId;
4
- function CanonicalizeUnicodeLocaleId(locale) {
1
+ export function CanonicalizeUnicodeLocaleId(locale) {
5
2
  return Intl.getCanonicalLocales(locale)[0];
6
3
  }
@@ -1,2 +1,2 @@
1
- import { Keyword } from './types';
1
+ import { Keyword } from './types.js';
2
2
  export declare function InsertUnicodeExtensionAndCanonicalize(locale: string, attributes: string[], keywords: Array<Keyword>): string;
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InsertUnicodeExtensionAndCanonicalize = InsertUnicodeExtensionAndCanonicalize;
4
- var CanonicalizeUnicodeLocaleId_1 = require("./CanonicalizeUnicodeLocaleId");
5
- var utils_1 = require("./utils");
6
- function InsertUnicodeExtensionAndCanonicalize(locale, attributes, keywords) {
7
- (0, utils_1.invariant)(locale.indexOf('-u-') === -1, 'Expected locale to not have a Unicode locale extension');
1
+ import { CanonicalizeUnicodeLocaleId } from './CanonicalizeUnicodeLocaleId.js';
2
+ import { invariant } from './utils.js';
3
+ export function InsertUnicodeExtensionAndCanonicalize(locale, attributes, keywords) {
4
+ invariant(locale.indexOf('-u-') === -1, 'Expected locale to not have a Unicode locale extension');
8
5
  var extension = '-u';
9
6
  for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {
10
7
  var attr = attributes_1[_i];
@@ -19,7 +16,7 @@ function InsertUnicodeExtensionAndCanonicalize(locale, attributes, keywords) {
19
16
  }
20
17
  }
21
18
  if (extension === '-u') {
22
- return (0, CanonicalizeUnicodeLocaleId_1.CanonicalizeUnicodeLocaleId)(locale);
19
+ return CanonicalizeUnicodeLocaleId(locale);
23
20
  }
24
21
  var privateIndex = locale.indexOf('-x-');
25
22
  var newLocale;
@@ -31,5 +28,5 @@ function InsertUnicodeExtensionAndCanonicalize(locale, attributes, keywords) {
31
28
  var postExtension = locale.slice(privateIndex);
32
29
  newLocale = preExtension + extension + postExtension;
33
30
  }
34
- return (0, CanonicalizeUnicodeLocaleId_1.CanonicalizeUnicodeLocaleId)(newLocale);
31
+ return CanonicalizeUnicodeLocaleId(newLocale);
35
32
  }
@@ -1,4 +1,4 @@
1
- import { LookupMatcherResult } from './types';
1
+ import { LookupMatcherResult } from './types.js';
2
2
  /**
3
3
  * https://tc39.es/ecma402/#sec-lookupmatcher
4
4
  * @param availableLocales
@@ -1,20 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LookupMatcher = LookupMatcher;
4
- var BestAvailableLocale_1 = require("./BestAvailableLocale");
5
- var utils_1 = require("./utils");
1
+ import { BestAvailableLocale } from './BestAvailableLocale.js';
2
+ import { UNICODE_EXTENSION_SEQUENCE_REGEX } from './utils.js';
6
3
  /**
7
4
  * https://tc39.es/ecma402/#sec-lookupmatcher
8
5
  * @param availableLocales
9
6
  * @param requestedLocales
10
7
  * @param getDefaultLocale
11
8
  */
12
- function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
9
+ export function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
13
10
  var result = { locale: '' };
14
11
  for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
15
12
  var locale = requestedLocales_1[_i];
16
- var noExtensionLocale = locale.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');
17
- var availableLocale = (0, BestAvailableLocale_1.BestAvailableLocale)(availableLocales, noExtensionLocale);
13
+ var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');
14
+ var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
18
15
  if (availableLocale) {
19
16
  result.locale = availableLocale;
20
17
  if (locale !== noExtensionLocale) {
@@ -1,19 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LookupSupportedLocales = LookupSupportedLocales;
4
- var BestAvailableLocale_1 = require("./BestAvailableLocale");
5
- var utils_1 = require("./utils");
1
+ import { BestAvailableLocale } from './BestAvailableLocale.js';
2
+ import { UNICODE_EXTENSION_SEQUENCE_REGEX } from './utils.js';
6
3
  /**
7
4
  * https://tc39.es/ecma402/#sec-lookupsupportedlocales
8
5
  * @param availableLocales
9
6
  * @param requestedLocales
10
7
  */
11
- function LookupSupportedLocales(availableLocales, requestedLocales) {
8
+ export function LookupSupportedLocales(availableLocales, requestedLocales) {
12
9
  var subset = [];
13
10
  for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
14
11
  var locale = requestedLocales_1[_i];
15
- var noExtensionLocale = locale.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');
16
- var availableLocale = (0, BestAvailableLocale_1.BestAvailableLocale)(availableLocales, noExtensionLocale);
12
+ var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');
13
+ var availableLocale = BestAvailableLocale(availableLocales, noExtensionLocale);
17
14
  if (availableLocale) {
18
15
  subset.push(availableLocale);
19
16
  }
@@ -1,24 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResolveLocale = ResolveLocale;
4
- var BestFitMatcher_1 = require("./BestFitMatcher");
5
- var CanonicalizeUValue_1 = require("./CanonicalizeUValue");
6
- var InsertUnicodeExtensionAndCanonicalize_1 = require("./InsertUnicodeExtensionAndCanonicalize");
7
- var LookupMatcher_1 = require("./LookupMatcher");
8
- var UnicodeExtensionComponents_1 = require("./UnicodeExtensionComponents");
9
- var utils_1 = require("./utils");
1
+ import { BestFitMatcher } from './BestFitMatcher.js';
2
+ import { CanonicalizeUValue } from './CanonicalizeUValue.js';
3
+ import { InsertUnicodeExtensionAndCanonicalize } from './InsertUnicodeExtensionAndCanonicalize.js';
4
+ import { LookupMatcher } from './LookupMatcher.js';
5
+ import { UnicodeExtensionComponents } from './UnicodeExtensionComponents.js';
6
+ import { invariant } from './utils.js';
10
7
  /**
11
8
  * https://tc39.es/ecma402/#sec-resolvelocale
12
9
  */
13
- function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
10
+ export function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
14
11
  var _a;
15
12
  var matcher = options.localeMatcher;
16
13
  var r;
17
14
  if (matcher === 'lookup') {
18
- r = (0, LookupMatcher_1.LookupMatcher)(Array.from(availableLocales), requestedLocales, getDefaultLocale);
15
+ r = LookupMatcher(Array.from(availableLocales), requestedLocales, getDefaultLocale);
19
16
  }
20
17
  else {
21
- r = (0, BestFitMatcher_1.BestFitMatcher)(Array.from(availableLocales), requestedLocales, getDefaultLocale);
18
+ r = BestFitMatcher(Array.from(availableLocales), requestedLocales, getDefaultLocale);
22
19
  }
23
20
  if (r == null) {
24
21
  r = {
@@ -37,7 +34,7 @@ function ResolveLocale(availableLocales, requestedLocales, options, relevantExte
37
34
  var components;
38
35
  var keywords;
39
36
  if (r.extension) {
40
- components = (0, UnicodeExtensionComponents_1.UnicodeExtensionComponents)(r.extension);
37
+ components = UnicodeExtensionComponents(r.extension);
41
38
  keywords = components.keywords;
42
39
  }
43
40
  else {
@@ -47,9 +44,9 @@ function ResolveLocale(availableLocales, requestedLocales, options, relevantExte
47
44
  var _loop_1 = function (key) {
48
45
  // TODO: Shouldn't default to empty array, see TODO above
49
46
  var keyLocaleData = (_a = foundLocaleData === null || foundLocaleData === void 0 ? void 0 : foundLocaleData[key]) !== null && _a !== void 0 ? _a : [];
50
- (0, utils_1.invariant)(Array.isArray(keyLocaleData), "keyLocaleData for ".concat(key, " must be an array"));
47
+ invariant(Array.isArray(keyLocaleData), "keyLocaleData for ".concat(key, " must be an array"));
51
48
  var value = keyLocaleData[0];
52
- (0, utils_1.invariant)(value === undefined || typeof value === 'string', "value must be a string or undefined");
49
+ invariant(value === undefined || typeof value === 'string', "value must be a string or undefined");
53
50
  var supportedKeyword = void 0;
54
51
  var entry = keywords.find(function (k) { return k.key === key; });
55
52
  if (entry) {
@@ -72,10 +69,10 @@ function ResolveLocale(availableLocales, requestedLocales, options, relevantExte
72
69
  }
73
70
  }
74
71
  var optionsValue = options[key];
75
- (0, utils_1.invariant)(optionsValue == null || typeof optionsValue === 'string', "optionsValue must be a string or undefined");
72
+ invariant(optionsValue == null || typeof optionsValue === 'string', "optionsValue must be a string or undefined");
76
73
  if (typeof optionsValue === 'string') {
77
74
  var ukey = key.toLowerCase();
78
- optionsValue = (0, CanonicalizeUValue_1.CanonicalizeUValue)(ukey, optionsValue);
75
+ optionsValue = CanonicalizeUValue(ukey, optionsValue);
79
76
  if (optionsValue === '') {
80
77
  optionsValue = 'true';
81
78
  }
@@ -96,7 +93,7 @@ function ResolveLocale(availableLocales, requestedLocales, options, relevantExte
96
93
  var supportedAttributes = [];
97
94
  if (supportedKeywords.length > 0) {
98
95
  supportedAttributes = [];
99
- foundLocale = (0, InsertUnicodeExtensionAndCanonicalize_1.InsertUnicodeExtensionAndCanonicalize)(foundLocale, supportedAttributes, supportedKeywords);
96
+ foundLocale = InsertUnicodeExtensionAndCanonicalize(foundLocale, supportedAttributes, supportedKeywords);
100
97
  }
101
98
  result.locale = foundLocale;
102
99
  return result;
@@ -1,4 +1,4 @@
1
- import { Keyword } from './types';
1
+ import { Keyword } from './types.js';
2
2
  export declare function UnicodeExtensionComponents(extension: string): {
3
3
  attributes: string[];
4
4
  keywords: Array<Keyword>;
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnicodeExtensionComponents = UnicodeExtensionComponents;
4
- var utils_1 = require("./utils");
5
- function UnicodeExtensionComponents(extension) {
6
- (0, utils_1.invariant)(extension === extension.toLowerCase(), 'Expected extension to be lowercase');
7
- (0, utils_1.invariant)(extension.slice(0, 3) === '-u-', 'Expected extension to be a Unicode locale extension');
1
+ import { invariant } from './utils.js';
2
+ export function UnicodeExtensionComponents(extension) {
3
+ invariant(extension === extension.toLowerCase(), 'Expected extension to be lowercase');
4
+ invariant(extension.slice(0, 3) === '-u-', 'Expected extension to be a Unicode locale extension');
8
5
  var attributes = [];
9
6
  var keywords = [];
10
7
  var keyword;
@@ -20,7 +17,7 @@ function UnicodeExtensionComponents(extension) {
20
17
  len = e - k;
21
18
  }
22
19
  var subtag = extension.slice(k, k + len);
23
- (0, utils_1.invariant)(len >= 2, 'Expected a subtag to have at least 2 characters');
20
+ invariant(len >= 2, 'Expected a subtag to have at least 2 characters');
24
21
  if (keyword === undefined && len != 2) {
25
22
  if (attributes.indexOf(subtag) === -1) {
26
23
  attributes.push(subtag);
@@ -36,7 +33,7 @@ function UnicodeExtensionComponents(extension) {
36
33
  keyword.value = subtag;
37
34
  }
38
35
  else {
39
- (0, utils_1.invariant)(keyword !== undefined, 'Expected keyword to be defined');
36
+ invariant(keyword !== undefined, 'Expected keyword to be defined');
40
37
  keyword.value += '-' + subtag;
41
38
  }
42
39
  k += len + 1;
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnicodeExtensionValue = UnicodeExtensionValue;
4
- var utils_1 = require("./utils");
1
+ import { invariant } from './utils.js';
5
2
  /**
6
3
  * https://tc39.es/ecma402/#sec-unicodeextensionvalue
7
4
  * @param extension
8
5
  * @param key
9
6
  */
10
- function UnicodeExtensionValue(extension, key) {
11
- (0, utils_1.invariant)(key.length === 2, 'key must have 2 elements');
7
+ export function UnicodeExtensionValue(extension, key) {
8
+ invariant(key.length === 2, 'key must have 2 elements');
12
9
  var size = extension.length;
13
10
  var searchValue = "-".concat(key, "-");
14
11
  var pos = extension.indexOf(searchValue);
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.data = void 0;
4
- exports.data = {
1
+ export var data = {
5
2
  supplemental: {
6
3
  languageMatching: {
7
4
  'written-new': [
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.regions = void 0;
4
1
  // This file is generated from regions-gen.ts
5
- exports.regions = {
2
+ export var regions = {
6
3
  "001": [
7
4
  "001",
8
5
  "001-status-grouping",
package/abstract/types.js CHANGED
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
package/abstract/utils.js CHANGED
@@ -1,14 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UNICODE_EXTENSION_SEQUENCE_REGEX = void 0;
4
- exports.invariant = invariant;
5
- exports.findMatchingDistance = findMatchingDistance;
6
- exports.findBestMatch = findBestMatch;
7
- var tslib_1 = require("tslib");
8
- var languageMatching_1 = require("./languageMatching");
9
- var regions_generated_1 = require("./regions.generated");
10
- exports.UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
11
- function invariant(condition, message, Err) {
1
+ import { __spreadArray } from "tslib";
2
+ import { data as jsonData } from './languageMatching.js';
3
+ import { regions } from './regions.generated.js';
4
+ export var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;
5
+ export function invariant(condition, message, Err) {
12
6
  if (Err === void 0) { Err = Error; }
13
7
  if (!condition) {
14
8
  throw new Err(message);
@@ -20,9 +14,9 @@ var PROCESSED_DATA;
20
14
  function processData() {
21
15
  var _a, _b;
22
16
  if (!PROCESSED_DATA) {
23
- var paradigmLocales = (_b = (_a = languageMatching_1.data.supplemental.languageMatching['written-new'][0]) === null || _a === void 0 ? void 0 : _a.paradigmLocales) === null || _b === void 0 ? void 0 : _b._locales.split(' ');
24
- var matchVariables = languageMatching_1.data.supplemental.languageMatching['written-new'].slice(1, 5);
25
- var data = languageMatching_1.data.supplemental.languageMatching['written-new'].slice(5);
17
+ var paradigmLocales = (_b = (_a = jsonData.supplemental.languageMatching['written-new'][0]) === null || _a === void 0 ? void 0 : _a.paradigmLocales) === null || _b === void 0 ? void 0 : _b._locales.split(' ');
18
+ var matchVariables = jsonData.supplemental.languageMatching['written-new'].slice(1, 5);
19
+ var data = jsonData.supplemental.languageMatching['written-new'].slice(5);
26
20
  var matches = data.map(function (d) {
27
21
  var key = Object.keys(d)[0];
28
22
  var value = d[key];
@@ -41,7 +35,7 @@ function processData() {
41
35
  all[key.slice(1)] = value._value.split('+');
42
36
  return all;
43
37
  }, {}),
44
- paradigmLocales: tslib_1.__spreadArray(tslib_1.__spreadArray([], paradigmLocales, true), paradigmLocales.map(function (l) {
38
+ paradigmLocales: __spreadArray(__spreadArray([], paradigmLocales, true), paradigmLocales.map(function (l) {
45
39
  return new Intl.Locale(l.replace(/_/g, '-')).maximize().toString();
46
40
  }), true),
47
41
  };
@@ -57,8 +51,8 @@ function isMatched(locale, languageMatchInfoLocale, matchVariables) {
57
51
  ? matchVariables[region.slice(1)]
58
52
  : matchVariables[region.slice(2)];
59
53
  var expandedMatchedRegions = matchRegions
60
- .map(function (r) { return regions_generated_1.regions[r] || [r]; })
61
- .reduce(function (all, list) { return tslib_1.__spreadArray(tslib_1.__spreadArray([], all, true), list, true); }, []);
54
+ .map(function (r) { return regions[r] || [r]; })
55
+ .reduce(function (all, list) { return __spreadArray(__spreadArray([], all, true), list, true); }, []);
62
56
  matches && (matches = !(expandedMatchedRegions.indexOf(locale.region || '') > -1 !=
63
57
  shouldInclude));
64
58
  }
@@ -97,7 +91,7 @@ function findMatchingDistanceForLSR(desired, supported, data) {
97
91
  }
98
92
  throw new Error('No matching distance found');
99
93
  }
100
- function findMatchingDistance(desired, supported) {
94
+ export function findMatchingDistance(desired, supported) {
101
95
  var desiredLocale = new Intl.Locale(desired).maximize();
102
96
  var supportedLocale = new Intl.Locale(supported).maximize();
103
97
  var desiredLSR = {
@@ -139,7 +133,7 @@ function findMatchingDistance(desired, supported) {
139
133
  }
140
134
  return matchingDistance;
141
135
  }
142
- function findBestMatch(requestedLocales, supportedLocales, threshold) {
136
+ export function findBestMatch(requestedLocales, supportedLocales, threshold) {
143
137
  if (threshold === void 0) { threshold = DEFAULT_MATCHING_THRESHOLD; }
144
138
  var lowestDistance = Infinity;
145
139
  var result = {
package/index.d.ts CHANGED
@@ -2,5 +2,5 @@ export interface Opts {
2
2
  algorithm: 'lookup' | 'best fit';
3
3
  }
4
4
  export declare function match(requestedLocales: readonly string[], availableLocales: readonly string[], defaultLocale: string, opts?: Opts): string;
5
- export { LookupSupportedLocales } from './abstract/LookupSupportedLocales';
6
- export { ResolveLocale } from './abstract/ResolveLocale';
5
+ export { LookupSupportedLocales } from './abstract/LookupSupportedLocales.js';
6
+ export { ResolveLocale } from './abstract/ResolveLocale.js';
package/index.js CHANGED
@@ -1,15 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResolveLocale = exports.LookupSupportedLocales = void 0;
4
- exports.match = match;
5
- var CanonicalizeLocaleList_1 = require("./abstract/CanonicalizeLocaleList");
6
- var ResolveLocale_1 = require("./abstract/ResolveLocale");
7
- function match(requestedLocales, availableLocales, defaultLocale, opts) {
8
- return (0, ResolveLocale_1.ResolveLocale)(availableLocales, (0, CanonicalizeLocaleList_1.CanonicalizeLocaleList)(requestedLocales), {
1
+ import { CanonicalizeLocaleList } from './abstract/CanonicalizeLocaleList.js';
2
+ import { ResolveLocale } from './abstract/ResolveLocale.js';
3
+ export function match(requestedLocales, availableLocales, defaultLocale, opts) {
4
+ return ResolveLocale(availableLocales, CanonicalizeLocaleList(requestedLocales), {
9
5
  localeMatcher: (opts === null || opts === void 0 ? void 0 : opts.algorithm) || 'best fit',
10
6
  }, [], {}, function () { return defaultLocale; }).locale;
11
7
  }
12
- var LookupSupportedLocales_1 = require("./abstract/LookupSupportedLocales");
13
- Object.defineProperty(exports, "LookupSupportedLocales", { enumerable: true, get: function () { return LookupSupportedLocales_1.LookupSupportedLocales; } });
14
- var ResolveLocale_2 = require("./abstract/ResolveLocale");
15
- Object.defineProperty(exports, "ResolveLocale", { enumerable: true, get: function () { return ResolveLocale_2.ResolveLocale; } });
8
+ export { LookupSupportedLocales } from './abstract/LookupSupportedLocales.js';
9
+ export { ResolveLocale } from './abstract/ResolveLocale.js';
package/package.json CHANGED
@@ -1,10 +1,15 @@
1
1
  {
2
2
  "name": "@formatjs/intl-localematcher",
3
3
  "description": "Intl.LocaleMatcher ponyfill",
4
- "version": "0.6.1",
4
+ "version": "0.7.0",
5
5
  "license": "MIT",
6
6
  "author": "Long Ho <holevietlong@gmail.com>",
7
+ "type": "module",
8
+ "sideEffects": false,
7
9
  "types": "index.d.ts",
10
+ "exports": {
11
+ ".": "./index.js"
12
+ },
8
13
  "dependencies": {
9
14
  "tslib": "^2.8.0"
10
15
  },
@@ -19,7 +24,5 @@
19
24
  "react-intl",
20
25
  "tc39"
21
26
  ],
22
- "main": "index.js",
23
- "module": "lib/index.js",
24
27
  "repository": "formatjs/formatjs.git"
25
28
  }
@@ -1,6 +0,0 @@
1
- /**
2
- * https://tc39.es/ecma402/#sec-bestavailablelocale
3
- * @param availableLocales
4
- * @param locale
5
- */
6
- export declare function BestAvailableLocale(availableLocales: readonly string[], locale: string): string | undefined;
@@ -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.indexOf(candidate) > -1) {
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,8 +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: readonly string[], requestedLocales: readonly string[], getDefaultLocale: () => string): LookupMatcherResult;
@@ -1,31 +0,0 @@
1
- import { UNICODE_EXTENSION_SEQUENCE_REGEX, findBestMatch } from './utils';
2
- /**
3
- * https://tc39.es/ecma402/#sec-bestfitmatcher
4
- * @param availableLocales
5
- * @param requestedLocales
6
- * @param getDefaultLocale
7
- */
8
- export function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
9
- var foundLocale;
10
- var extension;
11
- var noExtensionLocales = [];
12
- var noExtensionLocaleMap = requestedLocales.reduce(function (all, l) {
13
- var noExtensionLocale = l.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');
14
- noExtensionLocales.push(noExtensionLocale);
15
- all[noExtensionLocale] = l;
16
- return all;
17
- }, {});
18
- var result = findBestMatch(noExtensionLocales, availableLocales);
19
- if (result.matchedSupportedLocale && result.matchedDesiredLocale) {
20
- foundLocale = result.matchedSupportedLocale;
21
- extension =
22
- noExtensionLocaleMap[result.matchedDesiredLocale].slice(result.matchedDesiredLocale.length) || undefined;
23
- }
24
- if (!foundLocale) {
25
- return { locale: getDefaultLocale() };
26
- }
27
- return {
28
- locale: foundLocale,
29
- extension: extension,
30
- };
31
- }
@@ -1,5 +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 | readonly string[]): string[];
@@ -1,7 +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
- return Intl.getCanonicalLocales(locales);
7
- }
@@ -1 +0,0 @@
1
- export declare function CanonicalizeUValue(ukey: string, uvalue: string): string;
@@ -1,8 +0,0 @@
1
- import { invariant } from './utils';
2
- export function CanonicalizeUValue(ukey, uvalue) {
3
- // TODO: Implement algorithm for CanonicalizeUValue per https://tc39.es/ecma402/#sec-canonicalizeuvalue
4
- var lowerValue = uvalue.toLowerCase();
5
- invariant(ukey !== undefined, "ukey must be defined");
6
- var canonicalized = lowerValue;
7
- return canonicalized;
8
- }
@@ -1 +0,0 @@
1
- export declare function CanonicalizeUnicodeLocaleId(locale: string): string;
@@ -1,3 +0,0 @@
1
- export function CanonicalizeUnicodeLocaleId(locale) {
2
- return Intl.getCanonicalLocales(locale)[0];
3
- }
@@ -1,2 +0,0 @@
1
- import { Keyword } from './types';
2
- export declare function InsertUnicodeExtensionAndCanonicalize(locale: string, attributes: string[], keywords: Array<Keyword>): string;
@@ -1,32 +0,0 @@
1
- import { CanonicalizeUnicodeLocaleId } from './CanonicalizeUnicodeLocaleId';
2
- import { invariant } from './utils';
3
- export function InsertUnicodeExtensionAndCanonicalize(locale, attributes, keywords) {
4
- invariant(locale.indexOf('-u-') === -1, 'Expected locale to not have a Unicode locale extension');
5
- var extension = '-u';
6
- for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {
7
- var attr = attributes_1[_i];
8
- extension += "-".concat(attr);
9
- }
10
- for (var _a = 0, keywords_1 = keywords; _a < keywords_1.length; _a++) {
11
- var kw = keywords_1[_a];
12
- var key = kw.key, value = kw.value;
13
- extension += "-".concat(key);
14
- if (value !== '') {
15
- extension += "-".concat(value);
16
- }
17
- }
18
- if (extension === '-u') {
19
- return CanonicalizeUnicodeLocaleId(locale);
20
- }
21
- var privateIndex = locale.indexOf('-x-');
22
- var newLocale;
23
- if (privateIndex === -1) {
24
- newLocale = locale + extension;
25
- }
26
- else {
27
- var preExtension = locale.slice(0, privateIndex);
28
- var postExtension = locale.slice(privateIndex);
29
- newLocale = preExtension + extension + postExtension;
30
- }
31
- return CanonicalizeUnicodeLocaleId(newLocale);
32
- }