@formatjs/intl-datetimeformat 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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@formatjs/intl-datetimeformat",
3
3
  "description": "Intl.DateTimeFormat polyfill",
4
- "version": "7.0.4",
4
+ "version": "7.0.6",
5
5
  "license": "MIT",
6
6
  "author": "Long Ho <holevietlong@gmail.com>",
7
7
  "type": "module",
@@ -12,17 +12,18 @@
12
12
  "./polyfill-force.js": "./polyfill-force.js",
13
13
  "./should-polyfill.js": "./should-polyfill.js",
14
14
  "./add-all-tz.js": "./add-all-tz.js",
15
+ "./add-golden-tz.js": "./add-golden-tz.js",
15
16
  "./locale-data/*": "./locale-data/*"
16
17
  },
17
18
  "dependencies": {
18
19
  "decimal.js": "^10.4.3",
19
20
  "tslib": "^2.8.0",
20
- "@formatjs/ecma402-abstract": "3.0.3",
21
- "@formatjs/intl-localematcher": "0.7.2"
21
+ "@formatjs/ecma402-abstract": "3.0.5",
22
+ "@formatjs/intl-localematcher": "0.7.3"
22
23
  },
23
24
  "devDependencies": {
24
- "@formatjs/intl-getcanonicallocales": "3.0.3",
25
- "@formatjs/intl-locale": "5.0.4"
25
+ "@formatjs/intl-getcanonicallocales": "3.0.4",
26
+ "@formatjs/intl-locale": "5.0.6"
26
27
  },
27
28
  "bugs": "https://github.com/formatjs/formatjs/issues",
28
29
  "homepage": "https://github.com/formatjs/formatjs#readme",
package/polyfill.iife.js CHANGED
@@ -2987,6 +2987,11 @@
2987
2987
  return zoneNames.has(uppercasedTz) || linkNames.has(uppercasedTz);
2988
2988
  }
2989
2989
 
2990
+ // node_modules/.aspect_rules_js/@formatjs+ecma402-abstract@0.0.0/node_modules/@formatjs/ecma402-abstract/NumberFormat/decimal-cache.js
2991
+ var getPowerOf10 = memoize(function(exponent) {
2992
+ return Decimal.pow(10, exponent);
2993
+ });
2994
+
2990
2995
  // node_modules/.aspect_rules_js/@formatjs+ecma402-abstract@0.0.0/node_modules/@formatjs/ecma402-abstract/NumberFormat/ComputeExponentForMagnitude.js
2991
2996
  Decimal.set({
2992
2997
  toExpPos: 100
@@ -7048,7 +7053,7 @@
7048
7053
  }
7049
7054
  throw new Error("No matching distance found");
7050
7055
  }
