(scope, dist)
| 4 | const {minifySync} = require('@swc/core'); |
| 5 | |
| 6 | function 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 | ); |
no test coverage detected