@formatjs/intl-getcanonicallocales 1.2.0 → 1.2.4

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.
@@ -1,6 +1,7 @@
1
1
  import { languageAlias, variantAlias, scriptAlias, territoryAlias, } from './aliases';
2
2
  import { parseUnicodeLanguageId, isUnicodeVariantSubtag, isUnicodeLanguageSubtag, SEPARATOR, } from './parser';
3
3
  import * as likelySubtags from 'cldr-core/supplemental/likelySubtags.json';
4
+ import { emitUnicodeLanguageId } from './emitter';
4
5
  function canonicalizeAttrs(strs) {
5
6
  return Object.keys(strs.reduce((all, str) => {
6
7
  all[str.toLowerCase()] = 1;
@@ -30,6 +31,15 @@ function compareKV(t1, t2) {
30
31
  function compareExtension(e1, e2) {
31
32
  return e1.type < e2.type ? -1 : e1.type > e2.type ? 1 : 0;
32
33
  }
34
+ function mergeVariants(v1, v2) {
35
+ const result = [...v1];
36
+ for (const v of v2) {
37
+ if (v1.indexOf(v) < 0) {
38
+ result.push(v);
39
+ }
40
+ }
41
+ return result;
42
+ }
33
43
  /**
34
44
  * CAVEAT: We don't do this section in the spec bc they have no JSON data
35
45
  * Use the bcp47 data to replace keys, types, tfields, and tvalues by their canonical forms. See Section 3.6.4 U Extension Data Files) and Section 3.7.1 T Extension Data Files. The aliases are in the alias attribute value, while the canonical is in the name attribute value. For example,
@@ -39,29 +49,98 @@ We get the following transformation:
39
49
  en-u-ms-imperial ⇒ en-u-ms-uksystem
40
50
  * @param lang
41
51
  */
42
- export function canonicalizeUnicodeLanguageId(lang) {
52
+ export function canonicalizeUnicodeLanguageId(unicodeLanguageId) {
43
53
  /**
44
- * If the language subtag matches the type attribute of a languageAlias element in Supplemental Data,
45
- * replace the language subtag with the replacement value.
46
- * - If there are additional subtags in the replacement value, add them to the result, but only if there is no corresponding subtag already in the tag.
47
- * - Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
54
+ * If the language subtag matches the type attribute of a languageAlias element in Supplemental Data, replace the language subtag with the replacement value.
55
+ * 1. If there are additional subtags in the replacement value, add them to the result, but only if there is no corresponding subtag already in the tag.
56
+ * 2. Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
48
57
  */
49
- let sourceLang = lang.lang.toLowerCase();
50
- const langAlias = languageAlias[sourceLang];
51
- if (langAlias) {
52
- const langAliasAst = parseUnicodeLanguageId(langAlias.split('-'));
53
- lang.lang = langAliasAst.lang;
54
- lang.script = lang.script || langAliasAst.script;
55
- lang.region = lang.region || langAliasAst.region;
58
+ // From https://github.com/unicode-org/icu/blob/master/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java#L1246
59
+ // Try language _ variant
60
+ let finalLangAst = unicodeLanguageId;
61
+ if (unicodeLanguageId.variants.length) {
62
+ let replacedLang = '';
63
+ for (const variant of unicodeLanguageId.variants) {
64
+ if ((replacedLang =
65
+ languageAlias[emitUnicodeLanguageId({
66
+ lang: unicodeLanguageId.lang,
67
+ variants: [variant],
68
+ })])) {
69
+ const replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
70
+ finalLangAst = {
71
+ lang: replacedLangAst.lang,
72
+ script: finalLangAst.script || replacedLangAst.script,
73
+ region: finalLangAst.region || replacedLangAst.region,
74
+ variants: mergeVariants(finalLangAst.variants, replacedLangAst.variants),
75
+ };
76
+ break;
77
+ }
78
+ }
79
+ }
80
+ // language _ script _ country
81
+ // ug-Arab-CN -> ug-CN
82
+ if (finalLangAst.script && finalLangAst.region) {
83
+ const replacedLang = languageAlias[emitUnicodeLanguageId({
84
+ lang: finalLangAst.lang,
85
+ script: finalLangAst.script,
86
+ region: finalLangAst.region,
87
+ variants: [],
88
+ })];
89
+ if (replacedLang) {
90
+ const replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
91
+ finalLangAst = {
92
+ lang: replacedLangAst.lang,
93
+ script: replacedLangAst.script,
94
+ region: replacedLangAst.region,
95
+ variants: finalLangAst.variants,
96
+ };
97
+ }
98
+ }
99
+ // language _ country
100
+ // eg. az_AZ -> az_Latn_A
101
+ if (finalLangAst.region) {
102
+ const replacedLang = languageAlias[emitUnicodeLanguageId({
103
+ lang: finalLangAst.lang,
104
+ region: finalLangAst.region,
105
+ variants: [],
106
+ })];
107
+ if (replacedLang) {
108
+ const replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
109
+ finalLangAst = {
110
+ lang: replacedLangAst.lang,
111
+ script: finalLangAst.script || replacedLangAst.script,
112
+ region: replacedLangAst.region,
113
+ variants: finalLangAst.variants,
114
+ };
115
+ }
116
+ }
117
+ // only language
118
+ // e.g. twi -> ak
119
+ const replacedLang = languageAlias[emitUnicodeLanguageId({
120
+ lang: finalLangAst.lang,
121
+ variants: [],
122
+ })];
123
+ if (replacedLang) {
124
+ const replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
125
+ finalLangAst = {
126
+ lang: replacedLangAst.lang,
127
+ script: finalLangAst.script || replacedLangAst.script,
128
+ region: finalLangAst.region || replacedLangAst.region,
129
+ variants: finalLangAst.variants,
130
+ };
56
131
  }
57
- if (lang.region) {
58
- const region = lang.region.toUpperCase();
132
+ if (finalLangAst.region) {
133
+ const region = finalLangAst.region.toUpperCase();
59
134
  const regionAlias = territoryAlias[region];
60
135
  let replacedRegion;
61
136
  if (regionAlias) {
62
137
  const regions = regionAlias.split(' ');
63
138
  replacedRegion = regions[0];
64
- const likelySubtag = likelySubtags.supplemental.likelySubtags[lang.lang];
139
+ const likelySubtag = likelySubtags.supplemental.likelySubtags[emitUnicodeLanguageId({
140
+ lang: finalLangAst.lang,
141
+ script: finalLangAst.script,
142
+ variants: [],
143
+ })];
65
144
  if (likelySubtag) {
66
145
  const { region: likelyRegion } = parseUnicodeLanguageId(likelySubtag.split(SEPARATOR));
67
146
  if (likelyRegion && regions.indexOf(likelyRegion) > -1) {
@@ -70,32 +149,35 @@ export function canonicalizeUnicodeLanguageId(lang) {
70
149
  }
71
150
  }
72
151
  if (replacedRegion) {
73
- lang.region = replacedRegion;
152
+ finalLangAst.region = replacedRegion;
74
153
  }
154
+ finalLangAst.region = finalLangAst.region.toUpperCase();
75
155
  }
76
- if (lang.script) {
77
- lang.script =
78
- lang.script[0].toUpperCase() + lang.script.slice(1).toLowerCase();
79
- if (scriptAlias[lang.script]) {
80
- lang.script = scriptAlias[lang.script];
156
+ if (finalLangAst.script) {
157
+ finalLangAst.script =
158
+ finalLangAst.script[0].toUpperCase() +
159
+ finalLangAst.script.slice(1).toLowerCase();
160
+ if (scriptAlias[finalLangAst.script]) {
161
+ finalLangAst.script = scriptAlias[finalLangAst.script];
81
162
  }
82
163
  }
83
- if (lang.variants.length) {
84
- for (let i = 0; i < lang.variants.length; i++) {
85
- let variant = lang.variants[i].toLowerCase();
164
+ if (finalLangAst.variants.length) {
165
+ for (let i = 0; i < finalLangAst.variants.length; i++) {
166
+ let variant = finalLangAst.variants[i].toLowerCase();
86
167
  if (variantAlias[variant]) {
87
168
  const alias = variantAlias[variant];
88
169
  if (isUnicodeVariantSubtag(alias)) {
89
- lang.variants[i] = alias;
170
+ finalLangAst.variants[i] = alias;
90
171
  }
91
172
  else if (isUnicodeLanguageSubtag(alias)) {
92
173
  // Yes this can happen per the spec
93
- lang.lang = alias;
174
+ finalLangAst.lang = alias;
94
175
  }
95
176
  }
96
177
  }
97
- lang.variants.sort();
178
+ finalLangAst.variants.sort();
98
179
  }
180
+ return finalLangAst;
99
181
  }
100
182
  /**
101
183
  * Canonicalize based on
@@ -105,7 +187,7 @@ export function canonicalizeUnicodeLanguageId(lang) {
105
187
  * @param locale
106
188
  */
107
189
  export function canonicalizeUnicodeLocaleId(locale) {
108
- canonicalizeUnicodeLanguageId(locale.lang);
190
+ locale.lang = canonicalizeUnicodeLanguageId(locale.lang);
109
191
  if (locale.extensions) {
110
192
  for (const extension of locale.extensions) {
111
193
  switch (extension.type) {
@@ -117,7 +199,7 @@ export function canonicalizeUnicodeLocaleId(locale) {
117
199
  break;
118
200
  case 't':
119
201
  if (extension.lang) {
120
- canonicalizeUnicodeLanguageId(extension.lang);
202
+ extension.lang = canonicalizeUnicodeLanguageId(extension.lang);
121
203
  }
122
204
  extension.fields = canonicalizeKVs(extension.fields);
123
205
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalizer.js","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonicalizer.js","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
- import { getCanonicalLocales } from './';
2
- if (!('getCanonicalLocales' in Intl)) {
1
+ import { getCanonicalLocales } from '.';
2
+ if (!('getCanonicalLocales' in Intl) ||
3
+ // Native Intl.getCanonicalLocales is just buggy
4
+ Intl.getCanonicalLocales('und-x-private')[0] === 'x-private') {
3
5
  Object.defineProperty(Intl, 'getCanonicalLocales', {
4
6
  value: getCanonicalLocales,
5
7
  writable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,IAAI,CAAC;AACvC,IAAI,CAAC,CAAC,qBAAqB,IAAI,IAAI,CAAC,EAAE;IACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;QACjD,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,GAAG,CAAC;AACtC,IACE,CAAC,CAAC,qBAAqB,IAAI,IAAI,CAAC;IAChC,gDAAgD;IAC9C,IAAY,CAAC,mBAAkD,CAC/D,eAAe,CAChB,CAAC,CAAC,CAAC,KAAK,WAAW,EACpB;IACA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;QACjD,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;CACJ"}
@@ -8,7 +8,7 @@ We get the following transformation:
8
8
  en-u-ms-imperial ⇒ en-u-ms-uksystem
9
9
  * @param lang
10
10
  */
11
- export declare function canonicalizeUnicodeLanguageId(lang: UnicodeLanguageId): void;
11
+ export declare function canonicalizeUnicodeLanguageId(unicodeLanguageId: UnicodeLanguageId): UnicodeLanguageId;
12
12
  /**
13
13
  * Canonicalize based on
14
14
  * https://www.unicode.org/reports/tr35/tr35.html#Canonical_Unicode_Locale_Identifiers
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalizer.d.ts","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAiB,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAiD1E;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CA4D3E;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,GACtB,eAAe,CA0BjB"}
1
+ {"version":3,"file":"canonicalizer.d.ts","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAiB,iBAAiB,EAAC,MAAM,SAAS,CAAC;AA4D1E;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,iBAAiB,EAAE,iBAAiB,GACnC,iBAAiB,CAmKnB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,GACtB,eAAe,CA0BjB"}
@@ -1,6 +1,14 @@
1
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
2
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
3
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
4
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
5
+ r[k] = a[j];
6
+ return r;
7
+ };
1
8
  import { languageAlias, variantAlias, scriptAlias, territoryAlias, } from './aliases';
2
9
  import { parseUnicodeLanguageId, isUnicodeVariantSubtag, isUnicodeLanguageSubtag, SEPARATOR, } from './parser';
3
10
  import * as likelySubtags from 'cldr-core/supplemental/likelySubtags.json';
11
+ import { emitUnicodeLanguageId } from './emitter';
4
12
  function canonicalizeAttrs(strs) {
5
13
  return Object.keys(strs.reduce(function (all, str) {
6
14
  all[str.toLowerCase()] = 1;
@@ -31,6 +39,16 @@ function compareKV(t1, t2) {
31
39
  function compareExtension(e1, e2) {
32
40
  return e1.type < e2.type ? -1 : e1.type > e2.type ? 1 : 0;
33
41
  }
42
+ function mergeVariants(v1, v2) {
43
+ var result = __spreadArrays(v1);
44
+ for (var _i = 0, v2_1 = v2; _i < v2_1.length; _i++) {
45
+ var v = v2_1[_i];
46
+ if (v1.indexOf(v) < 0) {
47
+ result.push(v);
48
+ }
49
+ }
50
+ return result;
51
+ }
34
52
  /**
35
53
  * CAVEAT: We don't do this section in the spec bc they have no JSON data
36
54
  * Use the bcp47 data to replace keys, types, tfields, and tvalues by their canonical forms. See Section 3.6.4 U Extension Data Files) and Section 3.7.1 T Extension Data Files. The aliases are in the alias attribute value, while the canonical is in the name attribute value. For example,
@@ -40,29 +58,99 @@ We get the following transformation:
40
58
  en-u-ms-imperial ⇒ en-u-ms-uksystem
41
59
  * @param lang
42
60
  */
43
- export function canonicalizeUnicodeLanguageId(lang) {
61
+ export function canonicalizeUnicodeLanguageId(unicodeLanguageId) {
44
62
  /**
45
- * If the language subtag matches the type attribute of a languageAlias element in Supplemental Data,
46
- * replace the language subtag with the replacement value.
47
- * - If there are additional subtags in the replacement value, add them to the result, but only if there is no corresponding subtag already in the tag.
48
- * - Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
63
+ * If the language subtag matches the type attribute of a languageAlias element in Supplemental Data, replace the language subtag with the replacement value.
64
+ * 1. If there are additional subtags in the replacement value, add them to the result, but only if there is no corresponding subtag already in the tag.
65
+ * 2. Five special deprecated grandfathered codes (such as i-default) are in type attributes, and are also replaced.
49
66
  */
50
- var sourceLang = lang.lang.toLowerCase();
51
- var langAlias = languageAlias[sourceLang];
52
- if (langAlias) {
53
- var langAliasAst = parseUnicodeLanguageId(langAlias.split('-'));
54
- lang.lang = langAliasAst.lang;
55
- lang.script = lang.script || langAliasAst.script;
56
- lang.region = lang.region || langAliasAst.region;
67
+ // From https://github.com/unicode-org/icu/blob/master/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java#L1246
68
+ // Try language _ variant
69
+ var finalLangAst = unicodeLanguageId;
70
+ if (unicodeLanguageId.variants.length) {
71
+ var replacedLang_1 = '';
72
+ for (var _i = 0, _a = unicodeLanguageId.variants; _i < _a.length; _i++) {
73
+ var variant = _a[_i];
74
+ if ((replacedLang_1 =
75
+ languageAlias[emitUnicodeLanguageId({
76
+ lang: unicodeLanguageId.lang,
77
+ variants: [variant],
78
+ })])) {
79
+ var replacedLangAst = parseUnicodeLanguageId(replacedLang_1.split(SEPARATOR));
80
+ finalLangAst = {
81
+ lang: replacedLangAst.lang,
82
+ script: finalLangAst.script || replacedLangAst.script,
83
+ region: finalLangAst.region || replacedLangAst.region,
84
+ variants: mergeVariants(finalLangAst.variants, replacedLangAst.variants),
85
+ };
86
+ break;
87
+ }
88
+ }
89
+ }
90
+ // language _ script _ country
91
+ // ug-Arab-CN -> ug-CN
92
+ if (finalLangAst.script && finalLangAst.region) {
93
+ var replacedLang_2 = languageAlias[emitUnicodeLanguageId({
94
+ lang: finalLangAst.lang,
95
+ script: finalLangAst.script,
96
+ region: finalLangAst.region,
97
+ variants: [],
98
+ })];
99
+ if (replacedLang_2) {
100
+ var replacedLangAst = parseUnicodeLanguageId(replacedLang_2.split(SEPARATOR));
101
+ finalLangAst = {
102
+ lang: replacedLangAst.lang,
103
+ script: replacedLangAst.script,
104
+ region: replacedLangAst.region,
105
+ variants: finalLangAst.variants,
106
+ };
107
+ }
108
+ }
109
+ // language _ country
110
+ // eg. az_AZ -> az_Latn_A
111
+ if (finalLangAst.region) {
112
+ var replacedLang_3 = languageAlias[emitUnicodeLanguageId({
113
+ lang: finalLangAst.lang,
114
+ region: finalLangAst.region,
115
+ variants: [],
116
+ })];
117
+ if (replacedLang_3) {
118
+ var replacedLangAst = parseUnicodeLanguageId(replacedLang_3.split(SEPARATOR));
119
+ finalLangAst = {
120
+ lang: replacedLangAst.lang,
121
+ script: finalLangAst.script || replacedLangAst.script,
122
+ region: replacedLangAst.region,
123
+ variants: finalLangAst.variants,
124
+ };
125
+ }
126
+ }
127
+ // only language
128
+ // e.g. twi -> ak
129
+ var replacedLang = languageAlias[emitUnicodeLanguageId({
130
+ lang: finalLangAst.lang,
131
+ variants: [],
132
+ })];
133
+ if (replacedLang) {
134
+ var replacedLangAst = parseUnicodeLanguageId(replacedLang.split(SEPARATOR));
135
+ finalLangAst = {
136
+ lang: replacedLangAst.lang,
137
+ script: finalLangAst.script || replacedLangAst.script,
138
+ region: finalLangAst.region || replacedLangAst.region,
139
+ variants: finalLangAst.variants,
140
+ };
57
141
  }
58
- if (lang.region) {
59
- var region = lang.region.toUpperCase();
142
+ if (finalLangAst.region) {
143
+ var region = finalLangAst.region.toUpperCase();
60
144
  var regionAlias = territoryAlias[region];
61
145
  var replacedRegion = void 0;
62
146
  if (regionAlias) {
63
147
  var regions = regionAlias.split(' ');
64
148
  replacedRegion = regions[0];
65
- var likelySubtag = likelySubtags.supplemental.likelySubtags[lang.lang];
149
+ var likelySubtag = likelySubtags.supplemental.likelySubtags[emitUnicodeLanguageId({
150
+ lang: finalLangAst.lang,
151
+ script: finalLangAst.script,
152
+ variants: [],
153
+ })];
66
154
  if (likelySubtag) {
67
155
  var likelyRegion = parseUnicodeLanguageId(likelySubtag.split(SEPARATOR)).region;
68
156
  if (likelyRegion && regions.indexOf(likelyRegion) > -1) {
@@ -71,32 +159,35 @@ export function canonicalizeUnicodeLanguageId(lang) {
71
159
  }
72
160
  }
73
161
  if (replacedRegion) {
74
- lang.region = replacedRegion;
162
+ finalLangAst.region = replacedRegion;
75
163
  }
164
+ finalLangAst.region = finalLangAst.region.toUpperCase();
76
165
  }
77
- if (lang.script) {
78
- lang.script =
79
- lang.script[0].toUpperCase() + lang.script.slice(1).toLowerCase();
80
- if (scriptAlias[lang.script]) {
81
- lang.script = scriptAlias[lang.script];
166
+ if (finalLangAst.script) {
167
+ finalLangAst.script =
168
+ finalLangAst.script[0].toUpperCase() +
169
+ finalLangAst.script.slice(1).toLowerCase();
170
+ if (scriptAlias[finalLangAst.script]) {
171
+ finalLangAst.script = scriptAlias[finalLangAst.script];
82
172
  }
83
173
  }
84
- if (lang.variants.length) {
85
- for (var i = 0; i < lang.variants.length; i++) {
86
- var variant = lang.variants[i].toLowerCase();
174
+ if (finalLangAst.variants.length) {
175
+ for (var i = 0; i < finalLangAst.variants.length; i++) {
176
+ var variant = finalLangAst.variants[i].toLowerCase();
87
177
  if (variantAlias[variant]) {
88
178
  var alias = variantAlias[variant];
89
179
  if (isUnicodeVariantSubtag(alias)) {
90
- lang.variants[i] = alias;
180
+ finalLangAst.variants[i] = alias;
91
181
  }
92
182
  else if (isUnicodeLanguageSubtag(alias)) {
93
183
  // Yes this can happen per the spec
94
- lang.lang = alias;
184
+ finalLangAst.lang = alias;
95
185
  }
96
186
  }
97
187
  }
98
- lang.variants.sort();
188
+ finalLangAst.variants.sort();
99
189
  }
190
+ return finalLangAst;
100
191
  }
101
192
  /**
102
193
  * Canonicalize based on
@@ -106,7 +197,7 @@ export function canonicalizeUnicodeLanguageId(lang) {
106
197
  * @param locale
107
198
  */
108
199
  export function canonicalizeUnicodeLocaleId(locale) {
109
- canonicalizeUnicodeLanguageId(locale.lang);
200
+ locale.lang = canonicalizeUnicodeLanguageId(locale.lang);
110
201
  if (locale.extensions) {
111
202
  for (var _i = 0, _a = locale.extensions; _i < _a.length; _i++) {
112
203
  var extension = _a[_i];
@@ -119,7 +210,7 @@ export function canonicalizeUnicodeLocaleId(locale) {
119
210
  break;
120
211
  case 't':
121
212
  if (extension.lang) {
122
- canonicalizeUnicodeLanguageId(extension.lang);
213
+ extension.lang = canonicalizeUnicodeLanguageId(extension.lang);
123
214
  }
124
215
  extension.fields = canonicalizeKVs(extension.fields);
125
216
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"canonicalizer.js","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonicalizer.js","sourceRoot":"","sources":["../src/canonicalizer.ts"],"names":[],"mappings":";;;;;;;AACA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,aAAa,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAC,qBAAqB,EAAC,MAAM,WAAW,CAAC;AAEhD,SAAS,iBAAiB,CAAC,IAAc;IACvC,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,CAAC,MAAM,CAAC,UAAC,GAA2B,EAAE,GAAG;QAC3C,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CACP,CAAC,IAAI,EAAE,CAAC;AACX,CAAC;AAED,SAAS,eAAe,CAAC,GAAS;IAChC,IAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,IAAM,MAAM,GAAS,EAAE,CAAC;IACxB,KAAiB,UAAG,EAAH,WAAG,EAAH,iBAAG,EAAH,IAAG,EAAE;QAAjB,IAAM,EAAE,YAAA;QACX,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YAChB,SAAS;SACV;QACD,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;SACpC;aAAM;YACL,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;SACzD;KACF;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,EAAc,EAAE,EAAc;IAC/C,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAa,EAAE,EAAa;IACpD,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,EAAY,EAAE,EAAY;IAC/C,IAAM,MAAM,kBAAO,EAAE,CAAC,CAAC;IACvB,KAAgB,UAAE,EAAF,SAAE,EAAF,gBAAE,EAAF,IAAE,EAAE;QAAf,IAAM,CAAC,WAAA;QACV,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAC3C,iBAAoC;IAEpC;;;;OAIG;IAEH,sHAAsH;IAEtH,yBAAyB;IACzB,IAAI,YAAY,GAAG,iBAAiB,CAAC;IACrC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE;QACrC,IAAI,cAAY,GAAW,EAAE,CAAC;QAC9B,KAAsB,UAA0B,EAA1B,KAAA,iBAAiB,CAAC,QAAQ,EAA1B,cAA0B,EAA1B,IAA0B,EAAE;YAA7C,IAAM,OAAO,SAAA;YAChB,IACE,CAAC,cAAY;gBACX,aAAa,CACX,qBAAqB,CAAC;oBACpB,IAAI,EAAE,iBAAiB,CAAC,IAAI;oBAC5B,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB,CAAC,CACH,CAAC,EACJ;gBACA,IAAM,eAAe,GAAG,sBAAsB,CAC5C,cAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9B,CAAC;gBACF,YAAY,GAAG;oBACb,IAAI,EAAE,eAAe,CAAC,IAAI;oBAC1B,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM;oBACrD,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM;oBACrD,QAAQ,EAAE,aAAa,CACrB,YAAY,CAAC,QAAQ,EACrB,eAAe,CAAC,QAAQ,CACzB;iBACF,CAAC;gBACF,MAAM;aACP;SACF;KACF;IAED,8BAA8B;IAC9B,sBAAsB;IACtB,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE;QAC9C,IAAM,cAAY,GAChB,aAAa,CACX,qBAAqB,CAAC;YACpB,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,QAAQ,EAAE,EAAE;SACb,CAAC,CACH,CAAC;QACJ,IAAI,cAAY,EAAE;YAChB,IAAM,eAAe,GAAG,sBAAsB,CAC5C,cAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9B,CAAC;YACF,YAAY,GAAG;gBACb,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,QAAQ,EAAE,YAAY,CAAC,QAAQ;aAChC,CAAC;SACH;KACF;IAED,qBAAqB;IACrB,yBAAyB;IACzB,IAAI,YAAY,CAAC,MAAM,EAAE;QACvB,IAAM,cAAY,GAChB,aAAa,CACX,qBAAqB,CAAC;YACpB,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,QAAQ,EAAE,EAAE;SACb,CAAC,CACH,CAAC;QACJ,IAAI,cAAY,EAAE;YAChB,IAAM,eAAe,GAAG,sBAAsB,CAC5C,cAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9B,CAAC;YACF,YAAY,GAAG;gBACb,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM;gBACrD,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,QAAQ,EAAE,YAAY,CAAC,QAAQ;aAChC,CAAC;SACH;KACF;IACD,gBAAgB;IAChB,iBAAiB;IACjB,IAAM,YAAY,GAChB,aAAa,CACX,qBAAqB,CAAC;QACpB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,QAAQ,EAAE,EAAE;KACb,CAAC,CACH,CAAC;IACJ,IAAI,YAAY,EAAE;QAChB,IAAM,eAAe,GAAG,sBAAsB,CAC5C,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9B,CAAC;QACF,YAAY,GAAG;YACb,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM;YACrD,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM;YACrD,QAAQ,EAAE,YAAY,CAAC,QAAQ;SAChC,CAAC;KACH;IAED,IAAI,YAAY,CAAC,MAAM,EAAE;QACvB,IAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACjD,IAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,cAAc,SAAoB,CAAC;QACvC,IAAI,WAAW,EAAE;YACf,IAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAM,YAAY,GAChB,aAAa,CAAC,YAAY,CAAC,aAAa,CACtC,qBAAqB,CAAC;gBACpB,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,QAAQ,EAAE,EAAE;aACb,CAAS,CACX,CAAC;YACJ,IAAI,YAAY,EAAE;gBACT,IAAA,2EAAoB,CAEzB;gBACF,IAAI,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBACtD,cAAc,GAAG,YAAY,CAAC;iBAC/B;aACF;SACF;QACD,IAAI,cAAc,EAAE;YAClB,YAAY,CAAC,MAAM,GAAG,cAAc,CAAC;SACtC;QACD,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;KACzD;IACD,IAAI,YAAY,CAAC,MAAM,EAAE;QACvB,YAAY,CAAC,MAAM;YACjB,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBACpC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YACpC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SACxD;KACF;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrD,IAAI,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACrD,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;gBACzB,IAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE;oBACjC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;iBAClC;qBAAM,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE;oBACzC,mCAAmC;oBACnC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC;iBAC3B;aACF;SACF;QACD,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KAC9B;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAuB;IAEvB,MAAM,CAAC,IAAI,GAAG,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,KAAwB,UAAiB,EAAjB,KAAA,MAAM,CAAC,UAAU,EAAjB,cAAiB,EAAjB,IAAiB,EAAE;YAAtC,IAAM,SAAS,SAAA;YAClB,QAAQ,SAAS,CAAC,IAAI,EAAE;gBACtB,KAAK,GAAG;oBACN,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACzD,IAAI,SAAS,CAAC,UAAU,EAAE;wBACxB,SAAS,CAAC,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;qBAChE;oBACD,MAAM;gBACR,KAAK,GAAG;oBACN,IAAI,SAAS,CAAC,IAAI,EAAE;wBAClB,SAAS,CAAC,IAAI,GAAG,6BAA6B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;qBAChE;oBACD,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACrD,MAAM;gBACR;oBACE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAChD,MAAM;aACT;SACF;QACD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC1C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/lib/polyfill.js CHANGED
@@ -1,5 +1,7 @@
1
- import { getCanonicalLocales } from './';
2
- if (!('getCanonicalLocales' in Intl)) {
1
+ import { getCanonicalLocales } from '.';
2
+ if (!('getCanonicalLocales' in Intl) ||
3
+ // Native Intl.getCanonicalLocales is just buggy
4
+ Intl.getCanonicalLocales('und-x-private')[0] === 'x-private') {
3
5
  Object.defineProperty(Intl, 'getCanonicalLocales', {
4
6
  value: getCanonicalLocales,
5
7
  writable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,IAAI,CAAC;AACvC,IAAI,CAAC,CAAC,qBAAqB,IAAI,IAAI,CAAC,EAAE;IACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;QACjD,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,GAAG,CAAC;AACtC,IACE,CAAC,CAAC,qBAAqB,IAAI,IAAI,CAAC;IAChC,gDAAgD;IAC9C,IAAY,CAAC,mBAAkD,CAC/D,eAAe,CAChB,CAAC,CAAC,CAAC,KAAK,WAAW,EACpB;IACA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE;QACjD,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formatjs/intl-getcanonicallocales",
3
- "version": "1.2.0",
3
+ "version": "1.2.4",
4
4
  "description": "Intl.getCanonicalLocales polyfill",
5
5
  "keywords": [
6
6
  "intl",
@@ -33,24 +33,21 @@
33
33
  "cldr": "ts-node scripts/aliases --out src/aliases.ts",
34
34
  "clean": "rimraf dist lib dist-es6 dist-es6 *.tsbuildinfo",
35
35
  "build": "yarn cldr && tsc && tsc -p tsconfig.esm.json && tsc -p tsconfig.es6.json && api-extractor run --local && rollup -c rollup.config.js",
36
- "jest": "cross-env NODE_ICU_DATA=../../node_modules/full-icu NODE_ENV=test jest",
37
- "test262": "cross-env NODE_ICU_DATA=../../node_modules/full-icu ts-node tests/runner",
36
+ "jest": "cross-env NODE_ENV=test jest",
37
+ "test262": "cross-env ts-node tests/runner",
38
38
  "test": "yarn jest"
39
39
  },
40
40
  "bugs": {
41
41
  "url": "https://github.com/formatjs/formatjs/issues"
42
42
  },
43
43
  "dependencies": {
44
- "@formatjs/intl-utils": "2.0.4"
44
+ "cldr-core": "36.0.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/jest": "^25.2.1",
48
48
  "@types/minimist": "^1.2.0",
49
- "full-icu": "^1.3.1",
50
49
  "jest": "^25.4.0",
51
- "minimist": "^1.2.5",
52
- "pegjs": "^0.10.0",
53
- "ts-jest": "^25.4.0",
54
- "ts-pegjs": "^0.2.6"
55
- }
50
+ "minimist": "^1.2.5"
51
+ },
52
+ "gitHead": "e8089a4d1f6e91a1be5bc2194bd2b0c997b6ae06"
56
53
  }