@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.
@@ -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":"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"}
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":"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"}
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.75.1",
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.75.1",
52
- "@c8y/options": "1023.75.1",
53
- "@c8y/toolkit": "1023.75.1",
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",