@formatjs/intl-localematcher 0.2.28 → 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.
- package/BUILD +73 -0
- package/CHANGELOG.md +150 -0
- package/LICENSE.md +0 -0
- package/README.md +0 -0
- package/abstract/BestAvailableLocale.ts +24 -0
- package/abstract/BestFitMatcher.ts +80 -0
- package/abstract/CanonicalizeLocaleList.ts +8 -0
- package/abstract/LookupMatcher.ts +39 -0
- package/abstract/LookupSupportedLocales.ts +28 -0
- package/abstract/ResolveLocale.ts +100 -0
- package/abstract/UnicodeExtensionValue.ts +44 -0
- package/abstract/types.ts +5 -0
- package/abstract/utils.ts +11 -0
- package/index.ts +32 -0
- package/package.json +2 -2
- package/tests/BestFitMatcher.test.ts +23 -0
- package/tests/LookupMatcher.test.ts +17 -0
- package/tests/ResolveLocale.test.ts +47 -0
- package/tests/index.test.ts +242 -0
- package/tsconfig.json +5 -0
- package/abstract/BestAvailableLocale.d.ts +0 -7
- package/abstract/BestAvailableLocale.d.ts.map +0 -1
- package/abstract/BestAvailableLocale.js +0 -25
- package/abstract/BestFitMatcher.d.ts +0 -9
- package/abstract/BestFitMatcher.d.ts.map +0 -1
- package/abstract/BestFitMatcher.js +0 -65
- package/abstract/CanonicalizeLocaleList.d.ts +0 -6
- package/abstract/CanonicalizeLocaleList.d.ts.map +0 -1
- package/abstract/CanonicalizeLocaleList.js +0 -12
- package/abstract/LookupMatcher.d.ts +0 -9
- package/abstract/LookupMatcher.d.ts.map +0 -1
- package/abstract/LookupMatcher.js +0 -29
- package/abstract/LookupSupportedLocales.d.ts +0 -7
- package/abstract/LookupSupportedLocales.d.ts.map +0 -1
- package/abstract/LookupSupportedLocales.js +0 -23
- package/abstract/ResolveLocale.d.ts +0 -15
- package/abstract/ResolveLocale.d.ts.map +0 -1
- package/abstract/ResolveLocale.js +0 -78
- package/abstract/UnicodeExtensionValue.d.ts +0 -7
- package/abstract/UnicodeExtensionValue.d.ts.map +0 -1
- package/abstract/UnicodeExtensionValue.js +0 -50
- package/abstract/types.d.ts +0 -6
- package/abstract/types.d.ts.map +0 -1
- package/abstract/types.js +0 -2
- package/abstract/utils.d.ts +0 -3
- package/abstract/utils.d.ts.map +0 -1
- package/abstract/utils.js +0 -11
- package/index.d.ts +0 -7
- package/index.d.ts.map +0 -1
- package/index.js +0 -19
- package/lib/abstract/BestAvailableLocale.d.ts +0 -7
- package/lib/abstract/BestAvailableLocale.d.ts.map +0 -1
- package/lib/abstract/BestAvailableLocale.js +0 -21
- package/lib/abstract/BestFitMatcher.d.ts +0 -9
- package/lib/abstract/BestFitMatcher.d.ts.map +0 -1
- package/lib/abstract/BestFitMatcher.js +0 -61
- package/lib/abstract/CanonicalizeLocaleList.d.ts +0 -6
- package/lib/abstract/CanonicalizeLocaleList.d.ts.map +0 -1
- package/lib/abstract/CanonicalizeLocaleList.js +0 -8
- package/lib/abstract/LookupMatcher.d.ts +0 -9
- package/lib/abstract/LookupMatcher.d.ts.map +0 -1
- package/lib/abstract/LookupMatcher.js +0 -25
- package/lib/abstract/LookupSupportedLocales.d.ts +0 -7
- package/lib/abstract/LookupSupportedLocales.d.ts.map +0 -1
- package/lib/abstract/LookupSupportedLocales.js +0 -19
- package/lib/abstract/ResolveLocale.d.ts +0 -15
- package/lib/abstract/ResolveLocale.d.ts.map +0 -1
- package/lib/abstract/ResolveLocale.js +0 -74
- package/lib/abstract/UnicodeExtensionValue.d.ts +0 -7
- package/lib/abstract/UnicodeExtensionValue.d.ts.map +0 -1
- package/lib/abstract/UnicodeExtensionValue.js +0 -46
- package/lib/abstract/types.d.ts +0 -6
- package/lib/abstract/types.d.ts.map +0 -1
- package/lib/abstract/types.js +0 -1
- package/lib/abstract/utils.d.ts +0 -3
- package/lib/abstract/utils.d.ts.map +0 -1
- package/lib/abstract/utils.js +0 -7
- package/lib/index.d.ts +0 -7
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -13
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {ResolveLocale} from '../abstract/ResolveLocale'
|
|
2
|
+
|
|
3
|
+
test('ResolveLocale', function () {
|
|
4
|
+
expect(
|
|
5
|
+
ResolveLocale(
|
|
6
|
+
new Set(['fr', 'en']),
|
|
7
|
+
['fr-XX', 'en'],
|
|
8
|
+
{localeMatcher: 'best fit'},
|
|
9
|
+
[],
|
|
10
|
+
{},
|
|
11
|
+
() => 'en'
|
|
12
|
+
)
|
|
13
|
+
).toEqual({
|
|
14
|
+
dataLocale: 'fr',
|
|
15
|
+
locale: 'fr',
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
expect(
|
|
19
|
+
ResolveLocale(
|
|
20
|
+
new Set(['zh-Hant-TW', 'en']),
|
|
21
|
+
['zh-TW', 'en'],
|
|
22
|
+
{localeMatcher: 'best fit'},
|
|
23
|
+
[],
|
|
24
|
+
{},
|
|
25
|
+
() => 'en'
|
|
26
|
+
)
|
|
27
|
+
).toEqual({
|
|
28
|
+
dataLocale: 'zh-Hant-TW',
|
|
29
|
+
locale: 'zh-Hant-TW',
|
|
30
|
+
})
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
test('empty requested', function () {
|
|
34
|
+
expect(
|
|
35
|
+
ResolveLocale(
|
|
36
|
+
new Set(['zh-Hant-TW', 'en']),
|
|
37
|
+
[],
|
|
38
|
+
{localeMatcher: 'best fit'},
|
|
39
|
+
[],
|
|
40
|
+
{},
|
|
41
|
+
() => 'en'
|
|
42
|
+
)
|
|
43
|
+
).toEqual({
|
|
44
|
+
dataLocale: 'en',
|
|
45
|
+
locale: 'en',
|
|
46
|
+
})
|
|
47
|
+
})
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import {match} from '../'
|
|
2
|
+
|
|
3
|
+
test('zh-HK', function () {
|
|
4
|
+
expect(match(['zh-HK'], ['zh', 'zh-HANT', 'en'], 'en')).toEqual('zh-HANT')
|
|
5
|
+
})
|
|
6
|
+
|
|
7
|
+
test('Intl.LocaleMatcher', function () {
|
|
8
|
+
expect(match(['fr-XX', 'en'], ['fr', 'en'], 'en')).toEqual('fr')
|
|
9
|
+
expect(match(['zh-TW', 'en'], ['zh-Hant-TW', 'en'], 'en')).toEqual(
|
|
10
|
+
'zh-Hant-TW'
|
|
11
|
+
)
|
|
12
|
+
expect(
|
|
13
|
+
match(
|
|
14
|
+
['sr-Latn-BA'],
|
|
15
|
+
[
|
|
16
|
+
'af',
|
|
17
|
+
'ak',
|
|
18
|
+
'am',
|
|
19
|
+
'an',
|
|
20
|
+
'ar',
|
|
21
|
+
'ars',
|
|
22
|
+
'as',
|
|
23
|
+
'asa',
|
|
24
|
+
'ast',
|
|
25
|
+
'az',
|
|
26
|
+
'be',
|
|
27
|
+
'bem',
|
|
28
|
+
'bez',
|
|
29
|
+
'bg',
|
|
30
|
+
'bho',
|
|
31
|
+
'bm',
|
|
32
|
+
'bn',
|
|
33
|
+
'bo',
|
|
34
|
+
'br',
|
|
35
|
+
'brx',
|
|
36
|
+
'bs',
|
|
37
|
+
'ca',
|
|
38
|
+
'ce',
|
|
39
|
+
'ceb',
|
|
40
|
+
'cgg',
|
|
41
|
+
'chr',
|
|
42
|
+
'ckb',
|
|
43
|
+
'cs',
|
|
44
|
+
'cy',
|
|
45
|
+
'da',
|
|
46
|
+
'de',
|
|
47
|
+
'doi',
|
|
48
|
+
'dsb',
|
|
49
|
+
'dv',
|
|
50
|
+
'dz',
|
|
51
|
+
'ee',
|
|
52
|
+
'el',
|
|
53
|
+
'en',
|
|
54
|
+
'eo',
|
|
55
|
+
'es',
|
|
56
|
+
'et',
|
|
57
|
+
'eu',
|
|
58
|
+
'fa',
|
|
59
|
+
'ff',
|
|
60
|
+
'fi',
|
|
61
|
+
'fil',
|
|
62
|
+
'fo',
|
|
63
|
+
'fr',
|
|
64
|
+
'fur',
|
|
65
|
+
'fy',
|
|
66
|
+
'ga',
|
|
67
|
+
'gd',
|
|
68
|
+
'gl',
|
|
69
|
+
'gsw',
|
|
70
|
+
'gu',
|
|
71
|
+
'guw',
|
|
72
|
+
'gv',
|
|
73
|
+
'ha',
|
|
74
|
+
'haw',
|
|
75
|
+
'he',
|
|
76
|
+
'hi',
|
|
77
|
+
'hr',
|
|
78
|
+
'hsb',
|
|
79
|
+
'hu',
|
|
80
|
+
'hy',
|
|
81
|
+
'ia',
|
|
82
|
+
'id',
|
|
83
|
+
'ig',
|
|
84
|
+
'ii',
|
|
85
|
+
'in',
|
|
86
|
+
'io',
|
|
87
|
+
'is',
|
|
88
|
+
'it',
|
|
89
|
+
'iu',
|
|
90
|
+
'iw',
|
|
91
|
+
'ja',
|
|
92
|
+
'jbo',
|
|
93
|
+
'jgo',
|
|
94
|
+
'ji',
|
|
95
|
+
'jmc',
|
|
96
|
+
'jv',
|
|
97
|
+
'jw',
|
|
98
|
+
'ka',
|
|
99
|
+
'kab',
|
|
100
|
+
'kaj',
|
|
101
|
+
'kcg',
|
|
102
|
+
'kde',
|
|
103
|
+
'kea',
|
|
104
|
+
'kk',
|
|
105
|
+
'kkj',
|
|
106
|
+
'kl',
|
|
107
|
+
'km',
|
|
108
|
+
'kn',
|
|
109
|
+
'ko',
|
|
110
|
+
'ks',
|
|
111
|
+
'ksb',
|
|
112
|
+
'ksh',
|
|
113
|
+
'ku',
|
|
114
|
+
'kw',
|
|
115
|
+
'ky',
|
|
116
|
+
'lag',
|
|
117
|
+
'lb',
|
|
118
|
+
'lg',
|
|
119
|
+
'lij',
|
|
120
|
+
'lkt',
|
|
121
|
+
'ln',
|
|
122
|
+
'lo',
|
|
123
|
+
'lt',
|
|
124
|
+
'lv',
|
|
125
|
+
'mas',
|
|
126
|
+
'mg',
|
|
127
|
+
'mgo',
|
|
128
|
+
'mk',
|
|
129
|
+
'ml',
|
|
130
|
+
'mn',
|
|
131
|
+
'mo',
|
|
132
|
+
'mr',
|
|
133
|
+
'ms',
|
|
134
|
+
'mt',
|
|
135
|
+
'my',
|
|
136
|
+
'nah',
|
|
137
|
+
'naq',
|
|
138
|
+
'nb',
|
|
139
|
+
'nd',
|
|
140
|
+
'ne',
|
|
141
|
+
'nl',
|
|
142
|
+
'nn',
|
|
143
|
+
'nnh',
|
|
144
|
+
'no',
|
|
145
|
+
'nqo',
|
|
146
|
+
'nr',
|
|
147
|
+
'nso',
|
|
148
|
+
'ny',
|
|
149
|
+
'nyn',
|
|
150
|
+
'om',
|
|
151
|
+
'or',
|
|
152
|
+
'os',
|
|
153
|
+
'osa',
|
|
154
|
+
'pa',
|
|
155
|
+
'pap',
|
|
156
|
+
'pcm',
|
|
157
|
+
'pl',
|
|
158
|
+
'prg',
|
|
159
|
+
'ps',
|
|
160
|
+
'pt-PT',
|
|
161
|
+
'pt',
|
|
162
|
+
'rm',
|
|
163
|
+
'ro',
|
|
164
|
+
'rof',
|
|
165
|
+
'ru',
|
|
166
|
+
'rwk',
|
|
167
|
+
'sah',
|
|
168
|
+
'saq',
|
|
169
|
+
'sat',
|
|
170
|
+
'sc',
|
|
171
|
+
'scn',
|
|
172
|
+
'sd',
|
|
173
|
+
'sdh',
|
|
174
|
+
'se',
|
|
175
|
+
'seh',
|
|
176
|
+
'ses',
|
|
177
|
+
'sg',
|
|
178
|
+
'sh',
|
|
179
|
+
'shi',
|
|
180
|
+
'si',
|
|
181
|
+
'sk',
|
|
182
|
+
'sl',
|
|
183
|
+
'sma',
|
|
184
|
+
'smi',
|
|
185
|
+
'smj',
|
|
186
|
+
'smn',
|
|
187
|
+
'sms',
|
|
188
|
+
'sn',
|
|
189
|
+
'so',
|
|
190
|
+
'sq',
|
|
191
|
+
'sr',
|
|
192
|
+
'ss',
|
|
193
|
+
'ssy',
|
|
194
|
+
'st',
|
|
195
|
+
'su',
|
|
196
|
+
'sv',
|
|
197
|
+
'sw',
|
|
198
|
+
'syr',
|
|
199
|
+
'ta',
|
|
200
|
+
'te',
|
|
201
|
+
'teo',
|
|
202
|
+
'th',
|
|
203
|
+
'ti',
|
|
204
|
+
'tig',
|
|
205
|
+
'tk',
|
|
206
|
+
'tl',
|
|
207
|
+
'tn',
|
|
208
|
+
'to',
|
|
209
|
+
'tr',
|
|
210
|
+
'ts',
|
|
211
|
+
'tzm',
|
|
212
|
+
'ug',
|
|
213
|
+
'uk',
|
|
214
|
+
'ur',
|
|
215
|
+
'uz',
|
|
216
|
+
've',
|
|
217
|
+
'vi',
|
|
218
|
+
'vo',
|
|
219
|
+
'vun',
|
|
220
|
+
'wa',
|
|
221
|
+
'wae',
|
|
222
|
+
'wo',
|
|
223
|
+
'xh',
|
|
224
|
+
'xog',
|
|
225
|
+
'yi',
|
|
226
|
+
'yo',
|
|
227
|
+
'yue',
|
|
228
|
+
'zh',
|
|
229
|
+
'zu',
|
|
230
|
+
],
|
|
231
|
+
'en'
|
|
232
|
+
)
|
|
233
|
+
).toEqual('sh')
|
|
234
|
+
})
|
|
235
|
+
|
|
236
|
+
test('empty requested', function () {
|
|
237
|
+
expect(match([], ['zh-Hant-TW', 'en'], 'en')).toEqual('en')
|
|
238
|
+
})
|
|
239
|
+
|
|
240
|
+
test('extension', function () {
|
|
241
|
+
expect(match(['fr-CA-x-foo'], ['zh-Hant-TW', 'fr', 'en'], 'en')).toEqual('fr')
|
|
242
|
+
})
|
package/tsconfig.json
ADDED
|
@@ -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,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BestAvailableLocale = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* https://tc39.es/ecma402/#sec-bestavailablelocale
|
|
6
|
-
* @param availableLocales
|
|
7
|
-
* @param locale
|
|
8
|
-
*/
|
|
9
|
-
function BestAvailableLocale(availableLocales, locale) {
|
|
10
|
-
var candidate = locale;
|
|
11
|
-
while (true) {
|
|
12
|
-
if (availableLocales.has(candidate)) {
|
|
13
|
-
return candidate;
|
|
14
|
-
}
|
|
15
|
-
var pos = candidate.lastIndexOf('-');
|
|
16
|
-
if (!~pos) {
|
|
17
|
-
return undefined;
|
|
18
|
-
}
|
|
19
|
-
if (pos >= 2 && candidate[pos - 2] === '-') {
|
|
20
|
-
pos -= 2;
|
|
21
|
-
}
|
|
22
|
-
candidate = candidate.slice(0, pos);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.BestAvailableLocale = BestAvailableLocale;
|
|
@@ -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,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BestFitMatcher = void 0;
|
|
4
|
-
var BestAvailableLocale_1 = require("./BestAvailableLocale");
|
|
5
|
-
var utils_1 = require("./utils");
|
|
6
|
-
/**
|
|
7
|
-
* https://tc39.es/ecma402/#sec-bestfitmatcher
|
|
8
|
-
* @param availableLocales
|
|
9
|
-
* @param requestedLocales
|
|
10
|
-
* @param getDefaultLocale
|
|
11
|
-
*/
|
|
12
|
-
function BestFitMatcher(availableLocales, requestedLocales, getDefaultLocale) {
|
|
13
|
-
var minimizedAvailableLocaleMap = {};
|
|
14
|
-
var availableLocaleMap = {};
|
|
15
|
-
var canonicalizedLocaleMap = {};
|
|
16
|
-
var minimizedAvailableLocales = new Set();
|
|
17
|
-
availableLocales.forEach(function (locale) {
|
|
18
|
-
var minimizedLocale = new Intl.Locale(locale)
|
|
19
|
-
.minimize()
|
|
20
|
-
.toString();
|
|
21
|
-
var canonicalizedLocale = Intl.getCanonicalLocales(locale)[0] || locale;
|
|
22
|
-
minimizedAvailableLocaleMap[minimizedLocale] = locale;
|
|
23
|
-
availableLocaleMap[locale] = locale;
|
|
24
|
-
canonicalizedLocaleMap[canonicalizedLocale] = locale;
|
|
25
|
-
minimizedAvailableLocales.add(minimizedLocale);
|
|
26
|
-
minimizedAvailableLocales.add(locale);
|
|
27
|
-
minimizedAvailableLocales.add(canonicalizedLocale);
|
|
28
|
-
});
|
|
29
|
-
var foundLocale;
|
|
30
|
-
for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
|
|
31
|
-
var l = requestedLocales_1[_i];
|
|
32
|
-
if (foundLocale) {
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
var noExtensionLocale = l.replace(utils_1.UNICODE_EXTENSION_SEQUENCE_REGEX, '');
|
|
36
|
-
if (availableLocales.has(noExtensionLocale)) {
|
|
37
|
-
foundLocale = noExtensionLocale;
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
if (minimizedAvailableLocales.has(noExtensionLocale)) {
|
|
41
|
-
foundLocale = noExtensionLocale;
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
var locale = new Intl.Locale(noExtensionLocale);
|
|
45
|
-
var maximizedRequestedLocale = locale.maximize().toString();
|
|
46
|
-
var minimizedRequestedLocale = locale.minimize().toString();
|
|
47
|
-
// Check minimized locale
|
|
48
|
-
if (minimizedAvailableLocales.has(minimizedRequestedLocale)) {
|
|
49
|
-
foundLocale = minimizedRequestedLocale;
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
// Lookup algo on maximized locale
|
|
53
|
-
foundLocale = (0, BestAvailableLocale_1.BestAvailableLocale)(minimizedAvailableLocales, maximizedRequestedLocale);
|
|
54
|
-
}
|
|
55
|
-
if (!foundLocale) {
|
|
56
|
-
return { locale: getDefaultLocale() };
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
locale: availableLocaleMap[foundLocale] ||
|
|
60
|
-
canonicalizedLocaleMap[foundLocale] ||
|
|
61
|
-
minimizedAvailableLocaleMap[foundLocale] ||
|
|
62
|
-
foundLocale,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
exports.BestFitMatcher = BestFitMatcher;
|
|
@@ -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,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CanonicalizeLocaleList = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* http://ecma-international.org/ecma-402/7.0/index.html#sec-canonicalizelocalelist
|
|
6
|
-
* @param locales
|
|
7
|
-
*/
|
|
8
|
-
function CanonicalizeLocaleList(locales) {
|
|
9
|
-
// TODO
|
|
10
|
-
return Intl.getCanonicalLocales(locales);
|
|
11
|
-
}
|
|
12
|
-
exports.CanonicalizeLocaleList = CanonicalizeLocaleList;
|
|
@@ -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,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LookupMatcher = void 0;
|
|
4
|
-
var utils_1 = require("./utils");
|
|
5
|
-
var BestAvailableLocale_1 = require("./BestAvailableLocale");
|
|
6
|
-
/**
|
|
7
|
-
* https://tc39.es/ecma402/#sec-lookupmatcher
|
|
8
|
-
* @param availableLocales
|
|
9
|
-
* @param requestedLocales
|
|
10
|
-
* @param getDefaultLocale
|
|
11
|
-
*/
|
|
12
|
-
function LookupMatcher(availableLocales, requestedLocales, getDefaultLocale) {
|
|
13
|
-
var result = { locale: '' };
|
|
14
|
-
for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
|
|
15
|
-
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);
|
|
18
|
-
if (availableLocale) {
|
|
19
|
-
result.locale = availableLocale;
|
|
20
|
-
if (locale !== noExtensionLocale) {
|
|
21
|
-
result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);
|
|
22
|
-
}
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
result.locale = getDefaultLocale();
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
exports.LookupMatcher = LookupMatcher;
|
|
@@ -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,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LookupSupportedLocales = void 0;
|
|
4
|
-
var utils_1 = require("./utils");
|
|
5
|
-
var BestAvailableLocale_1 = require("./BestAvailableLocale");
|
|
6
|
-
/**
|
|
7
|
-
* https://tc39.es/ecma402/#sec-lookupsupportedlocales
|
|
8
|
-
* @param availableLocales
|
|
9
|
-
* @param requestedLocales
|
|
10
|
-
*/
|
|
11
|
-
function LookupSupportedLocales(availableLocales, requestedLocales) {
|
|
12
|
-
var subset = [];
|
|
13
|
-
for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {
|
|
14
|
-
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);
|
|
17
|
-
if (availableLocale) {
|
|
18
|
-
subset.push(availableLocale);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return subset;
|
|
22
|
-
}
|
|
23
|
-
exports.LookupSupportedLocales = LookupSupportedLocales;
|
|
@@ -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,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResolveLocale = void 0;
|
|
4
|
-
var LookupMatcher_1 = require("./LookupMatcher");
|
|
5
|
-
var BestFitMatcher_1 = require("./BestFitMatcher");
|
|
6
|
-
var utils_1 = require("./utils");
|
|
7
|
-
var UnicodeExtensionValue_1 = require("./UnicodeExtensionValue");
|
|
8
|
-
/**
|
|
9
|
-
* https://tc39.es/ecma402/#sec-resolvelocale
|
|
10
|
-
*/
|
|
11
|
-
function ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData, getDefaultLocale) {
|
|
12
|
-
var matcher = options.localeMatcher;
|
|
13
|
-
var r;
|
|
14
|
-
if (matcher === 'lookup') {
|
|
15
|
-
r = (0, LookupMatcher_1.LookupMatcher)(availableLocales, requestedLocales, getDefaultLocale);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
r = (0, BestFitMatcher_1.BestFitMatcher)(availableLocales, requestedLocales, getDefaultLocale);
|
|
19
|
-
}
|
|
20
|
-
var foundLocale = r.locale;
|
|
21
|
-
var result = { locale: '', dataLocale: foundLocale };
|
|
22
|
-
var supportedExtension = '-u';
|
|
23
|
-
for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {
|
|
24
|
-
var key = relevantExtensionKeys_1[_i];
|
|
25
|
-
(0, utils_1.invariant)(foundLocale in localeData, "Missing locale data for ".concat(foundLocale));
|
|
26
|
-
var foundLocaleData = localeData[foundLocale];
|
|
27
|
-
(0, utils_1.invariant)(typeof foundLocaleData === 'object' && foundLocaleData !== null, "locale data ".concat(key, " must be an object"));
|
|
28
|
-
var keyLocaleData = foundLocaleData[key];
|
|
29
|
-
(0, utils_1.invariant)(Array.isArray(keyLocaleData), "keyLocaleData for ".concat(key, " must be an array"));
|
|
30
|
-
var value = keyLocaleData[0];
|
|
31
|
-
(0, utils_1.invariant)(typeof value === 'string' || value === null, "value must be string or null but got ".concat(typeof value, " in key ").concat(key));
|
|
32
|
-
var supportedExtensionAddition = '';
|
|
33
|
-
if (r.extension) {
|
|
34
|
-
var requestedValue = (0, UnicodeExtensionValue_1.UnicodeExtensionValue)(r.extension, key);
|
|
35
|
-
if (requestedValue !== undefined) {
|
|
36
|
-
if (requestedValue !== '') {
|
|
37
|
-
if (~keyLocaleData.indexOf(requestedValue)) {
|
|
38
|
-
value = requestedValue;
|
|
39
|
-
supportedExtensionAddition = "-".concat(key, "-").concat(value);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
else if (~requestedValue.indexOf('true')) {
|
|
43
|
-
value = 'true';
|
|
44
|
-
supportedExtensionAddition = "-".concat(key);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (key in options) {
|
|
49
|
-
var optionsValue = options[key];
|
|
50
|
-
(0, utils_1.invariant)(typeof optionsValue === 'string' ||
|
|
51
|
-
typeof optionsValue === 'undefined' ||
|
|
52
|
-
optionsValue === null, 'optionsValue must be String, Undefined or Null');
|
|
53
|
-
if (~keyLocaleData.indexOf(optionsValue)) {
|
|
54
|
-
if (optionsValue !== value) {
|
|
55
|
-
value = optionsValue;
|
|
56
|
-
supportedExtensionAddition = '';
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
result[key] = value;
|
|
61
|
-
supportedExtension += supportedExtensionAddition;
|
|
62
|
-
}
|
|
63
|
-
if (supportedExtension.length > 2) {
|
|
64
|
-
var privateIndex = foundLocale.indexOf('-x-');
|
|
65
|
-
if (privateIndex === -1) {
|
|
66
|
-
foundLocale = foundLocale + supportedExtension;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
var preExtension = foundLocale.slice(0, privateIndex);
|
|
70
|
-
var postExtension = foundLocale.slice(privateIndex, foundLocale.length);
|
|
71
|
-
foundLocale = preExtension + supportedExtension + postExtension;
|
|
72
|
-
}
|
|
73
|
-
foundLocale = Intl.getCanonicalLocales(foundLocale)[0];
|
|
74
|
-
}
|
|
75
|
-
result.locale = foundLocale;
|
|
76
|
-
return result;
|
|
77
|
-
}
|
|
78
|
-
exports.ResolveLocale = ResolveLocale;
|
|
@@ -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"}
|