@common-stack/generate-plugin 6.0.6-alpha.7 → 6.0.6-alpha.71
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/CHANGELOG.md +234 -0
- package/README.md +157 -211
- package/cde-config.json +43 -42
- package/generators.json +5 -0
- package/lib/{constants/index.cjs → common/constants.cjs} +1 -1
- package/lib/common/constants.cjs.map +1 -0
- package/lib/{constants/index.mjs → common/constants.mjs} +1 -1
- package/lib/common/constants.mjs.map +1 -0
- package/lib/generators/add-backend/files/package.json +5 -4
- package/lib/generators/add-backend/files/src/api/root-schema.graphqls +1 -7
- package/lib/generators/add-backend/generator.cjs +12 -3
- package/lib/generators/add-backend/generator.cjs.map +1 -1
- package/lib/generators/add-backend/generator.mjs +12 -3
- package/lib/generators/add-backend/generator.mjs.map +1 -1
- package/lib/generators/add-backend/schema.json +6 -1
- package/lib/generators/add-frontend/frameworks/antui/root.tsx.template +2 -2
- package/lib/generators/add-frontend/frameworks/chakraui/root.tsx.template +4 -3
- package/lib/generators/add-frontend/frameworks/tailwindui/root.tsx.template +2 -2
- package/lib/generators/add-frontend/generator.cjs +17 -13
- package/lib/generators/add-frontend/generator.cjs.map +1 -1
- package/lib/generators/add-frontend/generator.mjs +12 -8
- package/lib/generators/add-frontend/generator.mjs.map +1 -1
- package/lib/generators/add-frontend/schema.json +8 -3
- package/lib/generators/add-frontend/templates/config.json +2 -47
- package/lib/generators/add-frontend/templates/package.json +5 -8
- package/lib/generators/add-frontend/templates/tools/checkQueryUsage.mjs +192 -0
- package/lib/generators/add-frontend/templates/tools/mergeConfig.js +3 -0
- package/lib/generators/add-frontend/templates/vite.config.ts.template +53 -32
- package/lib/generators/add-fullstack/files/Jenkinsfile +7 -7
- package/lib/generators/add-fullstack/files/package.json +19 -14
- package/lib/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
- package/lib/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -63
- package/lib/generators/add-fullstack/files/tools/update-dependency-link.mjs +12 -10
- package/lib/generators/add-fullstack/files/tools/{update-dependency-version.js → update-dependency-version.mjs} +57 -26
- package/lib/generators/add-fullstack/generator.cjs +39 -30
- package/lib/generators/add-fullstack/generator.cjs.map +1 -1
- package/lib/generators/add-fullstack/generator.mjs +39 -30
- package/lib/generators/add-fullstack/generator.mjs.map +1 -1
- package/lib/generators/add-fullstack/updates/htmlPluginUpdate.cjs +8 -0
- package/lib/generators/add-fullstack/updates/htmlPluginUpdate.cjs.map +1 -0
- package/lib/generators/add-fullstack/updates/htmlPluginUpdate.d.ts +2 -0
- package/lib/generators/add-fullstack/updates/htmlPluginUpdate.mjs +8 -0
- package/lib/generators/add-fullstack/updates/htmlPluginUpdate.mjs.map +1 -0
- package/lib/generators/add-fullstack/updates/ignoreUpdate.cjs +19 -0
- package/lib/generators/add-fullstack/updates/ignoreUpdate.cjs.map +1 -0
- package/lib/generators/add-fullstack/updates/ignoreUpdate.d.ts +3 -0
- package/lib/generators/add-fullstack/updates/ignoreUpdate.mjs +19 -0
- package/lib/generators/add-fullstack/updates/ignoreUpdate.mjs.map +1 -0
- package/lib/generators/add-fullstack/updates/index.d.ts +4 -0
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs +5 -4
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs.map +1 -1
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.d.ts +2 -1
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs +5 -4
- package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs.map +1 -1
- package/lib/generators/add-fullstack/updates/lernaJsonUpdate.cjs +45 -0
- package/lib/generators/add-fullstack/updates/lernaJsonUpdate.cjs.map +1 -0
- package/lib/generators/add-fullstack/updates/lernaJsonUpdate.d.ts +3 -0
- package/lib/generators/add-fullstack/updates/lernaJsonUpdate.mjs +45 -0
- package/lib/generators/add-fullstack/updates/lernaJsonUpdate.mjs.map +1 -0
- package/lib/generators/add-fullstack/updates/licenseUpdate.cjs +19 -0
- package/lib/generators/add-fullstack/updates/licenseUpdate.cjs.map +1 -0
- package/lib/generators/add-fullstack/updates/licenseUpdate.d.ts +2 -0
- package/lib/generators/add-fullstack/updates/licenseUpdate.mjs +19 -0
- package/lib/generators/add-fullstack/updates/licenseUpdate.mjs.map +1 -0
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs +38 -4
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs.map +1 -1
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.d.ts +2 -1
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs +38 -4
- package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs.map +1 -1
- package/lib/generators/add-moleculer/files/charts/chart/Chart.yaml +1 -1
- package/lib/generators/add-moleculer/files/package.json +5 -5
- package/lib/generators/add-moleculer/generator.cjs +7 -4
- package/lib/generators/add-moleculer/generator.cjs.map +1 -1
- package/lib/generators/add-moleculer/generator.mjs +7 -4
- package/lib/generators/add-moleculer/generator.mjs.map +1 -1
- package/lib/generators/add-moleculer/schema.json +9 -4
- package/lib/generators/add-package/generator.cjs +50 -0
- package/lib/generators/add-package/generator.cjs.map +1 -0
- package/lib/generators/add-package/generator.d.ts +5 -0
- package/lib/generators/add-package/generator.mjs +50 -0
- package/lib/generators/add-package/generator.mjs.map +1 -0
- package/lib/generators/add-package/schema.json +29 -0
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -4
- package/lib/index.mjs +1 -1
- package/lib/utils/filesConfig.cjs +76 -0
- package/lib/utils/filesConfig.cjs.map +1 -0
- package/lib/utils/filesConfig.d.ts +2 -0
- package/lib/utils/filesConfig.mjs +76 -0
- package/lib/utils/filesConfig.mjs.map +1 -0
- package/lib/utils/index.cjs +28 -2
- package/lib/utils/index.cjs.map +1 -1
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/index.mjs +28 -2
- package/lib/utils/index.mjs.map +1 -1
- package/lib/utils/syncConfig.cjs +116 -0
- package/lib/utils/syncConfig.cjs.map +1 -0
- package/lib/utils/syncConfig.d.ts +9 -0
- package/lib/utils/syncConfig.mjs +116 -0
- package/lib/utils/syncConfig.mjs.map +1 -0
- package/package.json +3 -4
- package/rollup.config.mjs +2 -8
- package/src/generators/add-backend/generator.ts +14 -3
- package/src/generators/add-backend/schema.d.ts +1 -0
- package/src/generators/add-backend/schema.json +6 -1
- package/src/generators/add-frontend/frameworks/antui/root.tsx.template +2 -2
- package/src/generators/add-frontend/frameworks/chakraui/root.tsx.template +4 -3
- package/src/generators/add-frontend/frameworks/tailwindui/root.tsx.template +2 -2
- package/src/generators/add-frontend/generator.ts +12 -8
- package/src/generators/add-frontend/schema.d.ts +1 -0
- package/src/generators/add-frontend/schema.json +8 -3
- package/src/generators/add-fullstack/files/Jenkinsfile +7 -7
- package/src/generators/add-fullstack/files/LICENSE-IST +39 -0
- package/src/generators/add-fullstack/files/package.json +19 -14
- package/src/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
- package/src/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -63
- package/src/generators/add-fullstack/files/tools/update-dependency-link.mjs +12 -10
- package/src/generators/add-fullstack/files/tools/{update-dependency-version.js → update-dependency-version.mjs} +57 -26
- package/src/generators/add-fullstack/generator.ts +64 -38
- package/src/generators/add-fullstack/updates/htmlPluginUpdate.ts +11 -0
- package/src/generators/add-fullstack/updates/ignoreUpdate.ts +23 -0
- package/src/generators/add-fullstack/updates/index.ts +4 -0
- package/src/generators/add-fullstack/updates/jenkinsfileUpdate.ts +6 -4
- package/src/generators/add-fullstack/updates/lernaJsonUpdate.ts +53 -0
- package/src/generators/add-fullstack/updates/licenseUpdate.ts +23 -0
- package/src/generators/add-fullstack/updates/packageJsonUpdate.ts +45 -4
- package/src/generators/add-moleculer/files/charts/chart/Chart.yaml +1 -1
- package/src/generators/add-moleculer/files/package.json +5 -5
- package/src/generators/add-moleculer/generator.spec.ts +1 -1
- package/src/generators/add-moleculer/generator.ts +8 -3
- package/src/generators/add-moleculer/schema.d.ts +2 -1
- package/src/generators/add-moleculer/schema.json +9 -4
- package/src/generators/{add-core-package → add-package}/generator.spec.ts +5 -5
- package/src/generators/add-package/generator.ts +62 -0
- package/src/generators/add-package/schema.d.ts +6 -0
- package/src/generators/add-package/schema.json +29 -0
- package/src/index.ts +1 -4
- package/src/utils/filesConfig.ts +84 -0
- package/src/utils/index.ts +31 -0
- package/src/utils/syncConfig.ts +128 -0
- package/lib/constants/index.cjs.map +0 -1
- package/lib/constants/index.mjs.map +0 -1
- package/lib/generators/add-browser-package/files/jest.config.js +0 -8
- package/lib/generators/add-browser-package/files/package.json +0 -49
- package/lib/generators/add-browser-package/files/rollup.config.mjs +0 -29
- package/lib/generators/add-browser-package/files/src/index.ts.template +0 -4
- package/lib/generators/add-browser-package/files/src/interfaces/index.ts.template +0 -1
- package/lib/generators/add-browser-package/files/src/interfaces/interfaces.ts.template +0 -1
- package/lib/generators/add-browser-package/files/src/module.tsx.template +0 -7
- package/lib/generators/add-browser-package/files/tsconfig.json +0 -28
- package/lib/generators/add-browser-package/files/webpack.config.js +0 -71
- package/lib/generators/add-browser-package/generator.cjs +0 -17
- package/lib/generators/add-browser-package/generator.cjs.map +0 -1
- package/lib/generators/add-browser-package/generator.d.ts +0 -5
- package/lib/generators/add-browser-package/generator.mjs +0 -17
- package/lib/generators/add-browser-package/generator.mjs.map +0 -1
- package/lib/generators/add-browser-package/schema.json +0 -19
- package/lib/generators/add-client-package/files/CHANGELOG.md +0 -807
- package/lib/generators/add-client-package/files/jest.config.js +0 -13
- package/lib/generators/add-client-package/files/package.json +0 -30
- package/lib/generators/add-client-package/files/rollup.config.mjs +0 -29
- package/lib/generators/add-client-package/files/src/components/index.tsx.template +0 -1
- package/lib/generators/add-client-package/files/src/index.ts.template +0 -1
- package/lib/generators/add-client-package/files/tsconfig.json +0 -27
- package/lib/generators/add-client-package/files/webpack.config.js +0 -72
- package/lib/generators/add-client-package/generator.cjs +0 -17
- package/lib/generators/add-client-package/generator.cjs.map +0 -1
- package/lib/generators/add-client-package/generator.d.ts +0 -5
- package/lib/generators/add-client-package/generator.mjs +0 -17
- package/lib/generators/add-client-package/generator.mjs.map +0 -1
- package/lib/generators/add-client-package/generator.spec.d.ts +0 -1
- package/lib/generators/add-client-package/schema.json +0 -19
- package/lib/generators/add-core-package/files/jest.config.js +0 -3
- package/lib/generators/add-core-package/files/package.json +0 -30
- package/lib/generators/add-core-package/files/rollup.config.mjs +0 -65
- package/lib/generators/add-core-package/files/src/constants/index.ts.template +0 -1
- package/lib/generators/add-core-package/files/src/constants/types.ts.template +0 -3
- package/lib/generators/add-core-package/files/src/index.ts.template +0 -2
- package/lib/generators/add-core-package/files/src/types/index.ts.template +0 -1
- package/lib/generators/add-core-package/files/src/types/types.ts.template +0 -17
- package/lib/generators/add-core-package/files/tsconfig.json +0 -22
- package/lib/generators/add-core-package/files/webpack.config.js +0 -53
- package/lib/generators/add-core-package/generator.cjs +0 -17
- package/lib/generators/add-core-package/generator.cjs.map +0 -1
- package/lib/generators/add-core-package/generator.d.ts +0 -5
- package/lib/generators/add-core-package/generator.mjs +0 -17
- package/lib/generators/add-core-package/generator.mjs.map +0 -1
- package/lib/generators/add-core-package/generator.spec.d.ts +0 -1
- package/lib/generators/add-core-package/schema.json +0 -19
- package/lib/generators/add-fullstack/files/CHANGELOG.md +0 -20
- package/lib/generators/add-server-package/files/CHANGELOG.md +0 -2599
- package/lib/generators/add-server-package/files/LICENSE +0 -674
- package/lib/generators/add-server-package/files/jest.config.js +0 -32
- package/lib/generators/add-server-package/files/package.json +0 -78
- package/lib/generators/add-server-package/files/rollup.config.mjs +0 -30
- package/lib/generators/add-server-package/files/src/constants/constants.ts.template +0 -62
- package/lib/generators/add-server-package/files/src/constants/index.ts.template +0 -1
- package/lib/generators/add-server-package/files/src/constants/types.ts.template +0 -21
- package/lib/generators/add-server-package/files/src/index.ts.template +0 -6
- package/lib/generators/add-server-package/files/src/module.ts.template +0 -6
- package/lib/generators/add-server-package/files/tsconfig.json +0 -27
- package/lib/generators/add-server-package/generator.cjs +0 -17
- package/lib/generators/add-server-package/generator.cjs.map +0 -1
- package/lib/generators/add-server-package/generator.d.ts +0 -5
- package/lib/generators/add-server-package/generator.mjs +0 -17
- package/lib/generators/add-server-package/generator.mjs.map +0 -1
- package/lib/generators/add-server-package/generator.spec.d.ts +0 -1
- package/lib/generators/add-server-package/schema.json +0 -19
- package/src/generators/add-browser-package/generator.spec.ts +0 -20
- package/src/generators/add-browser-package/generator.ts +0 -24
- package/src/generators/add-browser-package/schema.d.ts +0 -4
- package/src/generators/add-browser-package/schema.json +0 -19
- package/src/generators/add-client-package/generator.spec.ts +0 -20
- package/src/generators/add-client-package/generator.ts +0 -24
- package/src/generators/add-client-package/schema.d.ts +0 -4
- package/src/generators/add-client-package/schema.json +0 -19
- package/src/generators/add-core-package/generator.ts +0 -24
- package/src/generators/add-core-package/schema.d.ts +0 -4
- package/src/generators/add-core-package/schema.json +0 -19
- package/src/generators/add-fullstack/files/CHANGELOG.md +0 -28
- package/src/generators/add-server-package/generator.spec.ts +0 -20
- package/src/generators/add-server-package/generator.ts +0 -24
- package/src/generators/add-server-package/schema.d.ts +0 -4
- package/src/generators/add-server-package/schema.json +0 -19
- /package/lib/{constants/index.d.ts → common/constants.d.ts} +0 -0
- /package/lib/generators/{add-browser-package/files/LICENSE → add-fullstack/files/LICENSE-GNU} +0 -0
- /package/lib/generators/{add-core-package/files/LICENSE → add-fullstack/files/LICENSE-IST} +0 -0
- /package/lib/generators/add-fullstack/files/{LICENSE → LICENSE-MIT} +0 -0
- /package/lib/generators/{add-browser-package → add-package}/generator.spec.d.ts +0 -0
- /package/src/{constants/index.ts → common/constants.ts} +0 -0
- /package/{lib/generators/add-client-package/files/LICENSE → src/generators/add-fullstack/files/LICENSE-GNU} +0 -0
- /package/src/generators/add-fullstack/files/{LICENSE → LICENSE-MIT} +0 -0
|
@@ -10,86 +10,118 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
|
10
10
|
const JSON_SPACING = 4;
|
|
11
11
|
const ADD_END_NEWLINE = true; // Set to true to add a newline at the end of the file
|
|
12
12
|
|
|
13
|
-
// Paths to package.json files
|
|
14
|
-
const
|
|
15
|
-
|
|
13
|
+
// Paths to package.json files (now using arrays to handle multiple paths for backend, frontend, and mobile)
|
|
14
|
+
const packagePaths = {
|
|
15
|
+
backend: [
|
|
16
|
+
resolve(__dirname, '../servers/backend-server/package.json'),
|
|
17
|
+
],
|
|
18
|
+
frontend: [
|
|
19
|
+
resolve(__dirname, '../servers/frontend-server/package.json'),
|
|
20
|
+
],
|
|
21
|
+
mobile: [
|
|
22
|
+
resolve(__dirname, '../portable-devices/mobile/package.json'),
|
|
23
|
+
]
|
|
24
|
+
};
|
|
16
25
|
|
|
17
26
|
// Packages to check
|
|
18
27
|
const packagesToCheck = [
|
|
19
28
|
'@common-stack/server-stack',
|
|
20
|
-
'@common-stack/frontend-stack-react'
|
|
29
|
+
'@common-stack/frontend-stack-react',
|
|
30
|
+
'@common-stack/mobile-stack-react'
|
|
21
31
|
];
|
|
22
32
|
|
|
33
|
+
// Utility function to wrap `exec` in a promise for sequential execution
|
|
34
|
+
const execCommand = (command, cwd) => {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
exec(command, { cwd }, (err, stdout, stderr) => {
|
|
37
|
+
if (err) {
|
|
38
|
+
console.error(`Error executing command: ${command}\n${stderr}`);
|
|
39
|
+
return reject(err);
|
|
40
|
+
}
|
|
41
|
+
console.log(stdout);
|
|
42
|
+
resolve();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
23
47
|
// Function to update dependencies
|
|
24
48
|
const updateDependencies = async (targetPackagePath, sourcePackagePath) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// Write the formatted JSON back to disk
|
|
48
|
-
await writeFile(targetPackagePath, jsonString, 'utf-8');
|
|
49
|
+
const targetPackageJson = JSON.parse(await readFile(targetPackagePath, 'utf-8'));
|
|
50
|
+
const sourcePackageJson = JSON.parse(await readFile(sourcePackagePath, 'utf-8'));
|
|
51
|
+
|
|
52
|
+
const mergeDependencies = (targetDeps = {}, sourceDeps = {}) => ({
|
|
53
|
+
...targetDeps,
|
|
54
|
+
...sourceDeps
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Merge dependencies only
|
|
58
|
+
targetPackageJson.dependencies = mergeDependencies(targetPackageJson.dependencies, sourcePackageJson.dependencies);
|
|
59
|
+
|
|
60
|
+
// Format the JSON string with the specified spacing
|
|
61
|
+
let jsonString = JSON.stringify(targetPackageJson, null, JSON_SPACING);
|
|
62
|
+
|
|
63
|
+
// Optionally add a newline at the end
|
|
64
|
+
if (ADD_END_NEWLINE) {
|
|
65
|
+
jsonString += '\n';
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Write the formatted JSON back to disk
|
|
69
|
+
await writeFile(targetPackagePath, jsonString, 'utf-8');
|
|
49
70
|
};
|
|
50
71
|
|
|
51
|
-
// Function to run `ncu`, update dependencies, and then run linting
|
|
72
|
+
// Function to run `ncu`, `yarn` from the root, update dependencies, and then run linting
|
|
52
73
|
export const runUpdateDependencies = async () => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
console.log(stdout);
|
|
61
|
-
resolve();
|
|
62
|
-
});
|
|
63
|
-
});
|
|
74
|
+
// Step 1: Run `ncu` to update the dependencies from the root level
|
|
75
|
+
console.log('Updating dependencies using `ncu`...');
|
|
76
|
+
await execCommand(
|
|
77
|
+
'ncu -u -t minor "@common-stack*" && lerna exec "ncu -u -t minor /@common-stack*/"',
|
|
78
|
+
resolve(__dirname, '..')
|
|
79
|
+
);
|
|
64
80
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
packagePath
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
81
|
+
// Step 2: Run `yarn` to install updated packages from the root
|
|
82
|
+
console.log('Running yarn install...');
|
|
83
|
+
await execCommand('yarn', resolve(__dirname, '..'));
|
|
84
|
+
|
|
85
|
+
// Step 3: Update dependencies for each package
|
|
86
|
+
for (const packageName of packagesToCheck) {
|
|
87
|
+
const packagePath = resolve(__dirname, `../node_modules/${packageName}/package.json`);
|
|
88
|
+
let targetPaths;
|
|
89
|
+
|
|
90
|
+
// Determine the target package.json paths (array of paths)
|
|
91
|
+
if (packageName.includes('server-stack')) {
|
|
92
|
+
targetPaths = packagePaths.backend;
|
|
93
|
+
} else if (packageName.includes('mobile-stack-react')) {
|
|
94
|
+
targetPaths = packagePaths.mobile;
|
|
95
|
+
} else {
|
|
96
|
+
targetPaths = packagePaths.frontend;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Iterate over all target paths in the corresponding array
|
|
100
|
+
for (const targetPackagePath of targetPaths) {
|
|
101
|
+
try {
|
|
102
|
+
await updateDependencies(targetPackagePath, packagePath);
|
|
103
|
+
console.log(`Updated dependencies for ${packageName} in ${targetPackagePath}`);
|
|
104
|
+
} catch (error) {
|
|
105
|
+
console.warn(`Package ${packageName} not found or failed to update in ${targetPackagePath}:`, error);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
75
108
|
}
|
|
76
|
-
}
|
|
77
109
|
|
|
78
|
-
|
|
110
|
+
console.log('Dependencies from @common-stack packages have been updated.');
|
|
79
111
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
112
|
+
// Step 4: Run linting to apply Prettier
|
|
113
|
+
try {
|
|
114
|
+
await runLintStaged();
|
|
115
|
+
console.log('Prettier formatting applied.');
|
|
116
|
+
} catch (err) {
|
|
117
|
+
console.error('Failed to run Prettier:', err);
|
|
118
|
+
}
|
|
87
119
|
};
|
|
88
120
|
|
|
89
121
|
// Execute the function if this file is run directly
|
|
90
122
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
123
|
+
runUpdateDependencies().catch((err) => {
|
|
124
|
+
console.error('Failed to update dependencies:', err);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
});
|
|
95
127
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import glob from 'glob';
|
|
1
|
+
import { glob } from 'glob';
|
|
2
2
|
import { resolve, dirname, relative } from 'path';
|
|
3
3
|
import { readFileSync, writeFileSync } from 'fs';
|
|
4
4
|
import simpleGit from 'simple-git';
|
|
@@ -8,25 +8,27 @@ import { fileURLToPath } from 'url';
|
|
|
8
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
9
|
const __dirname = dirname(__filename);
|
|
10
10
|
|
|
11
|
+
const git = simpleGit();
|
|
12
|
+
const monorepoRoot = resolve(__dirname, '..');
|
|
13
|
+
|
|
11
14
|
// matching prettier format
|
|
12
15
|
const JSON_SPACING = 4;
|
|
13
16
|
const ADD_END_NEWLINE = true; // Set to true to add a newline at the end of the file
|
|
14
17
|
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
const findPackageJsonFiles = () => {
|
|
20
|
-
return new Promise((resolve, reject) => {
|
|
21
|
-
glob(
|
|
18
|
+
const findPackageJsonFiles = async () => {
|
|
19
|
+
try {
|
|
20
|
+
const findings = await glob(
|
|
22
21
|
`${monorepoRoot}/+(servers|portable-devices|packages|packages-modules)/**/package.json`,
|
|
23
22
|
{ onlyFiles: true, ignore: '**/node_modules/**' },
|
|
24
23
|
(err, files) => {
|
|
25
|
-
if (err) reject(
|
|
24
|
+
if (err) reject();
|
|
26
25
|
resolve(files);
|
|
27
26
|
},
|
|
28
27
|
);
|
|
29
|
-
|
|
28
|
+
return findings;
|
|
29
|
+
} catch (err) {
|
|
30
|
+
throw new Error(`Unable to scan directory: ${err}`);
|
|
31
|
+
}
|
|
30
32
|
};
|
|
31
33
|
|
|
32
34
|
const buildPackageMap = async () => {
|
|
@@ -1,26 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { glob } from 'glob';
|
|
2
|
+
import { resolve, join, dirname, relative } from 'path';
|
|
3
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
4
|
+
import simpleGit from 'simple-git';
|
|
5
|
+
import { runLintStaged } from './runLint.mjs';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
5
10
|
|
|
6
11
|
const git = simpleGit();
|
|
7
|
-
const monorepoRoot =
|
|
12
|
+
const monorepoRoot = resolve(__dirname, '..');
|
|
8
13
|
|
|
9
14
|
// matching prettier format
|
|
10
15
|
const JSON_SPACING = 4;
|
|
11
16
|
const ADD_END_NEWLINE = true; // Set to true to add a newline at the end of the file
|
|
12
17
|
|
|
13
|
-
const findPackageJsonFiles = () => {
|
|
14
|
-
|
|
15
|
-
glob(
|
|
18
|
+
const findPackageJsonFiles = async () => {
|
|
19
|
+
try {
|
|
20
|
+
const findings = await glob(
|
|
16
21
|
`${monorepoRoot}/+(servers|portable-devices|packages|packages-modules)/**/package.json`,
|
|
17
22
|
{ onlyFiles: true, ignore: '**/node_modules/**' },
|
|
18
23
|
(err, files) => {
|
|
19
|
-
if (err) reject(
|
|
24
|
+
if (err) reject();
|
|
20
25
|
resolve(files);
|
|
21
26
|
},
|
|
22
27
|
);
|
|
23
|
-
|
|
28
|
+
return findings;
|
|
29
|
+
} catch (err) {
|
|
30
|
+
throw new Error(`Unable to scan directory: ${err}`);
|
|
31
|
+
}
|
|
24
32
|
};
|
|
25
33
|
|
|
26
34
|
const buildPackageMap = async () => {
|
|
@@ -28,10 +36,10 @@ const buildPackageMap = async () => {
|
|
|
28
36
|
const packageMap = new Map();
|
|
29
37
|
|
|
30
38
|
packageJsonFiles.forEach((file) => {
|
|
31
|
-
const packageJson = JSON.parse(
|
|
39
|
+
const packageJson = JSON.parse(readFileSync(file, 'utf8'));
|
|
32
40
|
if (packageJson.name) {
|
|
33
41
|
packageMap.set(packageJson.name, {
|
|
34
|
-
path:
|
|
42
|
+
path: dirname(file),
|
|
35
43
|
version: packageJson.version,
|
|
36
44
|
});
|
|
37
45
|
}
|
|
@@ -46,11 +54,11 @@ const searchAndUpdate = (dependencies, filePath, obj, packageMap) => {
|
|
|
46
54
|
for (const key in dependencies) {
|
|
47
55
|
if (dependencies[key].startsWith('link:')) {
|
|
48
56
|
const relativeDepFolder = dependencies[key].split('link:')[1];
|
|
49
|
-
const dependencyFolder =
|
|
57
|
+
const dependencyFolder = join(dirname(filePath), relativeDepFolder);
|
|
50
58
|
|
|
51
59
|
try {
|
|
52
|
-
const packageJsonPath =
|
|
53
|
-
const packageJson = JSON.parse(
|
|
60
|
+
const packageJsonPath = join(dependencyFolder, 'package.json');
|
|
61
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
54
62
|
if (dependencies[key] !== packageJson.version) {
|
|
55
63
|
dependencies[key] = packageJson.version;
|
|
56
64
|
modified = true;
|
|
@@ -74,7 +82,7 @@ const searchAndUpdate = (dependencies, filePath, obj, packageMap) => {
|
|
|
74
82
|
if (ADD_END_NEWLINE) {
|
|
75
83
|
formattedJson += '\n';
|
|
76
84
|
}
|
|
77
|
-
|
|
85
|
+
writeFileSync(filePath, formattedJson, 'utf8');
|
|
78
86
|
}
|
|
79
87
|
|
|
80
88
|
return modified;
|
|
@@ -88,7 +96,7 @@ const updateDependencies = async () => {
|
|
|
88
96
|
packageJsonFiles.forEach((file) => {
|
|
89
97
|
if (!file.includes('node_modules')) {
|
|
90
98
|
try {
|
|
91
|
-
const data =
|
|
99
|
+
const data = readFileSync(file, 'utf8');
|
|
92
100
|
const obj = JSON.parse(data);
|
|
93
101
|
const { dependencies, peerDependencies, devDependencies } = obj;
|
|
94
102
|
|
|
@@ -106,16 +114,39 @@ const updateDependencies = async () => {
|
|
|
106
114
|
}
|
|
107
115
|
});
|
|
108
116
|
|
|
109
|
-
|
|
110
|
-
await git.add(modifiedFiles);
|
|
111
|
-
await git.commit('Updated packages to use correct versions and linked dependencies');
|
|
112
|
-
} else {
|
|
113
|
-
console.log('No changes detected');
|
|
114
|
-
}
|
|
117
|
+
return modifiedFiles;
|
|
115
118
|
};
|
|
116
119
|
|
|
117
120
|
updateDependencies()
|
|
118
|
-
.then(() => {
|
|
119
|
-
|
|
121
|
+
.then((modifiedFiles) => {
|
|
122
|
+
const addArray = modifiedFiles.map((file) => `./${relative(monorepoRoot, file)}`);
|
|
123
|
+
console.log('-- Modified Files --', modifiedFiles, addArray);
|
|
124
|
+
if (addArray.length === 0) {
|
|
125
|
+
console.log('No files to stage.');
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
return git.add(addArray).then(() => git.status()); // Stage files and then check status
|
|
120
129
|
})
|
|
121
|
-
.
|
|
130
|
+
.then((status) => {
|
|
131
|
+
if (status && status.modified.length) {
|
|
132
|
+
const fileArray = status.modified.filter((element) => element.includes('package.json'));
|
|
133
|
+
const addArray = fileArray.map((element) => `./${element}`);
|
|
134
|
+
return git
|
|
135
|
+
.add(addArray)
|
|
136
|
+
.then(runLintStaged)
|
|
137
|
+
.then(() => git.status()); // Run lint-staged after adding
|
|
138
|
+
} else {
|
|
139
|
+
console.log('No changes to lint or commit.');
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
})
|
|
143
|
+
.then((status) => {
|
|
144
|
+
if (status && status.modified.length > 0) {
|
|
145
|
+
return git.commit('Updated packages to use correct versions');
|
|
146
|
+
} else {
|
|
147
|
+
console.log('No changes after linting. Nothing to commit.');
|
|
148
|
+
}
|
|
149
|
+
})
|
|
150
|
+
.catch((err) => {
|
|
151
|
+
console.error(err);
|
|
152
|
+
});
|
|
@@ -5,31 +5,56 @@ import * as path from 'path';
|
|
|
5
5
|
import * as fs from 'fs';
|
|
6
6
|
import { AddFullstackGeneratorSchema } from './schema';
|
|
7
7
|
import { getValid, isValid } from '../../utils';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
updateJenkinsFile,
|
|
10
|
+
updatePackageJson,
|
|
11
|
+
backupLernaJson,
|
|
12
|
+
restoreLernaJson,
|
|
13
|
+
updateHtmlPlugin,
|
|
14
|
+
updateLicense,
|
|
15
|
+
backupFiles,
|
|
16
|
+
restoreFiles,
|
|
17
|
+
updateRepository,
|
|
18
|
+
} from './updates';
|
|
9
19
|
import {
|
|
10
20
|
generateBackend,
|
|
11
21
|
generateFrontend,
|
|
12
22
|
generateMoleculer,
|
|
13
|
-
|
|
14
|
-
generateClientPackage,
|
|
15
|
-
generateCorePackage,
|
|
16
|
-
generateServerPackage,
|
|
23
|
+
generatePackage,
|
|
17
24
|
} from '../../index';
|
|
18
25
|
|
|
19
26
|
export async function addFullstackGenerator(tree: Tree, options: AddFullstackGeneratorSchema) {
|
|
20
27
|
const basePath = options.path || '';
|
|
21
|
-
const
|
|
28
|
+
const projectName = getValid(options.name) ?? 'fullstack-pro';
|
|
29
|
+
const projectRoot = path.join(basePath, projectName);
|
|
22
30
|
|
|
23
31
|
console.log(`basePath: ${basePath}`);
|
|
24
32
|
|
|
33
|
+
// backup existing lerna values
|
|
34
|
+
const lernaBackup = backupLernaJson(tree, projectRoot);
|
|
35
|
+
|
|
36
|
+
// backup files codegen.yaml
|
|
37
|
+
const filesToBackup = ['codegen.yml', 'values-dev.yaml', 'values-prod.yaml', 'values-stage.yaml'];
|
|
38
|
+
const filesBackup = backupFiles(tree, projectRoot, filesToBackup);
|
|
39
|
+
|
|
25
40
|
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
26
41
|
|
|
27
42
|
// Update Jenkinsfile with dynamic values
|
|
28
|
-
|
|
29
|
-
updateJenkinsFile(jenkinsFilePath, options.name);
|
|
43
|
+
updateJenkinsFile(tree, projectRoot, projectName);
|
|
30
44
|
|
|
31
45
|
// Update package.json with the project name
|
|
32
|
-
updatePackageJson(tree, projectRoot,
|
|
46
|
+
updatePackageJson(tree, projectRoot, { name: projectName });
|
|
47
|
+
|
|
48
|
+
// Update tools/html-plugin-template
|
|
49
|
+
updateHtmlPlugin(tree, projectRoot);
|
|
50
|
+
|
|
51
|
+
if (lernaBackup) {
|
|
52
|
+
// When update the existing lerna.json, it shouldn't overwrite version, allowbranch, packages
|
|
53
|
+
restoreLernaJson(tree, projectRoot, lernaBackup);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Restore files backup to ignore update
|
|
57
|
+
restoreFiles(tree, projectRoot, filesBackup);
|
|
33
58
|
|
|
34
59
|
await formatFiles(tree);
|
|
35
60
|
|
|
@@ -37,9 +62,9 @@ export async function addFullstackGenerator(tree: Tree, options: AddFullstackGen
|
|
|
37
62
|
const configPath = path.resolve(basePath, getValid(options.config));
|
|
38
63
|
if (fs.existsSync(configPath)) {
|
|
39
64
|
try {
|
|
40
|
-
const
|
|
41
|
-
const configs = JSON.parse(content);
|
|
65
|
+
const configs = JSON.parse(fs.readFileSync(configPath).toString());
|
|
42
66
|
configs.parent = projectRoot;
|
|
67
|
+
configs.ns = projectName;
|
|
43
68
|
|
|
44
69
|
await processConfigs(tree, configs);
|
|
45
70
|
} catch (error) {
|
|
@@ -47,14 +72,17 @@ export async function addFullstackGenerator(tree: Tree, options: AddFullstackGen
|
|
|
47
72
|
}
|
|
48
73
|
}
|
|
49
74
|
}
|
|
50
|
-
}
|
|
51
75
|
|
|
76
|
+
// Update license from package.json
|
|
77
|
+
updateLicense(tree, projectRoot);
|
|
78
|
+
}
|
|
52
79
|
|
|
53
|
-
const generateServers = async (tree: Tree,
|
|
54
|
-
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
|
80
|
+
const generateServers = async (tree: Tree, options: any) => {
|
|
81
|
+
for (const [serverName, serverConfig] of Object.entries(options.servers)) {
|
|
55
82
|
const configs: any = serverConfig;
|
|
56
83
|
configs.name = serverName;
|
|
57
|
-
configs.directory = path.join(parent, 'servers');
|
|
84
|
+
configs.directory = path.join(options.parent, 'servers');
|
|
85
|
+
configs.ns = options.ns;
|
|
58
86
|
|
|
59
87
|
switch (configs?.type) {
|
|
60
88
|
case 'frontend':
|
|
@@ -72,38 +100,36 @@ const generateServers = async (tree: Tree, parent: string, servers: any) => {
|
|
|
72
100
|
}
|
|
73
101
|
};
|
|
74
102
|
|
|
75
|
-
const
|
|
76
|
-
for (const [
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
await generateBrowserPackage(tree, configs);
|
|
87
|
-
break;
|
|
88
|
-
case 'packages-client':
|
|
89
|
-
await generateClientPackage(tree, configs);
|
|
90
|
-
break;
|
|
91
|
-
case 'packages-server':
|
|
92
|
-
await generateServerPackage(tree, configs);
|
|
93
|
-
break;
|
|
94
|
-
default:
|
|
95
|
-
break;
|
|
103
|
+
const generateModules = async (tree: Tree, options: any) => {
|
|
104
|
+
for (const [moduleName, moduleConfig] of Object.entries(options.packages.modules)) {
|
|
105
|
+
for (const [packageName, packageConfig] of Object.entries(moduleConfig)) {
|
|
106
|
+
const configs: any = {
|
|
107
|
+
...(packageConfig as any),
|
|
108
|
+
name: moduleName,
|
|
109
|
+
directory: path.join(options.parent, 'packages'),
|
|
110
|
+
ns: options.ns,
|
|
111
|
+
type: packageName,
|
|
112
|
+
};
|
|
113
|
+
await generatePackage(tree, configs, false);
|
|
96
114
|
}
|
|
97
115
|
}
|
|
98
116
|
};
|
|
99
117
|
|
|
100
118
|
const processConfigs = async (tree: Tree, configs: any) => {
|
|
101
119
|
if (configs.servers) {
|
|
102
|
-
await generateServers(tree, configs
|
|
120
|
+
await generateServers(tree, configs);
|
|
103
121
|
}
|
|
104
122
|
|
|
105
123
|
if (configs.packages && configs.packages.modules) {
|
|
106
|
-
await
|
|
124
|
+
await generateModules(tree, configs);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (configs.license) {
|
|
128
|
+
updatePackageJson(tree, configs.parent, { license: getValid(configs.license) });
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (configs.repository) {
|
|
132
|
+
updateRepository(tree, configs.parent, configs.repository);
|
|
107
133
|
}
|
|
108
134
|
};
|
|
109
135
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
|
|
4
|
+
export function updateHtmlPlugin(tree: Tree, projectRoot: string) {
|
|
5
|
+
const filePath = path.join(projectRoot, 'tools', 'html-plugin-template.ejs');
|
|
6
|
+
if (tree.exists(filePath)) {
|
|
7
|
+
const contents = tree.read(filePath).toString();
|
|
8
|
+
const newContents = contents.replace('<@', '<%').replace('@>', '%>');
|
|
9
|
+
tree.write(filePath, newContents);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
|
|
4
|
+
export function backupFiles(tree: Tree, projectRoot: string, files: string[]) {
|
|
5
|
+
return files.map(file => {
|
|
6
|
+
const filePath = path.join(projectRoot, file);
|
|
7
|
+
const backup: any = { file };
|
|
8
|
+
if (tree.exists(filePath)) {
|
|
9
|
+
backup.content = tree.read(filePath).toString();
|
|
10
|
+
}
|
|
11
|
+
return backup;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function restoreFiles(tree: Tree, projectRoot: string, files: any[]) {
|
|
16
|
+
files.forEach((backup: any) => {
|
|
17
|
+
const filePath = path.join(projectRoot, backup.file);
|
|
18
|
+
if (backup.content) {
|
|
19
|
+
tree.write(filePath, backup.content);
|
|
20
|
+
console.log('Restored file', filePath);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
1
2
|
import fs from 'fs';
|
|
2
3
|
import * as path from 'path';
|
|
3
4
|
|
|
4
|
-
export function updateJenkinsFile(
|
|
5
|
+
export function updateJenkinsFile(tree: Tree, projectRoot: string, name: string) {
|
|
6
|
+
const filePath = path.join(projectRoot, 'Jenkinsfile');
|
|
5
7
|
const paramsToUpdate = {
|
|
6
8
|
BASE_NAMESPACE: name,
|
|
7
9
|
CONNECTION_ID: name,
|
|
@@ -10,8 +12,8 @@ export function updateJenkinsFile(filePath: string, name: string) {
|
|
|
10
12
|
};
|
|
11
13
|
|
|
12
14
|
let jenkinsFileContent = '';
|
|
13
|
-
if (
|
|
14
|
-
jenkinsFileContent =
|
|
15
|
+
if (tree.exists(filePath)) {
|
|
16
|
+
jenkinsFileContent = tree.read(filePath).toString();
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
let labelExists = false;
|
|
@@ -42,6 +44,6 @@ export function updateJenkinsFile(filePath: string, name: string) {
|
|
|
42
44
|
|
|
43
45
|
// Only write back to the file if we have made changes
|
|
44
46
|
if (!labelExists || Object.keys(paramsToUpdate).some(param => !updatedContent.includes(`string(name: '${param}'`))) {
|
|
45
|
-
|
|
47
|
+
tree.write(filePath, updatedContent);
|
|
46
48
|
}
|
|
47
49
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Tree, updateJson } from '@nx/devkit';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import { get, set } from 'lodash';
|
|
5
|
+
|
|
6
|
+
const params = ['version', 'command:publish:allowBranch', 'command:version:allowBranch', 'packages'];
|
|
7
|
+
|
|
8
|
+
export function backupLernaJson(tree: Tree, projectRoot: string) {
|
|
9
|
+
const lernaJsonPath = path.join(projectRoot, 'lerna.json');
|
|
10
|
+
|
|
11
|
+
if (tree.exists(lernaJsonPath)) {
|
|
12
|
+
const lernaJson = JSON.parse(tree.read(lernaJsonPath).toString());
|
|
13
|
+
const backup = {};
|
|
14
|
+
let exists = false;
|
|
15
|
+
for (const param of params) {
|
|
16
|
+
if (param.includes(':')) {
|
|
17
|
+
const paramValue = get(lernaJson, param.split(':'));
|
|
18
|
+
if (paramValue) {
|
|
19
|
+
backup[param] = paramValue;
|
|
20
|
+
exists = true;
|
|
21
|
+
}
|
|
22
|
+
} else {
|
|
23
|
+
if (lernaJson[param]) {
|
|
24
|
+
backup[param] = lernaJson[param];
|
|
25
|
+
exists = true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (exists) {
|
|
31
|
+
return backup;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function restoreLernaJson(tree: Tree, projectRoot: string, backup: any) {
|
|
39
|
+
const lernaJsonPath = path.join(projectRoot, 'lerna.json');
|
|
40
|
+
if (backup && fs.existsSync(lernaJsonPath)) {
|
|
41
|
+
updateJson(tree, lernaJsonPath, (lernaJson: any) => {
|
|
42
|
+
Object.keys(backup).forEach(param => {
|
|
43
|
+
if (param.includes(':')) {
|
|
44
|
+
lernaJson = set(lernaJson, param.split(':'), backup[param]);
|
|
45
|
+
} else {
|
|
46
|
+
lernaJson[param] = backup[param];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return lernaJson;
|
|
50
|
+
});
|
|
51
|
+
console.log('Restored old values in lerna.json');
|
|
52
|
+
}
|
|
53
|
+
}
|