@c8y/devkit 1023.75.1 → 1023.76.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/dist/src/webpack/config/plugin.js +2 -0
- package/dist/src/webpack/config/plugin.js.map +1 -1
- package/dist/src/webpack/loaders/schema-loader.js +30 -6
- package/dist/src/webpack/loaders/schema-loader.js.map +1 -1
- package/dist/src/webpack/plugin/schema-aggregation-plugin.d.ts +35 -0
- package/dist/src/webpack/plugin/schema-aggregation-plugin.js +101 -0
- package/dist/src/webpack/plugin/schema-aggregation-plugin.js.map +1 -0
- package/package.json +4 -4
|
@@ -7,6 +7,7 @@ const path_1 = require("path");
|
|
|
7
7
|
const webpack_1 = require("../utils/webpack");
|
|
8
8
|
const plugin_1 = require("../plugin/plugin");
|
|
9
9
|
const translation_aggregation_plugin_1 = require("../plugin/translation-aggregation-plugin");
|
|
10
|
+
const schema_aggregation_plugin_1 = require("../plugin/schema-aggregation-plugin");
|
|
10
11
|
const federation_1 = require("./federation");
|
|
11
12
|
const translation_1 = require("./translation");
|
|
12
13
|
const import_maps_1 = require("./import-maps");
|
|
@@ -93,6 +94,7 @@ function config(options, configuration, projectRootPath) {
|
|
|
93
94
|
return {
|
|
94
95
|
plugins: [
|
|
95
96
|
new translation_aggregation_plugin_1.TranslationAggregationPlugin(),
|
|
97
|
+
new schema_aggregation_plugin_1.SchemaAggregationPlugin(),
|
|
96
98
|
(0, translation_1.getLocalesContextReplacePlugin)(options),
|
|
97
99
|
new webpack_1.webpack.DefinePlugin({
|
|
98
100
|
__WEBPACK__: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/webpack/config/plugin.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/webpack/config/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ exports.default = schemaLoader;
|
|
|
4
4
|
const typescript_json_schema_1 = require("typescript-json-schema");
|
|
5
5
|
const fs = require("fs");
|
|
6
6
|
const path = require("path");
|
|
7
|
+
const schema_aggregation_plugin_1 = require("../plugin/schema-aggregation-plugin");
|
|
7
8
|
const compilerOptions = {
|
|
8
9
|
strictNullChecks: true
|
|
9
10
|
};
|
|
@@ -12,10 +13,12 @@ function schemaLoader(_) {
|
|
|
12
13
|
try {
|
|
13
14
|
const request = this.request;
|
|
14
15
|
let interfaceName = null;
|
|
16
|
+
let type = null;
|
|
15
17
|
// Extract interface name from options or query
|
|
16
18
|
if (this.getOptions) {
|
|
17
19
|
const options = this.getOptions();
|
|
18
20
|
interfaceName = options.interfaceName || null;
|
|
21
|
+
type = options.type || null;
|
|
19
22
|
}
|
|
20
23
|
if (!interfaceName && request) {
|
|
21
24
|
const match = request.match(/[?&]interfaceName=([^!&]+)/);
|
|
@@ -23,10 +26,20 @@ function schemaLoader(_) {
|
|
|
23
26
|
interfaceName = match[1];
|
|
24
27
|
}
|
|
25
28
|
}
|
|
29
|
+
if (!type && request) {
|
|
30
|
+
const match = request.match(/[?&]type=([^!&]+)/);
|
|
31
|
+
if (match) {
|
|
32
|
+
type = match[1];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
26
35
|
if (!interfaceName && this.resourceQuery) {
|
|
27
36
|
const queryParams = new URLSearchParams(this.resourceQuery.substring(1));
|
|
28
37
|
interfaceName = queryParams.get('interfaceName');
|
|
29
38
|
}
|
|
39
|
+
if (!type && this.resourceQuery) {
|
|
40
|
+
const queryParams = new URLSearchParams(this.resourceQuery.substring(1));
|
|
41
|
+
type = queryParams.get('type');
|
|
42
|
+
}
|
|
30
43
|
if (!interfaceName) {
|
|
31
44
|
console.error('Debug information:');
|
|
32
45
|
console.error('- Request:', request);
|
|
@@ -38,11 +51,11 @@ function schemaLoader(_) {
|
|
|
38
51
|
// Check if we're working with a compiled file from node_modules
|
|
39
52
|
const isNodeModuleFile = filePath.includes('node_modules') && (filePath.endsWith('.mjs') || filePath.endsWith('.js'));
|
|
40
53
|
if (isNodeModuleFile) {
|
|
41
|
-
processNodeModuleFile.call(this, filePath, interfaceName, callback);
|
|
54
|
+
processNodeModuleFile.call(this, filePath, interfaceName, type, callback);
|
|
42
55
|
}
|
|
43
56
|
else {
|
|
44
57
|
// Regular case - monorepo
|
|
45
|
-
processSourceFile.call(this, filePath, interfaceName, callback);
|
|
58
|
+
processSourceFile.call(this, filePath, interfaceName, type, callback);
|
|
46
59
|
}
|
|
47
60
|
}
|
|
48
61
|
catch (err) {
|
|
@@ -50,7 +63,7 @@ function schemaLoader(_) {
|
|
|
50
63
|
callback(err);
|
|
51
64
|
}
|
|
52
65
|
}
|
|
53
|
-
async function processNodeModuleFile(filePath, interfaceName, callback) {
|
|
66
|
+
async function processNodeModuleFile(filePath, interfaceName, type, callback) {
|
|
54
67
|
try {
|
|
55
68
|
// Start with the directory containing the file
|
|
56
69
|
let currentDir = path.dirname(filePath);
|
|
@@ -83,7 +96,7 @@ async function processNodeModuleFile(filePath, interfaceName, callback) {
|
|
|
83
96
|
? exportConfig.types.substring(2)
|
|
84
97
|
: exportConfig.types);
|
|
85
98
|
if (fs.existsSync(typesPath)) {
|
|
86
|
-
return processSourceFile.call(this, typesPath, interfaceName, callback);
|
|
99
|
+
return processSourceFile.call(this, typesPath, interfaceName, type, callback);
|
|
87
100
|
}
|
|
88
101
|
}
|
|
89
102
|
}
|
|
@@ -103,7 +116,7 @@ async function processNodeModuleFile(filePath, interfaceName, callback) {
|
|
|
103
116
|
if (content.includes(`interface ${interfaceName}`) ||
|
|
104
117
|
content.includes(`class ${interfaceName}`) ||
|
|
105
118
|
content.includes(`type ${interfaceName}`)) {
|
|
106
|
-
return processSourceFile.call(this, typesPath, interfaceName, callback);
|
|
119
|
+
return processSourceFile.call(this, typesPath, interfaceName, type, callback);
|
|
107
120
|
}
|
|
108
121
|
}
|
|
109
122
|
}
|
|
@@ -118,7 +131,7 @@ async function processNodeModuleFile(filePath, interfaceName, callback) {
|
|
|
118
131
|
callback(err);
|
|
119
132
|
}
|
|
120
133
|
}
|
|
121
|
-
function processSourceFile(filePath, interfaceName, callback) {
|
|
134
|
+
function processSourceFile(filePath, interfaceName, type, callback) {
|
|
122
135
|
try {
|
|
123
136
|
const program = (0, typescript_json_schema_1.getProgramFromFiles)([filePath], compilerOptions);
|
|
124
137
|
const settings = {
|
|
@@ -135,9 +148,20 @@ function processSourceFile(filePath, interfaceName, callback) {
|
|
|
135
148
|
if (!schema) {
|
|
136
149
|
throw Error(`No schema generated for ${interfaceName} in ${filePath}. Make sure the interface exists and is exported.`);
|
|
137
150
|
}
|
|
151
|
+
// Register schema for aggregation by SchemaAggregationPlugin
|
|
152
|
+
const compilation = this._compilation;
|
|
153
|
+
if (compilation) {
|
|
154
|
+
(0, schema_aggregation_plugin_1.registerSchema)(compilation, `${interfaceName}:${filePath}`, {
|
|
155
|
+
interfaceName,
|
|
156
|
+
filePath,
|
|
157
|
+
schema: schema,
|
|
158
|
+
type: type || 'unknown'
|
|
159
|
+
});
|
|
160
|
+
}
|
|
138
161
|
callback(null, `export const schema = ${JSON.stringify(schema)};`);
|
|
139
162
|
}
|
|
140
163
|
catch (err) {
|
|
164
|
+
// eslint-disable-next-line no-console
|
|
141
165
|
console.error(`Error processing source file ${filePath}:`, err);
|
|
142
166
|
callback(err);
|
|
143
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-loader.js","sourceRoot":"","sources":["../../../../src/webpack/loaders/schema-loader.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"schema-loader.js","sourceRoot":"","sources":["../../../../src/webpack/loaders/schema-loader.ts"],"names":[],"mappings":";;AAWA,+BA+DC;AA1ED,mEAAkG;AAGlG,yBAAyB;AACzB,6BAA6B;AAC7B,mFAAqE;AAErE,MAAM,eAAe,GAAoB;IACvC,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF,SAAwB,YAAY,CAA2B,CAAS;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IAAI,IAAI,GAAkB,IAAI,CAAC;QAE/B,+CAA+C;QAC/C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;YAC9C,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,aAAa,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC1D,IAAI,KAAK,EAAE,CAAC;gBACV,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAEnC,gEAAgE;QAChE,MAAM,gBAAgB,GACpB,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/F,IAAI,gBAAgB,EAAE,CAAC;YACrB,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,0BAA0B;YAC1B,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC3C,QAAQ,CAAC,GAAY,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAElC,QAAgB,EAChB,aAAqB,EACrB,IAAmB,EACnB,QAAa;IAEb,IAAI,CAAC;QACH,+CAA+C;QAC/C,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,0DAA0D;QAC1D,OAAO,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAE9D,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,gBAAgB,GAAG,IAAI,CAAC;gBAExB,8BAA8B;gBAC9B,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAEnD,wDAAwD;gBACxD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB;gBAEvF,qCAAqC;gBACrC,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;oBACxB,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC7E,IAAI,UAAU,KAAK,GAAG;4BAAE,SAAS,CAAC,mBAAmB;wBAErD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;4BACrC,MAAM,WAAW,GAAI,YAAoB,CAAC,OAAO,CAAC;4BAElD,0CAA0C;4BAC1C,IACE,WAAW;gCACX,CAAC,WAAW,KAAK,KAAK,gBAAgB,EAAE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,EACjF,CAAC;gCACD,mCAAmC;gCACnC,IAAK,YAAoB,CAAC,KAAK,EAAE,CAAC;oCAChC,SAAS,GAAG,IAAI,CAAC,IAAI,CACnB,UAAU,EACT,YAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;wCAC1C,CAAC,CAAE,YAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;wCAC1C,CAAC,CAAE,YAAoB,CAAC,KAAK,CAChC,CAAC;oCAEF,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wCAC7B,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;oCAChF,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;oBACtB,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC/B,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;gBACzD,CAAC;gBAED,IAAI,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1C,4CAA4C;oBAC5C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACnD,IACE,OAAO,CAAC,QAAQ,CAAC,aAAa,aAAa,EAAE,CAAC;wBAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,aAAa,EAAE,CAAC;wBAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,aAAa,EAAE,CAAC,EACzC,CAAC;wBACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAChF,CAAC;gBACH,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAED,wDAAwD;QACxD,MAAM,IAAI,KAAK,CAAC,iDAAiD,aAAa,EAAE,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QACzD,QAAQ,CAAC,GAAY,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAExB,QAAgB,EAChB,aAAqB,EACrB,IAAmB,EACnB,QAAa;IAEb,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,4CAAmB,EAAC,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,IAAI;SACvB,CAAC;QAEF,MAAM,SAAS,GAAG,IAAA,uCAAc,EAAC,OAAO,EAAE,QAAQ,CAAwB,CAAC;QAC3E,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,KAAK,CACT,2BAA2B,aAAa,OAAO,QAAQ,mDAAmD,CAC3G,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAA,0CAAc,EAAC,WAAW,EAAE,GAAG,aAAa,IAAI,QAAQ,EAAE,EAAE;gBAC1D,aAAa;gBACb,QAAQ;gBACR,MAAM,EAAE,MAAiC;gBACzC,IAAI,EAAE,IAAI,IAAI,SAAS;aACxB,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,CAAC,IAAI,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,gCAAgC,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;QAChE,QAAQ,CAAC,GAAY,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Compilation, Compiler } from 'webpack';
|
|
2
|
+
export interface SchemaData {
|
|
3
|
+
interfaceName: string;
|
|
4
|
+
filePath: string;
|
|
5
|
+
schema: Record<string, unknown>;
|
|
6
|
+
type: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Called by schema-loader to register a schema for the current compilation.
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerSchema(compilation: Compilation, key: string, data: SchemaData): void;
|
|
12
|
+
/**
|
|
13
|
+
* SchemaAggregationPlugin is a Webpack plugin that aggregates all JSON schemas
|
|
14
|
+
* generated by the schema-loader into a single file.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SchemaAggregationPlugin {
|
|
17
|
+
/**
|
|
18
|
+
* The `apply` method is called by Webpack when this plugin is used.
|
|
19
|
+
* @param compiler - The Webpack compiler instance.
|
|
20
|
+
*/
|
|
21
|
+
apply(compiler: Compiler): void;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a single JSON file containing all schemas and adds it to the compilation.
|
|
24
|
+
* The asset is generated as c8y-schemas.json and included in the production bundle.
|
|
25
|
+
*
|
|
26
|
+
* Schemas from the current build are collected via the WeakMap (populated by the
|
|
27
|
+
* schema-loader). They are merged with the persistent cache snapshot from previous
|
|
28
|
+
* builds, so that schemas from webpack-cached (unchanged) modules are not lost on
|
|
29
|
+
* incremental rebuilds when the loader is not re-invoked.
|
|
30
|
+
*
|
|
31
|
+
* @param compilation - The Webpack compilation object.
|
|
32
|
+
*/
|
|
33
|
+
private createSchemaAsset;
|
|
34
|
+
}
|
|
35
|
+
export default SchemaAggregationPlugin;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SchemaAggregationPlugin = void 0;
|
|
4
|
+
exports.registerSchema = registerSchema;
|
|
5
|
+
const webpack_1 = require("../utils/webpack");
|
|
6
|
+
const PLUGIN_NAME = 'SchemaAggregationPlugin';
|
|
7
|
+
/**
|
|
8
|
+
* Per-compilation schema registry, keyed by the Compilation instance.
|
|
9
|
+
* This ensures schemas written by the loader are read by the exact same
|
|
10
|
+
* compilation's finishModules hook, even when Angular CLI runs multiple
|
|
11
|
+
* webpack compilations in the same build.
|
|
12
|
+
*/
|
|
13
|
+
const compilationSchemas = new WeakMap();
|
|
14
|
+
/**
|
|
15
|
+
* Called by schema-loader to register a schema for the current compilation.
|
|
16
|
+
*/
|
|
17
|
+
function registerSchema(compilation, key, data) {
|
|
18
|
+
const map = compilationSchemas.get(compilation);
|
|
19
|
+
if (!map) {
|
|
20
|
+
// compilation not managed by this plugin instance — silently skip
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
map.set(key, data);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* SchemaAggregationPlugin is a Webpack plugin that aggregates all JSON schemas
|
|
27
|
+
* generated by the schema-loader into a single file.
|
|
28
|
+
*/
|
|
29
|
+
class SchemaAggregationPlugin {
|
|
30
|
+
/**
|
|
31
|
+
* The `apply` method is called by Webpack when this plugin is used.
|
|
32
|
+
* @param compiler - The Webpack compiler instance.
|
|
33
|
+
*/
|
|
34
|
+
apply(compiler) {
|
|
35
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
36
|
+
// Initialise an empty map scoped to this compilation instance
|
|
37
|
+
compilationSchemas.set(compilation, new Map());
|
|
38
|
+
// After all modules are finished, create the aggregated schema asset
|
|
39
|
+
compilation.hooks.finishModules.tapPromise(PLUGIN_NAME, async () => {
|
|
40
|
+
await this.createSchemaAsset(compilation);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Creates a single JSON file containing all schemas and adds it to the compilation.
|
|
46
|
+
* The asset is generated as c8y-schemas.json and included in the production bundle.
|
|
47
|
+
*
|
|
48
|
+
* Schemas from the current build are collected via the WeakMap (populated by the
|
|
49
|
+
* schema-loader). They are merged with the persistent cache snapshot from previous
|
|
50
|
+
* builds, so that schemas from webpack-cached (unchanged) modules are not lost on
|
|
51
|
+
* incremental rebuilds when the loader is not re-invoked.
|
|
52
|
+
*
|
|
53
|
+
* @param compilation - The Webpack compilation object.
|
|
54
|
+
*/
|
|
55
|
+
async createSchemaAsset(compilation) {
|
|
56
|
+
try {
|
|
57
|
+
const cache = compilation.getCache(PLUGIN_NAME);
|
|
58
|
+
const freshSchemas = compilationSchemas.get(compilation);
|
|
59
|
+
const hasFreshSchemas = !!freshSchemas?.size;
|
|
60
|
+
// Load the schema snapshot persisted from the previous build (may be null on first run)
|
|
61
|
+
const previousSnapshot = await cache.getPromise('snapshot', null);
|
|
62
|
+
let merged;
|
|
63
|
+
if (hasFreshSchemas && freshSchemas) {
|
|
64
|
+
// Merge: previous snapshot + schemas freshly processed by the loader this build.
|
|
65
|
+
// Overlay order ensures changed files replace their stale snapshot entries.
|
|
66
|
+
merged = { ...(previousSnapshot ?? {}) };
|
|
67
|
+
for (const [key, data] of freshSchemas) {
|
|
68
|
+
merged[key] = data;
|
|
69
|
+
}
|
|
70
|
+
// Only write back when something actually changed — avoids a disk round-trip
|
|
71
|
+
// on fully-cached incremental builds and on the second Angular CLI compilation.
|
|
72
|
+
await cache.storePromise('snapshot', null, merged);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Nothing ran through the loader — snapshot is already up to date, reuse as-is.
|
|
76
|
+
merged = previousSnapshot ?? {};
|
|
77
|
+
}
|
|
78
|
+
if (!Object.keys(merged).length) {
|
|
79
|
+
// eslint-disable-next-line no-console
|
|
80
|
+
console.warn('No schemas found to aggregate.');
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const { assets } = compilation;
|
|
84
|
+
// Convert the schemas map to an array of objects
|
|
85
|
+
const relevantDataOnly = Object.values(merged).map(({ interfaceName, schema, type }) => ({
|
|
86
|
+
interfaceName,
|
|
87
|
+
schema,
|
|
88
|
+
type
|
|
89
|
+
}));
|
|
90
|
+
// Add a new asset for the schemas with the JSON content
|
|
91
|
+
assets['c8y-schemas.json'] = new webpack_1.webpack.sources.RawSource(JSON.stringify(relevantDataOnly, null, 2));
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
// eslint-disable-next-line no-console
|
|
95
|
+
console.error('Error creating schema asset:', e);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.SchemaAggregationPlugin = SchemaAggregationPlugin;
|
|
100
|
+
exports.default = SchemaAggregationPlugin;
|
|
101
|
+
//# sourceMappingURL=schema-aggregation-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-aggregation-plugin.js","sourceRoot":"","sources":["../../../../src/webpack/plugin/schema-aggregation-plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c8y/devkit",
|
|
3
|
-
"version": "1023.
|
|
3
|
+
"version": "1023.76.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Cumulocity",
|
|
6
6
|
"description": "Cumulocity Webpack Build Facade",
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
|
49
49
|
"@babel/plugin-transform-async-to-generator": "^7.18.6",
|
|
50
50
|
"@babel/preset-env": "^7.28.3",
|
|
51
|
-
"@c8y/client": "1023.
|
|
52
|
-
"@c8y/options": "1023.
|
|
53
|
-
"@c8y/toolkit": "1023.
|
|
51
|
+
"@c8y/client": "1023.76.0",
|
|
52
|
+
"@c8y/options": "1023.76.0",
|
|
53
|
+
"@c8y/toolkit": "1023.76.0",
|
|
54
54
|
"@inquirer/prompts": "7.7.1",
|
|
55
55
|
"@schematics/angular": "^20.3.23",
|
|
56
56
|
"JSONPath": "0.11.2",
|