MCPcopy Create free account
hub / github.com/adobe/react-spectrum / build

Function build

scripts/buildI18n.js:6–170  ·  view source on GitHub ↗
(scope, dist)

Source from the content-addressed store, hash-verified

4const {minifySync} = require('@swc/core');
5
6function build(scope, dist) {
7 let languages = {};
8 let deps = {};
9 for (let file of glob([`packages/${scope}/intl/**/*.json`, `packages/${dist}/intl/**/*.json`])) {
10 let parts = file.split('/');
11 let lang = parts.at(-1).slice(0, -5);
12 let pkg;
13 if (parts[1] === 'react-aria' || parts[1] === 'react-stately') {
14 pkg = '@' + parts[1] + '/' + parts[3];
15 } else if (parts[1] === '@adobe' && parts[2] === 'react-spectrum') {
16 pkg = '@react-spectrum/' + parts[4];
17 } else {
18 pkg = parts[1];
19 }
20 if (pkg === '@react-spectrum/s2') {
21 continue;
22 }
23
24 let compiled = compileStrings(JSON.parse(fs.readFileSync(file, 'utf8'))).replace(
25 'module.exports = ',
26 ''
27 );
28 let pkgJson = JSON.parse(fs.readFileSync(`packages/${dist}/package.json`, 'utf8'));
29
30 if (!languages[lang]) {
31 languages[lang] = {};
32 }
33
34 languages[lang][pkg] = compiled;
35 deps[pkg] = Object.keys(pkgJson.dependencies);
36 }
37
38 for (let pkg in deps) {
39 deps[pkg] = deps[pkg].filter(dep => !!deps[dep]);
40 }
41
42 for (let pkg in deps) {
43 if (deps[pkg].length === 0) {
44 delete deps[pkg];
45 }
46 }
47
48 fs.mkdirSync(`packages/${dist}/i18n`, {recursive: true});
49 for (let lang in languages) {
50 let serialized = '{\n';
51 for (let pkg in languages[lang]) {
52 serialized += ` "${pkg}": ${languages[lang][pkg]},\n`;
53 }
54 serialized += '};\n';
55
56 fs.writeFileSync(
57 `packages/${dist}/i18n/${lang}.js`,
58 minifySync(`module.exports = ${serialized}`).code
59 );
60 fs.writeFileSync(
61 `packages/${dist}/i18n/${lang}.mjs`,
62 minifySync(`export default ${serialized}`, {module: true}).code
63 );

Callers 1

buildI18n.jsFile · 0.70

Calls 6

compileStringsFunction · 0.85
generateImportFunction · 0.85
sliceMethod · 0.80
atMethod · 0.65
filterMethod · 0.65
parseMethod · 0.45

Tested by

no test coverage detected