@kosdev-code/kos-nx-plugin 2.1.27 → 2.1.29
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/migrations.json +5 -0
- package/package.json +2 -2
- package/src/migrations/dev-server-support/coordinators/migration-analyzer.d.ts +13 -0
- package/src/migrations/dev-server-support/coordinators/migration-analyzer.d.ts.map +1 -0
- package/src/migrations/dev-server-support/coordinators/migration-analyzer.js +53 -0
- package/src/migrations/dev-server-support/coordinators/migration-analyzer.js.map +1 -0
- package/src/migrations/dev-server-support/coordinators/migration-executor.d.ts +13 -0
- package/src/migrations/dev-server-support/coordinators/migration-executor.d.ts.map +1 -0
- package/src/migrations/dev-server-support/coordinators/migration-executor.js +239 -0
- package/src/migrations/dev-server-support/coordinators/migration-executor.js.map +1 -0
- package/src/migrations/dev-server-support/coordinators/migration-reporter.d.ts +16 -0
- package/src/migrations/dev-server-support/coordinators/migration-reporter.d.ts.map +1 -0
- package/src/migrations/dev-server-support/coordinators/migration-reporter.js +49 -0
- package/src/migrations/dev-server-support/coordinators/migration-reporter.js.map +1 -0
- package/src/migrations/dev-server-support/helpers/config-updater.d.ts +24 -0
- package/src/migrations/dev-server-support/helpers/config-updater.d.ts.map +1 -0
- package/src/migrations/dev-server-support/helpers/config-updater.js +54 -0
- package/src/migrations/dev-server-support/helpers/config-updater.js.map +1 -0
- package/src/migrations/dev-server-support/helpers/port-allocator.d.ts +37 -0
- package/src/migrations/dev-server-support/helpers/port-allocator.d.ts.map +1 -0
- package/src/migrations/dev-server-support/helpers/port-allocator.js +49 -0
- package/src/migrations/dev-server-support/helpers/port-allocator.js.map +1 -0
- package/src/migrations/dev-server-support/helpers/project-analyzer.d.ts +74 -0
- package/src/migrations/dev-server-support/helpers/project-analyzer.d.ts.map +1 -0
- package/src/migrations/dev-server-support/helpers/project-analyzer.js +109 -0
- package/src/migrations/dev-server-support/helpers/project-analyzer.js.map +1 -0
- package/src/migrations/dev-server-support/helpers/webpack-updater.d.ts +48 -0
- package/src/migrations/dev-server-support/helpers/webpack-updater.d.ts.map +1 -0
- package/src/migrations/dev-server-support/helpers/webpack-updater.js +144 -0
- package/src/migrations/dev-server-support/helpers/webpack-updater.js.map +1 -0
- package/src/migrations/dev-server-support/migrate.d.ts +57 -0
- package/src/migrations/dev-server-support/migrate.d.ts.map +1 -0
- package/src/migrations/dev-server-support/migrate.js +68 -0
- package/src/migrations/dev-server-support/migrate.js.map +1 -0
- package/src/migrations/dev-server-support/types.d.ts +39 -0
- package/src/migrations/dev-server-support/types.d.ts.map +1 -0
- package/src/migrations/dev-server-support/types.js +6 -0
- package/src/migrations/dev-server-support/types.js.map +1 -0
package/migrations.json
CHANGED
|
@@ -75,6 +75,11 @@
|
|
|
75
75
|
"version": "2.0.0",
|
|
76
76
|
"description": "Migration for v2.0.0",
|
|
77
77
|
"implementation": "./src/migrations/update-sdk-2.0/update"
|
|
78
|
+
},
|
|
79
|
+
"dev-server-support": {
|
|
80
|
+
"version": "2.1.28",
|
|
81
|
+
"description": "Adds kosui dev server support to .kos.json, webpack configs, and model projects",
|
|
82
|
+
"implementation": "./src/migrations/dev-server-support/migrate"
|
|
78
83
|
}
|
|
79
84
|
},
|
|
80
85
|
"packageJsonUpdates": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kosdev-code/kos-nx-plugin",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.29",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"generators": "./generators.json",
|
|
6
6
|
"publishConfig": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"main": "./src/index.js",
|
|
20
20
|
"kos": {
|
|
21
21
|
"build": {
|
|
22
|
-
"gitHash": "
|
|
22
|
+
"gitHash": "beef4579179bbb56c008d896adf2d2f349bb1428"
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Tree } from "@nx/devkit";
|
|
5
|
+
import type { MigrationRequirements } from "../types";
|
|
6
|
+
/**
|
|
7
|
+
* Zone 2: Migration analysis coordinator
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Analyzes the workspace to determine what migrations are needed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function analyzeMigrationRequirements(tree: Tree): MigrationRequirements;
|
|
13
|
+
//# sourceMappingURL=migration-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-analyzer.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/coordinators/migration-analyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAyB,IAAI,EAAE,MAAM,YAAY,CAAC;AAGzD,OAAO,KAAK,EAAgB,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEpE;;GAEG;AAEH;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,IAAI,GACT,qBAAqB,CAmBvB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.analyzeMigrationRequirements = void 0;
|
|
7
|
+
const devkit_1 = require("@nx/devkit");
|
|
8
|
+
const kos_config_helpers_1 = require("../../../utils/kos-config-helpers");
|
|
9
|
+
const project_analyzer_1 = require("../helpers/project-analyzer");
|
|
10
|
+
/**
|
|
11
|
+
* Zone 2: Migration analysis coordinator
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Analyzes the workspace to determine what migrations are needed.
|
|
15
|
+
*/
|
|
16
|
+
function analyzeMigrationRequirements(tree) {
|
|
17
|
+
const projects = (0, devkit_1.getProjects)(tree);
|
|
18
|
+
// Check if root config needs migration
|
|
19
|
+
const needsRootConfig = determineIfRootConfigNeedsMigration(tree);
|
|
20
|
+
// Categorize all projects
|
|
21
|
+
const categorized = (0, project_analyzer_1.categorizeProjects)(tree, projects);
|
|
22
|
+
// Get workspace name
|
|
23
|
+
const workspaceName = determineWorkspaceName(tree);
|
|
24
|
+
return {
|
|
25
|
+
needsRootConfig,
|
|
26
|
+
uiProjects: categorized.uiProjects,
|
|
27
|
+
pluginProjects: categorized.pluginProjects,
|
|
28
|
+
modelProjects: categorized.modelProjects,
|
|
29
|
+
workspaceName,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.analyzeMigrationRequirements = analyzeMigrationRequirements;
|
|
33
|
+
/**
|
|
34
|
+
* Determines if root .kos.json needs development configuration.
|
|
35
|
+
*/
|
|
36
|
+
function determineIfRootConfigNeedsMigration(tree) {
|
|
37
|
+
if (!tree.exists(".kos.json")) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const rootConfig = (0, devkit_1.readJson)(tree, ".kos.json");
|
|
41
|
+
return !(0, kos_config_helpers_1.hasDevelopmentConfig)(rootConfig);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Determines workspace name from package.json or uses default.
|
|
45
|
+
*/
|
|
46
|
+
function determineWorkspaceName(tree) {
|
|
47
|
+
if (tree.exists("package.json")) {
|
|
48
|
+
const packageJson = (0, devkit_1.readJson)(tree, "package.json");
|
|
49
|
+
return packageJson.name || "kos-workspace";
|
|
50
|
+
}
|
|
51
|
+
return "kos-workspace";
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=migration-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-analyzer.js","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/coordinators/migration-analyzer.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uCAAyD;AACzD,0EAAyE;AACzE,kEAAiE;AAGjE;;GAEG;AAEH;;GAEG;AACH,SAAgB,4BAA4B,CAC1C,IAAU;IAEV,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAEnC,uCAAuC;IACvC,MAAM,eAAe,GAAG,mCAAmC,CAAC,IAAI,CAAC,CAAC;IAElE,0BAA0B;IAC1B,MAAM,WAAW,GAAG,IAAA,qCAAkB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEvD,qBAAqB;IACrB,MAAM,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAEnD,OAAO;QACL,eAAe;QACf,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,aAAa;KACd,CAAC;AACJ,CAAC;AArBD,oEAqBC;AAED;;GAEG;AACH,SAAS,mCAAmC,CAAC,IAAU;IACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAiB,IAAA,iBAAQ,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAA,yCAAoB,EAAC,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAU;IACxC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC,IAAI,IAAI,eAAe,CAAC;IAC7C,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Tree } from "@nx/devkit";
|
|
5
|
+
import type { MigrationRequirements, MigrationResults } from "../types";
|
|
6
|
+
/**
|
|
7
|
+
* Zone 2: Migration execution coordinator
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Executes all migration updates based on requirements.
|
|
11
|
+
*/
|
|
12
|
+
export declare function executeMigrationPlan(tree: Tree, requirements: MigrationRequirements): MigrationResults;
|
|
13
|
+
//# sourceMappingURL=migration-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-executor.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/coordinators/migration-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAY,IAAI,EAAc,MAAM,YAAY,CAAC;AAiBxD,OAAO,KAAK,EAGV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB;;GAEG;AAEH;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,qBAAqB,GAClC,gBAAgB,CAkDlB"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.executeMigrationPlan = void 0;
|
|
7
|
+
const devkit_1 = require("@nx/devkit");
|
|
8
|
+
const config_updater_1 = require("../helpers/config-updater");
|
|
9
|
+
const port_allocator_1 = require("../helpers/port-allocator");
|
|
10
|
+
const project_analyzer_1 = require("../helpers/project-analyzer");
|
|
11
|
+
const webpack_updater_1 = require("../helpers/webpack-updater");
|
|
12
|
+
/**
|
|
13
|
+
* Zone 2: Migration execution coordinator
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Executes all migration updates based on requirements.
|
|
17
|
+
*/
|
|
18
|
+
function executeMigrationPlan(tree, requirements) {
|
|
19
|
+
const results = {
|
|
20
|
+
rootConfigUpdated: false,
|
|
21
|
+
pluginConfigsUpdated: 0,
|
|
22
|
+
uiConfigsUpdated: 0,
|
|
23
|
+
pluginWebpackUpdated: 0,
|
|
24
|
+
uiWebpackUpdated: 0,
|
|
25
|
+
modelProjectsUpdated: 0,
|
|
26
|
+
totalChanges: 0,
|
|
27
|
+
};
|
|
28
|
+
// Step 1: Migrate root configuration
|
|
29
|
+
if (requirements.needsRootConfig) {
|
|
30
|
+
results.rootConfigUpdated = migrateRootConfiguration(tree, requirements);
|
|
31
|
+
if (results.rootConfigUpdated)
|
|
32
|
+
results.totalChanges++;
|
|
33
|
+
}
|
|
34
|
+
// Step 2: Migrate plugin .kos.json files
|
|
35
|
+
results.pluginConfigsUpdated = migratePluginConfigurations(tree, requirements.pluginProjects);
|
|
36
|
+
results.totalChanges += results.pluginConfigsUpdated;
|
|
37
|
+
// Step 3: Migrate UI .kos.json files
|
|
38
|
+
results.uiConfigsUpdated = migrateUiConfigurations(tree, requirements.uiProjects);
|
|
39
|
+
results.totalChanges += results.uiConfigsUpdated;
|
|
40
|
+
// Step 4: Migrate plugin webpack configs
|
|
41
|
+
results.pluginWebpackUpdated = migratePluginWebpackConfigs(tree, requirements.pluginProjects);
|
|
42
|
+
results.totalChanges += results.pluginWebpackUpdated;
|
|
43
|
+
// Step 5: Migrate UI webpack configs
|
|
44
|
+
results.uiWebpackUpdated = migrateUiWebpackConfigs(tree, requirements);
|
|
45
|
+
results.totalChanges += results.uiWebpackUpdated;
|
|
46
|
+
// Step 6: Migrate model project.json files
|
|
47
|
+
results.modelProjectsUpdated = migrateModelProjects(tree, requirements.modelProjects);
|
|
48
|
+
results.totalChanges += results.modelProjectsUpdated;
|
|
49
|
+
return results;
|
|
50
|
+
}
|
|
51
|
+
exports.executeMigrationPlan = executeMigrationPlan;
|
|
52
|
+
/**
|
|
53
|
+
* Migrates root .kos.json to add development configuration.
|
|
54
|
+
*/
|
|
55
|
+
function migrateRootConfiguration(tree, requirements) {
|
|
56
|
+
const rootConfig = (0, devkit_1.readJson)(tree, ".kos.json");
|
|
57
|
+
// Create host configurations
|
|
58
|
+
const hosts = createHostConfigurations(requirements.uiProjects, requirements.pluginProjects);
|
|
59
|
+
// Create port ranges
|
|
60
|
+
const portRanges = createPortRanges(hosts);
|
|
61
|
+
// Find default projects
|
|
62
|
+
const defaults = (0, project_analyzer_1.findDefaultProjects)(requirements);
|
|
63
|
+
// Update root config
|
|
64
|
+
const updatedConfig = {
|
|
65
|
+
...rootConfig,
|
|
66
|
+
type: "root",
|
|
67
|
+
generator: {
|
|
68
|
+
defaults: {
|
|
69
|
+
model: defaults.defaultModel,
|
|
70
|
+
"model-component": defaults.defaultModelComponent,
|
|
71
|
+
ui: defaults.defaultUi,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
development: {
|
|
75
|
+
hosts,
|
|
76
|
+
portRanges,
|
|
77
|
+
logDir: `/tmp/${requirements.workspaceName.replace(/^@[^/]+\//, "")}-logs`,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
(0, config_updater_1.writeJsonConfig)(tree, ".kos.json", updatedConfig);
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Creates host configurations from UI projects.
|
|
85
|
+
*/
|
|
86
|
+
function createHostConfigurations(uiProjects, pluginProjects) {
|
|
87
|
+
const hosts = uiProjects.map((ui, index) => {
|
|
88
|
+
const port = (0, port_allocator_1.calculateHostPort)(index);
|
|
89
|
+
const pluginContext = (0, project_analyzer_1.derivePluginContext)(ui);
|
|
90
|
+
const type = (0, project_analyzer_1.deriveUiType)(ui.kosJson);
|
|
91
|
+
return {
|
|
92
|
+
name: ui.name,
|
|
93
|
+
project: ui.name,
|
|
94
|
+
port,
|
|
95
|
+
type,
|
|
96
|
+
pluginContext,
|
|
97
|
+
plugins: [],
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
// Assign plugins to first available host
|
|
101
|
+
if (hosts.length > 0 && pluginProjects.length > 0) {
|
|
102
|
+
const primaryHost = hosts[0];
|
|
103
|
+
const plugins = (0, port_allocator_1.allocatePluginPorts)(primaryHost.port + 1, pluginProjects);
|
|
104
|
+
primaryHost.plugins = plugins;
|
|
105
|
+
}
|
|
106
|
+
return hosts;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Creates port range configurations for all hosts.
|
|
110
|
+
*/
|
|
111
|
+
function createPortRanges(hosts) {
|
|
112
|
+
const ranges = {};
|
|
113
|
+
hosts.forEach((host) => {
|
|
114
|
+
const maxPluginPort = (0, port_allocator_1.findMaxPluginPort)(host.port, host.plugins);
|
|
115
|
+
ranges[host.name] = (0, port_allocator_1.createPortRange)(host.port, host.plugins.length);
|
|
116
|
+
});
|
|
117
|
+
return ranges;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Migrates plugin .kos.json files.
|
|
121
|
+
*/
|
|
122
|
+
function migratePluginConfigurations(tree, pluginProjects) {
|
|
123
|
+
let updated = 0;
|
|
124
|
+
pluginProjects.forEach((plugin) => {
|
|
125
|
+
const kosJsonPath = `${plugin.root}/.kos.json`;
|
|
126
|
+
if (!tree.exists(kosJsonPath))
|
|
127
|
+
return;
|
|
128
|
+
const kosJson = (0, devkit_1.readJson)(tree, kosJsonPath);
|
|
129
|
+
if (!kosJson.test?.plugin?.context) {
|
|
130
|
+
kosJson.test = kosJson.test || {};
|
|
131
|
+
kosJson.test.plugin = kosJson.test.plugin || {};
|
|
132
|
+
// Derive context from root config or project name
|
|
133
|
+
let pluginContext = plugin.name;
|
|
134
|
+
if (tree.exists(".kos.json")) {
|
|
135
|
+
const rootConfig = (0, devkit_1.readJson)(tree, ".kos.json");
|
|
136
|
+
if (rootConfig.development?.hosts) {
|
|
137
|
+
const host = rootConfig.development.hosts.find((h) => h.plugins?.some((p) => p.project === plugin.name));
|
|
138
|
+
if (host) {
|
|
139
|
+
pluginContext = host.pluginContext;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
kosJson.test.plugin.context = pluginContext;
|
|
144
|
+
(0, config_updater_1.writeJsonConfig)(tree, kosJsonPath, kosJson);
|
|
145
|
+
updated++;
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
return updated;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Migrates UI .kos.json files.
|
|
152
|
+
*/
|
|
153
|
+
function migrateUiConfigurations(tree, uiProjects) {
|
|
154
|
+
let updated = 0;
|
|
155
|
+
uiProjects.forEach((ui) => {
|
|
156
|
+
const kosJsonPath = `${ui.root}/.kos.json`;
|
|
157
|
+
if (!tree.exists(kosJsonPath))
|
|
158
|
+
return;
|
|
159
|
+
const kosJson = (0, devkit_1.readJson)(tree, kosJsonPath);
|
|
160
|
+
if (!kosJson.test?.plugin?.context) {
|
|
161
|
+
kosJson.test = kosJson.test || {};
|
|
162
|
+
kosJson.test.plugin = kosJson.test.plugin || {};
|
|
163
|
+
kosJson.test.plugin.context = ui.name;
|
|
164
|
+
(0, config_updater_1.writeJsonConfig)(tree, kosJsonPath, kosJson);
|
|
165
|
+
updated++;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return updated;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Migrates plugin webpack configs.
|
|
172
|
+
*/
|
|
173
|
+
function migratePluginWebpackConfigs(tree, pluginProjects) {
|
|
174
|
+
let updated = 0;
|
|
175
|
+
pluginProjects.forEach((plugin) => {
|
|
176
|
+
const webpackPath = `${plugin.root}/webpack.config.ts`;
|
|
177
|
+
if (tree.exists(webpackPath)) {
|
|
178
|
+
if ((0, webpack_updater_1.updatePluginWebpackConfig)(tree, webpackPath)) {
|
|
179
|
+
updated++;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
return updated;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Migrates UI webpack configs for plugin-enabled UIs.
|
|
187
|
+
*/
|
|
188
|
+
function migrateUiWebpackConfigs(tree, requirements) {
|
|
189
|
+
let updated = 0;
|
|
190
|
+
requirements.uiProjects.forEach((ui) => {
|
|
191
|
+
// Check if this UI has plugins
|
|
192
|
+
let hasPlugins = false;
|
|
193
|
+
if (tree.exists(".kos.json")) {
|
|
194
|
+
const rootConfig = (0, devkit_1.readJson)(tree, ".kos.json");
|
|
195
|
+
if (rootConfig.development?.hosts) {
|
|
196
|
+
const host = rootConfig.development.hosts.find((h) => h.name === ui.name);
|
|
197
|
+
if (host && host.plugins?.length > 0) {
|
|
198
|
+
hasPlugins = true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (!hasPlugins)
|
|
203
|
+
return; // Skip UIs without plugins
|
|
204
|
+
const webpackPath = `${ui.root}/webpack.config.ts`;
|
|
205
|
+
if (tree.exists(webpackPath)) {
|
|
206
|
+
if ((0, webpack_updater_1.updateUiWebpackConfig)(tree, webpackPath)) {
|
|
207
|
+
updated++;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
return updated;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Migrates model project.json files to add api target.
|
|
215
|
+
*/
|
|
216
|
+
function migrateModelProjects(tree, modelProjects) {
|
|
217
|
+
let updated = 0;
|
|
218
|
+
modelProjects.forEach((model) => {
|
|
219
|
+
const projectJsonPath = `${model.root}/project.json`;
|
|
220
|
+
if (!tree.exists(projectJsonPath))
|
|
221
|
+
return;
|
|
222
|
+
(0, devkit_1.updateJson)(tree, projectJsonPath, (json) => {
|
|
223
|
+
if (!json.targets?.api) {
|
|
224
|
+
json.targets = json.targets || {};
|
|
225
|
+
json.targets.api = {
|
|
226
|
+
command: `kosui api:generate --project=${model.name}`,
|
|
227
|
+
options: {
|
|
228
|
+
host: "http://127.0.0.1:8081",
|
|
229
|
+
defaultVersion: "snapshot",
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
updated++;
|
|
233
|
+
}
|
|
234
|
+
return json;
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
return updated;
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=migration-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-executor.js","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/coordinators/migration-executor.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uCAAwD;AACxD,8DAA4D;AAC5D,8DAKmC;AACnC,kEAIqC;AACrC,gEAGoC;AAQpC;;GAEG;AAEH;;GAEG;AACH,SAAgB,oBAAoB,CAClC,IAAU,EACV,YAAmC;IAEnC,MAAM,OAAO,GAAqB;QAChC,iBAAiB,EAAE,KAAK;QACxB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,CAAC;QACnB,oBAAoB,EAAE,CAAC;QACvB,gBAAgB,EAAE,CAAC;QACnB,oBAAoB,EAAE,CAAC;QACvB,YAAY,EAAE,CAAC;KAChB,CAAC;IAEF,qCAAqC;IACrC,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;QACjC,OAAO,CAAC,iBAAiB,GAAG,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACzE,IAAI,OAAO,CAAC,iBAAiB;YAAE,OAAO,CAAC,YAAY,EAAE,CAAC;IACxD,CAAC;IAED,yCAAyC;IACzC,OAAO,CAAC,oBAAoB,GAAG,2BAA2B,CACxD,IAAI,EACJ,YAAY,CAAC,cAAc,CAC5B,CAAC;IACF,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAErD,qCAAqC;IACrC,OAAO,CAAC,gBAAgB,GAAG,uBAAuB,CAChD,IAAI,EACJ,YAAY,CAAC,UAAU,CACxB,CAAC;IACF,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAEjD,yCAAyC;IACzC,OAAO,CAAC,oBAAoB,GAAG,2BAA2B,CACxD,IAAI,EACJ,YAAY,CAAC,cAAc,CAC5B,CAAC;IACF,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAErD,qCAAqC;IACrC,OAAO,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACvE,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAEjD,2CAA2C;IAC3C,OAAO,CAAC,oBAAoB,GAAG,oBAAoB,CACjD,IAAI,EACJ,YAAY,CAAC,aAAa,CAC3B,CAAC;IACF,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAErD,OAAO,OAAO,CAAC;AACjB,CAAC;AArDD,oDAqDC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,IAAU,EACV,YAAmC;IAEnC,MAAM,UAAU,GAAiB,IAAA,iBAAQ,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE7D,6BAA6B;IAC7B,MAAM,KAAK,GAAG,wBAAwB,CACpC,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,cAAc,CAC5B,CAAC;IAEF,qBAAqB;IACrB,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE3C,wBAAwB;IACxB,MAAM,QAAQ,GAAG,IAAA,sCAAmB,EAAC,YAAY,CAAC,CAAC;IAEnD,qBAAqB;IACrB,MAAM,aAAa,GAAiB;QAClC,GAAG,UAAU;QACb,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE;YACT,QAAQ,EAAE;gBACR,KAAK,EAAE,QAAQ,CAAC,YAAY;gBAC5B,iBAAiB,EAAE,QAAQ,CAAC,qBAAqB;gBACjD,EAAE,EAAE,QAAQ,CAAC,SAAS;aACvB;SACF;QACD,WAAW,EAAE;YACX,KAAK;YACL,UAAU;YACV,MAAM,EAAE,QAAQ,YAAY,CAAC,aAAa,CAAC,OAAO,CAChD,WAAW,EACX,EAAE,CACH,OAAO;SACT;KACF,CAAC;IAEF,IAAA,gCAAe,EAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,UAA+C,EAC/C,cAAuD;IAEvD,MAAM,KAAK,GAAwB,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,IAAI,GAAG,IAAA,kCAAiB,EAAC,KAAK,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,IAAA,sCAAmB,EAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAA,+BAAY,EAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO;YACL,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,OAAO,EAAE,EAAE,CAAC,IAAI;YAChB,IAAI;YACJ,IAAI;YACJ,aAAa;YACb,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAA,oCAAmB,EAAC,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;QAC1E,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,KAA0B;IAE1B,MAAM,MAAM,GAAoD,EAAE,CAAC;IAEnE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,aAAa,GAAG,IAAA,kCAAiB,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAA,gCAAe,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAClC,IAAU,EACV,cAAuD;IAEvD,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAChC,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,IAAI,YAAY,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,OAAO;QAEtC,MAAM,OAAO,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE5C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAEhD,kDAAkD;YAClD,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAiB,IAAA,iBAAQ,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC7D,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;oBAClC,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CACxD,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CACvD,CAAC;oBACF,IAAI,IAAI,EAAE,CAAC;wBACT,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC;YAC5C,IAAA,gCAAe,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,IAAU,EACV,UAA+C;IAE/C,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACxB,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,OAAO;QAEtC,MAAM,OAAO,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE5C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;YACtC,IAAA,gCAAe,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAClC,IAAU,EACV,cAAuD;IAEvD,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAChC,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,IAAI,oBAAoB,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAA,2CAAyB,EAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;gBACjD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,IAAU,EACV,YAAmC;IAEnC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACrC,+BAA+B;QAC/B,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAiB,IAAA,iBAAQ,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC7D,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAC5C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAC/B,CAAC;gBACF,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,2BAA2B;QAEpD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAA,uCAAqB,EAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC7C,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,IAAU,EACV,aAAqD;IAErD,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,MAAM,eAAe,GAAG,GAAG,KAAK,CAAC,IAAI,eAAe,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YAAE,OAAO;QAE1C,IAAA,mBAAU,EAAC,IAAI,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG;oBACjB,OAAO,EAAE,gCAAgC,KAAK,CAAC,IAAI,EAAE;oBACrD,OAAO,EAAE;wBACP,IAAI,EAAE,uBAAuB;wBAC7B,cAAc,EAAE,UAAU;qBAC3B;iBACF,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import type { MigrationRequirements, MigrationResults } from "../types";
|
|
5
|
+
/**
|
|
6
|
+
* Zone 2: Migration reporting coordinator
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Announces the start of migration.
|
|
10
|
+
*/
|
|
11
|
+
export declare function announceMigrationStart(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Reports the completion of migration with detailed results.
|
|
14
|
+
*/
|
|
15
|
+
export declare function reportMigrationCompletion(requirements: MigrationRequirements, results: MigrationResults): void;
|
|
16
|
+
//# sourceMappingURL=migration-reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-reporter.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/coordinators/migration-reporter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAExE;;GAEG;AAEH;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,GACxB,IAAI,CA+CN"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.reportMigrationCompletion = exports.announceMigrationStart = void 0;
|
|
7
|
+
const devkit_1 = require("@nx/devkit");
|
|
8
|
+
/**
|
|
9
|
+
* Zone 2: Migration reporting coordinator
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Announces the start of migration.
|
|
13
|
+
*/
|
|
14
|
+
function announceMigrationStart() {
|
|
15
|
+
devkit_1.logger.info("Running dev-server-support migration...");
|
|
16
|
+
}
|
|
17
|
+
exports.announceMigrationStart = announceMigrationStart;
|
|
18
|
+
/**
|
|
19
|
+
* Reports the completion of migration with detailed results.
|
|
20
|
+
*/
|
|
21
|
+
function reportMigrationCompletion(requirements, results) {
|
|
22
|
+
if (results.totalChanges === 0) {
|
|
23
|
+
devkit_1.logger.info("No migrations needed - workspace already up to date.");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (results.rootConfigUpdated) {
|
|
27
|
+
const hostCount = requirements.uiProjects.length;
|
|
28
|
+
const pluginCount = requirements.pluginProjects.length;
|
|
29
|
+
devkit_1.logger.info(`✓ Added development configuration with ${hostCount} host(s) and ${pluginCount} plugin(s)`);
|
|
30
|
+
}
|
|
31
|
+
if (results.pluginConfigsUpdated > 0) {
|
|
32
|
+
devkit_1.logger.info(`✓ Updated ${results.pluginConfigsUpdated} plugin .kos.json file(s) with test.plugin.context`);
|
|
33
|
+
}
|
|
34
|
+
if (results.uiConfigsUpdated > 0) {
|
|
35
|
+
devkit_1.logger.info(`✓ Updated ${results.uiConfigsUpdated} UI .kos.json file(s) with test.plugin.context`);
|
|
36
|
+
}
|
|
37
|
+
if (results.pluginWebpackUpdated > 0) {
|
|
38
|
+
devkit_1.logger.info(`✓ Updated ${results.pluginWebpackUpdated} plugin webpack.config.ts file(s) with dev server support`);
|
|
39
|
+
}
|
|
40
|
+
if (results.uiWebpackUpdated > 0) {
|
|
41
|
+
devkit_1.logger.info(`✓ Updated ${results.uiWebpackUpdated} UI webpack.config.ts file(s) with plugin dev aggregator`);
|
|
42
|
+
}
|
|
43
|
+
if (results.modelProjectsUpdated > 0) {
|
|
44
|
+
devkit_1.logger.info(`✓ Added api target to ${results.modelProjectsUpdated} model project.json file(s)`);
|
|
45
|
+
}
|
|
46
|
+
devkit_1.logger.info(`✅ Dev server support migration completed. Updated ${results.totalChanges} file(s).`);
|
|
47
|
+
}
|
|
48
|
+
exports.reportMigrationCompletion = reportMigrationCompletion;
|
|
49
|
+
//# sourceMappingURL=migration-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-reporter.js","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/coordinators/migration-reporter.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uCAAoC;AAGpC;;GAEG;AAEH;;GAEG;AACH,SAAgB,sBAAsB;IACpC,eAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC;AAFD,wDAEC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CACvC,YAAmC,EACnC,OAAyB;IAEzB,IAAI,OAAO,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC/B,eAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;QACjD,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC;QACvD,eAAM,CAAC,IAAI,CACT,0CAA0C,SAAS,gBAAgB,WAAW,YAAY,CAC3F,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;QACrC,eAAM,CAAC,IAAI,CACT,aAAa,OAAO,CAAC,oBAAoB,oDAAoD,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACjC,eAAM,CAAC,IAAI,CACT,aAAa,OAAO,CAAC,gBAAgB,gDAAgD,CACtF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;QACrC,eAAM,CAAC,IAAI,CACT,aAAa,OAAO,CAAC,oBAAoB,2DAA2D,CACrG,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACjC,eAAM,CAAC,IAAI,CACT,aAAa,OAAO,CAAC,gBAAgB,0DAA0D,CAChG,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;QACrC,eAAM,CAAC,IAAI,CACT,yBAAyB,OAAO,CAAC,oBAAoB,6BAA6B,CACnF,CAAC;IACJ,CAAC;IAED,eAAM,CAAC,IAAI,CACT,qDAAqD,OAAO,CAAC,YAAY,WAAW,CACrF,CAAC;AACJ,CAAC;AAlDD,8DAkDC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Tree } from "@nx/devkit";
|
|
5
|
+
/**
|
|
6
|
+
* Zone 3: Configuration file update utilities
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Writes a JSON configuration file with consistent formatting.
|
|
10
|
+
*/
|
|
11
|
+
export declare function writeJsonConfig(tree: Tree, path: string, content: object): void;
|
|
12
|
+
/**
|
|
13
|
+
* Reads and parses a JSON file, returning null if file doesn't exist.
|
|
14
|
+
*/
|
|
15
|
+
export declare function readJsonConfigSafe<T>(tree: Tree, path: string): T | null;
|
|
16
|
+
/**
|
|
17
|
+
* Checks if a .kos.json file exists for a project.
|
|
18
|
+
*/
|
|
19
|
+
export declare function hasKosConfig(tree: Tree, projectRoot: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Updates a text file with string replacement.
|
|
22
|
+
*/
|
|
23
|
+
export declare function updateTextFile(tree: Tree, path: string, oldString: string, newString: string): boolean;
|
|
24
|
+
//# sourceMappingURL=config-updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-updater.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/helpers/config-updater.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;GAEG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAWxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAaT"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updateTextFile = exports.hasKosConfig = exports.readJsonConfigSafe = exports.writeJsonConfig = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Zone 3: Configuration file update utilities
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Writes a JSON configuration file with consistent formatting.
|
|
12
|
+
*/
|
|
13
|
+
function writeJsonConfig(tree, path, content) {
|
|
14
|
+
tree.write(path, JSON.stringify(content, null, 2) + "\n");
|
|
15
|
+
}
|
|
16
|
+
exports.writeJsonConfig = writeJsonConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Reads and parses a JSON file, returning null if file doesn't exist.
|
|
19
|
+
*/
|
|
20
|
+
function readJsonConfigSafe(tree, path) {
|
|
21
|
+
if (!tree.exists(path)) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const content = tree.read(path, "utf-8");
|
|
25
|
+
if (!content) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return JSON.parse(content);
|
|
29
|
+
}
|
|
30
|
+
exports.readJsonConfigSafe = readJsonConfigSafe;
|
|
31
|
+
/**
|
|
32
|
+
* Checks if a .kos.json file exists for a project.
|
|
33
|
+
*/
|
|
34
|
+
function hasKosConfig(tree, projectRoot) {
|
|
35
|
+
return tree.exists(`${projectRoot}/.kos.json`);
|
|
36
|
+
}
|
|
37
|
+
exports.hasKosConfig = hasKosConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Updates a text file with string replacement.
|
|
40
|
+
*/
|
|
41
|
+
function updateTextFile(tree, path, oldString, newString) {
|
|
42
|
+
const content = tree.read(path, "utf-8");
|
|
43
|
+
if (!content) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (!content.includes(oldString)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const updated = content.replace(oldString, newString);
|
|
50
|
+
tree.write(path, updated);
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
exports.updateTextFile = updateTextFile;
|
|
54
|
+
//# sourceMappingURL=config-updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-updater.js","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/helpers/config-updater.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIH;;GAEG;AAEH;;GAEG;AACH,SAAgB,eAAe,CAC7B,IAAU,EACV,IAAY,EACZ,OAAe;IAEf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5D,CAAC;AAND,0CAMC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAI,IAAU,EAAE,IAAY;IAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC;AAXD,gDAWC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAU,EAAE,WAAmB;IAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,YAAY,CAAC,CAAC;AACjD,CAAC;AAFD,oCAEC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,IAAU,EACV,IAAY,EACZ,SAAiB,EACjB,SAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAlBD,wCAkBC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Zone 3: Port allocation utilities
|
|
6
|
+
*/
|
|
7
|
+
export interface PortRange {
|
|
8
|
+
start: number;
|
|
9
|
+
next: number;
|
|
10
|
+
}
|
|
11
|
+
export interface PluginPortAssignment {
|
|
12
|
+
project: string;
|
|
13
|
+
port: number;
|
|
14
|
+
alias: string;
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Calculates the starting port for a host based on index.
|
|
19
|
+
*/
|
|
20
|
+
export declare function calculateHostPort(hostIndex: number): number;
|
|
21
|
+
/**
|
|
22
|
+
* Allocates sequential ports for plugins.
|
|
23
|
+
*/
|
|
24
|
+
export declare function allocatePluginPorts(startPort: number, pluginProjects: Array<{
|
|
25
|
+
name: string;
|
|
26
|
+
}>): PluginPortAssignment[];
|
|
27
|
+
/**
|
|
28
|
+
* Creates a port range configuration for a host.
|
|
29
|
+
*/
|
|
30
|
+
export declare function createPortRange(startPort: number, pluginCount: number): PortRange;
|
|
31
|
+
/**
|
|
32
|
+
* Finds the maximum plugin port for a host configuration.
|
|
33
|
+
*/
|
|
34
|
+
export declare function findMaxPluginPort(hostPort: number, plugins: Array<{
|
|
35
|
+
port: number;
|
|
36
|
+
}>): number;
|
|
37
|
+
//# sourceMappingURL=port-allocator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port-allocator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/helpers/port-allocator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACtC,oBAAoB,EAAE,CAcxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,SAAS,CAKX;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/B,MAAM,CAER"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.findMaxPluginPort = exports.createPortRange = exports.allocatePluginPorts = exports.calculateHostPort = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Calculates the starting port for a host based on index.
|
|
9
|
+
*/
|
|
10
|
+
function calculateHostPort(hostIndex) {
|
|
11
|
+
return 4200 + hostIndex * 100;
|
|
12
|
+
}
|
|
13
|
+
exports.calculateHostPort = calculateHostPort;
|
|
14
|
+
/**
|
|
15
|
+
* Allocates sequential ports for plugins.
|
|
16
|
+
*/
|
|
17
|
+
function allocatePluginPorts(startPort, pluginProjects) {
|
|
18
|
+
let currentPort = startPort;
|
|
19
|
+
return pluginProjects.map((plugin) => {
|
|
20
|
+
const pluginAlias = plugin.name.replace(/-plugin$/, "");
|
|
21
|
+
const assignment = {
|
|
22
|
+
project: plugin.name,
|
|
23
|
+
port: currentPort,
|
|
24
|
+
alias: pluginAlias,
|
|
25
|
+
enabled: true,
|
|
26
|
+
};
|
|
27
|
+
currentPort++;
|
|
28
|
+
return assignment;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
exports.allocatePluginPorts = allocatePluginPorts;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a port range configuration for a host.
|
|
34
|
+
*/
|
|
35
|
+
function createPortRange(startPort, pluginCount) {
|
|
36
|
+
return {
|
|
37
|
+
start: startPort,
|
|
38
|
+
next: startPort + pluginCount + 1,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
exports.createPortRange = createPortRange;
|
|
42
|
+
/**
|
|
43
|
+
* Finds the maximum plugin port for a host configuration.
|
|
44
|
+
*/
|
|
45
|
+
function findMaxPluginPort(hostPort, plugins) {
|
|
46
|
+
return plugins.reduce((max, plugin) => Math.max(max, plugin.port), hostPort);
|
|
47
|
+
}
|
|
48
|
+
exports.findMaxPluginPort = findMaxPluginPort;
|
|
49
|
+
//# sourceMappingURL=port-allocator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port-allocator.js","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/helpers/port-allocator.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAkBH;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,OAAO,IAAI,GAAG,SAAS,GAAG,GAAG,CAAC;AAChC,CAAC;AAFD,8CAEC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,SAAiB,EACjB,cAAuC;IAEvC,IAAI,WAAW,GAAG,SAAS,CAAC;IAE5B,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACnC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG;YACjB,OAAO,EAAE,MAAM,CAAC,IAAI;YACpB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,IAAI;SACd,CAAC;QACF,WAAW,EAAE,CAAC;QACd,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAjBD,kDAiBC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,SAAiB,EACjB,WAAmB;IAEnB,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,CAAC;KAClC,CAAC;AACJ,CAAC;AARD,0CAQC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,QAAgB,EAChB,OAAgC;IAEhC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/E,CAAC;AALD,8CAKC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { ProjectConfiguration, Tree } from "@nx/devkit";
|
|
5
|
+
/**
|
|
6
|
+
* Zone 3: Project analysis utilities
|
|
7
|
+
*/
|
|
8
|
+
export interface KosJson {
|
|
9
|
+
name?: string;
|
|
10
|
+
type?: string;
|
|
11
|
+
version?: string;
|
|
12
|
+
generator?: {
|
|
13
|
+
projectType?: string;
|
|
14
|
+
defaults?: any;
|
|
15
|
+
};
|
|
16
|
+
test?: {
|
|
17
|
+
plugin?: {
|
|
18
|
+
context?: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
development?: any;
|
|
22
|
+
kosdev?: any;
|
|
23
|
+
kos?: any;
|
|
24
|
+
models?: any;
|
|
25
|
+
}
|
|
26
|
+
export interface ProjectInfo {
|
|
27
|
+
name: string;
|
|
28
|
+
root: string;
|
|
29
|
+
kosJson: KosJson | null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Checks if a project is a UI project.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isUiProject(kosJson: KosJson | null): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Checks if a project is a plugin project.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isPluginProject(kosJson: KosJson | null): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Checks if a project is a model project.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isModelProject(kosJson: KosJson | null): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Reads project's .kos.json file.
|
|
45
|
+
*/
|
|
46
|
+
export declare function readProjectKosJson(tree: Tree, projectRoot: string): KosJson | null;
|
|
47
|
+
/**
|
|
48
|
+
* Categorizes projects by type.
|
|
49
|
+
*/
|
|
50
|
+
export declare function categorizeProjects(tree: Tree, projects: Map<string, ProjectConfiguration>): {
|
|
51
|
+
uiProjects: ProjectInfo[];
|
|
52
|
+
pluginProjects: ProjectInfo[];
|
|
53
|
+
modelProjects: ProjectInfo[];
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Determines the plugin context for a UI project.
|
|
57
|
+
*/
|
|
58
|
+
export declare function derivePluginContext(projectInfo: ProjectInfo): string;
|
|
59
|
+
/**
|
|
60
|
+
* Determines the UI type for a host configuration.
|
|
61
|
+
*/
|
|
62
|
+
export declare function deriveUiType(kosJson: KosJson | null): string;
|
|
63
|
+
/**
|
|
64
|
+
* Finds the first available default project of each type.
|
|
65
|
+
*/
|
|
66
|
+
export declare function findDefaultProjects(categorized: {
|
|
67
|
+
uiProjects: ProjectInfo[];
|
|
68
|
+
modelProjects: ProjectInfo[];
|
|
69
|
+
}): {
|
|
70
|
+
defaultModel: string;
|
|
71
|
+
defaultModelComponent: string;
|
|
72
|
+
defaultUi: string;
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=project-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-analyzer.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/helpers/project-analyzer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGxD;;GAEG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE;QACV,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE;YACP,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;IACF,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAO5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAMhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAK/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,OAAO,GAAG,IAAI,CAEhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAC1C;IACD,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,aAAa,EAAE,WAAW,EAAE,CAAC;CAC9B,CAwBA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAKpE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE;IAC/C,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,aAAa,EAAE,WAAW,EAAE,CAAC;CAC9B,GAAG;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,CAeA"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.findDefaultProjects = exports.deriveUiType = exports.derivePluginContext = exports.categorizeProjects = exports.readProjectKosJson = exports.isModelProject = exports.isPluginProject = exports.isUiProject = void 0;
|
|
7
|
+
const config_updater_1 = require("./config-updater");
|
|
8
|
+
/**
|
|
9
|
+
* Checks if a project is a UI project.
|
|
10
|
+
*/
|
|
11
|
+
function isUiProject(kosJson) {
|
|
12
|
+
if (!kosJson)
|
|
13
|
+
return false;
|
|
14
|
+
return (kosJson.type === "kos.ui" ||
|
|
15
|
+
kosJson.type?.includes("ui") ||
|
|
16
|
+
kosJson.generator?.projectType === "ui");
|
|
17
|
+
}
|
|
18
|
+
exports.isUiProject = isUiProject;
|
|
19
|
+
/**
|
|
20
|
+
* Checks if a project is a plugin project.
|
|
21
|
+
*/
|
|
22
|
+
function isPluginProject(kosJson) {
|
|
23
|
+
if (!kosJson)
|
|
24
|
+
return false;
|
|
25
|
+
return (kosJson.type === "ddk.ncui.plugin" ||
|
|
26
|
+
kosJson.generator?.projectType === "plugin");
|
|
27
|
+
}
|
|
28
|
+
exports.isPluginProject = isPluginProject;
|
|
29
|
+
/**
|
|
30
|
+
* Checks if a project is a model project.
|
|
31
|
+
*/
|
|
32
|
+
function isModelProject(kosJson) {
|
|
33
|
+
if (!kosJson)
|
|
34
|
+
return false;
|
|
35
|
+
return (kosJson.type === "kos.model" || kosJson.generator?.projectType === "model");
|
|
36
|
+
}
|
|
37
|
+
exports.isModelProject = isModelProject;
|
|
38
|
+
/**
|
|
39
|
+
* Reads project's .kos.json file.
|
|
40
|
+
*/
|
|
41
|
+
function readProjectKosJson(tree, projectRoot) {
|
|
42
|
+
return (0, config_updater_1.readJsonConfigSafe)(tree, `${projectRoot}/.kos.json`);
|
|
43
|
+
}
|
|
44
|
+
exports.readProjectKosJson = readProjectKosJson;
|
|
45
|
+
/**
|
|
46
|
+
* Categorizes projects by type.
|
|
47
|
+
*/
|
|
48
|
+
function categorizeProjects(tree, projects) {
|
|
49
|
+
const uiProjects = [];
|
|
50
|
+
const pluginProjects = [];
|
|
51
|
+
const modelProjects = [];
|
|
52
|
+
projects.forEach((project, projectName) => {
|
|
53
|
+
const kosJson = readProjectKosJson(tree, project.root);
|
|
54
|
+
const projectInfo = {
|
|
55
|
+
name: projectName,
|
|
56
|
+
root: project.root,
|
|
57
|
+
kosJson,
|
|
58
|
+
};
|
|
59
|
+
if (isUiProject(kosJson)) {
|
|
60
|
+
uiProjects.push(projectInfo);
|
|
61
|
+
}
|
|
62
|
+
else if (isPluginProject(kosJson)) {
|
|
63
|
+
pluginProjects.push(projectInfo);
|
|
64
|
+
}
|
|
65
|
+
else if (isModelProject(kosJson)) {
|
|
66
|
+
modelProjects.push(projectInfo);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return { uiProjects, pluginProjects, modelProjects };
|
|
70
|
+
}
|
|
71
|
+
exports.categorizeProjects = categorizeProjects;
|
|
72
|
+
/**
|
|
73
|
+
* Determines the plugin context for a UI project.
|
|
74
|
+
*/
|
|
75
|
+
function derivePluginContext(projectInfo) {
|
|
76
|
+
if (projectInfo.kosJson?.test?.plugin?.context) {
|
|
77
|
+
return projectInfo.kosJson.test.plugin.context;
|
|
78
|
+
}
|
|
79
|
+
return projectInfo.name;
|
|
80
|
+
}
|
|
81
|
+
exports.derivePluginContext = derivePluginContext;
|
|
82
|
+
/**
|
|
83
|
+
* Determines the UI type for a host configuration.
|
|
84
|
+
*/
|
|
85
|
+
function deriveUiType(kosJson) {
|
|
86
|
+
if (!kosJson)
|
|
87
|
+
return "cui";
|
|
88
|
+
if (kosJson.type?.includes("ncui")) {
|
|
89
|
+
return "ncui";
|
|
90
|
+
}
|
|
91
|
+
else if (kosJson.type?.includes("admin")) {
|
|
92
|
+
return "admin";
|
|
93
|
+
}
|
|
94
|
+
return "cui";
|
|
95
|
+
}
|
|
96
|
+
exports.deriveUiType = deriveUiType;
|
|
97
|
+
/**
|
|
98
|
+
* Finds the first available default project of each type.
|
|
99
|
+
*/
|
|
100
|
+
function findDefaultProjects(categorized) {
|
|
101
|
+
const defaultModel = categorized.modelProjects.find((p) => p.kosJson?.type === "kos.model")
|
|
102
|
+
?.name || "";
|
|
103
|
+
const defaultModelComponent = categorized.modelProjects.find((p) => p.kosJson?.type === "kos.model-component")?.name || "";
|
|
104
|
+
const defaultUi = categorized.uiProjects.find((p) => p.kosJson?.type === "kos.ui")?.name ||
|
|
105
|
+
"";
|
|
106
|
+
return { defaultModel, defaultModelComponent, defaultUi };
|
|
107
|
+
}
|
|
108
|
+
exports.findDefaultProjects = findDefaultProjects;
|
|
109
|
+
//# sourceMappingURL=project-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-analyzer.js","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/helpers/project-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Tree } from "@nx/devkit";
|
|
5
|
+
/**
|
|
6
|
+
* Zone 3: Webpack configuration update utilities
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Checks if webpack config already has plugin dev server support.
|
|
10
|
+
*/
|
|
11
|
+
export declare function hasPluginDevServer(webpackContent: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Checks if webpack config already has plugin dev aggregator support.
|
|
14
|
+
*/
|
|
15
|
+
export declare function hasPluginDevAggregator(webpackContent: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Adds plugin dev server imports to webpack config.
|
|
18
|
+
*/
|
|
19
|
+
export declare function addPluginDevServerImports(webpackContent: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Adds plugin dev server to webpack composition.
|
|
22
|
+
*/
|
|
23
|
+
export declare function addPluginDevServerComposition(webpackContent: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Adds plugin dev aggregator import to UI webpack config.
|
|
26
|
+
*/
|
|
27
|
+
export declare function addPluginAggregatorImport(webpackContent: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Adds plugin dev configuration section to UI webpack config.
|
|
30
|
+
*/
|
|
31
|
+
export declare function addPluginDevConfiguration(webpackContent: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Adds plugin dev aggregator to webpack composition.
|
|
34
|
+
*/
|
|
35
|
+
export declare function addPluginAggregatorComposition(webpackContent: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Adds USE_LOCAL_PLUGINS to environment plugin.
|
|
38
|
+
*/
|
|
39
|
+
export declare function addUseLocalPluginsEnv(webpackContent: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Updates plugin webpack configuration file.
|
|
42
|
+
*/
|
|
43
|
+
export declare function updatePluginWebpackConfig(tree: Tree, webpackPath: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Updates UI webpack configuration file for plugin support.
|
|
46
|
+
*/
|
|
47
|
+
export declare function updateUiWebpackConfig(tree: Tree, webpackPath: string): boolean;
|
|
48
|
+
//# sourceMappingURL=webpack-updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack-updater.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/helpers/webpack-updater.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAElE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAa5E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CA2BxE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAe7E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,OAAO,CAeT;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,OAAO,CAiBT"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updateUiWebpackConfig = exports.updatePluginWebpackConfig = exports.addUseLocalPluginsEnv = exports.addPluginAggregatorComposition = exports.addPluginDevConfiguration = exports.addPluginAggregatorImport = exports.addPluginDevServerComposition = exports.addPluginDevServerImports = exports.hasPluginDevAggregator = exports.hasPluginDevServer = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Zone 3: Webpack configuration update utilities
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Checks if webpack config already has plugin dev server support.
|
|
12
|
+
*/
|
|
13
|
+
function hasPluginDevServer(webpackContent) {
|
|
14
|
+
return webpackContent.includes("withPluginDevServer");
|
|
15
|
+
}
|
|
16
|
+
exports.hasPluginDevServer = hasPluginDevServer;
|
|
17
|
+
/**
|
|
18
|
+
* Checks if webpack config already has plugin dev aggregator support.
|
|
19
|
+
*/
|
|
20
|
+
function hasPluginDevAggregator(webpackContent) {
|
|
21
|
+
return webpackContent.includes("withPluginDevAggregator");
|
|
22
|
+
}
|
|
23
|
+
exports.hasPluginDevAggregator = hasPluginDevAggregator;
|
|
24
|
+
/**
|
|
25
|
+
* Adds plugin dev server imports to webpack config.
|
|
26
|
+
*/
|
|
27
|
+
function addPluginDevServerImports(webpackContent) {
|
|
28
|
+
return webpackContent.replace(/import { generatePluginConfiguration } from "@kosdev-code\/kos-ui-plugin\/utilities";/, `import { generatePluginConfiguration } from "@kosdev-code/kos-ui-plugin/utilities";
|
|
29
|
+
import { withKosConfig, withPluginDevServer } from "@kosdev-code/kos-ui-plugin/webpack";`);
|
|
30
|
+
}
|
|
31
|
+
exports.addPluginDevServerImports = addPluginDevServerImports;
|
|
32
|
+
/**
|
|
33
|
+
* Adds plugin dev server to webpack composition.
|
|
34
|
+
*/
|
|
35
|
+
function addPluginDevServerComposition(webpackContent) {
|
|
36
|
+
return webpackContent.replace(/export default composePlugins\(\s*withNx\(\),\s*withReact\(\{\}\),\s*withModuleFederation\(config\)\s*\);/, `export default composePlugins(
|
|
37
|
+
withNx(),
|
|
38
|
+
withReact({}),
|
|
39
|
+
withModuleFederation(config),
|
|
40
|
+
withKosConfig(webpack),
|
|
41
|
+
withPluginDevServer({
|
|
42
|
+
verbose: process.env.VERBOSE_PLUGIN_DEV === 'true'
|
|
43
|
+
})
|
|
44
|
+
);`);
|
|
45
|
+
}
|
|
46
|
+
exports.addPluginDevServerComposition = addPluginDevServerComposition;
|
|
47
|
+
/**
|
|
48
|
+
* Adds plugin dev aggregator import to UI webpack config.
|
|
49
|
+
*/
|
|
50
|
+
function addPluginAggregatorImport(webpackContent) {
|
|
51
|
+
return webpackContent.replace(/import { merge } from 'webpack-merge';/, `import { merge } from 'webpack-merge';
|
|
52
|
+
import { withPluginDevAggregator } from '@kosdev-code/kos-ui-plugin/webpack';`);
|
|
53
|
+
}
|
|
54
|
+
exports.addPluginAggregatorImport = addPluginAggregatorImport;
|
|
55
|
+
/**
|
|
56
|
+
* Adds plugin dev configuration section to UI webpack config.
|
|
57
|
+
*/
|
|
58
|
+
function addPluginDevConfiguration(webpackContent) {
|
|
59
|
+
const pluginDevConfig = `
|
|
60
|
+
// Configure plugin dev servers based on environment variables
|
|
61
|
+
// These are set automatically by \`kosui dev\` command
|
|
62
|
+
const useLocalPlugins = process.env.USE_LOCAL_PLUGINS === 'true';
|
|
63
|
+
const mergeWithBackend = process.env.MERGE_WITH_BACKEND === 'true';
|
|
64
|
+
|
|
65
|
+
// Plugin dev servers are configured via environment variables
|
|
66
|
+
// Format: <PLUGIN_ALIAS>_DEV=true where alias is from .kos.json
|
|
67
|
+
// Example: BEVERAGE_POUR_DEV=true
|
|
68
|
+
const pluginServers = Object.keys(process.env)
|
|
69
|
+
.filter(key => key.endsWith('_DEV') && process.env[key] === 'true')
|
|
70
|
+
.map(key => {
|
|
71
|
+
// Extract plugin alias from env var (e.g., BEVERAGE_POUR_DEV -> beverage-pour)
|
|
72
|
+
const alias = key.replace(/_DEV$/, '').toLowerCase().replace(/_/g, '-');
|
|
73
|
+
// Port is set via <PLUGIN_ALIAS>_PORT env var
|
|
74
|
+
const portKey = key.replace(/_DEV$/, '_PORT');
|
|
75
|
+
const port = process.env[portKey] || '4201';
|
|
76
|
+
return \`http://localhost:\${port}\`;
|
|
77
|
+
});
|
|
78
|
+
`;
|
|
79
|
+
return webpackContent.replace(/\/\/ Nx plugins for webpack to build config object from Nx options and context\./, `${pluginDevConfig}
|
|
80
|
+
// Nx plugins for webpack to build config object from Nx options and context.`);
|
|
81
|
+
}
|
|
82
|
+
exports.addPluginDevConfiguration = addPluginDevConfiguration;
|
|
83
|
+
/**
|
|
84
|
+
* Adds plugin dev aggregator to webpack composition.
|
|
85
|
+
*/
|
|
86
|
+
function addPluginAggregatorComposition(webpackContent) {
|
|
87
|
+
return webpackContent.replace(/withModuleFederation\(config\),/, `withModuleFederation(config),
|
|
88
|
+
// Add plugin dev aggregator for multi-plugin development
|
|
89
|
+
useLocalPlugins
|
|
90
|
+
? withPluginDevAggregator({
|
|
91
|
+
pluginServers,
|
|
92
|
+
mergeWithBackend,
|
|
93
|
+
fallbackToBackend: pluginServers.length === 0,
|
|
94
|
+
backendUrl: 'http://localhost:8081',
|
|
95
|
+
verbose: process.env.VERBOSE_PLUGIN_DEV === 'true',
|
|
96
|
+
})
|
|
97
|
+
: (config) => config,`);
|
|
98
|
+
}
|
|
99
|
+
exports.addPluginAggregatorComposition = addPluginAggregatorComposition;
|
|
100
|
+
/**
|
|
101
|
+
* Adds USE_LOCAL_PLUGINS to environment plugin.
|
|
102
|
+
*/
|
|
103
|
+
function addUseLocalPluginsEnv(webpackContent) {
|
|
104
|
+
return webpackContent.replace(/new webpack\.EnvironmentPlugin\(\{/, `new webpack.EnvironmentPlugin({
|
|
105
|
+
USE_LOCAL_PLUGINS: 'false', // Default to false, set to 'true' in dev mode`);
|
|
106
|
+
}
|
|
107
|
+
exports.addUseLocalPluginsEnv = addUseLocalPluginsEnv;
|
|
108
|
+
/**
|
|
109
|
+
* Updates plugin webpack configuration file.
|
|
110
|
+
*/
|
|
111
|
+
function updatePluginWebpackConfig(tree, webpackPath) {
|
|
112
|
+
let content = tree.read(webpackPath, "utf-8");
|
|
113
|
+
if (!content) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
if (hasPluginDevServer(content)) {
|
|
117
|
+
return false; // Already migrated
|
|
118
|
+
}
|
|
119
|
+
content = addPluginDevServerImports(content);
|
|
120
|
+
content = addPluginDevServerComposition(content);
|
|
121
|
+
tree.write(webpackPath, content);
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
exports.updatePluginWebpackConfig = updatePluginWebpackConfig;
|
|
125
|
+
/**
|
|
126
|
+
* Updates UI webpack configuration file for plugin support.
|
|
127
|
+
*/
|
|
128
|
+
function updateUiWebpackConfig(tree, webpackPath) {
|
|
129
|
+
let content = tree.read(webpackPath, "utf-8");
|
|
130
|
+
if (!content) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
if (hasPluginDevAggregator(content)) {
|
|
134
|
+
return false; // Already migrated
|
|
135
|
+
}
|
|
136
|
+
content = addPluginAggregatorImport(content);
|
|
137
|
+
content = addPluginDevConfiguration(content);
|
|
138
|
+
content = addPluginAggregatorComposition(content);
|
|
139
|
+
content = addUseLocalPluginsEnv(content);
|
|
140
|
+
tree.write(webpackPath, content);
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
exports.updateUiWebpackConfig = updateUiWebpackConfig;
|
|
144
|
+
//# sourceMappingURL=webpack-updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack-updater.js","sourceRoot":"","sources":["../../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/helpers/webpack-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Tree } from "@nx/devkit";
|
|
5
|
+
/**
|
|
6
|
+
* Automatic migration to add dev server support to existing KOS workspaces.
|
|
7
|
+
*
|
|
8
|
+
* This migration runs automatically when users upgrade to
|
|
9
|
+
* @kosdev-code/kos-nx-plugin@2.1.28+ via `nx migrate`.
|
|
10
|
+
*
|
|
11
|
+
* ## What This Migration Does
|
|
12
|
+
*
|
|
13
|
+
* 1. **Root .kos.json** - Adds development configuration with auto-detected hosts/plugins
|
|
14
|
+
* 2. **Plugin .kos.json** - Adds test.plugin.context for plugin testing
|
|
15
|
+
* 3. **Plugin webpack** - Adds withKosConfig and withPluginDevServer
|
|
16
|
+
* 4. **UI webpack** - Adds withPluginDevAggregator for plugin-enabled UIs
|
|
17
|
+
* 5. **Model project.json** - Adds api target for kosui api:generate
|
|
18
|
+
*
|
|
19
|
+
* ## Migration Safety
|
|
20
|
+
*
|
|
21
|
+
* - Idempotent: Can run multiple times safely
|
|
22
|
+
* - Non-destructive: Preserves existing configurations
|
|
23
|
+
* - Checks before modifying files
|
|
24
|
+
* - Reports all changes via logger
|
|
25
|
+
*
|
|
26
|
+
* ## Post-Migration Verification
|
|
27
|
+
*
|
|
28
|
+
* After migration completes, users should:
|
|
29
|
+
* 1. Review `.kos.json` development configuration
|
|
30
|
+
* 2. Verify port assignments match existing setup
|
|
31
|
+
* 3. Test `npm run dev` or `kosui dev` command
|
|
32
|
+
* 4. Check that all expected plugins are registered
|
|
33
|
+
*
|
|
34
|
+
* ## Troubleshooting
|
|
35
|
+
*
|
|
36
|
+
* If migration causes issues:
|
|
37
|
+
* - Check migration output for any errors or warnings
|
|
38
|
+
* - Verify Nx workspace structure is valid
|
|
39
|
+
* - Confirm all projects have .kos.json files
|
|
40
|
+
* - Review generated .kos.json against workspace structure
|
|
41
|
+
*
|
|
42
|
+
* @param tree - Nx virtual file system tree
|
|
43
|
+
* @returns Promise that resolves when migration completes
|
|
44
|
+
*
|
|
45
|
+
* @category Migrations
|
|
46
|
+
* @version 2.1.28
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* // Migration runs automatically via nx migrate
|
|
51
|
+
* // Users execute:
|
|
52
|
+
* // $ nx migrate @kosdev-code/kos-nx-plugin@latest
|
|
53
|
+
* // $ nx migrate --run-migrations
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export default function migrate(tree: Tree): Promise<void>;
|
|
57
|
+
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/migrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAQlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAA8B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const migration_analyzer_1 = require("./coordinators/migration-analyzer");
|
|
7
|
+
const migration_executor_1 = require("./coordinators/migration-executor");
|
|
8
|
+
const migration_reporter_1 = require("./coordinators/migration-reporter");
|
|
9
|
+
/**
|
|
10
|
+
* Automatic migration to add dev server support to existing KOS workspaces.
|
|
11
|
+
*
|
|
12
|
+
* This migration runs automatically when users upgrade to
|
|
13
|
+
* @kosdev-code/kos-nx-plugin@2.1.28+ via `nx migrate`.
|
|
14
|
+
*
|
|
15
|
+
* ## What This Migration Does
|
|
16
|
+
*
|
|
17
|
+
* 1. **Root .kos.json** - Adds development configuration with auto-detected hosts/plugins
|
|
18
|
+
* 2. **Plugin .kos.json** - Adds test.plugin.context for plugin testing
|
|
19
|
+
* 3. **Plugin webpack** - Adds withKosConfig and withPluginDevServer
|
|
20
|
+
* 4. **UI webpack** - Adds withPluginDevAggregator for plugin-enabled UIs
|
|
21
|
+
* 5. **Model project.json** - Adds api target for kosui api:generate
|
|
22
|
+
*
|
|
23
|
+
* ## Migration Safety
|
|
24
|
+
*
|
|
25
|
+
* - Idempotent: Can run multiple times safely
|
|
26
|
+
* - Non-destructive: Preserves existing configurations
|
|
27
|
+
* - Checks before modifying files
|
|
28
|
+
* - Reports all changes via logger
|
|
29
|
+
*
|
|
30
|
+
* ## Post-Migration Verification
|
|
31
|
+
*
|
|
32
|
+
* After migration completes, users should:
|
|
33
|
+
* 1. Review `.kos.json` development configuration
|
|
34
|
+
* 2. Verify port assignments match existing setup
|
|
35
|
+
* 3. Test `npm run dev` or `kosui dev` command
|
|
36
|
+
* 4. Check that all expected plugins are registered
|
|
37
|
+
*
|
|
38
|
+
* ## Troubleshooting
|
|
39
|
+
*
|
|
40
|
+
* If migration causes issues:
|
|
41
|
+
* - Check migration output for any errors or warnings
|
|
42
|
+
* - Verify Nx workspace structure is valid
|
|
43
|
+
* - Confirm all projects have .kos.json files
|
|
44
|
+
* - Review generated .kos.json against workspace structure
|
|
45
|
+
*
|
|
46
|
+
* @param tree - Nx virtual file system tree
|
|
47
|
+
* @returns Promise that resolves when migration completes
|
|
48
|
+
*
|
|
49
|
+
* @category Migrations
|
|
50
|
+
* @version 2.1.28
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* // Migration runs automatically via nx migrate
|
|
55
|
+
* // Users execute:
|
|
56
|
+
* // $ nx migrate @kosdev-code/kos-nx-plugin@latest
|
|
57
|
+
* // $ nx migrate --run-migrations
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
async function migrate(tree) {
|
|
61
|
+
// Zone 1: High-level orchestration
|
|
62
|
+
(0, migration_reporter_1.announceMigrationStart)();
|
|
63
|
+
const requirements = (0, migration_analyzer_1.analyzeMigrationRequirements)(tree);
|
|
64
|
+
const results = (0, migration_executor_1.executeMigrationPlan)(tree, requirements);
|
|
65
|
+
(0, migration_reporter_1.reportMigrationCompletion)(requirements, results);
|
|
66
|
+
}
|
|
67
|
+
exports.default = migrate;
|
|
68
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/migrate.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAGH,0EAAiF;AACjF,0EAAyE;AACzE,0EAG2C;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACY,KAAK,UAAU,OAAO,CAAC,IAAU;IAC9C,mCAAmC;IACnC,IAAA,2CAAsB,GAAE,CAAC;IAEzB,MAAM,YAAY,GAAG,IAAA,iDAA4B,EAAC,IAAI,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,yCAAoB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEzD,IAAA,8CAAyB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AARD,0BAQC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* (C) Copyright 2025, TCCC, All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import type { KosDevConfig } from "../../types/kos-config";
|
|
5
|
+
import type { ProjectInfo } from "./helpers/project-analyzer";
|
|
6
|
+
/**
|
|
7
|
+
* Migration type definitions
|
|
8
|
+
*/
|
|
9
|
+
export interface MigrationRequirements {
|
|
10
|
+
needsRootConfig: boolean;
|
|
11
|
+
uiProjects: ProjectInfo[];
|
|
12
|
+
pluginProjects: ProjectInfo[];
|
|
13
|
+
modelProjects: ProjectInfo[];
|
|
14
|
+
workspaceName: string;
|
|
15
|
+
}
|
|
16
|
+
export interface HostConfiguration {
|
|
17
|
+
name: string;
|
|
18
|
+
project: string;
|
|
19
|
+
port: number;
|
|
20
|
+
type: string;
|
|
21
|
+
pluginContext: string;
|
|
22
|
+
plugins: Array<{
|
|
23
|
+
project: string;
|
|
24
|
+
port: number;
|
|
25
|
+
alias: string;
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
export interface MigrationResults {
|
|
30
|
+
rootConfigUpdated: boolean;
|
|
31
|
+
pluginConfigsUpdated: number;
|
|
32
|
+
uiConfigsUpdated: number;
|
|
33
|
+
pluginWebpackUpdated: number;
|
|
34
|
+
uiWebpackUpdated: number;
|
|
35
|
+
modelProjectsUpdated: number;
|
|
36
|
+
totalChanges: number;
|
|
37
|
+
}
|
|
38
|
+
export { KosDevConfig, ProjectInfo };
|
|
39
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AAEH,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/kos-nx-plugin/src/migrations/dev-server-support/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|