-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathi18n-inlining.js
130 lines (130 loc) · 5.02 KB
/
i18n-inlining.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
"use strict";
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.i18nInlineEmittedFiles = i18nInlineEmittedFiles;
const fs = __importStar(require("node:fs"));
const path = __importStar(require("node:path"));
const action_executor_1 = require("./action-executor");
const copy_assets_1 = require("./copy-assets");
const error_1 = require("./error");
const spinner_1 = require("./spinner");
function emittedFilesToInlineOptions(emittedFiles, scriptsEntryPointName, emittedPath, outputPath, missingTranslation, context) {
const options = [];
const originalFiles = [];
for (const emittedFile of emittedFiles) {
if (emittedFile.asset ||
emittedFile.extension !== '.js' ||
(emittedFile.name && scriptsEntryPointName.includes(emittedFile.name))) {
continue;
}
const originalPath = path.join(emittedPath, emittedFile.file);
const action = {
filename: emittedFile.file,
code: fs.readFileSync(originalPath, 'utf8'),
outputPath,
missingTranslation,
setLocale: emittedFile.name === 'main',
};
originalFiles.push(originalPath);
try {
const originalMapPath = originalPath + '.map';
action.map = fs.readFileSync(originalMapPath, 'utf8');
originalFiles.push(originalMapPath);
}
catch (err) {
(0, error_1.assertIsError)(err);
if (err.code !== 'ENOENT') {
throw err;
}
}
context.logger.debug(`i18n file queued for processing: ${action.filename}`);
options.push(action);
}
return { options, originalFiles };
}
async function i18nInlineEmittedFiles(context, emittedFiles, i18n, baseOutputPath, outputPaths, scriptsEntryPointName, emittedPath, missingTranslation) {
const executor = new action_executor_1.BundleActionExecutor({ i18n });
let hasErrors = false;
const spinner = new spinner_1.Spinner();
spinner.start('Generating localized bundles...');
try {
const { options, originalFiles: processedFiles } = emittedFilesToInlineOptions(emittedFiles, scriptsEntryPointName, emittedPath, baseOutputPath, missingTranslation, context);
for await (const result of executor.inlineAll(options)) {
context.logger.debug(`i18n file processed: ${result.file}`);
for (const diagnostic of result.diagnostics) {
spinner.stop();
if (diagnostic.type === 'error') {
hasErrors = true;
context.logger.error(diagnostic.message);
}
else {
context.logger.warn(diagnostic.message);
}
spinner.start();
}
}
// Copy any non-processed files into the output locations
await (0, copy_assets_1.copyAssets)([
{
glob: '**/*',
input: emittedPath,
output: '',
ignore: [...processedFiles].map((f) => path.relative(emittedPath, f)),
},
], outputPaths, '');
}
catch (err) {
(0, error_1.assertIsError)(err);
spinner.fail('Localized bundle generation failed: ' + err.message);
return false;
}
finally {
executor.stop();
}
if (hasErrors) {
spinner.fail('Localized bundle generation failed.');
}
else {
spinner.succeed('Localized bundle generation complete.');
}
return !hasErrors;
}