@deenruv/ui-devkit 1.0.0
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/LICENSE +23 -0
- package/README.md +5 -0
- package/client/devkit-client-api.d.ts +109 -0
- package/client/index.d.ts +1 -0
- package/client/index.js +1 -0
- package/compiler/compile.d.ts +9 -0
- package/compiler/compile.js +265 -0
- package/compiler/compile.js.map +1 -0
- package/compiler/constants.d.ts +6 -0
- package/compiler/constants.js +10 -0
- package/compiler/constants.js.map +1 -0
- package/compiler/helpers.d.ts +25 -0
- package/compiler/helpers.js +50 -0
- package/compiler/helpers.js.map +1 -0
- package/compiler/index.d.ts +3 -0
- package/compiler/index.js +20 -0
- package/compiler/index.js.map +1 -0
- package/compiler/scaffold.d.ts +4 -0
- package/compiler/scaffold.js +259 -0
- package/compiler/scaffold.js.map +1 -0
- package/compiler/translations.d.ts +12 -0
- package/compiler/translations.js +135 -0
- package/compiler/translations.js.map +1 -0
- package/compiler/types.d.ts +454 -0
- package/compiler/types.js +3 -0
- package/compiler/types.js.map +1 -0
- package/compiler/utils.d.ts +34 -0
- package/compiler/utils.js +139 -0
- package/compiler/utils.js.map +1 -0
- package/package.json +66 -0
- package/scaffold/README.md +7 -0
- package/scaffold/angular.json +128 -0
- package/scaffold/package.json +11 -0
- package/scaffold/src/app.module.ts +23 -0
- package/scaffold/src/app.routes.ts +63 -0
- package/scaffold/src/environment.prod.ts +3 -0
- package/scaffold/src/environment.ts +6 -0
- package/scaffold/src/extension.routes.ts +1 -0
- package/scaffold/src/main.ts +16 -0
- package/scaffold/src/shared-extensions.module.ts +7 -0
- package/scaffold/src/styles/global-styles.scss +1 -0
- package/scaffold/src/tsconfig.app.json +18 -0
- package/scaffold/tsconfig.json +28 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.setBaseHref = exports.copyGlobalStyleFile = exports.setupScaffold = void 0;
|
|
27
|
+
const shared_utils_1 = require("@deenruv/common/lib/shared-utils");
|
|
28
|
+
const fs = __importStar(require("fs-extra"));
|
|
29
|
+
const glob_1 = require("glob");
|
|
30
|
+
const path = __importStar(require("path"));
|
|
31
|
+
const constants_1 = require("./constants");
|
|
32
|
+
const translations_1 = require("./translations");
|
|
33
|
+
const utils_1 = require("./utils");
|
|
34
|
+
async function setupScaffold(outputPath, extensions) {
|
|
35
|
+
deleteExistingExtensionModules(outputPath);
|
|
36
|
+
const adminUiExtensions = extensions.filter((e) => (0, utils_1.isAdminUiExtension)(e));
|
|
37
|
+
const normalizedExtensions = (0, utils_1.normalizeExtensions)(adminUiExtensions);
|
|
38
|
+
const modulePathMapping = generateModulePathMapping(normalizedExtensions);
|
|
39
|
+
copyAdminUiSource(outputPath, modulePathMapping);
|
|
40
|
+
await copyExtensionModules(outputPath, normalizedExtensions);
|
|
41
|
+
const staticAssetExtensions = extensions.filter(utils_1.isStaticAssetExtension);
|
|
42
|
+
await copyStaticAssets(outputPath, staticAssetExtensions);
|
|
43
|
+
const globalStyleExtensions = extensions.filter(utils_1.isGlobalStylesExtension);
|
|
44
|
+
const sassVariableOverridesExtension = extensions.find(utils_1.isSassVariableOverridesExtension);
|
|
45
|
+
await addGlobalStyles(outputPath, globalStyleExtensions, sassVariableOverridesExtension);
|
|
46
|
+
const allTranslationFiles = (0, translations_1.getAllTranslationFiles)(extensions.filter(utils_1.isTranslationExtension));
|
|
47
|
+
await (0, translations_1.mergeExtensionTranslations)(outputPath, allTranslationFiles);
|
|
48
|
+
(0, utils_1.copyUiDevkit)(outputPath);
|
|
49
|
+
}
|
|
50
|
+
exports.setupScaffold = setupScaffold;
|
|
51
|
+
/**
|
|
52
|
+
* Deletes the contents of the /modules directory, which contains the plugin
|
|
53
|
+
* extension modules copied over during the last compilation.
|
|
54
|
+
*/
|
|
55
|
+
function deleteExistingExtensionModules(outputPath) {
|
|
56
|
+
fs.removeSync(path.join(outputPath, constants_1.MODULES_OUTPUT_DIR));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Generates a module path mapping object for all extensions with a "pathAlias"
|
|
60
|
+
* property declared (if any).
|
|
61
|
+
*/
|
|
62
|
+
function generateModulePathMapping(extensions) {
|
|
63
|
+
const extensionsWithAlias = extensions.filter((e) => e.pathAlias);
|
|
64
|
+
if (extensionsWithAlias.length === 0) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return extensionsWithAlias.reduce((acc, e) => {
|
|
68
|
+
// for imports from the index file if there is one
|
|
69
|
+
acc[e.pathAlias] = [`src/extensions/${e.id}`];
|
|
70
|
+
// direct access to files / deep imports
|
|
71
|
+
acc[`${e.pathAlias}/*`] = [`src/extensions/${e.id}/*`];
|
|
72
|
+
return acc;
|
|
73
|
+
}, {});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Copies all files from the extensionPaths of the configured extensions into the
|
|
77
|
+
* admin-ui source tree.
|
|
78
|
+
*/
|
|
79
|
+
async function copyExtensionModules(outputPath, extensions) {
|
|
80
|
+
const adminUiExtensions = extensions.filter(utils_1.isAdminUiExtension);
|
|
81
|
+
const extensionRoutesSource = generateLazyExtensionRoutes(adminUiExtensions);
|
|
82
|
+
fs.writeFileSync(path.join(outputPath, constants_1.EXTENSION_ROUTES_FILE), extensionRoutesSource, "utf8");
|
|
83
|
+
const sharedExtensionModulesSource = generateSharedExtensionModule(extensions);
|
|
84
|
+
fs.writeFileSync(path.join(outputPath, constants_1.SHARED_EXTENSIONS_FILE), sharedExtensionModulesSource, "utf8");
|
|
85
|
+
for (const extension of adminUiExtensions) {
|
|
86
|
+
if (!extension.extensionPath) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const dest = path.join(outputPath, constants_1.MODULES_OUTPUT_DIR, extension.id);
|
|
90
|
+
if (!extension.exclude) {
|
|
91
|
+
fs.copySync(extension.extensionPath, dest);
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const exclude = extension.exclude
|
|
95
|
+
?.map((e) => (0, glob_1.globSync)(path.join(extension.extensionPath, e)))
|
|
96
|
+
.flatMap((e) => e) ?? [];
|
|
97
|
+
fs.copySync(extension.extensionPath, dest, {
|
|
98
|
+
filter: (name) => name === extension.extensionPath || exclude.every((e) => e !== name),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async function copyStaticAssets(outputPath, extensions) {
|
|
103
|
+
for (const extension of extensions) {
|
|
104
|
+
if (Array.isArray(extension.staticAssets)) {
|
|
105
|
+
for (const asset of extension.staticAssets) {
|
|
106
|
+
await (0, utils_1.copyStaticAsset)(outputPath, asset);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function addGlobalStyles(outputPath, globalStylesExtensions, sassVariableOverridesExtension) {
|
|
112
|
+
const globalStylesDir = path.join(outputPath, "src", constants_1.GLOBAL_STYLES_OUTPUT_DIR);
|
|
113
|
+
await fs.remove(globalStylesDir);
|
|
114
|
+
await fs.ensureDir(globalStylesDir);
|
|
115
|
+
const imports = [];
|
|
116
|
+
for (const extension of globalStylesExtensions) {
|
|
117
|
+
const styleFiles = Array.isArray(extension.globalStyles)
|
|
118
|
+
? extension.globalStyles
|
|
119
|
+
: [extension.globalStyles];
|
|
120
|
+
for (const styleFile of styleFiles) {
|
|
121
|
+
await copyGlobalStyleFile(outputPath, styleFile);
|
|
122
|
+
imports.push(path.basename(styleFile, path.extname(styleFile)));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
let overridesImport = "";
|
|
126
|
+
if (sassVariableOverridesExtension) {
|
|
127
|
+
const overridesFile = sassVariableOverridesExtension.sassVariableOverrides;
|
|
128
|
+
await copyGlobalStyleFile(outputPath, overridesFile);
|
|
129
|
+
overridesImport = `@import "./${constants_1.GLOBAL_STYLES_OUTPUT_DIR}/${path.basename(overridesFile, path.extname(overridesFile))}";\n`;
|
|
130
|
+
}
|
|
131
|
+
const globalStylesSource = overridesImport +
|
|
132
|
+
'@import "./styles/styles";\n' +
|
|
133
|
+
imports
|
|
134
|
+
.map((file) => `@import "./${constants_1.GLOBAL_STYLES_OUTPUT_DIR}/${file}";`)
|
|
135
|
+
.join("\n");
|
|
136
|
+
const globalStylesFile = path.join(outputPath, "src", "global-styles.scss");
|
|
137
|
+
await fs.writeFile(globalStylesFile, globalStylesSource, "utf-8");
|
|
138
|
+
}
|
|
139
|
+
async function copyGlobalStyleFile(outputPath, stylePath) {
|
|
140
|
+
const globalStylesDir = path.join(outputPath, "src", constants_1.GLOBAL_STYLES_OUTPUT_DIR);
|
|
141
|
+
const fileBasename = path.basename(stylePath);
|
|
142
|
+
const styleOutputPath = path.join(globalStylesDir, fileBasename);
|
|
143
|
+
await fs.copyFile(stylePath, styleOutputPath);
|
|
144
|
+
}
|
|
145
|
+
exports.copyGlobalStyleFile = copyGlobalStyleFile;
|
|
146
|
+
function generateLazyExtensionRoutes(extensions) {
|
|
147
|
+
const routes = [];
|
|
148
|
+
for (const extension of extensions) {
|
|
149
|
+
for (const module of extension.ngModules ?? []) {
|
|
150
|
+
if (module.type === "lazy") {
|
|
151
|
+
routes.push(` {
|
|
152
|
+
path: 'extensions/${module.route}',
|
|
153
|
+
loadChildren: () => import('${getModuleFilePath(extension.id, module)}').then(m => m.${module.ngModuleName}),
|
|
154
|
+
}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
for (const route of extension.routes ?? []) {
|
|
158
|
+
const prefix = route.prefix === "" ? "" : `${route.prefix ?? "extensions"}/`;
|
|
159
|
+
routes.push(` {
|
|
160
|
+
path: '${prefix}${route.route}',
|
|
161
|
+
loadChildren: () => import('./extensions/${extension.id}/${path.basename(route.filePath, ".ts")}'),
|
|
162
|
+
}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return `export const extensionRoutes = [${routes.join(",\n")}];\n`;
|
|
166
|
+
}
|
|
167
|
+
function generateSharedExtensionModule(extensions) {
|
|
168
|
+
const adminUiExtensions = extensions.filter(utils_1.isAdminUiExtension);
|
|
169
|
+
const moduleImports = adminUiExtensions
|
|
170
|
+
.map((e) => e.ngModules
|
|
171
|
+
?.filter((m) => m.type === "shared")
|
|
172
|
+
.map((m) => `import { ${m.ngModuleName} } from '${getModuleFilePath(e.id, m)}';\n`)
|
|
173
|
+
.join(""))
|
|
174
|
+
.filter((val) => !!val)
|
|
175
|
+
.join("");
|
|
176
|
+
const providerImports = adminUiExtensions
|
|
177
|
+
.map((m, i) => (m.providers ?? [])
|
|
178
|
+
.map((f, j) => `import SharedProviders_${i}_${j} from './extensions/${m.id}/${path.basename(f, ".ts")}';\n`)
|
|
179
|
+
.join(""))
|
|
180
|
+
.filter((val) => !!val)
|
|
181
|
+
.join("");
|
|
182
|
+
const modules = adminUiExtensions
|
|
183
|
+
.map((e) => e.ngModules
|
|
184
|
+
?.filter((m) => m.type === "shared")
|
|
185
|
+
.map((m) => m.ngModuleName)
|
|
186
|
+
.join(", "))
|
|
187
|
+
.filter((val) => !!val)
|
|
188
|
+
.join(", ");
|
|
189
|
+
const providers = adminUiExtensions
|
|
190
|
+
.filter(shared_utils_1.notNullOrUndefined)
|
|
191
|
+
.map((m, i) => (m.providers ?? [])
|
|
192
|
+
.map((f, j) => `...SharedProviders_${i}_${j}`)
|
|
193
|
+
.join(", "))
|
|
194
|
+
.filter((val) => !!val)
|
|
195
|
+
.join(", ");
|
|
196
|
+
return `import { NgModule } from '@angular/core';
|
|
197
|
+
import { CommonModule } from '@angular/common';
|
|
198
|
+
${moduleImports}
|
|
199
|
+
${providerImports}
|
|
200
|
+
|
|
201
|
+
@NgModule({
|
|
202
|
+
imports: [CommonModule, ${modules}],
|
|
203
|
+
providers: [${providers}],
|
|
204
|
+
})
|
|
205
|
+
export class SharedExtensionsModule {}
|
|
206
|
+
`;
|
|
207
|
+
}
|
|
208
|
+
function getModuleFilePath(id, module) {
|
|
209
|
+
return `./extensions/${id}/${path.basename(module.ngModuleFileName, ".ts")}`;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Copies the Admin UI sources & static assets to the outputPath if it does not already
|
|
213
|
+
* exist there.
|
|
214
|
+
*/
|
|
215
|
+
function copyAdminUiSource(outputPath, modulePathMapping) {
|
|
216
|
+
const tsconfigFilePath = path.join(outputPath, "tsconfig.json");
|
|
217
|
+
const indexFilePath = path.join(outputPath, "/src/index.html");
|
|
218
|
+
if (fs.existsSync(tsconfigFilePath) && fs.existsSync(indexFilePath)) {
|
|
219
|
+
configureModulePathMapping(tsconfigFilePath, modulePathMapping);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const scaffoldDir = path.join(__dirname, "../scaffold");
|
|
223
|
+
const adminUiSrc = path.join(require.resolve("@deenruv/admin-ui"), "../../static");
|
|
224
|
+
if (!fs.existsSync(scaffoldDir)) {
|
|
225
|
+
throw new Error(`Could not find the admin ui scaffold files at ${scaffoldDir}`);
|
|
226
|
+
}
|
|
227
|
+
if (!fs.existsSync(adminUiSrc)) {
|
|
228
|
+
throw new Error(`Could not find the @deenruv/admin-ui sources. Looked in ${adminUiSrc}`);
|
|
229
|
+
}
|
|
230
|
+
// copy scaffold
|
|
231
|
+
fs.removeSync(outputPath);
|
|
232
|
+
fs.ensureDirSync(outputPath);
|
|
233
|
+
fs.copySync(scaffoldDir, outputPath);
|
|
234
|
+
configureModulePathMapping(tsconfigFilePath, modulePathMapping);
|
|
235
|
+
// copy source files from admin-ui package
|
|
236
|
+
const outputSrc = path.join(outputPath, "src");
|
|
237
|
+
fs.ensureDirSync(outputSrc);
|
|
238
|
+
fs.copySync(adminUiSrc, outputSrc);
|
|
239
|
+
}
|
|
240
|
+
async function setBaseHref(outputPath, baseHref) {
|
|
241
|
+
const angularJsonFilePath = path.join(outputPath, "/angular.json");
|
|
242
|
+
const angularJson = await fs.readJSON(angularJsonFilePath, "utf-8");
|
|
243
|
+
angularJson.projects["deenruv-admin"].architect.build.options.baseHref =
|
|
244
|
+
baseHref;
|
|
245
|
+
await fs.writeJSON(angularJsonFilePath, angularJson, { spaces: 2 });
|
|
246
|
+
}
|
|
247
|
+
exports.setBaseHref = setBaseHref;
|
|
248
|
+
/**
|
|
249
|
+
* Adds module path mapping to the bundled tsconfig.json file if defined as a UI extension.
|
|
250
|
+
*/
|
|
251
|
+
function configureModulePathMapping(tsconfigFilePath, modulePathMapping) {
|
|
252
|
+
if (!modulePathMapping) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const tsconfig = require(tsconfigFilePath);
|
|
256
|
+
tsconfig.compilerOptions.paths = modulePathMapping;
|
|
257
|
+
fs.writeFileSync(tsconfigFilePath, JSON.stringify(tsconfig, null, 2));
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/compiler/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LanguageCode } from "@deenruv/common/lib/generated-types";
|
|
2
|
+
import { TranslationExtension } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Given an array of extensions, returns a map of languageCode to all files specified by the
|
|
5
|
+
* configured globs.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getAllTranslationFiles(extensions: TranslationExtension[]): {
|
|
8
|
+
[languageCode in LanguageCode]?: string[];
|
|
9
|
+
};
|
|
10
|
+
export declare function mergeExtensionTranslations(outputPath: string, translationFiles: {
|
|
11
|
+
[languageCode in LanguageCode]?: string[];
|
|
12
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.mergeExtensionTranslations = exports.getAllTranslationFiles = void 0;
|
|
27
|
+
const fs = __importStar(require("fs-extra"));
|
|
28
|
+
const glob_1 = require("glob");
|
|
29
|
+
const path = __importStar(require("path"));
|
|
30
|
+
const utils_1 = require("./utils");
|
|
31
|
+
/**
|
|
32
|
+
* Given an array of extensions, returns a map of languageCode to all files specified by the
|
|
33
|
+
* configured globs.
|
|
34
|
+
*/
|
|
35
|
+
function getAllTranslationFiles(extensions) {
|
|
36
|
+
// First collect all globs by language
|
|
37
|
+
const allTranslationsWithGlobs = {};
|
|
38
|
+
for (const extension of extensions) {
|
|
39
|
+
for (const [languageCode, globPattern] of Object.entries(extension.translations || {})) {
|
|
40
|
+
const code = languageCode;
|
|
41
|
+
if (globPattern) {
|
|
42
|
+
if (!allTranslationsWithGlobs[code]) {
|
|
43
|
+
allTranslationsWithGlobs[code] = [globPattern];
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
allTranslationsWithGlobs[code].push(globPattern);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const allTranslationsWithFiles = {};
|
|
52
|
+
for (const [languageCode, globs] of Object.entries(allTranslationsWithGlobs)) {
|
|
53
|
+
const code = languageCode;
|
|
54
|
+
allTranslationsWithFiles[code] = [];
|
|
55
|
+
if (!globs) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
for (const pattern of globs) {
|
|
59
|
+
const files = (0, glob_1.globSync)(pattern);
|
|
60
|
+
allTranslationsWithFiles[code].push(...files);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return allTranslationsWithFiles;
|
|
64
|
+
}
|
|
65
|
+
exports.getAllTranslationFiles = getAllTranslationFiles;
|
|
66
|
+
async function mergeExtensionTranslations(outputPath, translationFiles) {
|
|
67
|
+
// Now merge them into the final language-speicific json files
|
|
68
|
+
const i18nMessagesDir = path.join(outputPath, "src/i18n-messages");
|
|
69
|
+
for (const [languageCode, files] of Object.entries(translationFiles)) {
|
|
70
|
+
if (!files) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const translationFile = path.join(i18nMessagesDir, `${languageCode}.json`);
|
|
74
|
+
const translationBackupFile = path.join(i18nMessagesDir, `${languageCode}.json.bak`);
|
|
75
|
+
if (fs.existsSync(translationBackupFile)) {
|
|
76
|
+
// restore the original translations from the backup
|
|
77
|
+
await fs.copy(translationBackupFile, translationFile);
|
|
78
|
+
}
|
|
79
|
+
let translations = {};
|
|
80
|
+
if (fs.existsSync(translationFile)) {
|
|
81
|
+
// create a backup of the original (unextended) translations
|
|
82
|
+
await fs.copy(translationFile, translationBackupFile);
|
|
83
|
+
try {
|
|
84
|
+
translations = await fs.readJson(translationFile);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
utils_1.logger.error(`Could not load translation file: ${translationFile}`);
|
|
88
|
+
utils_1.logger.error(e);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
for (const file of files) {
|
|
92
|
+
try {
|
|
93
|
+
const contents = await fs.readJson(file);
|
|
94
|
+
translations = mergeTranslations(translations, contents);
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
utils_1.logger.error(`Could not load translation file: ${translationFile}`);
|
|
98
|
+
utils_1.logger.error(e);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// write the final translation files to disk
|
|
102
|
+
const sortedTranslations = sortTranslationKeys(translations);
|
|
103
|
+
await fs.writeFile(translationFile, JSON.stringify(sortedTranslations, null, 2), "utf8");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.mergeExtensionTranslations = mergeExtensionTranslations;
|
|
107
|
+
/**
|
|
108
|
+
* Sorts the contents of the translation files so the sections & keys are alphabetical.
|
|
109
|
+
*/
|
|
110
|
+
function sortTranslationKeys(translations) {
|
|
111
|
+
const result = {};
|
|
112
|
+
const sections = Object.keys(translations).sort();
|
|
113
|
+
for (const section of sections) {
|
|
114
|
+
const sortedTokens = Object.entries(translations[section])
|
|
115
|
+
.sort(([keyA], [keyB]) => (keyA < keyB ? -1 : 1))
|
|
116
|
+
.reduce((output, [key, val]) => ({ ...output, [key]: val }), {});
|
|
117
|
+
result[section] = sortedTokens;
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Merges the second set of translations into the first, returning a new translations
|
|
123
|
+
* object.
|
|
124
|
+
*/
|
|
125
|
+
function mergeTranslations(t1, t2) {
|
|
126
|
+
const result = { ...t1 };
|
|
127
|
+
for (const [section, translations] of Object.entries(t2)) {
|
|
128
|
+
result[section] = {
|
|
129
|
+
...t1[section],
|
|
130
|
+
...translations,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=translations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.js","sourceRoot":"","sources":["../src/compiler/translations.ts"],"names":[],"mappings":"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"}
|