7051
- function findMatchingDistance(desired, supported) {
7056
+ function findMatchingDistanceImpl(desired, supported) {
7052
7057
  var desiredLocale = new Intl.Locale(desired).maximize();
7053
7058
  var supportedLocale = new Intl.Locale(supported).maximize();
7054
7059
  var desiredLSR = {
@@ -7090,7 +7095,26 @@
7090
7095
  }
7091
7096
  return matchingDistance;
7092
7097
  }
7098
+ var findMatchingDistance = memoize(findMatchingDistanceImpl, {
7099
+ serializer: function(args) {
7100
+ return "".concat(args[0], "|").concat(args[1]);
7101
+ }
7102
+ });
7103
+ function getFallbackCandidates(locale) {
7104
+ var candidates = [];
7105
+ var current = locale;
7106
+ while (current) {
7107
+ candidates.push(current);
7108
+ var lastDash = current.lastIndexOf("-");
7109
+ if (lastDash === -1)
7110
+ break;
7111
+ current = current.substring(0, lastDash);
7112
+ }
7113
+ return candidates;
7114
+ }
7115
+ var canonicalizedSupportedCache = /* @__PURE__ */ new WeakMap();
7093
7116
  function findBestMatch(requestedLocales, supportedLocales2, threshold) {
7117
+ var _a;
7094
7118
  if (threshold === void 0) {
7095
7119
  threshold = DEFAULT_MATCHING_THRESHOLD;
7096
7120
  }
@@ -7099,17 +7123,84 @@
7099
7123
  matchedDesiredLocale: "",
7100
7124
  distances: {}
7101
7125
  };
7102
- requestedLocales.forEach(function(desired, i) {
7103
- if (!result.distances[desired]) {
7104
- result.distances[desired] = {};
7105
- }
7106
- supportedLocales2.forEach(function(supported) {
7107
- var distance = findMatchingDistance(desired, supported) + 0 + i * 40;
7108
- result.distances[desired][supported] = distance;
7126
+ var canonicalizedSupportedLocales = canonicalizedSupportedCache.get(supportedLocales2);
7127
+ if (!canonicalizedSupportedLocales) {
7128
+ canonicalizedSupportedLocales = supportedLocales2.map(function(locale) {
7129
+ try {
7130
+ var canonical = Intl.getCanonicalLocales([locale]);
7131
+ return canonical[0] || locale;
7132
+ } catch (_a2) {
7133
+ return locale;
7134
+ }
7135
+ });
7136
+ canonicalizedSupportedCache.set(supportedLocales2, canonicalizedSupportedLocales);
7137
+ }
7138
+ var supportedSet = new Set(canonicalizedSupportedLocales);
7139
+ for (var i = 0; i < requestedLocales.length; i++) {
7140
+ var desired = requestedLocales[i];
7141
+ if (supportedSet.has(desired)) {
7142
+ var distance = 0 + i * 40;
7143
+ result.distances[desired] = (_a = {}, _a[desired] = distance, _a);
7109
7144
  if (distance < lowestDistance) {
7110
7145
  lowestDistance = distance;
7111
7146
  result.matchedDesiredLocale = desired;
7112
- result.matchedSupportedLocale = supported;
7147
+ result.matchedSupportedLocale = desired;
7148
+ }
7149
+ if (i === 0) {
7150
+ return result;
7151
+ }
7152
+ }
7153
+ }
7154
+ for (var i = 0; i < requestedLocales.length; i++) {
7155
+ var desired = requestedLocales[i];
7156
+ try {
7157
+ var maximized = new Intl.Locale(desired).maximize().toString();
7158
+ if (maximized !== desired) {
7159
+ var maximizedCandidates = getFallbackCandidates(maximized);
7160
+ for (var j = 0; j < maximizedCandidates.length; j++) {
7161
+ var candidate = maximizedCandidates[j];
7162
+ if (candidate === desired)
7163
+ continue;
7164
+ if (supportedSet.has(candidate)) {
7165
+ var distance = void 0;
7166
+ try {
7167
+ var candidateMaximized = new Intl.Locale(candidate).maximize().toString();
7168
+ distance = candidateMaximized === maximized ? 0 + i * 40 : j * 10 + i * 40;
7169
+ } catch (_b) {
7170
+ distance = j * 10 + i * 40;
7171
+ }
7172
+ if (!result.distances[desired]) {
7173
+ result.distances[desired] = {};
7174
+ }
7175
+ result.distances[desired][candidate] = distance;
7176
+ if (distance < lowestDistance) {
7177
+ lowestDistance = distance;
7178
+ result.matchedDesiredLocale = desired;
7179
+ result.matchedSupportedLocale = candidate;
7180
+ }
7181
+ break;
7182
+ }
7183
+ }
7184
+ }
7185
+ } catch (_c) {
7186
+ }
7187
+ }
7188
+ if (result.matchedSupportedLocale && lowestDistance === 0) {
7189
+ return result;
7190
+ }
7191
+ requestedLocales.forEach(function(desired2, i2) {
7192
+ if (!result.distances[desired2]) {
7193
+ result.distances[desired2] = {};
7194
+ }
7195
+ canonicalizedSupportedLocales.forEach(function(canonicalLocale, supportedIndex) {
7196
+ var originalSupported = supportedLocales2[supportedIndex];
7197
+ var distance2 = findMatchingDistance(desired2, canonicalLocale);
7198
+ var finalDistance = distance2 + 0 + i2 * 40;
7199
+ result.distances[desired2][originalSupported] = finalDistance;
7200
+ if (finalDistance < lowestDistance) {
7201
+ lowestDistance = finalDistance;
7202
+ result.matchedDesiredLocale = desired2;
7203
+ result.matchedSupportedLocale = originalSupported;
7113
7204
  }
7114
7205
  });
7115
7206
  });
@@ -7190,10 +7281,16 @@
7190
7281
  }
7191
7282
 
7192
7283
  // node_modules/.aspect_rules_js/@formatjs+intl-localematcher@0.0.0/node_modules/@formatjs/intl-localematcher/abstract/BestAvailableLocale.js
7284
+ var availableLocalesSetCache = /* @__PURE__ */ new WeakMap();
7193
7285
  function BestAvailableLocale(availableLocales, locale) {
7286
+ var availableSet = availableLocalesSetCache.get(availableLocales);
7287
+ if (!availableSet) {
7288
+ availableSet = new Set(availableLocales);
7289
+ availableLocalesSetCache.set(availableLocales, availableSet);
7290
+ }
7194
7291
  var candidate = locale;
7195
7292
  while (true) {
7196
- if (availableLocales.indexOf(candidate) > -1) {
7293
+ if (availableSet.has(candidate)) {
7197
7294
  return candidate;
7198
7295
  }
7199
7296
  var pos = candidate.lastIndexOf("-");
package/src/types.d.ts CHANGED
@@ -13,7 +13,7 @@ export interface UnpackedData {
13
13
  offsets: number[];
14
14
  }
15
15
  export type ZoneData = [
16
- (number | string),
16
+ number | string,
17
17
  number,
18
18
  number,
19
19
  number