@unisphere/nx 3.23.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +195 -0
  2. package/dist/generators/add-application/add-application.d.ts.map +1 -1
  3. package/dist/generators/add-application/add-application.js +29 -0
  4. package/dist/generators/add-application/schema.json +7 -24
  5. package/dist/generators/add-documentation/add-documentation.d.ts.map +1 -1
  6. package/dist/generators/add-documentation/add-documentation.js +27 -24
  7. package/dist/generators/add-documentation/templates/package.json.template +4 -3
  8. package/dist/generators/add-documentation/templates/src/theme/Navbar/Content/index.tsx +0 -8
  9. package/dist/generators/add-documentation/templates/static/homepage/divider.svg +5 -0
  10. package/dist/generators/add-documentation/templates/static/homepage/icons/Architecture.svg +4 -0
  11. package/dist/generators/add-documentation/templates/static/homepage/icons/Cost.svg +4 -0
  12. package/dist/generators/add-documentation/templates/static/homepage/icons/ExternalLink.svg +3 -0
  13. package/dist/generators/add-documentation/templates/static/homepage/icons/Infra.svg +8 -0
  14. package/dist/generators/add-documentation/templates/static/homepage/icons/Redundancies.svg +6 -0
  15. package/dist/generators/add-documentation/templates/static/homepage/icons/Speed.svg +6 -0
  16. package/dist/generators/add-documentation/templates/static/homepage/icons/Standards.svg +4 -0
  17. package/dist/generators/add-documentation/templates/static/homepage/icons/Unified.svg +12 -0
  18. package/dist/generators/add-documentation/templates/static/homepage/services/custo.jpg +0 -0
  19. package/dist/generators/add-documentation/templates/static/homepage/services/flame.jpg +0 -0
  20. package/dist/generators/add-documentation/templates/static/homepage/services/keepr.jpg +0 -0
  21. package/dist/generators/add-documentation/templates/static/homepage/services/loggi.jpg +0 -0
  22. package/dist/generators/add-documentation/templates/static/homepage/services/palleto.jpg +0 -0
  23. package/dist/generators/add-documentation/templates/static/homepage/services/publi.jpg +0 -0
  24. package/dist/generators/add-documentation/templates/static/homepage/services/tinker.jpg +0 -0
  25. package/dist/generators/add-package/add-package.d.ts.map +1 -1
  26. package/dist/generators/add-package/add-package.js +37 -0
  27. package/dist/generators/add-package/schema.json +4 -53
  28. package/dist/generators/add-runtime/add-runtime.d.ts.map +1 -1
  29. package/dist/generators/add-runtime/add-runtime.js +33 -70
  30. package/dist/generators/add-runtime/schema.d.ts +1 -1
  31. package/dist/generators/add-runtime/schema.json +9 -34
  32. package/dist/generators/add-runtime/templates/new-runtime/src/lib/runtime.tsx.template +1 -1
  33. package/dist/generators/add-visual/add-visual.d.ts.map +1 -1
  34. package/dist/generators/add-visual/add-visual.js +41 -49
  35. package/dist/generators/add-visual/schema.json +18 -2
  36. package/dist/generators/change-package-scope/change-package-scope.d.ts.map +1 -1
  37. package/dist/generators/change-package-scope/change-package-scope.js +29 -0
  38. package/dist/generators/change-package-scope/schema.json +2 -4
  39. package/dist/generators/remove/remove.d.ts.map +1 -1
  40. package/dist/generators/remove/remove.js +11 -0
  41. package/dist/generators/remove/schema.json +1 -2
  42. package/dist/generators/rename-package/rename-package.d.ts.map +1 -1
  43. package/dist/generators/rename-package/rename-package.js +23 -0
  44. package/dist/generators/rename-package/schema.json +2 -4
  45. package/dist/generators/utils/index.d.ts +2 -0
  46. package/dist/generators/utils/index.d.ts.map +1 -0
  47. package/dist/generators/utils/index.js +4 -0
  48. package/dist/generators/utils/validation.d.ts +9 -0
  49. package/dist/generators/utils/validation.d.ts.map +1 -0
  50. package/dist/generators/utils/validation.js +38 -0
  51. package/dist/migrations/3-23-0/update-documentation-typedoc-plugins.d.ts.map +1 -1
  52. package/dist/migrations/3-23-0/update-documentation-typedoc-plugins.js +19 -4
  53. package/dist/migrations/3-24-0/add-server-runtimes-setup.d.ts +11 -0
  54. package/dist/migrations/3-24-0/add-server-runtimes-setup.d.ts.map +1 -0
  55. package/dist/migrations/3-24-0/add-server-runtimes-setup.js +160 -0
  56. package/dist/migrations/3-24-0/remove-runtime-js-patch.d.ts +9 -0
  57. package/dist/migrations/3-24-0/remove-runtime-js-patch.d.ts.map +1 -0
  58. package/dist/migrations/3-24-0/remove-runtime-js-patch.js +29 -0
  59. package/dist/migrations/3-24-0/update-runtime-logger-call.d.ts +9 -0
  60. package/dist/migrations/3-24-0/update-runtime-logger-call.d.ts.map +1 -0
  61. package/dist/migrations/3-24-0/update-runtime-logger-call.js +44 -0
  62. package/migrations.json +24 -0
  63. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/generators/utils/validation.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,MAAM,EAAE,gBAAgB,GACvB,IAAI,CAyCN"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateRequired = validateRequired;
