@formatjs/intl-displaynames 7.0.4 → 7.0.6

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 (2) hide show
  1. package/package.json +5 -5
  2. package/polyfill.iife.js +107 -10
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@formatjs/intl-displaynames",
3
3
  "description": "Polyfill for: https://tc39.es/proposal-intl-displaynames",
4
- "version": "7.0.4",
4
+ "version": "7.0.6",
5
5
  "license": "MIT",
6
6
  "author": "Linjie Ding <pyrocat101@users.noreply.github.com>",
7
7
  "type": "module",
@@ -15,12 +15,12 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "tslib": "^2.8.0",
18
- "@formatjs/ecma402-abstract": "3.0.3",
19
- "@formatjs/intl-localematcher": "0.7.2"
18
+ "@formatjs/ecma402-abstract": "3.0.5",
19
+ "@formatjs/intl-localematcher": "0.7.3"
20
20
  },
21
21
  "devDependencies": {
22
- "@formatjs/intl-getcanonicallocales": "3.0.3",
23
- "@formatjs/intl-locale": "5.0.4"
22
+ "@formatjs/intl-getcanonicallocales": "3.0.4",
23
+ "@formatjs/intl-locale": "5.0.6"
24
24
  },
25
25
  "bugs": "https://github.com/formatjs/formatjs/issues",
26
26
  "homepage": "https://github.com/formatjs/formatjs",
package/polyfill.iife.js CHANGED
@@ -2705,6 +2705,11 @@
2705
2705
  return true;
2706
2706
  }
2707
2707
 
2708
+ // node_modules/.aspect_rules_js/@formatjs+ecma402-abstract@0.0.0/node_modules/@formatjs/ecma402-abstract/NumberFormat/decimal-cache.js
2709
+ var getPowerOf10 = memoize(function(exponent) {
2710
+ return Decimal.pow(10, exponent);
2711
+ });
2712
+
2708
2713
  // node_modules/.aspect_rules_js/@formatjs+ecma402-abstract@0.0.0/node_modules/@formatjs/ecma402-abstract/NumberFormat/ComputeExponentForMagnitude.js
2709
2714
  Decimal.set({
2710
2715
  toExpPos: 100
@@ -6766,7 +6771,7 @@
6766
6771
  }
6767
6772
  throw new Error("No matching distance found");
6768
6773
  }
