@c8y/devkit 1019.0.3
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/README.md +13 -0
- package/dist/builders.json +29 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/options.d.ts +2 -0
- package/dist/options.js +6 -0
- package/dist/options.js.map +1 -0
- package/dist/src/builders/BuilderOptions.d.ts +90 -0
- package/dist/src/builders/BuilderOptions.js +3 -0
- package/dist/src/builders/BuilderOptions.js.map +1 -0
- package/dist/src/builders/browser/index.d.ts +2 -0
- package/dist/src/builders/browser/index.js +17 -0
- package/dist/src/builders/browser/index.js.map +1 -0
- package/dist/src/builders/browser/schema.json +606 -0
- package/dist/src/builders/compile-i18n/compile-i18n-builder.d.ts +5 -0
- package/dist/src/builders/compile-i18n/compile-i18n-builder.js +88 -0
- package/dist/src/builders/compile-i18n/compile-i18n-builder.js.map +1 -0
- package/dist/src/builders/compile-i18n/schema.json +24 -0
- package/dist/src/builders/create-schema.d.ts +1 -0
- package/dist/src/builders/create-schema.js +32 -0
- package/dist/src/builders/create-schema.js.map +1 -0
- package/dist/src/builders/deploy/Deploy.model.d.ts +30 -0
- package/dist/src/builders/deploy/Deploy.model.js +8 -0
- package/dist/src/builders/deploy/Deploy.model.js.map +1 -0
- package/dist/src/builders/deploy/app-as-zip-file.d.ts +8 -0
- package/dist/src/builders/deploy/app-as-zip-file.js +74 -0
- package/dist/src/builders/deploy/app-as-zip-file.js.map +1 -0
- package/dist/src/builders/deploy/build-and-zip-app.d.ts +10 -0
- package/dist/src/builders/deploy/build-and-zip-app.js +105 -0
- package/dist/src/builders/deploy/build-and-zip-app.js.map +1 -0
- package/dist/src/builders/deploy/deploy-builder.d.ts +5 -0
- package/dist/src/builders/deploy/deploy-builder.js +268 -0
- package/dist/src/builders/deploy/deploy-builder.js.map +1 -0
- package/dist/src/builders/deploy/helpers.d.ts +25 -0
- package/dist/src/builders/deploy/helpers.js +45 -0
- package/dist/src/builders/deploy/helpers.js.map +1 -0
- package/dist/src/builders/deploy/schema.json +42 -0
- package/dist/src/builders/dev-server/index.d.ts +2 -0
- package/dist/src/builders/dev-server/index.js +67 -0
- package/dist/src/builders/dev-server/index.js.map +1 -0
- package/dist/src/builders/dev-server/schema.json +120 -0
- package/dist/src/builders/extract-i18n/extract-i18n-builder.d.ts +5 -0
- package/dist/src/builders/extract-i18n/extract-i18n-builder.js +126 -0
- package/dist/src/builders/extract-i18n/extract-i18n-builder.js.map +1 -0
- package/dist/src/builders/extract-i18n/schema.json +30 -0
- package/dist/src/options.d.ts +82 -0
- package/dist/src/options.js +98 -0
- package/dist/src/options.js.map +1 -0
- package/dist/src/schematics/collection.json +9 -0
- package/dist/src/schematics/ng-add/configs/angular-json.d.ts +28 -0
- package/dist/src/schematics/ng-add/configs/angular-json.js +93 -0
- package/dist/src/schematics/ng-add/configs/angular-json.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/app-module.d.ts +3 -0
- package/dist/src/schematics/ng-add/configs/app-module.js +13 -0
- package/dist/src/schematics/ng-add/configs/app-module.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/app-routing.d.ts +2 -0
- package/dist/src/schematics/ng-add/configs/app-routing.js +16 -0
- package/dist/src/schematics/ng-add/configs/app-routing.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/index-html.d.ts +2 -0
- package/dist/src/schematics/ng-add/configs/index-html.js +15 -0
- package/dist/src/schematics/ng-add/configs/index-html.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/index.d.ts +2 -0
- package/dist/src/schematics/ng-add/configs/index.js +37 -0
- package/dist/src/schematics/ng-add/configs/index.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/main.d.ts +2 -0
- package/dist/src/schematics/ng-add/configs/main.js +30 -0
- package/dist/src/schematics/ng-add/configs/main.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/ng1.d.ts +3 -0
- package/dist/src/schematics/ng-add/configs/ng1.js +13 -0
- package/dist/src/schematics/ng-add/configs/ng1.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/package-json.d.ts +17 -0
- package/dist/src/schematics/ng-add/configs/package-json.js +67 -0
- package/dist/src/schematics/ng-add/configs/package-json.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/translation.d.ts +2 -0
- package/dist/src/schematics/ng-add/configs/translation.js +36 -0
- package/dist/src/schematics/ng-add/configs/translation.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/tsconfig-app-json.d.ts +2 -0
- package/dist/src/schematics/ng-add/configs/tsconfig-app-json.js +21 -0
- package/dist/src/schematics/ng-add/configs/tsconfig-app-json.js.map +1 -0
- package/dist/src/schematics/ng-add/configs/tsconfig-json.d.ts +2 -0
- package/dist/src/schematics/ng-add/configs/tsconfig-json.js +19 -0
- package/dist/src/schematics/ng-add/configs/tsconfig-json.js.map +1 -0
- package/dist/src/schematics/ng-add/index.d.ts +4 -0
- package/dist/src/schematics/ng-add/index.js +93 -0
- package/dist/src/schematics/ng-add/index.js.map +1 -0
- package/dist/src/schematics/ng-add/model.d.ts +19 -0
- package/dist/src/schematics/ng-add/model.js +3 -0
- package/dist/src/schematics/ng-add/model.js.map +1 -0
- package/dist/src/schematics/ng-add/ng-add.json +18 -0
- package/dist/src/schematics/ng-add/utils.d.ts +13 -0
- package/dist/src/schematics/ng-add/utils.js +32 -0
- package/dist/src/schematics/ng-add/utils.js.map +1 -0
- package/dist/src/utils/locale-compiler.d.ts +48 -0
- package/dist/src/utils/locale-compiler.js +83 -0
- package/dist/src/utils/locale-compiler.js.map +1 -0
- package/dist/src/utils/locale-json-paths.d.ts +19 -0
- package/dist/src/utils/locale-json-paths.js +63 -0
- package/dist/src/utils/locale-json-paths.js.map +1 -0
- package/dist/src/utils/locale-utils.d.ts +24 -0
- package/dist/src/utils/locale-utils.js +104 -0
- package/dist/src/utils/locale-utils.js.map +1 -0
- package/dist/src/utils/package-config.d.ts +1 -0
- package/dist/src/utils/package-config.js +13 -0
- package/dist/src/utils/package-config.js.map +1 -0
- package/dist/src/webpack/ApplicationOptions.d.ts +344 -0
- package/dist/src/webpack/ApplicationOptions.js +3 -0
- package/dist/src/webpack/ApplicationOptions.js.map +1 -0
- package/dist/src/webpack/BuildDefaults.d.ts +10 -0
- package/dist/src/webpack/BuildDefaults.js +15 -0
- package/dist/src/webpack/BuildDefaults.js.map +1 -0
- package/dist/src/webpack/EnvironmentOptions.d.ts +132 -0
- package/dist/src/webpack/EnvironmentOptions.js +15 -0
- package/dist/src/webpack/EnvironmentOptions.js.map +1 -0
- package/dist/src/webpack/config/babel.d.ts +2 -0
- package/dist/src/webpack/config/babel.js +65 -0
- package/dist/src/webpack/config/babel.js.map +1 -0
- package/dist/src/webpack/config/base.d.ts +27 -0
- package/dist/src/webpack/config/base.js +125 -0
- package/dist/src/webpack/config/base.js.map +1 -0
- package/dist/src/webpack/config/development.d.ts +4 -0
- package/dist/src/webpack/config/development.js +37 -0
- package/dist/src/webpack/config/development.js.map +1 -0
- package/dist/src/webpack/config/extra.d.ts +3 -0
- package/dist/src/webpack/config/extra.js +24 -0
- package/dist/src/webpack/config/extra.js.map +1 -0
- package/dist/src/webpack/config/favicon.d.ts +2 -0
- package/dist/src/webpack/config/favicon.js +20 -0
- package/dist/src/webpack/config/favicon.js.map +1 -0
- package/dist/src/webpack/config/federation.d.ts +3 -0
- package/dist/src/webpack/config/federation.js +66 -0
- package/dist/src/webpack/config/federation.js.map +1 -0
- package/dist/src/webpack/config/legacy.d.ts +2 -0
- package/dist/src/webpack/config/legacy.js +72 -0
- package/dist/src/webpack/config/legacy.js.map +1 -0
- package/dist/src/webpack/config/plugin.d.ts +5 -0
- package/dist/src/webpack/config/plugin.js +89 -0
- package/dist/src/webpack/config/plugin.js.map +1 -0
- package/dist/src/webpack/config/production.d.ts +3 -0
- package/dist/src/webpack/config/production.js +30 -0
- package/dist/src/webpack/config/production.js.map +1 -0
- package/dist/src/webpack/config/styles.d.ts +3 -0
- package/dist/src/webpack/config/styles.js +54 -0
- package/dist/src/webpack/config/styles.js.map +1 -0
- package/dist/src/webpack/config/translation.d.ts +2 -0
- package/dist/src/webpack/config/translation.js +23 -0
- package/dist/src/webpack/config/translation.js.map +1 -0
- package/dist/src/webpack/loaders/loader-data.d.ts +1 -0
- package/dist/src/webpack/loaders/loader-data.js +53 -0
- package/dist/src/webpack/loaders/loader-data.js.map +1 -0
- package/dist/src/webpack/loaders/loader-less.d.ts +1 -0
- package/dist/src/webpack/loaders/loader-less.js +23 -0
- package/dist/src/webpack/loaders/loader-less.js.map +1 -0
- package/dist/src/webpack/loaders/loader-manifest.d.ts +1 -0
- package/dist/src/webpack/loaders/loader-manifest.js +88 -0
- package/dist/src/webpack/loaders/loader-manifest.js.map +1 -0
- package/dist/src/webpack/loaders/loader-ngtemplate.d.ts +1 -0
- package/dist/src/webpack/loaders/loader-ngtemplate.js +16 -0
- package/dist/src/webpack/loaders/loader-ngtemplate.js.map +1 -0
- package/dist/src/webpack/loaders/loader-pluginpath.d.ts +1 -0
- package/dist/src/webpack/loaders/loader-pluginpath.js +10 -0
- package/dist/src/webpack/loaders/loader-pluginpath.js.map +1 -0
- package/dist/src/webpack/loaders/loader-po.d.ts +3 -0
- package/dist/src/webpack/loaders/loader-po.js +9 -0
- package/dist/src/webpack/loaders/loader-po.js.map +1 -0
- package/dist/src/webpack/plugin/index-content.d.ts +2 -0
- package/dist/src/webpack/plugin/index-content.js +113 -0
- package/dist/src/webpack/plugin/index-content.js.map +1 -0
- package/dist/src/webpack/plugin/locales.d.ts +6 -0
- package/dist/src/webpack/plugin/locales.js +746 -0
- package/dist/src/webpack/plugin/locales.js.map +1 -0
- package/dist/src/webpack/plugin/plugin.d.ts +259 -0
- package/dist/src/webpack/plugin/plugin.js +286 -0
- package/dist/src/webpack/plugin/plugin.js.map +1 -0
- package/dist/src/webpack/plugin/translation-aggregation-plugin.d.ts +80 -0
- package/dist/src/webpack/plugin/translation-aggregation-plugin.js +152 -0
- package/dist/src/webpack/plugin/translation-aggregation-plugin.js.map +1 -0
- package/dist/src/webpack/plugin/translation-data-store.d.ts +27 -0
- package/dist/src/webpack/plugin/translation-data-store.js +37 -0
- package/dist/src/webpack/plugin/translation-data-store.js.map +1 -0
- package/dist/src/webpack/utils/federationUtils.d.ts +26 -0
- package/dist/src/webpack/utils/federationUtils.js +234 -0
- package/dist/src/webpack/utils/federationUtils.js.map +1 -0
- package/dist/src/webpack/utils/helpers.d.ts +45 -0
- package/dist/src/webpack/utils/helpers.js +137 -0
- package/dist/src/webpack/utils/helpers.js.map +1 -0
- package/dist/src/webpack/utils/index.d.ts +1 -0
- package/dist/src/webpack/utils/index.js +5 -0
- package/dist/src/webpack/utils/index.js.map +1 -0
- package/dist/src/webpack/utils/legacy-manifest-resolver.d.ts +4 -0
- package/dist/src/webpack/utils/legacy-manifest-resolver.js +27 -0
- package/dist/src/webpack/utils/legacy-manifest-resolver.js.map +1 -0
- package/dist/src/webpack/utils/proxy.d.ts +2 -0
- package/dist/src/webpack/utils/proxy.js +39 -0
- package/dist/src/webpack/utils/proxy.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TranslationAggregationPlugin = void 0;
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
5
|
+
// @ts-ignore
|
|
6
|
+
const angular_gettext_tools_1 = require("angular-gettext-tools");
|
|
7
|
+
const pofile = require("pofile");
|
|
8
|
+
const webpack_1 = require("webpack");
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
const webpack_sources_1 = require("webpack-sources");
|
|
12
|
+
const translation_data_store_1 = require("./translation-data-store");
|
|
13
|
+
const translationDataStoreInstance = translation_data_store_1.TranslationDataStore.instance;
|
|
14
|
+
const PLUGIN_NAME = 'TranslationAggregationPlugin';
|
|
15
|
+
/**
|
|
16
|
+
* TranslationAggregationPlugin is a Webpack plugin that processes .po files
|
|
17
|
+
* and extracts translation headers and items.
|
|
18
|
+
*/
|
|
19
|
+
class TranslationAggregationPlugin {
|
|
20
|
+
constructor() {
|
|
21
|
+
/**
|
|
22
|
+
* `groupedPos` is an object that stores PO file objects indexed by their respective language keys.
|
|
23
|
+
* The key represents the language code (e.g., 'en', 'fr', 'de'), and the value is the parsed PO file
|
|
24
|
+
* content as a `pofile.PO` instance. This structure allows efficient access to the PO files for each
|
|
25
|
+
* language when generating translation assets.
|
|
26
|
+
*/
|
|
27
|
+
this.groupedPos = {};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The `apply` method is called by Webpack when this plugin is used.
|
|
31
|
+
* @param compiler - The Webpack compiler instance.
|
|
32
|
+
*/
|
|
33
|
+
apply(compiler) {
|
|
34
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
35
|
+
compilation.hooks.finishModules.tapPromise(PLUGIN_NAME, async (_modules) => {
|
|
36
|
+
await this.handlePoFiles(compilation);
|
|
37
|
+
this.createTranslationAssets(compilation);
|
|
38
|
+
compiler.sharedData = this.groupedPos;
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates translation assets based on the .po files and adds them to the compilation.
|
|
44
|
+
* The assets are generated in the format <language>.json and included in the production bundle.
|
|
45
|
+
*
|
|
46
|
+
* @param compilation - The Webpack compilation object.
|
|
47
|
+
*/
|
|
48
|
+
createTranslationAssets(compilation) {
|
|
49
|
+
const { assets } = compilation;
|
|
50
|
+
// Iterate over the compiled translations for each language.
|
|
51
|
+
this.compile().forEach(({ language, json }) => {
|
|
52
|
+
// Add a new asset for the current language with the JSON content.
|
|
53
|
+
assets[`${language}.json`] = new webpack_sources_1.RawSource(json);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Compiles the grouped PO files into JSON format using `angular-gettext-tools`.
|
|
58
|
+
* @returns An array of objects containing the language code and the JSON representation of the translations.
|
|
59
|
+
*/
|
|
60
|
+
compile() {
|
|
61
|
+
const grouped = this.groupedPos;
|
|
62
|
+
return Object.entries(grouped).map(([language, po]) => ({
|
|
63
|
+
language,
|
|
64
|
+
json: new angular_gettext_tools_1.Compiler({ format: 'json' }).convertPo([po.toString()])
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Processes the content of a PO file and updates the grouped PO data structure.
|
|
69
|
+
* @param {string} content - The PO file content.
|
|
70
|
+
* @param {string} srcPath - The source path of the PO file.
|
|
71
|
+
* @returns {pofile.PO} - The updated PO data structure.
|
|
72
|
+
*/
|
|
73
|
+
processPoFile(content, srcPath) {
|
|
74
|
+
const po = pofile.parse(content);
|
|
75
|
+
const grouped = this.groupedPos;
|
|
76
|
+
translationDataStoreInstance.groupedPos = this.groupedPos;
|
|
77
|
+
const { Language } = po.headers;
|
|
78
|
+
if (Language && !grouped[Language]) {
|
|
79
|
+
grouped[Language] = new pofile();
|
|
80
|
+
}
|
|
81
|
+
if (Language) {
|
|
82
|
+
const finalPo = grouped[Language];
|
|
83
|
+
Object.assign(finalPo.headers, po.headers);
|
|
84
|
+
finalPo.items = this.getCombinedItems(finalPo.items, po.items, srcPath);
|
|
85
|
+
return finalPo;
|
|
86
|
+
}
|
|
87
|
+
throw new Error(`No language defined in po file header: ${srcPath}`);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Processes the PO files.
|
|
91
|
+
* @param {Compilation} compilation - Webpack compilation object.
|
|
92
|
+
*/
|
|
93
|
+
async handlePoFiles(compilation) {
|
|
94
|
+
const poFileModules = this.getPoFileModules(compilation);
|
|
95
|
+
for (const poModule of poFileModules) {
|
|
96
|
+
if (poModule instanceof webpack_1.NormalModule) {
|
|
97
|
+
const poFilePath = poModule.resource;
|
|
98
|
+
const poFileContent = JSON.parse(poModule.originalSource()?.source());
|
|
99
|
+
if (poFileContent) {
|
|
100
|
+
this.processPoFile(poFileContent, poFilePath);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Returns an array of PO file modules.
|
|
107
|
+
* @param {Compilation} compilation - Webpack compilation object.
|
|
108
|
+
* @returns {Array<Module>} - Array of PO file modules.
|
|
109
|
+
*/
|
|
110
|
+
getPoFileModules(compilation) {
|
|
111
|
+
return Array.from(compilation.modules).filter(module => module instanceof webpack_1.NormalModule && module.identifier().endsWith('.po'));
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Combines two arrays of PO items, ignoring duplicates from the source array.
|
|
115
|
+
* @param destItems - The destination array of PO items.
|
|
116
|
+
* @param srcItems - The source array of PO items.
|
|
117
|
+
* @param srcPath - The path to the .po file.
|
|
118
|
+
* @returns An array of combined PO items.
|
|
119
|
+
*/
|
|
120
|
+
getCombinedItems(destItems, srcItems, srcPath) {
|
|
121
|
+
const fromNodeModules = /node_modules\/@c8y/.test(srcPath);
|
|
122
|
+
if (fromNodeModules) {
|
|
123
|
+
return this.addUniqueAndIgnoreDuplicates(destItems, srcItems);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
return this.addUniqueAndOverwriteDuplicates(destItems, srcItems);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Adds unique items from the source array to the destination array, ignoring duplicates.
|
|
131
|
+
* @param destItems - The destination array of PO items.
|
|
132
|
+
* @param srcItems - The source array of PO items.
|
|
133
|
+
* @returns An array of combined PO items with duplicates ignored.
|
|
134
|
+
*/
|
|
135
|
+
addUniqueAndIgnoreDuplicates(destItems, srcItems) {
|
|
136
|
+
const uniqueSrcItems = srcItems.filter(item => !destItems.some(({ msgid }) => msgid === item.msgid));
|
|
137
|
+
return [...destItems, ...uniqueSrcItems];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Adds unique items from the source array to the destination array, overwriting duplicates.
|
|
141
|
+
* @param destItems - The destination array of PO items.
|
|
142
|
+
* @param srcItems - The source array of PO items.
|
|
143
|
+
* @returns An array of combined PO items with duplicates overwritten.
|
|
144
|
+
*/
|
|
145
|
+
addUniqueAndOverwriteDuplicates(destItems, srcItems) {
|
|
146
|
+
const uniqueDestItems = destItems.filter(item => !srcItems.some(({ msgid }) => msgid === item.msgid));
|
|
147
|
+
return [...uniqueDestItems, ...srcItems];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.TranslationAggregationPlugin = TranslationAggregationPlugin;
|
|
151
|
+
exports.default = TranslationAggregationPlugin;
|
|
152
|
+
//# sourceMappingURL=translation-aggregation-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-aggregation-plugin.js","sourceRoot":"","sources":["../../../../src/webpack/plugin/translation-aggregation-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as pofile from 'pofile';
|
|
2
|
+
/**
|
|
3
|
+
* A class that stores and manages translation data shared between
|
|
4
|
+
* multiple webpack plugins.
|
|
5
|
+
*/
|
|
6
|
+
export declare class TranslationDataStore {
|
|
7
|
+
private static _instance;
|
|
8
|
+
private _groupedPos;
|
|
9
|
+
/**
|
|
10
|
+
* Gets the instance of TranslationDataStore.
|
|
11
|
+
*/
|
|
12
|
+
static get instance(): TranslationDataStore;
|
|
13
|
+
/**
|
|
14
|
+
* Gets the grouped PO files.
|
|
15
|
+
* @returns The grouped PO files as an object with language keys and PO file values.
|
|
16
|
+
*/
|
|
17
|
+
get groupedPos(): {
|
|
18
|
+
[key: string]: pofile.PO;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Sets the grouped PO files.
|
|
22
|
+
* @param value - The new grouped PO files as an object with language keys and PO file values.
|
|
23
|
+
*/
|
|
24
|
+
set groupedPos(value: {
|
|
25
|
+
[key: string]: pofile.PO;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TranslationDataStore = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A class that stores and manages translation data shared between
|
|
6
|
+
* multiple webpack plugins.
|
|
7
|
+
*/
|
|
8
|
+
class TranslationDataStore {
|
|
9
|
+
constructor() {
|
|
10
|
+
this._groupedPos = {};
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Gets the instance of TranslationDataStore.
|
|
14
|
+
*/
|
|
15
|
+
static get instance() {
|
|
16
|
+
if (!TranslationDataStore._instance) {
|
|
17
|
+
TranslationDataStore._instance = new TranslationDataStore();
|
|
18
|
+
}
|
|
19
|
+
return TranslationDataStore._instance;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Gets the grouped PO files.
|
|
23
|
+
* @returns The grouped PO files as an object with language keys and PO file values.
|
|
24
|
+
*/
|
|
25
|
+
get groupedPos() {
|
|
26
|
+
return this._groupedPos;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Sets the grouped PO files.
|
|
30
|
+
* @param value - The new grouped PO files as an object with language keys and PO file values.
|
|
31
|
+
*/
|
|
32
|
+
set groupedPos(value) {
|
|
33
|
+
this._groupedPos = value;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.TranslationDataStore = TranslationDataStore;
|
|
37
|
+
//# sourceMappingURL=translation-data-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-data-store.js","sourceRoot":"","sources":["../../../../src/webpack/plugin/translation-data-store.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,oBAAoB;IAAjC;QAEU,gBAAW,GAAiC,EAAE,CAAC;IA2BzD,CAAC;IAzBC;;OAEG;IACH,MAAM,KAAK,QAAQ;QACjB,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;YACnC,oBAAoB,CAAC,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;SAC7D;QACD,OAAO,oBAAoB,CAAC,SAAS,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU,CAAC,KAAmC;QAChD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF;AA7BD,oDA6BC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as federationUtils from './federationUtils';
|
|
2
|
+
import { Configuration } from 'webpack';
|
|
3
|
+
import { C8yBrowserBuilderOptions } from '../../builders/BuilderOptions';
|
|
4
|
+
interface Dependency {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
pkgJsonVersion: string;
|
|
8
|
+
path: string;
|
|
9
|
+
}
|
|
10
|
+
interface SimpleDependencyList {
|
|
11
|
+
[key: string]: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function buildConfigForFederation(configuration: Configuration): Configuration;
|
|
14
|
+
export interface SharedDependencies {
|
|
15
|
+
[key: string]: {
|
|
16
|
+
requiredVersion: string;
|
|
17
|
+
singleton: boolean;
|
|
18
|
+
strictVersion: boolean;
|
|
19
|
+
version: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare function getSharedDependencies(buildOptions: C8yBrowserBuilderOptions): SharedDependencies;
|
|
23
|
+
export declare function getSharedDependenciesFromNames(names: string[]): federationUtils.SharedDependencies;
|
|
24
|
+
export declare function getSharedDependenciesMetaDataFromName(depKey: string, sharedDependenciesFromPackageJson?: SimpleDependencyList): Dependency | undefined;
|
|
25
|
+
export declare function getVersion(depKey: string, sharedDependenciesFromPackageJson?: SimpleDependencyList): any;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getVersion = exports.getSharedDependenciesMetaDataFromName = exports.getSharedDependenciesFromNames = exports.getSharedDependencies = exports.buildConfigForFederation = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const fs = require("fs-extra");
|
|
6
|
+
const lodash_1 = require("lodash");
|
|
7
|
+
// I know this looks wired, but it's for testing and seems to be an accepted approach:
|
|
8
|
+
// Base problem is: You cannot mock require calls in Jest.
|
|
9
|
+
// https://stackoverflow.com/questions/39755439/how-to-mock-imported-named-function-in-jest-when-module-is-unmocked/65243744#65243744
|
|
10
|
+
const federationUtils = require("./federationUtils");
|
|
11
|
+
const chalk = require("chalk");
|
|
12
|
+
function buildConfigForFederation(configuration) {
|
|
13
|
+
const { entry } = configuration;
|
|
14
|
+
/**
|
|
15
|
+
* Workaround: "Resolved Uncaught Error: Shared Module Unavailable for Eager Consumption".
|
|
16
|
+
* Angular includes @angular/compiler in the polyfills list, triggering a network request for the polyfills.js file.
|
|
17
|
+
* This file attempts to load the @angular/compiler module, which is not available at the moment.
|
|
18
|
+
*/
|
|
19
|
+
if (entry?.polyfills) {
|
|
20
|
+
delete entry.polyfills;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
output: {
|
|
24
|
+
...configuration.output,
|
|
25
|
+
publicPath: 'auto',
|
|
26
|
+
scriptType: 'text/javascript'
|
|
27
|
+
},
|
|
28
|
+
optimization: {
|
|
29
|
+
...configuration.optimization,
|
|
30
|
+
runtimeChunk: false
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
exports.buildConfigForFederation = buildConfigForFederation;
|
|
35
|
+
const excludedSubDependencies = [];
|
|
36
|
+
const excludedDependenciesObj = {
|
|
37
|
+
'libphonenumber-js': true,
|
|
38
|
+
'zone.js': true,
|
|
39
|
+
three: true
|
|
40
|
+
};
|
|
41
|
+
const dontResolveVersion = {
|
|
42
|
+
rxjs: true
|
|
43
|
+
};
|
|
44
|
+
// Todo, check if still valid.
|
|
45
|
+
const snapshotRegexp = new RegExp(/-SNAPSHOT.0$/);
|
|
46
|
+
function getSharedDependencies(buildOptions) {
|
|
47
|
+
const rootPackageJsonPath = getRootPackageJsonPath(buildOptions);
|
|
48
|
+
const sharedDependenciesFromPackageJson = resolveDependencies(path.resolve(rootPackageJsonPath, 'package.json'));
|
|
49
|
+
const dependencies = Object.keys(sharedDependenciesFromPackageJson)
|
|
50
|
+
.map(key => getSharedDependenciesMetaDataFromName(key))
|
|
51
|
+
.filter(Boolean);
|
|
52
|
+
const dependenciesWithSubmodules = getDependenciesWithSubmodules(dependencies);
|
|
53
|
+
const flatDependenciesListWithSubmodules = transformDependenciesWithSubmodules(dependenciesWithSubmodules, buildOptions.buildTime?.federation === 'strict');
|
|
54
|
+
return flatDependenciesListWithSubmodules;
|
|
55
|
+
}
|
|
56
|
+
exports.getSharedDependencies = getSharedDependencies;
|
|
57
|
+
function getSharedDependenciesFromNames(names) {
|
|
58
|
+
const dependencies = names
|
|
59
|
+
.map(name => getSharedDependenciesMetaDataFromName(name))
|
|
60
|
+
.filter(Boolean);
|
|
61
|
+
const dependenciesWithSubmodules = getDependenciesWithSubmodules(dependencies);
|
|
62
|
+
const flatDependenciesListWithSubmodules = transformDependenciesWithSubmodules(dependenciesWithSubmodules, false);
|
|
63
|
+
return flatDependenciesListWithSubmodules;
|
|
64
|
+
}
|
|
65
|
+
exports.getSharedDependenciesFromNames = getSharedDependenciesFromNames;
|
|
66
|
+
function getSharedDependenciesMetaDataFromName(depKey, sharedDependenciesFromPackageJson) {
|
|
67
|
+
let version;
|
|
68
|
+
if (excludedDependenciesObj[depKey]) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
version = federationUtils.getVersion(depKey, sharedDependenciesFromPackageJson);
|
|
73
|
+
}
|
|
74
|
+
catch (ex) {
|
|
75
|
+
console.warn(`${chalk.yellow('Warning')}: Dependency ${depKey} cannot be resolved for module federation sharing.`);
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
// remove -SNAPSHOT extension of c8y package versions to allow module federation with SNAPSHOT versions
|
|
79
|
+
if (depKey.startsWith('@c8y/') && snapshotRegexp.test(version)) {
|
|
80
|
+
version = version.replace(snapshotRegexp, '');
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
name: depKey,
|
|
84
|
+
version,
|
|
85
|
+
pkgJsonVersion: sharedDependenciesFromPackageJson
|
|
86
|
+
? sharedDependenciesFromPackageJson[depKey]
|
|
87
|
+
: version,
|
|
88
|
+
path: path.dirname(require.resolve(`${depKey}/package.json`))
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
exports.getSharedDependenciesMetaDataFromName = getSharedDependenciesMetaDataFromName;
|
|
92
|
+
function getVersion(depKey, sharedDependenciesFromPackageJson) {
|
|
93
|
+
if (sharedDependenciesFromPackageJson && dontResolveVersion[depKey]) {
|
|
94
|
+
return sharedDependenciesFromPackageJson[depKey];
|
|
95
|
+
}
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
97
|
+
return require(`${depKey}/package.json`).version;
|
|
98
|
+
}
|
|
99
|
+
exports.getVersion = getVersion;
|
|
100
|
+
function getRootPackageJsonPath(env) {
|
|
101
|
+
const cwd = /\.\m?[j|t]s$/.test(env.main) ? path.dirname(env.main) : env.main;
|
|
102
|
+
let pathToPackageJson = cwd;
|
|
103
|
+
while (!fs.existsSync(path.resolve(pathToPackageJson, 'package.json'))) {
|
|
104
|
+
pathToPackageJson = path.resolve(pathToPackageJson, '..');
|
|
105
|
+
if (pathToPackageJson === path.resolve('/')) {
|
|
106
|
+
throw new Error(`No package.json could be resolved from the main ${env.main}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return pathToPackageJson;
|
|
110
|
+
}
|
|
111
|
+
function resolveDependencies(filePath) {
|
|
112
|
+
const packageJson = fs.readJsonSync(filePath);
|
|
113
|
+
let dependencies = packageJson.dependencies;
|
|
114
|
+
// In our mono-repo the dependencies are in a folder one level up.
|
|
115
|
+
try {
|
|
116
|
+
const parentPath = path.join(filePath, '..', '..', 'package.json');
|
|
117
|
+
if (fileExist(parentPath)) {
|
|
118
|
+
const packageParentJson = fs.readJsonSync(parentPath);
|
|
119
|
+
if (packageParentJson.name === '@c8y/apps') {
|
|
120
|
+
dependencies = packageParentJson.dependencies;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (ex) {
|
|
125
|
+
dependencies = packageJson.dependencies;
|
|
126
|
+
}
|
|
127
|
+
// ngx-components sadly has atm it's own dependencies (should be shared dependencies)
|
|
128
|
+
// the following function resolves them to also share them in a module federation setup.
|
|
129
|
+
const ngxComponentsDependencies = resolveDependenciesFromNgxComponents() || {};
|
|
130
|
+
return { ...ngxComponentsDependencies, ...(dependencies || {}) };
|
|
131
|
+
}
|
|
132
|
+
function fileExist(filePath) {
|
|
133
|
+
return fs.existsSync(filePath);
|
|
134
|
+
}
|
|
135
|
+
function resolveDependenciesFromNgxComponents() {
|
|
136
|
+
const pathToNgxComponents = require.resolve('@c8y/ngx-components/package.json');
|
|
137
|
+
if (fileExist(pathToNgxComponents)) {
|
|
138
|
+
const packageJson = fs.readJsonSync(pathToNgxComponents);
|
|
139
|
+
return packageJson.dependencies;
|
|
140
|
+
}
|
|
141
|
+
return {};
|
|
142
|
+
}
|
|
143
|
+
function getDependenciesWithSubmodules(dependenciesWithResolvedPaths) {
|
|
144
|
+
return dependenciesWithResolvedPaths.map(resolvedDependency => {
|
|
145
|
+
const { path: depPath } = resolvedDependency;
|
|
146
|
+
let submodules = getRawSubmodules(depPath);
|
|
147
|
+
if (resolvedDependency.name.match('ngx-components')) {
|
|
148
|
+
// getC8ySubmoduleName transforms ngx-components submodules names into @c8y/ngx-components/... form.
|
|
149
|
+
submodules = submodules.map(submodule => getC8ySubmoduleName(submodule, 'ngx-components'));
|
|
150
|
+
}
|
|
151
|
+
if (submodules.length > 0) {
|
|
152
|
+
return { dependency: resolvedDependency, submodules };
|
|
153
|
+
}
|
|
154
|
+
return { dependency: resolvedDependency };
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function transformDependenciesWithSubmodules(dependenciesWithSubmodules, strictVersion) {
|
|
158
|
+
return (0, lodash_1.reduce)(dependenciesWithSubmodules, (allDependenciesObj, currentVal) => {
|
|
159
|
+
const { dependency: { name, version, pkgJsonVersion }, submodules } = currentVal;
|
|
160
|
+
// Sometimes resolving errors could lead to the original version. To avoid issues, we remove the ^ or ~
|
|
161
|
+
const cleanVersion = cleanVersionPrefix(version);
|
|
162
|
+
const sharedDependencyDef = {
|
|
163
|
+
requiredVersion: getRequiredVersionPrefix(name, version, pkgJsonVersion) + cleanVersion,
|
|
164
|
+
singleton: true,
|
|
165
|
+
strictVersion,
|
|
166
|
+
version: cleanVersion
|
|
167
|
+
// eager: true TODO, check if needed.
|
|
168
|
+
};
|
|
169
|
+
allDependenciesObj[name] = sharedDependencyDef;
|
|
170
|
+
if (submodules) {
|
|
171
|
+
submodules.forEach(submodule => {
|
|
172
|
+
allDependenciesObj[submodule] = sharedDependencyDef;
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return allDependenciesObj;
|
|
176
|
+
}, {});
|
|
177
|
+
}
|
|
178
|
+
function cleanVersionPrefix(version) {
|
|
179
|
+
return version.replace('^', '').replace('~', '');
|
|
180
|
+
}
|
|
181
|
+
function getRequiredVersionPrefix(dependency, version, originalVersion) {
|
|
182
|
+
if (originalVersion.startsWith('^') || originalVersion.startsWith('~')) {
|
|
183
|
+
return originalVersion[0];
|
|
184
|
+
}
|
|
185
|
+
if (dependency.startsWith('@c8y')) {
|
|
186
|
+
return '^';
|
|
187
|
+
}
|
|
188
|
+
return '~';
|
|
189
|
+
}
|
|
190
|
+
function getC8ySubmoduleName(submodule, submoduleName) {
|
|
191
|
+
const tokens = submodule.split('/');
|
|
192
|
+
const index = tokens.indexOf(submoduleName);
|
|
193
|
+
const ngxComponentsSubmodule = tokens.slice(index + 1, tokens.length).join('/');
|
|
194
|
+
return `@c8y/ngx-components/${ngxComponentsSubmodule}`;
|
|
195
|
+
}
|
|
196
|
+
function getRawSubmodules(depResolvedPath) {
|
|
197
|
+
return findSecondaries(depResolvedPath, excludedSubDependencies)
|
|
198
|
+
.filter(submodule => isDistFolderDependency(submodule))
|
|
199
|
+
.map(submodule => getSubmoduleNestedUpToFourLevelsDeep(submodule));
|
|
200
|
+
}
|
|
201
|
+
function isDistFolderDependency(submodule) {
|
|
202
|
+
return !submodule.match('/dist');
|
|
203
|
+
}
|
|
204
|
+
function getSubmoduleNestedUpToFourLevelsDeep(submodule) {
|
|
205
|
+
// i.e. cumulocity-ui/packages/ngx-components/binary-file-download
|
|
206
|
+
// TODO find better way of getting submodule name
|
|
207
|
+
const splitedSubmodulePath = submodule.split('/');
|
|
208
|
+
return (0, lodash_1.takeRight)(splitedSubmodulePath, 4).join('/');
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Source:
|
|
212
|
+
* https://github.com/angular-architects/module-federation-plugin/blob/790d0e4a20c54b570267c036ddd20154556e959d/libs/mf/src/utils/share-utils.ts#L49
|
|
213
|
+
*/
|
|
214
|
+
function findSecondaries(libPath, excludes) {
|
|
215
|
+
const acc = [];
|
|
216
|
+
_findSecondaries(libPath, excludes, acc);
|
|
217
|
+
return acc;
|
|
218
|
+
}
|
|
219
|
+
function _findSecondaries(libPath, excludes, acc) {
|
|
220
|
+
const files = fs.readdirSync(libPath);
|
|
221
|
+
const dirs = files
|
|
222
|
+
.map(f => path.join(libPath, f))
|
|
223
|
+
.filter(f => fs.lstatSync(f).isDirectory() && f !== 'node_modules');
|
|
224
|
+
const secondaries = dirs.filter(d => fs.existsSync(path.join(d, 'package.json')));
|
|
225
|
+
for (const s of secondaries) {
|
|
226
|
+
const secondaryLibName = s.replace(/\\/g, '/').replace(/^.*node_modules[/]/, '');
|
|
227
|
+
if (excludes.includes(secondaryLibName)) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
acc.push(secondaryLibName);
|
|
231
|
+
_findSecondaries(s, excludes, acc);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=federationUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federationUtils.js","sourceRoot":"","sources":["../../../../src/webpack/utils/federationUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { BuilderContext } from '@angular-devkit/architect';
|
|
2
|
+
import { Path } from '@angular-devkit/core';
|
|
3
|
+
import { Configuration } from 'webpack';
|
|
4
|
+
import { EnvironmentOptions } from '../EnvironmentOptions';
|
|
5
|
+
import { C8yBrowserBuilderOptions, C8yDevServerBuilderOptions } from '../../builders/BuilderOptions';
|
|
6
|
+
/**
|
|
7
|
+
* Reads the package.json file on the project context and returns the c8y.application properties.
|
|
8
|
+
* @param projectContext The current used project context.
|
|
9
|
+
* @returns The application options.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getOptionsFromContext(projectContext: BuilderContext): Promise<EnvironmentOptions>;
|
|
12
|
+
/**
|
|
13
|
+
* Returns the current project root path.
|
|
14
|
+
* @param projectContext The current project context
|
|
15
|
+
* @returns The current root path.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getProjectRootPath(projectContext: BuilderContext): Promise<Path>;
|
|
18
|
+
/**
|
|
19
|
+
* Merges the option elements.
|
|
20
|
+
* @param options The current browser builder options
|
|
21
|
+
* @param env The current environment options
|
|
22
|
+
* @returns A merged C8yBrowserBuilderOptions.
|
|
23
|
+
*/
|
|
24
|
+
export declare function migrateDeprecatedBrowserBuildOptions(options: C8yBrowserBuilderOptions, env: EnvironmentOptions): C8yBrowserBuilderOptions;
|
|
25
|
+
/**
|
|
26
|
+
* Merges the option elements for a dev server
|
|
27
|
+
* @param options The current dev builder options
|
|
28
|
+
* @param env The current environment options
|
|
29
|
+
* @returns A merged C8yDevServerBuilderOptions.
|
|
30
|
+
*/
|
|
31
|
+
export declare function migrateDeprecatedDevServerOptions(options: C8yDevServerBuilderOptions, env: EnvironmentOptions): C8yDevServerBuilderOptions;
|
|
32
|
+
/**
|
|
33
|
+
* This function tries to load cumulocity.config.ts, .cumulocityrc.ts or package.json from the given path
|
|
34
|
+
* and retrieve application options and version from it.
|
|
35
|
+
* @param {Path} path - The path to try to retrieve the configuration file.
|
|
36
|
+
* @returns {Promise<EnvironmentOptions>} The current environment options
|
|
37
|
+
*/
|
|
38
|
+
export declare function getPackageOptions(path: Path): Promise<EnvironmentOptions>;
|
|
39
|
+
export declare function getFileFromPath(rootPath: Path, fileName: string): Promise<any>;
|
|
40
|
+
/**
|
|
41
|
+
* Returns a configuration object for handling images.
|
|
42
|
+
*
|
|
43
|
+
* @returns Object webpack configuration for images.
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildImagesConfig(): Configuration;
|