4
+ function validateRequired(options, config) {
5
+ const value = options[config.name];
6
+ // Check if value is missing
7
+ if (value === undefined || value === null || value === '') {
8
+ let message = `Missing required option: '${config.name}'\n`;
9
+ message += ` Description: ${config.description}\n`;
10
+ if (config.allowedValues) {
11
+ message += ` Allowed values: ${config.allowedValues.join(', ')}\n`;
12
+ }
13
+ if (config.type) {
14
+ message += ` Type: ${config.type}\n`;
15
+ }
16
+ if (config.pattern) {
17
+ message += ` Pattern: ${config.pattern}\n`;
18
+ }
19
+ throw new Error(message.trim());
20
+ }
21
+ // Check pattern if provided
22
+ if (config.pattern && typeof value === 'string') {
23
+ const regex = new RegExp(config.pattern);
24
+ if (!regex.test(value)) {
25
+ let message = `Invalid value '${value}' for option '${config.name}'\n`;
26
+ message += ` Pattern: ${config.pattern}\n`;
27
+ message += ` Received: ${value}`;
28
+ throw new Error(message);
29
+ }
30
+ }
31
+ // Check enum if provided
32
+ if (config.allowedValues && !config.allowedValues.includes(value)) {
33
+ let message = `Invalid value '${value}' for option '${config.name}'\n`;
34
+ message += ` Allowed values: ${config.allowedValues.join(', ')}\n`;
35
+ message += ` Received: ${value}`;
36
+ throw new Error(message);
37
+ }
38
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"update-documentation-typedoc-plugins.d.ts","sourceRoot":"","sources":["../../../src/migrations/3-23-0/update-documentation-typedoc-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAA4C,MAAM,YAAY,CAAC;AA6D5E,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA2H9D"}
1
+ {"version":3,"file":"update-documentation-typedoc-plugins.d.ts","sourceRoot":"","sources":["../../../src/migrations/3-23-0/update-documentation-typedoc-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAA4C,MAAM,YAAY,CAAC;AA6D5E,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA8I9D"}
@@ -133,20 +133,35 @@ async function update(tree) {
133
133
  else {
134
134
  devkit_1.logger.warn(`âš ī¸ ${configPath} not found, skipping config update`);
135
135
  }
136
- // 4. Add discover-plugins script to package.json
136
+ // 4. Update package.json: add discover-plugins script, typedoc-plugin-markdown, webpack override
137
137
  const pkgPath = `${sitePath}/package.json`;
138
138
  if (tree.exists(pkgPath)) {
139
139
  const pkg = (0, devkit_1.readJson)(tree, pkgPath);
140
+ let pkgChanged = false;
140
141
  if (!pkg.scripts?.['discover-plugins']) {
141
142
  pkg.scripts = pkg.scripts || {};
142
- pkg.scripts['discover-plugins'] =
143
- 'node plugins/discover-typedoc-plugins.mjs';
144
- (0, devkit_1.writeJson)(tree, pkgPath, pkg);
143
+ pkg.scripts['discover-plugins'] = 'node plugins/discover-typedoc-plugins.mjs';
144
+ pkgChanged = true;
145
145
  devkit_1.logger.info(`✅ Added discover-plugins script to ${pkgPath}`);
146
146
  }
147
147
  else {
148
148
  devkit_1.logger.info(`â„šī¸ discover-plugins script already exists in ${pkgPath}`);
149
149
  }
150
+ if (!pkg.devDependencies?.['typedoc-plugin-markdown']) {
151
+ pkg.devDependencies = pkg.devDependencies || {};
152
+ pkg.devDependencies['typedoc-plugin-markdown'] = '^4.8.0';
153
+ pkgChanged = true;
154
+ devkit_1.logger.info(`✅ Added typedoc-plugin-markdown to ${pkgPath}`);
155
+ }
156
+ if (!pkg.overrides?.['webpack']) {
157
+ pkg.overrides = pkg.overrides || {};
158
+ pkg.overrides['webpack'] = '5.105.4';
159
+ pkgChanged = true;
160
+ devkit_1.logger.info(`✅ Added webpack override to ${pkgPath}`);
161
+ }
162
+ if (pkgChanged) {
163
+ (0, devkit_1.writeJson)(tree, pkgPath, pkg);
164
+ }
150
165
  }
151
166
  createdCount++;
152
167
  }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Migration: Add local runtimes setup
3
+ *
4
+ * For each local application (sourceRoot containing '/server'):
5
+ * 1. Creates setup-local-runtimes.ts with experience name from .unisphere
6
+ * 2. Imports and calls setupLocalRuntimes() in main.tsx
7
+ * 3. Adds LOCAL_RUNTIMES env var to webpack DefinePlugin
8
+ */
9
+ import { Tree } from '@nx/devkit';
10
+ export default function update(tree: Tree): Promise<void>;
11
+ //# sourceMappingURL=add-server-runtimes-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-server-runtimes-setup.d.ts","sourceRoot":"","sources":["../../../src/migrations/3-24-0/add-server-runtimes-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAiC,MAAM,YAAY,CAAC;AA2GjE,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA4E9D"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ /**
3
+ * Migration: Add local runtimes setup
4
+ *
5
+ * For each local application (sourceRoot containing '/server'):
6
+ * 1. Creates setup-local-runtimes.ts with experience name from .unisphere
7
+ * 2. Imports and calls setupLocalRuntimes() in main.tsx
8
+ * 3. Adds LOCAL_RUNTIMES env var to webpack DefinePlugin
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.default = update;
12
+ const devkit_1 = require("@nx/devkit");
13
+ const path_1 = require("path");
14
+ function generateSetupLocalRuntimes(experienceName) {
15
+ return `export function setupLocalRuntimes() {
16
+ if (!process.env.LOCAL_RUNTIMES) return;
17
+
18
+ const runtimes: Record<string, { token: string; baseEnvName: string }> = {};
19
+ process.env.LOCAL_RUNTIMES.split(',').forEach((entry) => {
20
+ const [name, port] = entry.split('@');
21
+ if (name && port) {
22
+ runtimes[name] = { token: port, baseEnvName: '' };
23
+ }
24
+ });
25
+
26
+ const overrides = {
27
+ baseEnvName: '',
28
+ mode: 'integration',
29
+ options: { verbose: 'inherit' },
30
+ baseEnvScope: { core: 'inherit', presets: 'inherit' },
31
+ runtimes: {
32
+ '${experienceName}': runtimes,
33
+ },
34
+ };
35
+
36
+ (window as any).unisphereRuntimeOverrides = btoa(JSON.stringify(overrides));
37
+ }
38
+ `;
39
+ }
40
+ function addImportToMainTsx(content) {
41
+ const importLine = "import { setupLocalRuntimes } from './setup-local-runtimes';";
42
+ const callLine = 'setupLocalRuntimes();';
43
+ if (content.includes('setupLocalRuntimes')) {
44
+ return content;
45
+ }
46
+ // Find the last import statement
47
+ const lines = content.split('\n');
48
+ let lastImportIndex = -1;
49
+ for (let i = 0; i < lines.length; i++) {
50
+ if (lines[i].startsWith('import ')) {
51
+ lastImportIndex = i;
52
+ }
53
+ }
54
+ if (lastImportIndex === -1) {
55
+ // No imports found, add at the top
56
+ return `${importLine}\n\n${callLine}\n\n${content}`;
57
+ }
58
+ // Insert after the last import
59
+ lines.splice(lastImportIndex + 1, 0, importLine, '', callLine);
60
+ return lines.join('\n');
61
+ }
62
+ function addLocalRuntimesToDefinePlugin(content) {
63
+ const entry = "'process.env.LOCAL_RUNTIMES': JSON.stringify(process.env.LOCAL_RUNTIMES),";
64
+ if (content.includes('LOCAL_RUNTIMES')) {
65
+ return content;
66
+ }
67
+ // Find the DefinePlugin block and add before its closing })
68
+ const definePluginMatch = content.match(/new DefinePlugin\(\{/);
69
+ if (!definePluginMatch || definePluginMatch.index === undefined) {
70
+ return content;
71
+ }
72
+ // Find the closing }) of DefinePlugin
73
+ const startIndex = definePluginMatch.index;
74
+ let braceCount = 0;
75
+ let closingIndex = -1;
76
+ for (let i = startIndex; i < content.length; i++) {
77
+ if (content[i] === '{')
78
+ braceCount++;
79
+ if (content[i] === '}') {
80
+ braceCount--;
81
+ if (braceCount === 0) {
82
+ closingIndex = i;
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ if (closingIndex === -1) {
88
+ return content;
89
+ }
90
+ const indent = ' ';
91
+ // Insert the new entry before the closing }
92
+ return content.substring(0, closingIndex).trimEnd() + '\n' +
93
+ `${indent}${entry}\n` +
94
+ ' ' + content.substring(closingIndex);
95
+ }
96
+ async function update(tree) {
97
+ devkit_1.logger.info('🔄 Adding local runtimes setup to local applications...');
98
+ if (!tree.exists('.unisphere')) {
99
+ devkit_1.logger.warn('âš ī¸ No .unisphere file found, skipping');
100
+ return;
101
+ }
102
+ const config = (0, devkit_1.readJson)(tree, '.unisphere');
103
+ const experienceName = `unisphere.${config.type}.${config.name}`;
104
+ const applications = config.elements?.applications;
105
+ if (!applications || Object.keys(applications).length === 0) {
106
+ devkit_1.logger.info('â„šī¸ No applications found, skipping');
107
+ return;
108
+ }
109
+ let updatedCount = 0;
110
+ for (const [appName, appConfig] of Object.entries(applications)) {
111
+ const { sourceRoot } = appConfig;
112
+ // Only process server applications
113
+ if (!sourceRoot.includes('/server/')) {
114
+ devkit_1.logger.info(`â„šī¸ ${appName}: Not a server application, local was already migrated. skipping`);
115
+ continue;
116
+ }
117
+ const setupFilePath = (0, path_1.join)(sourceRoot, 'src', 'setup-local-runtimes.ts');
118
+ const mainTsxPath = (0, path_1.join)(sourceRoot, 'src', 'main.tsx');
119
+ const webpackPath = (0, path_1.join)(sourceRoot, 'webpack.config.js');
120
+ // 1. Create setup-local-runtimes.ts
121
+ if (tree.exists(setupFilePath)) {
122
+ devkit_1.logger.info(`â„šī¸ ${appName}: setup-local-runtimes.ts already exists, skipping`);
123
+ }
124
+ else {
125
+ tree.write(setupFilePath, generateSetupLocalRuntimes(experienceName));
126
+ devkit_1.logger.info(`✅ ${appName}: Created setup-local-runtimes.ts`);
127
+ }
128
+ // 2. Modify main.tsx
129
+ if (!tree.exists(mainTsxPath)) {
130
+ devkit_1.logger.warn(`âš ī¸ ${appName}: No main.tsx found, skipping`);
131
+ continue;
132
+ }
133
+ const mainContent = tree.read(mainTsxPath, 'utf-8') || '';
134
+ const updatedMain = addImportToMainTsx(mainContent);
135
+ if (updatedMain !== mainContent) {
136
+ tree.write(mainTsxPath, updatedMain);
137
+ devkit_1.logger.info(`✅ ${appName}: Added setupLocalRuntimes import to main.tsx`);
138
+ }
139
+ else {
140
+ devkit_1.logger.info(`â„šī¸ ${appName}: main.tsx already has setupLocalRuntimes`);
141
+ }
142
+ // 3. Modify webpack.config.js
143
+ if (!tree.exists(webpackPath)) {
144
+ devkit_1.logger.warn(`âš ī¸ ${appName}: No webpack.config.js found, skipping`);
145
+ continue;
146
+ }
147
+ const webpackContent = tree.read(webpackPath, 'utf-8') || '';
148
+ const updatedWebpack = addLocalRuntimesToDefinePlugin(webpackContent);
149
+ if (updatedWebpack !== webpackContent) {
150
+ tree.write(webpackPath, updatedWebpack);
151
+ devkit_1.logger.info(`✅ ${appName}: Added LOCAL_RUNTIMES to DefinePlugin`);
152
+ }
153
+ else {
154
+ devkit_1.logger.info(`â„šī¸ ${appName}: webpack.config.js already has LOCAL_RUNTIMES`);
155
+ }
156
+ updatedCount++;
157
+ }
158
+ await (0, devkit_1.formatFiles)(tree);
159
+ devkit_1.logger.info(`\n✅ Done: ${updatedCount} local application(s) updated with local runtimes setup (experience: ${experienceName})`);
160
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Migration: Remove outdated @unisphere+runtime-js patch file
3
+ *
4
+ * Removes any patches/@unisphere+runtime-js+{version}.patch file if it exists.
5
+ * Migration succeeds whether file exists or not.
6
+ */
7
+ import { Tree } from '@nx/devkit';
8
+ export default function update(tree: Tree): Promise<void>;
9
+ //# sourceMappingURL=remove-runtime-js-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-runtime-js-patch.d.ts","sourceRoot":"","sources":["../../../src/migrations/3-24-0/remove-runtime-js-patch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAU,MAAM,YAAY,CAAC;AAE1C,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB9D"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * Migration: Remove outdated @unisphere+runtime-js patch file
4
+ *
5
+ * Removes any patches/@unisphere+runtime-js+{version}.patch file if it exists.
6
+ * Migration succeeds whether file exists or not.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.default = update;
10
+ const devkit_1 = require("@nx/devkit");
11
+ async function update(tree) {
12
+ devkit_1.logger.info('🔄 Removing outdated @unisphere+runtime-js patch file...');
13
+ const patchesDir = 'patches';
14
+ if (tree.exists(patchesDir)) {
15
+ const patchFiles = tree.children(patchesDir);
16
+ const runtimeJsPatch = patchFiles.find(file => file.startsWith('@unisphere+runtime-js+'));
17
+ if (runtimeJsPatch) {
18
+ const patchPath = `${patchesDir}/${runtimeJsPatch}`;
19
+ tree.delete(patchPath);
20
+ devkit_1.logger.info(`✅ Removed ${patchPath}`);
21
+ }
22
+ else {
23
+ devkit_1.logger.info('â„šī¸ Patch file not found (already removed or never existed)');
24
+ }
25
+ }
26
+ else {
27
+ devkit_1.logger.info('â„šī¸ Patches directory not found');
28
+ }
29
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Migration: Update runtime logger call from warn to log
3
+ *
4
+ * Updates runtime.tsx files to change logger.warn to logger.log
5
+ * for the missing Kaltura analytics app id message.
6
+ */
7
+ import { Tree } from '@nx/devkit';
8
+ export default function update(tree: Tree): Promise<void>;
9
+ //# sourceMappingURL=update-runtime-logger-call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-runtime-logger-call.d.ts","sourceRoot":"","sources":["../../../src/migrations/3-24-0/update-runtime-logger-call.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAA6C,MAAM,YAAY,CAAC;AAE7E,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C9D"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * Migration: Update runtime logger call from warn to log
4
+ *
5
+ * Updates runtime.tsx files to change logger.warn to logger.log
6
+ * for the missing Kaltura analytics app id message.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.default = update;
10
+ const devkit_1 = require("@nx/devkit");
11
+ async function update(tree) {
12
+ devkit_1.logger.info('🔄 Updating runtime logger calls...');
13
+ const runtimesDir = 'unisphere/runtimes';
14
+ if (!tree.exists(runtimesDir)) {
15
+ devkit_1.logger.info('â„šī¸ No runtimes directory found');
16
+ return;
17
+ }
18
+ let updatedCount = 0;
19
+ // Find all runtime.tsx files
20
+ (0, devkit_1.visitNotIgnoredFiles)(tree, runtimesDir, (filePath) => {
21
+ if (filePath.endsWith('/src/lib/runtime.tsx')) {
22
+ const content = tree.read(filePath, 'utf-8');
23
+ if (!content) {
24
+ return;
25
+ }
26
+ // Check if the old pattern exists
27
+ const oldPattern = 'this._logger.warn(`missing kaltura analytics app id, cannot register application to analytics service`)';
28
+ if (content.includes(oldPattern)) {
29
+ const newPattern = 'this._logger.log(`missing kaltura analytics app id, skip application registration to analytics service`)';
30
+ const updatedContent = content.replace(oldPattern, newPattern);
31
+ tree.write(filePath, updatedContent);
32
+ updatedCount++;
33
+ devkit_1.logger.info(` ✅ Updated ${filePath}`);
34
+ }
35
+ }
36
+ });
37
+ if (updatedCount === 0) {
38
+ devkit_1.logger.info('â„šī¸ No runtime files found with the old logger pattern');
39
+ }
40
+ else {
41
+ devkit_1.logger.info(`✅ Updated ${updatedCount} runtime file(s)`);
42
+ }
43
+ await (0, devkit_1.formatFiles)(tree);
44
+ }
package/migrations.json CHANGED
@@ -386,6 +386,30 @@
386
386
  "cli": {
387
387
  "postUpdateMessage": "✅ TypeDoc plugin auto-discovery added to documentation sites. Run 'npm run discover-plugins' inside any docs site to refresh plugins."
388
388
  }
389
+ },
390
+ "3-24-0-remove-runtime-js-patch": {
391
+ "version": "3.24.0",
392
+ "description": "Removes outdated @unisphere+runtime-js patch file",
393
+ "factory": "./dist/migrations/3-24-0/remove-runtime-js-patch.js",
394
+ "cli": {
395
+ "postUpdateMessage": "✅ Outdated @unisphere+runtime-js patch file removed"
396
+ }
397
+ },
398
+ "3-24-0-add-server-runtimes-setup": {
399
+ "version": "3.24.0",
400
+ "description": "Adds server runtimes setup to server applications for development overrides",
401
+ "factory": "./dist/migrations/3-24-0/add-server-runtimes-setup.js",
402
+ "cli": {
403
+ "postUpdateMessage": "✅ Server runtimes setup added to server applications"
404
+ }
405
+ },
406
+ "3-24-0-update-runtime-logger-call": {
407
+ "version": "3.24.0",
408
+ "description": "Updates runtime logger call from warn to log for missing analytics app id",
409
+ "factory": "./dist/migrations/3-24-0/update-runtime-logger-call.js",
410
+ "cli": {
411
+ "postUpdateMessage": "✅ Runtime logger calls updated"
412
+ }
389
413
  }
390
414
  },
391
415
  "packageJsonUpdates": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unisphere/nx",
3
- "version": "3.23.0",
3
+ "version": "4.0.0",
4
4
  "private": false,
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",