6769
- function findMatchingDistance(desired, supported) {
6774
+ function findMatchingDistanceImpl(desired, supported) {
6770
6775
  var desiredLocale = new Intl.Locale(desired).maximize();
6771
6776
  var supportedLocale = new Intl.Locale(supported).maximize();
6772
6777
  var desiredLSR = {
@@ -6808,7 +6813,26 @@
6808
6813
  }
6809
6814
  return matchingDistance;
6810
6815
  }
6816
+ var findMatchingDistance = memoize(findMatchingDistanceImpl, {
6817
+ serializer: function(args) {
6818
+ return "".concat(args[0], "|").concat(args[1]);
6819
+ }
6820
+ });
6821
+ function getFallbackCandidates(locale) {
6822
+ var candidates = [];
6823
+ var current = locale;
6824
+ while (current) {
6825
+ candidates.push(current);
6826
+ var lastDash = current.lastIndexOf("-");
6827
+ if (lastDash === -1)
6828
+ break;
6829
+ current = current.substring(0, lastDash);
6830
+ }
6831
+ return candidates;
6832
+ }
6833
+ var canonicalizedSupportedCache = /* @__PURE__ */ new WeakMap();
6811
6834
  function findBestMatch(requestedLocales, supportedLocales2, threshold) {
6835
+ var _a;
6812
6836
  if (threshold === void 0) {
6813
6837
  threshold = DEFAULT_MATCHING_THRESHOLD;
6814
6838
  }
@@ -6817,17 +6841,84 @@
6817
6841
  matchedDesiredLocale: "",
6818
6842
  distances: {}
6819
6843
  };
6820
- requestedLocales.forEach(function(desired, i) {
6821
- if (!result.distances[desired]) {
6822
- result.distances[desired] = {};
6823
- }
6824
- supportedLocales2.forEach(function(supported) {
6825
- var distance = findMatchingDistance(desired, supported) + 0 + i * 40;
6826
- result.distances[desired][supported] = distance;
6844
+ var canonicalizedSupportedLocales = canonicalizedSupportedCache.get(supportedLocales2);
6845
+ if (!canonicalizedSupportedLocales) {
6846
+ canonicalizedSupportedLocales = supportedLocales2.map(function(locale) {
6847
+ try {
6848
+ var canonical = Intl.getCanonicalLocales([locale]);
6849
+ return canonical[0] || locale;
6850
+ } catch (_a2) {
6851
+ return locale;
6852
+ }
6853
+ });
6854
+ canonicalizedSupportedCache.set(supportedLocales2, canonicalizedSupportedLocales);
6855
+ }
6856
+ var supportedSet = new Set(canonicalizedSupportedLocales);
6857
+ for (var i = 0; i < requestedLocales.length; i++) {
6858
+ var desired = requestedLocales[i];
6859
+ if (supportedSet.has(desired)) {
6860
+ var distance = 0 + i * 40;
6861
+ result.distances[desired] = (_a = {}, _a[desired] = distance, _a);
6827
6862
  if (distance < lowestDistance) {
6828
6863
  lowestDistance = distance;
6829
6864
  result.matchedDesiredLocale = desired;
6830
- result.matchedSupportedLocale = supported;
6865
+ result.matchedSupportedLocale = desired;
6866
+ }
6867
+ if (i === 0) {
6868
+ return result;
6869
+ }
6870
+ }
6871
+ }
6872
+ for (var i = 0; i < requestedLocales.length; i++) {
6873
+ var desired = requestedLocales[i];
6874
+ try {
6875
+ var maximized = new Intl.Locale(desired).maximize().toString();
6876
+ if (maximized !== desired) {
6877
+ var maximizedCandidates = getFallbackCandidates(maximized);
6878
+ for (var j = 0; j < maximizedCandidates.length; j++) {
6879
+ var candidate = maximizedCandidates[j];
6880
+ if (candidate === desired)
6881
+ continue;
6882
+ if (supportedSet.has(candidate)) {
6883
+ var distance = void 0;
6884
+ try {
6885
+ var candidateMaximized = new Intl.Locale(candidate).maximize().toString();
6886
+ distance = candidateMaximized === maximized ? 0 + i * 40 : j * 10 + i * 40;
6887
+ } catch (_b) {
6888
+ distance = j * 10 + i * 40;
6889
+ }
6890
+ if (!result.distances[desired]) {
6891
+ result.distances[desired] = {};
6892
+ }
6893
+ result.distances[desired][candidate] = distance;
6894
+ if (distance < lowestDistance) {
6895
+ lowestDistance = distance;
6896
+ result.matchedDesiredLocale = desired;
6897
+ result.matchedSupportedLocale = candidate;
6898
+ }
6899
+ break;
6900
+ }
6901
+ }
6902
+ }
6903
+ } catch (_c) {
6904
+ }
6905
+ }
6906
+ if (result.matchedSupportedLocale && lowestDistance === 0) {
6907
+ return result;
6908
+ }
6909
+ requestedLocales.forEach(function(desired2, i2) {
6910
+ if (!result.distances[desired2]) {
6911
+ result.distances[desired2] = {};
6912
+ }
6913
+ canonicalizedSupportedLocales.forEach(function(canonicalLocale, supportedIndex) {
6914
+ var originalSupported = supportedLocales2[supportedIndex];
6915
+ var distance2 = findMatchingDistance(desired2, canonicalLocale);
6916
+ var finalDistance = distance2 + 0 + i2 * 40;
6917
+ result.distances[desired2][originalSupported] = finalDistance;
6918
+ if (finalDistance < lowestDistance) {
6919
+ lowestDistance = finalDistance;
6920
+ result.matchedDesiredLocale = desired2;
6921
+ result.matchedSupportedLocale = originalSupported;
6831
6922
  }
6832
6923
  });
6833
6924
  });
@@ -6908,10 +6999,16 @@
6908
6999
  }
6909
7000
 
6910
7001
  // node_modules/.aspect_rules_js/@formatjs+intl-localematcher@0.0.0/node_modules/@formatjs/intl-localematcher/abstract/BestAvailableLocale.js
7002
+ var availableLocalesSetCache = /* @__PURE__ */ new WeakMap();
6911
7003
  function BestAvailableLocale(availableLocales, locale) {
7004
+ var availableSet = availableLocalesSetCache.get(availableLocales);
7005
+ if (!availableSet) {
7006
+ availableSet = new Set(availableLocales);
7007
+ availableLocalesSetCache.set(availableLocales, availableSet);
7008
+ }
6912
7009
  var candidate = locale;
6913
7010
  while (true) {
6914
- if (availableLocales.indexOf(candidate) > -1) {
7011
+ if (availableSet.has(candidate)) {
6915
7012
  return candidate;
6916
7013
  }
6917
7014
  var pos = candidate.lastIndexOf("-");