gt-react-native 0.0.3 → 0.0.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.
- package/lib/commonjs/plugin-dir/index.js +4 -4
- package/lib/commonjs/plugin-dir/index.js.map +1 -1
- package/lib/commonjs/plugin-dir/types.js +9 -0
- package/lib/commonjs/plugin-dir/types.js.map +1 -1
- package/lib/commonjs/tools/testLocalePolyfill.js +125 -11
- package/lib/commonjs/tools/testLocalePolyfill.js.map +1 -1
- package/lib/module/plugin-dir/index.js +4 -4
- package/lib/module/plugin-dir/index.js.map +1 -1
- package/lib/module/plugin-dir/types.js +5 -0
- package/lib/module/plugin-dir/types.js.map +1 -1
- package/lib/module/tools/testLocalePolyfill.js +125 -11
- package/lib/module/tools/testLocalePolyfill.js.map +1 -1
- package/lib/typescript/commonjs/src/plugin-dir/index.d.ts +2 -2
- package/lib/typescript/commonjs/src/plugin-dir/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/plugin-dir/types.d.ts +3 -0
- package/lib/typescript/commonjs/src/plugin-dir/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/tools/testLocalePolyfill.d.ts +2 -6
- package/lib/typescript/commonjs/src/tools/testLocalePolyfill.d.ts.map +1 -1
- package/lib/typescript/module/src/plugin-dir/index.d.ts +2 -2
- package/lib/typescript/module/src/plugin-dir/index.d.ts.map +1 -1
- package/lib/typescript/module/src/plugin-dir/types.d.ts +3 -0
- package/lib/typescript/module/src/plugin-dir/types.d.ts.map +1 -1
- package/lib/typescript/module/src/tools/testLocalePolyfill.d.ts +2 -6
- package/lib/typescript/module/src/tools/testLocalePolyfill.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/plugin-dir/index.ts +6 -16
- package/src/plugin-dir/types.ts +23 -0
- package/src/tools/testLocalePolyfill.ts +170 -15
|
@@ -5,13 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
var path = _interopRequireWildcard(require("path"));
|
|
8
|
+
var _types = require("./types");
|
|
8
9
|
var _resolveLocales = require("./utils/resolveLocales");
|
|
9
10
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
11
|
function _default(babel, {
|
|
11
12
|
locales,
|
|
12
13
|
config,
|
|
13
14
|
configFilePath,
|
|
14
|
-
entryPointFilePath = path.resolve(process.cwd(), 'src', 'App.tsx')
|
|
15
|
+
entryPointFilePath = path.resolve(process.cwd(), 'src', 'App.tsx'),
|
|
16
|
+
excludePolyfills = []
|
|
15
17
|
}) {
|
|
16
18
|
const {
|
|
17
19
|
types: t
|
|
@@ -33,9 +35,7 @@ function _default(babel, {
|
|
|
33
35
|
});
|
|
34
36
|
|
|
35
37
|
// TODO: smart imports based on if the polyfill is required, do this as a wrapper around AppRegistry.registerComponent()
|
|
36
|
-
const imports = [
|
|
37
|
-
// https://github.com/formatjs/formatjs/issues/4463
|
|
38
|
-
'@formatjs/intl-numberformat/polyfill', '@formatjs/intl-relativetimeformat/polyfill', '@formatjs/intl-datetimeformat/polyfill', '@formatjs/intl-datetimeformat/add-all-tz', ...resolvedLocales.flatMap(locale => [`@formatjs/intl-displaynames/locale-data/${locale}`, `@formatjs/intl-listformat/locale-data/${locale}`, `@formatjs/intl-pluralrules/locale-data/${locale}`, `@formatjs/intl-numberformat/locale-data/${locale}`, `@formatjs/intl-relativetimeformat/locale-data/${locale}`, `@formatjs/intl-datetimeformat/locale-data/${locale}`])];
|
|
38
|
+
const imports = [..._types.POLYFILLS.filter(polyfill => !excludePolyfills.includes(polyfill)), ...resolvedLocales.flatMap(locale => [..._types.LOCALE_POLYFILLS.map(localeData => `${localeData}/${locale}`)])];
|
|
39
39
|
const existingImports = new Set();
|
|
40
40
|
programPath.node.body.forEach(node => {
|
|
41
41
|
if (t.isImportDeclaration(node) && typeof node.source.value === 'string' && imports.includes(node.source.value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["path","_interopRequireWildcard","require","_resolveLocales","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_default","babel","locales","config","configFilePath","entryPointFilePath","resolve","process","cwd","types","name","visitor","Program","programPath","state","currentFilePath","filename","file","opts","resolvedLocales","resolveLocales","imports","flatMap","locale","existingImports","Set","node","body","forEach","isImportDeclaration","source","value","
|
|
1
|
+
{"version":3,"names":["path","_interopRequireWildcard","require","_types","_resolveLocales","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_default","babel","locales","config","configFilePath","entryPointFilePath","resolve","process","cwd","excludePolyfills","types","name","visitor","Program","programPath","state","currentFilePath","filename","file","opts","resolvedLocales","resolveLocales","imports","POLYFILLS","filter","polyfill","includes","flatMap","locale","LOCALE_POLYFILLS","map","localeData","existingImports","Set","node","body","forEach","isImportDeclaration","source","value","add","importsToAdd","imp","length","newImports","importPath","importDeclaration","stringLiteral","unshift"],"sourceRoot":"../../../src","sources":["plugin-dir/index.ts"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAAwD,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEzC,SAAAkB,SACbC,KAA8B,EAC9B;EACEC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,kBAAkB,GAAG7B,IAAI,CAAC8B,OAAO,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC;EAClEC,gBAAgB,GAAG;AACN,CAAC,EACL;EACX,MAAM;IAAEC,KAAK,EAAE5B;EAAE,CAAC,GAAGmB,KAAK;EAE1B,OAAO;IACLU,IAAI,EAAE,wBAAwB;IAC9BC,OAAO,EAAE;MACPC,OAAOA,CAACC,WAAW,EAAEC,KAAK,EAAE;QAC1B,MAAMC,eAAe,GAAGxC,IAAI,CAAC8B,OAAO,CAClCS,KAAK,CAACE,QAAQ,IAAIF,KAAK,CAACG,IAAI,CAACC,IAAI,CAACF,QAAQ,IAAI,EAChD,CAAC;;QAED;QACA,IAAID,eAAe,KAAKX,kBAAkB,EAAE;UAC1C;QACF;QAEA,MAAMe,eAAe,GAAG,IAAAC,8BAAc,EAAC;UACrCnB,OAAO;UACPC,MAAM;UACNC;QACF,CAAC,CAAC;;QAEF;QACA,MAAMkB,OAAO,GAAG,CACd,GAAGC,gBAAS,CAACC,MAAM,CAChBC,QAAQ,IAAK,CAAChB,gBAAgB,CAACiB,QAAQ,CAACD,QAAQ,CACnD,CAAC,EACD,GAAGL,eAAe,CAACO,OAAO,CAAEC,MAAM,IAAK,CACrC,GAAGC,uBAAgB,CAACC,GAAG,CAAEC,UAAU,IAAK,GAAGA,UAAU,IAAIH,MAAM,EAAE,CAAC,CACnE,CAAC,CACH;QAED,MAAMI,eAAe,GAAG,IAAIC,GAAG,CAAS,CAAC;QACzCnB,WAAW,CAACoB,IAAI,CAACC,IAAI,CAACC,OAAO,CAAEF,IAAI,IAAK;UACtC,IACEpD,CAAC,CAACuD,mBAAmB,CAACH,IAAI,CAAC,IAC3B,OAAOA,IAAI,CAACI,MAAM,CAACC,KAAK,KAAK,QAAQ,IACrCjB,OAAO,CAACI,QAAQ,CAACQ,IAAI,CAACI,MAAM,CAACC,KAAK,CAAC,EACnC;YACAP,eAAe,CAACQ,GAAG,CAACN,IAAI,CAACI,MAAM,CAACC,KAAK,CAAC;UACxC;QACF,CAAC,CAAC;QAEF,MAAME,YAAY,GAAGnB,OAAO,CAACE,MAAM,CAAEkB,GAAG,IAAK,CAACV,eAAe,CAACxC,GAAG,CAACkD,GAAG,CAAC,CAAC;QAEvE,IAAID,YAAY,CAACE,MAAM,GAAG,CAAC,EAAE;UAC3B,MAAMC,UAAU,GAAGH,YAAY,CAACX,GAAG,CAAEe,UAAU,IAC7C/D,CAAC,CAACgE,iBAAiB,CAAC,EAAE,EAAEhE,CAAC,CAACiE,aAAa,CAACF,UAAU,CAAC,CACrD,CAAC;UAED/B,WAAW,CAACoB,IAAI,CAACC,IAAI,CAACa,OAAO,CAAC,GAAGJ,UAAU,CAAC;QAC9C;MACF;IACF;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.POLYFILLS = exports.LOCALE_POLYFILLS = void 0;
|
|
7
|
+
const POLYFILLS = exports.POLYFILLS = ['@formatjs/intl-getcanonicallocales/polyfill', '@formatjs/intl-locale/polyfill', '@formatjs/intl-displaynames/polyfill', '@formatjs/intl-listformat/polyfill', '@formatjs/intl-pluralrules/polyfill-force',
|
|
8
|
+
// https://github.com/formatjs/formatjs/issues/4463
|
|
9
|
+
'@formatjs/intl-numberformat/polyfill', '@formatjs/intl-relativetimeformat/polyfill', '@formatjs/intl-datetimeformat/polyfill', '@formatjs/intl-datetimeformat/add-all-tz'];
|
|
10
|
+
const LOCALE_POLYFILLS = exports.LOCALE_POLYFILLS = [`@formatjs/intl-displaynames/locale-data`, `@formatjs/intl-listformat/locale-data`, `@formatjs/intl-pluralrules/locale-data`, `@formatjs/intl-numberformat/locale-data`, `@formatjs/intl-relativetimeformat/locale-data`, `@formatjs/intl-datetimeformat/locale-data`];
|
|
2
11
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["plugin-dir/types.ts"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["POLYFILLS","exports","LOCALE_POLYFILLS"],"sourceRoot":"../../../src","sources":["plugin-dir/types.ts"],"mappings":";;;;;;AAAO,MAAMA,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG,CACvB,6CAA6C,EAC7C,gCAAgC,EAChC,sCAAsC,EACtC,oCAAoC,EACpC,2CAA2C;AAAE;AAC7C,sCAAsC,EACtC,4CAA4C,EAC5C,wCAAwC,EACxC,0CAA0C,CAClC;AAEH,MAAME,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,GAAG,CAC9B,yCAAyC,EACzC,uCAAuC,EACvC,wCAAwC,EACxC,yCAAyC,EACzC,+CAA+C,EAC/C,2CAA2C,CACnC","ignoreList":[]}
|
|
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.testLocalePolyfill = testLocalePolyfill;
|
|
7
|
-
|
|
7
|
+
var _internal = require("generaltranslation/internal");
|
|
8
|
+
function testLocalePolyfill(locale = _internal.libraryDefaultLocale) {
|
|
8
9
|
const problems = [];
|
|
9
10
|
|
|
10
11
|
// 1. basic presence
|
|
@@ -16,10 +17,48 @@ function testLocalePolyfill(locale = 'en-US') {
|
|
|
16
17
|
});
|
|
17
18
|
|
|
18
19
|
// 2. locale actually supported (no silent fallback)
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
let dtfSupported = false;
|
|
21
|
+
try {
|
|
22
|
+
dtfSupported = Intl.DateTimeFormat.supportedLocalesOf([locale])[0] === locale;
|
|
23
|
+
} catch (e) {
|
|
24
|
+
problems.push(`DateTimeFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
25
|
+
}
|
|
26
|
+
let nfSupported = false;
|
|
27
|
+
try {
|
|
28
|
+
nfSupported = Intl.NumberFormat.supportedLocalesOf([locale])[0] === locale;
|
|
29
|
+
} catch (e) {
|
|
30
|
+
problems.push(`NumberFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
31
|
+
}
|
|
32
|
+
let prSupported = false;
|
|
33
|
+
try {
|
|
34
|
+
prSupported = Intl.PluralRules.supportedLocalesOf([locale])[0] === locale;
|
|
35
|
+
} catch (e) {
|
|
36
|
+
problems.push(`PluralRules.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
37
|
+
}
|
|
38
|
+
let rtfSupported = false;
|
|
39
|
+
try {
|
|
40
|
+
rtfSupported = Intl.RelativeTimeFormat.supportedLocalesOf([locale])[0] === locale;
|
|
41
|
+
} catch (e) {
|
|
42
|
+
problems.push(`RelativeTimeFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
43
|
+
}
|
|
44
|
+
let lfSupported = false;
|
|
45
|
+
try {
|
|
46
|
+
lfSupported = Intl.ListFormat.supportedLocalesOf([locale])[0] === locale;
|
|
47
|
+
} catch (e) {
|
|
48
|
+
problems.push(`ListFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
49
|
+
}
|
|
50
|
+
let dnSupported = false;
|
|
51
|
+
try {
|
|
52
|
+
dnSupported = Intl.DisplayNames.supportedLocalesOf([locale])[0] === locale;
|
|
53
|
+
} catch (e) {
|
|
54
|
+
problems.push(`DisplayNames.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
55
|
+
}
|
|
21
56
|
if (!dtfSupported) problems.push(`${locale} not supported by DateTimeFormat`);
|
|
22
57
|
if (!nfSupported) problems.push(`${locale} not supported by NumberFormat`);
|
|
58
|
+
if (!prSupported) problems.push(`${locale} not supported by PluralRules`);
|
|
59
|
+
if (!rtfSupported) problems.push(`${locale} not supported by RelativeTimeFormat`);
|
|
60
|
+
if (!lfSupported) problems.push(`${locale} not supported by ListFormat`);
|
|
61
|
+
if (!dnSupported) problems.push(`${locale} not supported by DisplayNames`);
|
|
23
62
|
|
|
24
63
|
// 3. numeric separators sanity
|
|
25
64
|
let group, decimal;
|
|
@@ -41,16 +80,91 @@ function testLocalePolyfill(locale = 'en-US') {
|
|
|
41
80
|
problems.push(`PluralRules threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
42
81
|
}
|
|
43
82
|
|
|
44
|
-
// 5.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
83
|
+
// 5. relative time format sanity
|
|
84
|
+
try {
|
|
85
|
+
const rtf = new Intl.RelativeTimeFormat(locale);
|
|
86
|
+
const sample = rtf.format(-1, 'day');
|
|
87
|
+
if (!sample) problems.push('RelativeTimeFormat returned undefined');
|
|
88
|
+
} catch (e) {
|
|
89
|
+
problems.push(`RelativeTimeFormat threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// 6. list format sanity
|
|
93
|
+
try {
|
|
94
|
+
const lf = new Intl.ListFormat(locale);
|
|
95
|
+
const sample = lf.format(['apple', 'orange', 'banana']);
|
|
96
|
+
if (!sample) problems.push('ListFormat returned undefined');
|
|
97
|
+
} catch (e) {
|
|
98
|
+
problems.push(`ListFormat threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// 7. display names sanity
|
|
102
|
+
try {
|
|
103
|
+
const dn = new Intl.DisplayNames(locale, {
|
|
104
|
+
type: 'language'
|
|
105
|
+
});
|
|
106
|
+
const sample = dn.of('en');
|
|
107
|
+
if (!sample) problems.push('DisplayNames returned undefined');
|
|
108
|
+
} catch (e) {
|
|
109
|
+
problems.push(`DisplayNames threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// 8. locale sanity
|
|
113
|
+
try {
|
|
114
|
+
const loc = new Intl.Locale(locale);
|
|
115
|
+
if (!loc.language) problems.push('Locale missing language property');
|
|
116
|
+
} catch (e) {
|
|
117
|
+
problems.push(`Locale threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// 9. show example formatted values
|
|
121
|
+
const example = {};
|
|
122
|
+
try {
|
|
123
|
+
example.number = new Intl.NumberFormat(locale).format(1234.5);
|
|
124
|
+
} catch (e) {
|
|
125
|
+
example.number = 'ERROR';
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
example.date = new Intl.DateTimeFormat(locale, {
|
|
48
129
|
dateStyle: 'long'
|
|
49
|
-
}).format(new Date('2020-01-02'))
|
|
50
|
-
|
|
130
|
+
}).format(new Date('2020-01-02'));
|
|
131
|
+
} catch (e) {
|
|
132
|
+
example.date = 'ERROR';
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
example.weekday = new Intl.DateTimeFormat(locale, {
|
|
51
136
|
weekday: 'long'
|
|
52
|
-
}).format(new Date('2020-01-02'))
|
|
53
|
-
}
|
|
137
|
+
}).format(new Date('2020-01-02'));
|
|
138
|
+
} catch (e) {
|
|
139
|
+
example.weekday = 'ERROR';
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
example.pluralRule = new Intl.PluralRules(locale).select(5);
|
|
143
|
+
} catch (e) {
|
|
144
|
+
example.pluralRule = 'ERROR';
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
example.relativeTime = new Intl.RelativeTimeFormat(locale).format(-1, 'day');
|
|
148
|
+
} catch (e) {
|
|
149
|
+
example.relativeTime = 'ERROR';
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
example.list = new Intl.ListFormat(locale).format(['apple', 'orange', 'banana']);
|
|
153
|
+
} catch (e) {
|
|
154
|
+
example.list = 'ERROR';
|
|
155
|
+
}
|
|
156
|
+
try {
|
|
157
|
+
example.displayName = new Intl.DisplayNames(locale, {
|
|
158
|
+
type: 'language'
|
|
159
|
+
}).of('en') || 'UNDEFINED';
|
|
160
|
+
} catch (e) {
|
|
161
|
+
example.displayName = 'ERROR';
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
example.locale = new Intl.Locale(locale).language;
|
|
165
|
+
} catch (e) {
|
|
166
|
+
example.locale = 'ERROR';
|
|
167
|
+
}
|
|
54
168
|
const result = {
|
|
55
169
|
ok: problems.length === 0,
|
|
56
170
|
problems,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["testLocalePolyfill","locale","problems","global","Intl","push","apis","forEach","a","dtfSupported","DateTimeFormat","supportedLocalesOf","nfSupported","NumberFormat","group","decimal","parts","formatToParts","find","p","type","value","
|
|
1
|
+
{"version":3,"names":["_internal","require","testLocalePolyfill","locale","libraryDefaultLocale","problems","global","Intl","push","apis","forEach","a","dtfSupported","DateTimeFormat","supportedLocalesOf","e","Error","message","String","nfSupported","NumberFormat","prSupported","PluralRules","rtfSupported","RelativeTimeFormat","lfSupported","ListFormat","dnSupported","DisplayNames","group","decimal","parts","formatToParts","find","p","type","value","pr","sample","select","rtf","format","lf","dn","of","loc","Locale","language","example","number","date","dateStyle","Date","weekday","pluralRule","relativeTime","list","displayName","result","ok","length","console","log","warn"],"sourceRoot":"../../../src","sources":["tools/testLocalePolyfill.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import * as path from 'path';
|
|
4
|
+
import { LOCALE_POLYFILLS, POLYFILLS } from "./types.js";
|
|
4
5
|
import { resolveLocales } from "./utils/resolveLocales.js";
|
|
5
6
|
export default function (babel, {
|
|
6
7
|
locales,
|
|
7
8
|
config,
|
|
8
9
|
configFilePath,
|
|
9
|
-
entryPointFilePath = path.resolve(process.cwd(), 'src', 'App.tsx')
|
|
10
|
+
entryPointFilePath = path.resolve(process.cwd(), 'src', 'App.tsx'),
|
|
11
|
+
excludePolyfills = []
|
|
10
12
|
}) {
|
|
11
13
|
const {
|
|
12
14
|
types: t
|
|
@@ -28,9 +30,7 @@ export default function (babel, {
|
|
|
28
30
|
});
|
|
29
31
|
|
|
30
32
|
// TODO: smart imports based on if the polyfill is required, do this as a wrapper around AppRegistry.registerComponent()
|
|
31
|
-
const imports = [
|
|
32
|
-
// https://github.com/formatjs/formatjs/issues/4463
|
|
33
|
-
'@formatjs/intl-numberformat/polyfill', '@formatjs/intl-relativetimeformat/polyfill', '@formatjs/intl-datetimeformat/polyfill', '@formatjs/intl-datetimeformat/add-all-tz', ...resolvedLocales.flatMap(locale => [`@formatjs/intl-displaynames/locale-data/${locale}`, `@formatjs/intl-listformat/locale-data/${locale}`, `@formatjs/intl-pluralrules/locale-data/${locale}`, `@formatjs/intl-numberformat/locale-data/${locale}`, `@formatjs/intl-relativetimeformat/locale-data/${locale}`, `@formatjs/intl-datetimeformat/locale-data/${locale}`])];
|
|
33
|
+
const imports = [...POLYFILLS.filter(polyfill => !excludePolyfills.includes(polyfill)), ...resolvedLocales.flatMap(locale => [...LOCALE_POLYFILLS.map(localeData => `${localeData}/${locale}`)])];
|
|
34
34
|
const existingImports = new Set();
|
|
35
35
|
programPath.node.body.forEach(node => {
|
|
36
36
|
if (t.isImportDeclaration(node) && typeof node.source.value === 'string' && imports.includes(node.source.value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["path","resolveLocales","babel","locales","config","configFilePath","entryPointFilePath","resolve","process","cwd","types","t","name","visitor","Program","programPath","state","currentFilePath","filename","file","opts","resolvedLocales","imports","flatMap","locale","existingImports","Set","node","body","forEach","isImportDeclaration","source","value","
|
|
1
|
+
{"version":3,"names":["path","LOCALE_POLYFILLS","POLYFILLS","resolveLocales","babel","locales","config","configFilePath","entryPointFilePath","resolve","process","cwd","excludePolyfills","types","t","name","visitor","Program","programPath","state","currentFilePath","filename","file","opts","resolvedLocales","imports","filter","polyfill","includes","flatMap","locale","map","localeData","existingImports","Set","node","body","forEach","isImportDeclaration","source","value","add","importsToAdd","imp","has","length","newImports","importPath","importDeclaration","stringLiteral","unshift"],"sourceRoot":"../../../src","sources":["plugin-dir/index.ts"],"mappings":";;AAAA,OAAO,KAAKA,IAAI,MAAM,MAAM;AAE5B,SAASC,gBAAgB,EAAEC,SAAS,QAA4B,YAAS;AACzE,SAASC,cAAc,QAAQ,2BAAwB;AAEvD,eAAe,UACbC,KAA8B,EAC9B;EACEC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,kBAAkB,GAAGR,IAAI,CAACS,OAAO,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC;EAClEC,gBAAgB,GAAG;AACN,CAAC,EACL;EACX,MAAM;IAAEC,KAAK,EAAEC;EAAE,CAAC,GAAGV,KAAK;EAE1B,OAAO;IACLW,IAAI,EAAE,wBAAwB;IAC9BC,OAAO,EAAE;MACPC,OAAOA,CAACC,WAAW,EAAEC,KAAK,EAAE;QAC1B,MAAMC,eAAe,GAAGpB,IAAI,CAACS,OAAO,CAClCU,KAAK,CAACE,QAAQ,IAAIF,KAAK,CAACG,IAAI,CAACC,IAAI,CAACF,QAAQ,IAAI,EAChD,CAAC;;QAED;QACA,IAAID,eAAe,KAAKZ,kBAAkB,EAAE;UAC1C;QACF;QAEA,MAAMgB,eAAe,GAAGrB,cAAc,CAAC;UACrCE,OAAO;UACPC,MAAM;UACNC;QACF,CAAC,CAAC;;QAEF;QACA,MAAMkB,OAAO,GAAG,CACd,GAAGvB,SAAS,CAACwB,MAAM,CAChBC,QAAQ,IAAK,CAACf,gBAAgB,CAACgB,QAAQ,CAACD,QAAQ,CACnD,CAAC,EACD,GAAGH,eAAe,CAACK,OAAO,CAAEC,MAAM,IAAK,CACrC,GAAG7B,gBAAgB,CAAC8B,GAAG,CAAEC,UAAU,IAAK,GAAGA,UAAU,IAAIF,MAAM,EAAE,CAAC,CACnE,CAAC,CACH;QAED,MAAMG,eAAe,GAAG,IAAIC,GAAG,CAAS,CAAC;QACzChB,WAAW,CAACiB,IAAI,CAACC,IAAI,CAACC,OAAO,CAAEF,IAAI,IAAK;UACtC,IACErB,CAAC,CAACwB,mBAAmB,CAACH,IAAI,CAAC,IAC3B,OAAOA,IAAI,CAACI,MAAM,CAACC,KAAK,KAAK,QAAQ,IACrCf,OAAO,CAACG,QAAQ,CAACO,IAAI,CAACI,MAAM,CAACC,KAAK,CAAC,EACnC;YACAP,eAAe,CAACQ,GAAG,CAACN,IAAI,CAACI,MAAM,CAACC,KAAK,CAAC;UACxC;QACF,CAAC,CAAC;QAEF,MAAME,YAAY,GAAGjB,OAAO,CAACC,MAAM,CAAEiB,GAAG,IAAK,CAACV,eAAe,CAACW,GAAG,CAACD,GAAG,CAAC,CAAC;QAEvE,IAAID,YAAY,CAACG,MAAM,GAAG,CAAC,EAAE;UAC3B,MAAMC,UAAU,GAAGJ,YAAY,CAACX,GAAG,CAAEgB,UAAU,IAC7CjC,CAAC,CAACkC,iBAAiB,CAAC,EAAE,EAAElC,CAAC,CAACmC,aAAa,CAACF,UAAU,CAAC,CACrD,CAAC;UAED7B,WAAW,CAACiB,IAAI,CAACC,IAAI,CAACc,OAAO,CAAC,GAAGJ,UAAU,CAAC;QAC9C;MACF;IACF;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
3
|
+
export const POLYFILLS = ['@formatjs/intl-getcanonicallocales/polyfill', '@formatjs/intl-locale/polyfill', '@formatjs/intl-displaynames/polyfill', '@formatjs/intl-listformat/polyfill', '@formatjs/intl-pluralrules/polyfill-force',
|
|
4
|
+
// https://github.com/formatjs/formatjs/issues/4463
|
|
5
|
+
'@formatjs/intl-numberformat/polyfill', '@formatjs/intl-relativetimeformat/polyfill', '@formatjs/intl-datetimeformat/polyfill', '@formatjs/intl-datetimeformat/add-all-tz'];
|
|
6
|
+
export const LOCALE_POLYFILLS = [`@formatjs/intl-displaynames/locale-data`, `@formatjs/intl-listformat/locale-data`, `@formatjs/intl-pluralrules/locale-data`, `@formatjs/intl-numberformat/locale-data`, `@formatjs/intl-relativetimeformat/locale-data`, `@formatjs/intl-datetimeformat/locale-data`];
|
|
2
7
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["plugin-dir/types.ts"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["POLYFILLS","LOCALE_POLYFILLS"],"sourceRoot":"../../../src","sources":["plugin-dir/types.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,GAAG,CACvB,6CAA6C,EAC7C,gCAAgC,EAChC,sCAAsC,EACtC,oCAAoC,EACpC,2CAA2C;AAAE;AAC7C,sCAAsC,EACtC,4CAA4C,EAC5C,wCAAwC,EACxC,0CAA0C,CAClC;AAEV,OAAO,MAAMC,gBAAgB,GAAG,CAC9B,yCAAyC,EACzC,uCAAuC,EACvC,wCAAwC,EACxC,yCAAyC,EACzC,+CAA+C,EAC/C,2CAA2C,CACnC","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { libraryDefaultLocale } from 'generaltranslation/internal';
|
|
4
|
+
export function testLocalePolyfill(locale = libraryDefaultLocale) {
|
|
4
5
|
const problems = [];
|
|
5
6
|
|
|
6
7
|
// 1. basic presence
|
|
@@ -12,10 +13,48 @@ export function testLocalePolyfill(locale = 'en-US') {
|
|
|
12
13
|
});
|
|
13
14
|
|
|
14
15
|
// 2. locale actually supported (no silent fallback)
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
let dtfSupported = false;
|
|
17
|
+
try {
|
|
18
|
+
dtfSupported = Intl.DateTimeFormat.supportedLocalesOf([locale])[0] === locale;
|
|
19
|
+
} catch (e) {
|
|
20
|
+
problems.push(`DateTimeFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
21
|
+
}
|
|
22
|
+
let nfSupported = false;
|
|
23
|
+
try {
|
|
24
|
+
nfSupported = Intl.NumberFormat.supportedLocalesOf([locale])[0] === locale;
|
|
25
|
+
} catch (e) {
|
|
26
|
+
problems.push(`NumberFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
27
|
+
}
|
|
28
|
+
let prSupported = false;
|
|
29
|
+
try {
|
|
30
|
+
prSupported = Intl.PluralRules.supportedLocalesOf([locale])[0] === locale;
|
|
31
|
+
} catch (e) {
|
|
32
|
+
problems.push(`PluralRules.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
33
|
+
}
|
|
34
|
+
let rtfSupported = false;
|
|
35
|
+
try {
|
|
36
|
+
rtfSupported = Intl.RelativeTimeFormat.supportedLocalesOf([locale])[0] === locale;
|
|
37
|
+
} catch (e) {
|
|
38
|
+
problems.push(`RelativeTimeFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
39
|
+
}
|
|
40
|
+
let lfSupported = false;
|
|
41
|
+
try {
|
|
42
|
+
lfSupported = Intl.ListFormat.supportedLocalesOf([locale])[0] === locale;
|
|
43
|
+
} catch (e) {
|
|
44
|
+
problems.push(`ListFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
45
|
+
}
|
|
46
|
+
let dnSupported = false;
|
|
47
|
+
try {
|
|
48
|
+
dnSupported = Intl.DisplayNames.supportedLocalesOf([locale])[0] === locale;
|
|
49
|
+
} catch (e) {
|
|
50
|
+
problems.push(`DisplayNames.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
51
|
+
}
|
|
17
52
|
if (!dtfSupported) problems.push(`${locale} not supported by DateTimeFormat`);
|
|
18
53
|
if (!nfSupported) problems.push(`${locale} not supported by NumberFormat`);
|
|
54
|
+
if (!prSupported) problems.push(`${locale} not supported by PluralRules`);
|
|
55
|
+
if (!rtfSupported) problems.push(`${locale} not supported by RelativeTimeFormat`);
|
|
56
|
+
if (!lfSupported) problems.push(`${locale} not supported by ListFormat`);
|
|
57
|
+
if (!dnSupported) problems.push(`${locale} not supported by DisplayNames`);
|
|
19
58
|
|
|
20
59
|
// 3. numeric separators sanity
|
|
21
60
|
let group, decimal;
|
|
@@ -37,16 +76,91 @@ export function testLocalePolyfill(locale = 'en-US') {
|
|
|
37
76
|
problems.push(`PluralRules threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
38
77
|
}
|
|
39
78
|
|
|
40
|
-
// 5.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
79
|
+
// 5. relative time format sanity
|
|
80
|
+
try {
|
|
81
|
+
const rtf = new Intl.RelativeTimeFormat(locale);
|
|
82
|
+
const sample = rtf.format(-1, 'day');
|
|
83
|
+
if (!sample) problems.push('RelativeTimeFormat returned undefined');
|
|
84
|
+
} catch (e) {
|
|
85
|
+
problems.push(`RelativeTimeFormat threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// 6. list format sanity
|
|
89
|
+
try {
|
|
90
|
+
const lf = new Intl.ListFormat(locale);
|
|
91
|
+
const sample = lf.format(['apple', 'orange', 'banana']);
|
|
92
|
+
if (!sample) problems.push('ListFormat returned undefined');
|
|
93
|
+
} catch (e) {
|
|
94
|
+
problems.push(`ListFormat threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// 7. display names sanity
|
|
98
|
+
try {
|
|
99
|
+
const dn = new Intl.DisplayNames(locale, {
|
|
100
|
+
type: 'language'
|
|
101
|
+
});
|
|
102
|
+
const sample = dn.of('en');
|
|
103
|
+
if (!sample) problems.push('DisplayNames returned undefined');
|
|
104
|
+
} catch (e) {
|
|
105
|
+
problems.push(`DisplayNames threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// 8. locale sanity
|
|
109
|
+
try {
|
|
110
|
+
const loc = new Intl.Locale(locale);
|
|
111
|
+
if (!loc.language) problems.push('Locale missing language property');
|
|
112
|
+
} catch (e) {
|
|
113
|
+
problems.push(`Locale threw: ${e instanceof Error ? e.message : String(e)}`);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// 9. show example formatted values
|
|
117
|
+
const example = {};
|
|
118
|
+
try {
|
|
119
|
+
example.number = new Intl.NumberFormat(locale).format(1234.5);
|
|
120
|
+
} catch (e) {
|
|
121
|
+
example.number = 'ERROR';
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
example.date = new Intl.DateTimeFormat(locale, {
|
|
44
125
|
dateStyle: 'long'
|
|
45
|
-
}).format(new Date('2020-01-02'))
|
|
46
|
-
|
|
126
|
+
}).format(new Date('2020-01-02'));
|
|
127
|
+
} catch (e) {
|
|
128
|
+
example.date = 'ERROR';
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
example.weekday = new Intl.DateTimeFormat(locale, {
|
|
47
132
|
weekday: 'long'
|
|
48
|
-
}).format(new Date('2020-01-02'))
|
|
49
|
-
}
|
|
133
|
+
}).format(new Date('2020-01-02'));
|
|
134
|
+
} catch (e) {
|
|
135
|
+
example.weekday = 'ERROR';
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
example.pluralRule = new Intl.PluralRules(locale).select(5);
|
|
139
|
+
} catch (e) {
|
|
140
|
+
example.pluralRule = 'ERROR';
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
example.relativeTime = new Intl.RelativeTimeFormat(locale).format(-1, 'day');
|
|
144
|
+
} catch (e) {
|
|
145
|
+
example.relativeTime = 'ERROR';
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
example.list = new Intl.ListFormat(locale).format(['apple', 'orange', 'banana']);
|
|
149
|
+
} catch (e) {
|
|
150
|
+
example.list = 'ERROR';
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
example.displayName = new Intl.DisplayNames(locale, {
|
|
154
|
+
type: 'language'
|
|
155
|
+
}).of('en') || 'UNDEFINED';
|
|
156
|
+
} catch (e) {
|
|
157
|
+
example.displayName = 'ERROR';
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
example.locale = new Intl.Locale(locale).language;
|
|
161
|
+
} catch (e) {
|
|
162
|
+
example.locale = 'ERROR';
|
|
163
|
+
}
|
|
50
164
|
const result = {
|
|
51
165
|
ok: problems.length === 0,
|
|
52
166
|
problems,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["testLocalePolyfill","locale","problems","global","Intl","push","apis","forEach","a","dtfSupported","DateTimeFormat","supportedLocalesOf","nfSupported","NumberFormat","group","decimal","parts","formatToParts","find","p","type","value","
|
|
1
|
+
{"version":3,"names":["libraryDefaultLocale","testLocalePolyfill","locale","problems","global","Intl","push","apis","forEach","a","dtfSupported","DateTimeFormat","supportedLocalesOf","e","Error","message","String","nfSupported","NumberFormat","prSupported","PluralRules","rtfSupported","RelativeTimeFormat","lfSupported","ListFormat","dnSupported","DisplayNames","group","decimal","parts","formatToParts","find","p","type","value","pr","sample","select","rtf","format","lf","dn","of","loc","Locale","language","example","number","date","dateStyle","Date","weekday","pluralRule","relativeTime","list","displayName","result","ok","length","console","log","warn"],"sourceRoot":"../../../src","sources":["tools/testLocalePolyfill.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PluginObj, types } from '@babel/core';
|
|
2
|
-
import type
|
|
2
|
+
import { type PluginOptions } from './types';
|
|
3
3
|
export default function (babel: {
|
|
4
4
|
types: typeof types;
|
|
5
|
-
}, { locales, config, configFilePath, entryPointFilePath, }: PluginOptions): PluginObj;
|
|
5
|
+
}, { locales, config, configFilePath, entryPointFilePath, excludePolyfills, }: PluginOptions): PluginObj;
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugin-dir/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugin-dir/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAG1E,MAAM,CAAC,OAAO,WACZ,KAAK,EAAE;IAAE,KAAK,EAAE,OAAO,KAAK,CAAA;CAAE,EAC9B,EACE,OAAO,EACP,MAAM,EACN,cAAc,EACd,kBAAkE,EAClE,gBAAqB,GACtB,EAAE,aAAa,GACf,SAAS,CAuDX"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export declare const POLYFILLS: readonly ["@formatjs/intl-getcanonicallocales/polyfill", "@formatjs/intl-locale/polyfill", "@formatjs/intl-displaynames/polyfill", "@formatjs/intl-listformat/polyfill", "@formatjs/intl-pluralrules/polyfill-force", "@formatjs/intl-numberformat/polyfill", "@formatjs/intl-relativetimeformat/polyfill", "@formatjs/intl-datetimeformat/polyfill", "@formatjs/intl-datetimeformat/add-all-tz"];
|
|
2
|
+
export declare const LOCALE_POLYFILLS: readonly ["@formatjs/intl-displaynames/locale-data", "@formatjs/intl-listformat/locale-data", "@formatjs/intl-pluralrules/locale-data", "@formatjs/intl-numberformat/locale-data", "@formatjs/intl-relativetimeformat/locale-data", "@formatjs/intl-datetimeformat/locale-data"];
|
|
1
3
|
export interface PluginOptions {
|
|
2
4
|
locales?: string[];
|
|
3
5
|
config?: {
|
|
@@ -6,5 +8,6 @@ export interface PluginOptions {
|
|
|
6
8
|
} & Record<string, any>;
|
|
7
9
|
configFilePath?: string;
|
|
8
10
|
entryPointFilePath?: string;
|
|
11
|
+
excludePolyfills?: (typeof POLYFILLS)[number][];
|
|
9
12
|
}
|
|
10
13
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/plugin-dir/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAE5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5E,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kBAAkB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/plugin-dir/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,mYAUZ,CAAC;AAEX,eAAO,MAAM,gBAAgB,kRAOnB,CAAC;AAEX,MAAM,WAAW,aAAa;IAE5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5E,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,gBAAgB,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CACjD"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
export declare function testLocalePolyfill(locale?:
|
|
1
|
+
export declare function testLocalePolyfill(locale?: "en"): {
|
|
2
2
|
ok: boolean;
|
|
3
3
|
problems: string[];
|
|
4
4
|
group: string | undefined;
|
|
5
5
|
decimal: string | undefined;
|
|
6
|
-
example:
|
|
7
|
-
number: string;
|
|
8
|
-
date: string;
|
|
9
|
-
weekday: string;
|
|
10
|
-
};
|
|
6
|
+
example: Record<string, string>;
|
|
11
7
|
};
|
|
12
8
|
//# sourceMappingURL=testLocalePolyfill.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testLocalePolyfill.d.ts","sourceRoot":"","sources":["../../../../../src/tools/testLocalePolyfill.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testLocalePolyfill.d.ts","sourceRoot":"","sources":["../../../../../src/tools/testLocalePolyfill.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,MAAM,OAAuB;;;;;;EA0O/D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PluginObj, types } from '@babel/core';
|
|
2
|
-
import type
|
|
2
|
+
import { type PluginOptions } from './types';
|
|
3
3
|
export default function (babel: {
|
|
4
4
|
types: typeof types;
|
|
5
|
-
}, { locales, config, configFilePath, entryPointFilePath, }: PluginOptions): PluginObj;
|
|
5
|
+
}, { locales, config, configFilePath, entryPointFilePath, excludePolyfills, }: PluginOptions): PluginObj;
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugin-dir/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugin-dir/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAG1E,MAAM,CAAC,OAAO,WACZ,KAAK,EAAE;IAAE,KAAK,EAAE,OAAO,KAAK,CAAA;CAAE,EAC9B,EACE,OAAO,EACP,MAAM,EACN,cAAc,EACd,kBAAkE,EAClE,gBAAqB,GACtB,EAAE,aAAa,GACf,SAAS,CAuDX"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export declare const POLYFILLS: readonly ["@formatjs/intl-getcanonicallocales/polyfill", "@formatjs/intl-locale/polyfill", "@formatjs/intl-displaynames/polyfill", "@formatjs/intl-listformat/polyfill", "@formatjs/intl-pluralrules/polyfill-force", "@formatjs/intl-numberformat/polyfill", "@formatjs/intl-relativetimeformat/polyfill", "@formatjs/intl-datetimeformat/polyfill", "@formatjs/intl-datetimeformat/add-all-tz"];
|
|
2
|
+
export declare const LOCALE_POLYFILLS: readonly ["@formatjs/intl-displaynames/locale-data", "@formatjs/intl-listformat/locale-data", "@formatjs/intl-pluralrules/locale-data", "@formatjs/intl-numberformat/locale-data", "@formatjs/intl-relativetimeformat/locale-data", "@formatjs/intl-datetimeformat/locale-data"];
|
|
1
3
|
export interface PluginOptions {
|
|
2
4
|
locales?: string[];
|
|
3
5
|
config?: {
|
|
@@ -6,5 +8,6 @@ export interface PluginOptions {
|
|
|
6
8
|
} & Record<string, any>;
|
|
7
9
|
configFilePath?: string;
|
|
8
10
|
entryPointFilePath?: string;
|
|
11
|
+
excludePolyfills?: (typeof POLYFILLS)[number][];
|
|
9
12
|
}
|
|
10
13
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/plugin-dir/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAE5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5E,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kBAAkB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/plugin-dir/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,mYAUZ,CAAC;AAEX,eAAO,MAAM,gBAAgB,kRAOnB,CAAC;AAEX,MAAM,WAAW,aAAa;IAE5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5E,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,gBAAgB,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CACjD"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
export declare function testLocalePolyfill(locale?:
|
|
1
|
+
export declare function testLocalePolyfill(locale?: "en"): {
|
|
2
2
|
ok: boolean;
|
|
3
3
|
problems: string[];
|
|
4
4
|
group: string | undefined;
|
|
5
5
|
decimal: string | undefined;
|
|
6
|
-
example:
|
|
7
|
-
number: string;
|
|
8
|
-
date: string;
|
|
9
|
-
weekday: string;
|
|
10
|
-
};
|
|
6
|
+
example: Record<string, string>;
|
|
11
7
|
};
|
|
12
8
|
//# sourceMappingURL=testLocalePolyfill.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testLocalePolyfill.d.ts","sourceRoot":"","sources":["../../../../../src/tools/testLocalePolyfill.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testLocalePolyfill.d.ts","sourceRoot":"","sources":["../../../../../src/tools/testLocalePolyfill.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,MAAM,OAAuB;;;;;;EA0O/D"}
|
package/package.json
CHANGED
package/src/plugin-dir/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import type { PluginObj, types } from '@babel/core';
|
|
3
|
-
import type
|
|
3
|
+
import { LOCALE_POLYFILLS, POLYFILLS, type PluginOptions } from './types';
|
|
4
4
|
import { resolveLocales } from './utils/resolveLocales';
|
|
5
5
|
|
|
6
6
|
export default function (
|
|
@@ -10,6 +10,7 @@ export default function (
|
|
|
10
10
|
config,
|
|
11
11
|
configFilePath,
|
|
12
12
|
entryPointFilePath = path.resolve(process.cwd(), 'src', 'App.tsx'),
|
|
13
|
+
excludePolyfills = [],
|
|
13
14
|
}: PluginOptions
|
|
14
15
|
): PluginObj {
|
|
15
16
|
const { types: t } = babel;
|
|
@@ -35,22 +36,11 @@ export default function (
|
|
|
35
36
|
|
|
36
37
|
// TODO: smart imports based on if the polyfill is required, do this as a wrapper around AppRegistry.registerComponent()
|
|
37
38
|
const imports = [
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
'@formatjs/intl-listformat/polyfill',
|
|
42
|
-
'@formatjs/intl-pluralrules/polyfill-force', // https://github.com/formatjs/formatjs/issues/4463
|
|
43
|
-
'@formatjs/intl-numberformat/polyfill',
|
|
44
|
-
'@formatjs/intl-relativetimeformat/polyfill',
|
|
45
|
-
'@formatjs/intl-datetimeformat/polyfill',
|
|
46
|
-
'@formatjs/intl-datetimeformat/add-all-tz',
|
|
39
|
+
...POLYFILLS.filter(
|
|
40
|
+
(polyfill) => !excludePolyfills.includes(polyfill)
|
|
41
|
+
),
|
|
47
42
|
...resolvedLocales.flatMap((locale) => [
|
|
48
|
-
|
|
49
|
-
`@formatjs/intl-listformat/locale-data/${locale}`,
|
|
50
|
-
`@formatjs/intl-pluralrules/locale-data/${locale}`,
|
|
51
|
-
`@formatjs/intl-numberformat/locale-data/${locale}`,
|
|
52
|
-
`@formatjs/intl-relativetimeformat/locale-data/${locale}`,
|
|
53
|
-
`@formatjs/intl-datetimeformat/locale-data/${locale}`,
|
|
43
|
+
...LOCALE_POLYFILLS.map((localeData) => `${localeData}/${locale}`),
|
|
54
44
|
]),
|
|
55
45
|
];
|
|
56
46
|
|
package/src/plugin-dir/types.ts
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
export const POLYFILLS = [
|
|
2
|
+
'@formatjs/intl-getcanonicallocales/polyfill',
|
|
3
|
+
'@formatjs/intl-locale/polyfill',
|
|
4
|
+
'@formatjs/intl-displaynames/polyfill',
|
|
5
|
+
'@formatjs/intl-listformat/polyfill',
|
|
6
|
+
'@formatjs/intl-pluralrules/polyfill-force', // https://github.com/formatjs/formatjs/issues/4463
|
|
7
|
+
'@formatjs/intl-numberformat/polyfill',
|
|
8
|
+
'@formatjs/intl-relativetimeformat/polyfill',
|
|
9
|
+
'@formatjs/intl-datetimeformat/polyfill',
|
|
10
|
+
'@formatjs/intl-datetimeformat/add-all-tz',
|
|
11
|
+
] as const;
|
|
12
|
+
|
|
13
|
+
export const LOCALE_POLYFILLS = [
|
|
14
|
+
`@formatjs/intl-displaynames/locale-data`,
|
|
15
|
+
`@formatjs/intl-listformat/locale-data`,
|
|
16
|
+
`@formatjs/intl-pluralrules/locale-data`,
|
|
17
|
+
`@formatjs/intl-numberformat/locale-data`,
|
|
18
|
+
`@formatjs/intl-relativetimeformat/locale-data`,
|
|
19
|
+
`@formatjs/intl-datetimeformat/locale-data`,
|
|
20
|
+
] as const;
|
|
21
|
+
|
|
1
22
|
export interface PluginOptions {
|
|
2
23
|
/* List of locales to polyfill */
|
|
3
24
|
locales?: string[];
|
|
@@ -7,4 +28,6 @@ export interface PluginOptions {
|
|
|
7
28
|
configFilePath?: string;
|
|
8
29
|
/* Resolved from package.json */
|
|
9
30
|
entryPointFilePath?: string;
|
|
31
|
+
/* Polyfills to exclude */
|
|
32
|
+
excludePolyfills?: (typeof POLYFILLS)[number][];
|
|
10
33
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { libraryDefaultLocale } from 'generaltranslation/internal';
|
|
2
|
+
|
|
3
|
+
export function testLocalePolyfill(locale = libraryDefaultLocale) {
|
|
2
4
|
const problems = [];
|
|
3
5
|
|
|
4
6
|
// 1. basic presence
|
|
@@ -18,12 +20,69 @@ export function testLocalePolyfill(locale = 'en-US') {
|
|
|
18
20
|
});
|
|
19
21
|
|
|
20
22
|
// 2. locale actually supported (no silent fallback)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
let dtfSupported = false;
|
|
24
|
+
try {
|
|
25
|
+
dtfSupported =
|
|
26
|
+
Intl.DateTimeFormat.supportedLocalesOf([locale])[0] === locale;
|
|
27
|
+
} catch (e) {
|
|
28
|
+
problems.push(
|
|
29
|
+
`DateTimeFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
let nfSupported = false;
|
|
34
|
+
try {
|
|
35
|
+
nfSupported = Intl.NumberFormat.supportedLocalesOf([locale])[0] === locale;
|
|
36
|
+
} catch (e) {
|
|
37
|
+
problems.push(
|
|
38
|
+
`NumberFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
let prSupported = false;
|
|
43
|
+
try {
|
|
44
|
+
prSupported = Intl.PluralRules.supportedLocalesOf([locale])[0] === locale;
|
|
45
|
+
} catch (e) {
|
|
46
|
+
problems.push(
|
|
47
|
+
`PluralRules.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
let rtfSupported = false;
|
|
52
|
+
try {
|
|
53
|
+
rtfSupported =
|
|
54
|
+
Intl.RelativeTimeFormat.supportedLocalesOf([locale])[0] === locale;
|
|
55
|
+
} catch (e) {
|
|
56
|
+
problems.push(
|
|
57
|
+
`RelativeTimeFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
let lfSupported = false;
|
|
62
|
+
try {
|
|
63
|
+
lfSupported = Intl.ListFormat.supportedLocalesOf([locale])[0] === locale;
|
|
64
|
+
} catch (e) {
|
|
65
|
+
problems.push(
|
|
66
|
+
`ListFormat.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
let dnSupported = false;
|
|
71
|
+
try {
|
|
72
|
+
dnSupported = Intl.DisplayNames.supportedLocalesOf([locale])[0] === locale;
|
|
73
|
+
} catch (e) {
|
|
74
|
+
problems.push(
|
|
75
|
+
`DisplayNames.supportedLocalesOf threw: ${e instanceof Error ? e.message : String(e)}`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
25
79
|
if (!dtfSupported) problems.push(`${locale} not supported by DateTimeFormat`);
|
|
26
80
|
if (!nfSupported) problems.push(`${locale} not supported by NumberFormat`);
|
|
81
|
+
if (!prSupported) problems.push(`${locale} not supported by PluralRules`);
|
|
82
|
+
if (!rtfSupported)
|
|
83
|
+
problems.push(`${locale} not supported by RelativeTimeFormat`);
|
|
84
|
+
if (!lfSupported) problems.push(`${locale} not supported by ListFormat`);
|
|
85
|
+
if (!dnSupported) problems.push(`${locale} not supported by DisplayNames`);
|
|
27
86
|
|
|
28
87
|
// 3. numeric separators sanity
|
|
29
88
|
let group, decimal;
|
|
@@ -50,16 +109,112 @@ export function testLocalePolyfill(locale = 'en-US') {
|
|
|
50
109
|
);
|
|
51
110
|
}
|
|
52
111
|
|
|
53
|
-
// 5.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
)
|
|
62
|
-
}
|
|
112
|
+
// 5. relative time format sanity
|
|
113
|
+
try {
|
|
114
|
+
const rtf = new Intl.RelativeTimeFormat(locale);
|
|
115
|
+
const sample = rtf.format(-1, 'day');
|
|
116
|
+
if (!sample) problems.push('RelativeTimeFormat returned undefined');
|
|
117
|
+
} catch (e) {
|
|
118
|
+
problems.push(
|
|
119
|
+
`RelativeTimeFormat threw: ${e instanceof Error ? e.message : String(e)}`
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// 6. list format sanity
|
|
124
|
+
try {
|
|
125
|
+
const lf = new Intl.ListFormat(locale);
|
|
126
|
+
const sample = lf.format(['apple', 'orange', 'banana']);
|
|
127
|
+
if (!sample) problems.push('ListFormat returned undefined');
|
|
128
|
+
} catch (e) {
|
|
129
|
+
problems.push(
|
|
130
|
+
`ListFormat threw: ${e instanceof Error ? e.message : String(e)}`
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// 7. display names sanity
|
|
135
|
+
try {
|
|
136
|
+
const dn = new Intl.DisplayNames(locale, { type: 'language' });
|
|
137
|
+
const sample = dn.of('en');
|
|
138
|
+
if (!sample) problems.push('DisplayNames returned undefined');
|
|
139
|
+
} catch (e) {
|
|
140
|
+
problems.push(
|
|
141
|
+
`DisplayNames threw: ${e instanceof Error ? e.message : String(e)}`
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// 8. locale sanity
|
|
146
|
+
try {
|
|
147
|
+
const loc = new Intl.Locale(locale);
|
|
148
|
+
if (!loc.language) problems.push('Locale missing language property');
|
|
149
|
+
} catch (e) {
|
|
150
|
+
problems.push(
|
|
151
|
+
`Locale threw: ${e instanceof Error ? e.message : String(e)}`
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// 9. show example formatted values
|
|
156
|
+
const example: Record<string, string> = {};
|
|
157
|
+
|
|
158
|
+
try {
|
|
159
|
+
example.number = new Intl.NumberFormat(locale).format(1234.5);
|
|
160
|
+
} catch (e) {
|
|
161
|
+
example.number = 'ERROR';
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
try {
|
|
165
|
+
example.date = new Intl.DateTimeFormat(locale, {
|
|
166
|
+
dateStyle: 'long',
|
|
167
|
+
}).format(new Date('2020-01-02'));
|
|
168
|
+
} catch (e) {
|
|
169
|
+
example.date = 'ERROR';
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
try {
|
|
173
|
+
example.weekday = new Intl.DateTimeFormat(locale, {
|
|
174
|
+
weekday: 'long',
|
|
175
|
+
}).format(new Date('2020-01-02'));
|
|
176
|
+
} catch (e) {
|
|
177
|
+
example.weekday = 'ERROR';
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
try {
|
|
181
|
+
example.pluralRule = new Intl.PluralRules(locale).select(5);
|
|
182
|
+
} catch (e) {
|
|
183
|
+
example.pluralRule = 'ERROR';
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
try {
|
|
187
|
+
example.relativeTime = new Intl.RelativeTimeFormat(locale).format(
|
|
188
|
+
-1,
|
|
189
|
+
'day'
|
|
190
|
+
);
|
|
191
|
+
} catch (e) {
|
|
192
|
+
example.relativeTime = 'ERROR';
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
try {
|
|
196
|
+
example.list = new Intl.ListFormat(locale).format([
|
|
197
|
+
'apple',
|
|
198
|
+
'orange',
|
|
199
|
+
'banana',
|
|
200
|
+
]);
|
|
201
|
+
} catch (e) {
|
|
202
|
+
example.list = 'ERROR';
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
try {
|
|
206
|
+
example.displayName =
|
|
207
|
+
new Intl.DisplayNames(locale, { type: 'language' }).of('en') ||
|
|
208
|
+
'UNDEFINED';
|
|
209
|
+
} catch (e) {
|
|
210
|
+
example.displayName = 'ERROR';
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
try {
|
|
214
|
+
example.locale = new Intl.Locale(locale).language;
|
|
215
|
+
} catch (e) {
|
|
216
|
+
example.locale = 'ERROR';
|
|
217
|
+
}
|
|
63
218
|
|
|
64
219
|
const result = {
|
|
65
220
|
ok: problems.length === 0,
|