@common-stack/generate-plugin 6.0.6-alpha.8 → 6.0.6-alpha.80

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 (234) hide show
  1. package/CHANGELOG.md +266 -0
  2. package/README.md +157 -211
  3. package/cde-config.json +43 -42
  4. package/docker-releases/backend/package.json +136 -0
  5. package/docker-releases/frontend/antd/package.json +122 -0
  6. package/generators.json +5 -0
  7. package/lib/{constants/index.cjs → common/constants.cjs} +1 -1
  8. package/lib/common/constants.cjs.map +1 -0
  9. package/lib/{constants/index.mjs → common/constants.mjs} +1 -1
  10. package/lib/common/constants.mjs.map +1 -0
  11. package/lib/generators/add-backend/files/package.json +5 -4
  12. package/lib/generators/add-backend/files/src/api/root-schema.graphqls +1 -7
  13. package/lib/generators/add-backend/generator.cjs +12 -3
  14. package/lib/generators/add-backend/generator.cjs.map +1 -1
  15. package/lib/generators/add-backend/generator.mjs +12 -3
  16. package/lib/generators/add-backend/generator.mjs.map +1 -1
  17. package/lib/generators/add-backend/schema.json +6 -1
  18. package/lib/generators/add-frontend/frameworks/antui/root.tsx.template +2 -2
  19. package/lib/generators/add-frontend/frameworks/chakraui/root.tsx.template +4 -3
  20. package/lib/generators/add-frontend/frameworks/tailwindui/root.tsx.template +2 -2
  21. package/lib/generators/add-frontend/generator.cjs +17 -13
  22. package/lib/generators/add-frontend/generator.cjs.map +1 -1
  23. package/lib/generators/add-frontend/generator.mjs +12 -8
  24. package/lib/generators/add-frontend/generator.mjs.map +1 -1
  25. package/lib/generators/add-frontend/schema.json +8 -3
  26. package/lib/generators/add-frontend/templates/config.json +2 -47
  27. package/lib/generators/add-frontend/templates/package.json +5 -8
  28. package/lib/generators/add-frontend/templates/tools/checkQueryUsage.mjs +192 -0
  29. package/lib/generators/add-frontend/templates/tools/mergeConfig.js +5 -2
  30. package/lib/generators/add-frontend/templates/vite.config.ts.template +53 -32
  31. package/lib/generators/add-fullstack/files/Jenkinsfile +7 -7
  32. package/lib/generators/add-fullstack/files/package.json +19 -14
  33. package/lib/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
  34. package/lib/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -63
  35. package/lib/generators/add-fullstack/files/tools/update-dependency-link.mjs +12 -10
  36. package/lib/generators/add-fullstack/files/tools/{update-dependency-version.js → update-dependency-version.mjs} +57 -26
  37. package/lib/generators/add-fullstack/generator.cjs +39 -30
  38. package/lib/generators/add-fullstack/generator.cjs.map +1 -1
  39. package/lib/generators/add-fullstack/generator.mjs +39 -30
  40. package/lib/generators/add-fullstack/generator.mjs.map +1 -1
  41. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.cjs +8 -0
  42. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.cjs.map +1 -0
  43. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.d.ts +2 -0
  44. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.mjs +8 -0
  45. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.mjs.map +1 -0
  46. package/lib/generators/add-fullstack/updates/ignoreUpdate.cjs +19 -0
  47. package/lib/generators/add-fullstack/updates/ignoreUpdate.cjs.map +1 -0
  48. package/lib/generators/add-fullstack/updates/ignoreUpdate.d.ts +3 -0
  49. package/lib/generators/add-fullstack/updates/ignoreUpdate.mjs +19 -0
  50. package/lib/generators/add-fullstack/updates/ignoreUpdate.mjs.map +1 -0
  51. package/lib/generators/add-fullstack/updates/index.d.ts +4 -0
  52. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs +5 -4
  53. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs.map +1 -1
  54. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.d.ts +2 -1
  55. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs +5 -4
  56. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs.map +1 -1
  57. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.cjs +45 -0
  58. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.cjs.map +1 -0
  59. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.d.ts +3 -0
  60. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.mjs +45 -0
  61. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.mjs.map +1 -0
  62. package/lib/generators/add-fullstack/updates/licenseUpdate.cjs +19 -0
  63. package/lib/generators/add-fullstack/updates/licenseUpdate.cjs.map +1 -0
  64. package/lib/generators/add-fullstack/updates/licenseUpdate.d.ts +2 -0
  65. package/lib/generators/add-fullstack/updates/licenseUpdate.mjs +19 -0
  66. package/lib/generators/add-fullstack/updates/licenseUpdate.mjs.map +1 -0
  67. package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs +38 -4
  68. package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs.map +1 -1
  69. package/lib/generators/add-fullstack/updates/packageJsonUpdate.d.ts +2 -1
  70. package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs +38 -4
  71. package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs.map +1 -1
  72. package/lib/generators/add-moleculer/files/charts/chart/Chart.yaml +1 -1
  73. package/lib/generators/add-moleculer/files/package.json +5 -5
  74. package/lib/generators/add-moleculer/generator.cjs +7 -4
  75. package/lib/generators/add-moleculer/generator.cjs.map +1 -1
  76. package/lib/generators/add-moleculer/generator.mjs +7 -4
  77. package/lib/generators/add-moleculer/generator.mjs.map +1 -1
  78. package/lib/generators/add-moleculer/schema.json +9 -4
  79. package/lib/generators/add-package/generator.cjs +50 -0
  80. package/lib/generators/add-package/generator.cjs.map +1 -0
  81. package/lib/generators/add-package/generator.d.ts +5 -0
  82. package/lib/generators/add-package/generator.mjs +50 -0
  83. package/lib/generators/add-package/generator.mjs.map +1 -0
  84. package/lib/generators/add-package/schema.json +29 -0
  85. package/lib/index.cjs +1 -1
  86. package/lib/index.d.ts +1 -4
  87. package/lib/index.mjs +1 -1
  88. package/lib/utils/filesConfig.cjs +76 -0
  89. package/lib/utils/filesConfig.cjs.map +1 -0
  90. package/lib/utils/filesConfig.d.ts +2 -0
  91. package/lib/utils/filesConfig.mjs +76 -0
  92. package/lib/utils/filesConfig.mjs.map +1 -0
  93. package/lib/utils/index.cjs +28 -2
  94. package/lib/utils/index.cjs.map +1 -1
  95. package/lib/utils/index.d.ts +3 -0
  96. package/lib/utils/index.mjs +28 -2
  97. package/lib/utils/index.mjs.map +1 -1
  98. package/lib/utils/syncConfig.cjs +116 -0
  99. package/lib/utils/syncConfig.cjs.map +1 -0
  100. package/lib/utils/syncConfig.d.ts +9 -0
  101. package/lib/utils/syncConfig.mjs +116 -0
  102. package/lib/utils/syncConfig.mjs.map +1 -0
  103. package/package.json +3 -4
  104. package/rollup.config.mjs +2 -8
  105. package/src/generators/add-backend/generator.ts +14 -3
  106. package/src/generators/add-backend/schema.d.ts +1 -0
  107. package/src/generators/add-backend/schema.json +6 -1
  108. package/src/generators/add-frontend/frameworks/antui/root.tsx.template +2 -2
  109. package/src/generators/add-frontend/frameworks/chakraui/root.tsx.template +4 -3
  110. package/src/generators/add-frontend/frameworks/tailwindui/root.tsx.template +2 -2
  111. package/src/generators/add-frontend/generator.ts +12 -8
  112. package/src/generators/add-frontend/schema.d.ts +1 -0
  113. package/src/generators/add-frontend/schema.json +8 -3
  114. package/src/generators/add-fullstack/files/Jenkinsfile +7 -7
  115. package/src/generators/add-fullstack/files/LICENSE-IST +39 -0
  116. package/src/generators/add-fullstack/files/package.json +20 -14
  117. package/src/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
  118. package/src/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -63
  119. package/src/generators/add-fullstack/files/tools/update-dependency-link.mjs +12 -10
  120. package/src/generators/add-fullstack/files/tools/{update-dependency-version.js → update-dependency-version.mjs} +57 -26
  121. package/src/generators/add-fullstack/generator.ts +64 -38
  122. package/src/generators/add-fullstack/updates/htmlPluginUpdate.ts +11 -0
  123. package/src/generators/add-fullstack/updates/ignoreUpdate.ts +23 -0
  124. package/src/generators/add-fullstack/updates/index.ts +4 -0
  125. package/src/generators/add-fullstack/updates/jenkinsfileUpdate.ts +6 -4
  126. package/src/generators/add-fullstack/updates/lernaJsonUpdate.ts +53 -0
  127. package/src/generators/add-fullstack/updates/licenseUpdate.ts +23 -0
  128. package/src/generators/add-fullstack/updates/packageJsonUpdate.ts +45 -4
  129. package/src/generators/add-moleculer/files/charts/chart/Chart.yaml +1 -1
  130. package/src/generators/add-moleculer/files/package.json +5 -5
  131. package/src/generators/add-moleculer/generator.spec.ts +1 -1
  132. package/src/generators/add-moleculer/generator.ts +8 -3
  133. package/src/generators/add-moleculer/schema.d.ts +2 -1
  134. package/src/generators/add-moleculer/schema.json +9 -4
  135. package/src/generators/{add-core-package → add-package}/generator.spec.ts +5 -5
  136. package/src/generators/add-package/generator.ts +62 -0
  137. package/src/generators/add-package/schema.d.ts +6 -0
  138. package/src/generators/add-package/schema.json +29 -0
  139. package/src/index.ts +1 -4
  140. package/src/utils/filesConfig.ts +84 -0
  141. package/src/utils/index.ts +31 -0
  142. package/src/utils/syncConfig.ts +128 -0
  143. package/lib/constants/index.cjs.map +0 -1
  144. package/lib/constants/index.mjs.map +0 -1
  145. package/lib/generators/add-browser-package/files/jest.config.js +0 -8
  146. package/lib/generators/add-browser-package/files/package.json +0 -49
  147. package/lib/generators/add-browser-package/files/rollup.config.mjs +0 -29
  148. package/lib/generators/add-browser-package/files/src/index.ts.template +0 -4
  149. package/lib/generators/add-browser-package/files/src/interfaces/index.ts.template +0 -1
  150. package/lib/generators/add-browser-package/files/src/interfaces/interfaces.ts.template +0 -1
  151. package/lib/generators/add-browser-package/files/src/module.tsx.template +0 -7
  152. package/lib/generators/add-browser-package/files/tsconfig.json +0 -28
  153. package/lib/generators/add-browser-package/files/webpack.config.js +0 -71
  154. package/lib/generators/add-browser-package/generator.cjs +0 -17
  155. package/lib/generators/add-browser-package/generator.cjs.map +0 -1
  156. package/lib/generators/add-browser-package/generator.d.ts +0 -5
  157. package/lib/generators/add-browser-package/generator.mjs +0 -17
  158. package/lib/generators/add-browser-package/generator.mjs.map +0 -1
  159. package/lib/generators/add-browser-package/schema.json +0 -19
  160. package/lib/generators/add-client-package/files/CHANGELOG.md +0 -807
  161. package/lib/generators/add-client-package/files/jest.config.js +0 -13
  162. package/lib/generators/add-client-package/files/package.json +0 -30
  163. package/lib/generators/add-client-package/files/rollup.config.mjs +0 -29
  164. package/lib/generators/add-client-package/files/src/components/index.tsx.template +0 -1
  165. package/lib/generators/add-client-package/files/src/index.ts.template +0 -1
  166. package/lib/generators/add-client-package/files/tsconfig.json +0 -27
  167. package/lib/generators/add-client-package/files/webpack.config.js +0 -72
  168. package/lib/generators/add-client-package/generator.cjs +0 -17
  169. package/lib/generators/add-client-package/generator.cjs.map +0 -1
  170. package/lib/generators/add-client-package/generator.d.ts +0 -5
  171. package/lib/generators/add-client-package/generator.mjs +0 -17
  172. package/lib/generators/add-client-package/generator.mjs.map +0 -1
  173. package/lib/generators/add-client-package/generator.spec.d.ts +0 -1
  174. package/lib/generators/add-client-package/schema.json +0 -19
  175. package/lib/generators/add-core-package/files/jest.config.js +0 -3
  176. package/lib/generators/add-core-package/files/package.json +0 -30
  177. package/lib/generators/add-core-package/files/rollup.config.mjs +0 -65
  178. package/lib/generators/add-core-package/files/src/constants/index.ts.template +0 -1
  179. package/lib/generators/add-core-package/files/src/constants/types.ts.template +0 -3
  180. package/lib/generators/add-core-package/files/src/index.ts.template +0 -2
  181. package/lib/generators/add-core-package/files/src/types/index.ts.template +0 -1
  182. package/lib/generators/add-core-package/files/src/types/types.ts.template +0 -17
  183. package/lib/generators/add-core-package/files/tsconfig.json +0 -22
  184. package/lib/generators/add-core-package/files/webpack.config.js +0 -53
  185. package/lib/generators/add-core-package/generator.cjs +0 -17
  186. package/lib/generators/add-core-package/generator.cjs.map +0 -1
  187. package/lib/generators/add-core-package/generator.d.ts +0 -5
  188. package/lib/generators/add-core-package/generator.mjs +0 -17
  189. package/lib/generators/add-core-package/generator.mjs.map +0 -1
  190. package/lib/generators/add-core-package/generator.spec.d.ts +0 -1
  191. package/lib/generators/add-core-package/schema.json +0 -19
  192. package/lib/generators/add-fullstack/files/CHANGELOG.md +0 -20
  193. package/lib/generators/add-server-package/files/CHANGELOG.md +0 -2599
  194. package/lib/generators/add-server-package/files/LICENSE +0 -674
  195. package/lib/generators/add-server-package/files/jest.config.js +0 -32
  196. package/lib/generators/add-server-package/files/package.json +0 -78
  197. package/lib/generators/add-server-package/files/rollup.config.mjs +0 -30
  198. package/lib/generators/add-server-package/files/src/constants/constants.ts.template +0 -62
  199. package/lib/generators/add-server-package/files/src/constants/index.ts.template +0 -1
  200. package/lib/generators/add-server-package/files/src/constants/types.ts.template +0 -21
  201. package/lib/generators/add-server-package/files/src/index.ts.template +0 -6
  202. package/lib/generators/add-server-package/files/src/module.ts.template +0 -6
  203. package/lib/generators/add-server-package/files/tsconfig.json +0 -27
  204. package/lib/generators/add-server-package/generator.cjs +0 -17
  205. package/lib/generators/add-server-package/generator.cjs.map +0 -1
  206. package/lib/generators/add-server-package/generator.d.ts +0 -5
  207. package/lib/generators/add-server-package/generator.mjs +0 -17
  208. package/lib/generators/add-server-package/generator.mjs.map +0 -1
  209. package/lib/generators/add-server-package/generator.spec.d.ts +0 -1
  210. package/lib/generators/add-server-package/schema.json +0 -19
  211. package/src/generators/add-browser-package/generator.spec.ts +0 -20
  212. package/src/generators/add-browser-package/generator.ts +0 -24
  213. package/src/generators/add-browser-package/schema.d.ts +0 -4
  214. package/src/generators/add-browser-package/schema.json +0 -19
  215. package/src/generators/add-client-package/generator.spec.ts +0 -20
  216. package/src/generators/add-client-package/generator.ts +0 -24
  217. package/src/generators/add-client-package/schema.d.ts +0 -4
  218. package/src/generators/add-client-package/schema.json +0 -19
  219. package/src/generators/add-core-package/generator.ts +0 -24
  220. package/src/generators/add-core-package/schema.d.ts +0 -4
  221. package/src/generators/add-core-package/schema.json +0 -19
  222. package/src/generators/add-fullstack/files/CHANGELOG.md +0 -28
  223. package/src/generators/add-server-package/generator.spec.ts +0 -20
  224. package/src/generators/add-server-package/generator.ts +0 -24
  225. package/src/generators/add-server-package/schema.d.ts +0 -4
  226. package/src/generators/add-server-package/schema.json +0 -19
  227. /package/lib/{constants/index.d.ts → common/constants.d.ts} +0 -0
  228. /package/lib/generators/{add-browser-package/files/LICENSE → add-fullstack/files/LICENSE-GNU} +0 -0
  229. /package/lib/generators/{add-core-package/files/LICENSE → add-fullstack/files/LICENSE-IST} +0 -0
  230. /package/lib/generators/add-fullstack/files/{LICENSE → LICENSE-MIT} +0 -0
  231. /package/lib/generators/{add-browser-package → add-package}/generator.spec.d.ts +0 -0
  232. /package/src/{constants/index.ts → common/constants.ts} +0 -0
  233. /package/{lib/generators/add-client-package/files/LICENSE → src/generators/add-fullstack/files/LICENSE-GNU} +0 -0
  234. /package/src/generators/add-fullstack/files/{LICENSE → LICENSE-MIT} +0 -0
@@ -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 { updateJenkinsFile, updatePackageJson } from './updates';
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
- generateBrowserPackage,
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 projectRoot = path.join(basePath, getValid(options.name) ?? 'fullstack-pro');
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
- const jenkinsFilePath = path.join(projectRoot, 'Jenkinsfile');
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, getValid(options.name));
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 content = String(fs.readFileSync(configPath));
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, parent: string, servers: any) => {
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 generatePackages = async (tree: Tree, parent: string, packages: any) => {
76
- for (const [packageName, packageConfig] of Object.entries(packages)) {
77
- const configs: any = packageConfig;
78
- configs.name = packageName;
79
- configs.directory = path.join(parent, 'packages');
80
-
81
- switch ((packageConfig as any)?.type) {
82
- case 'packages-core':
83
- await generateCorePackage(tree, configs);
84
- break;
85
- case 'packages-browser':
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.parent, configs.servers);
120
+ await generateServers(tree, configs);
103
121
  }
104
122
 
105
123
  if (configs.packages && configs.packages.modules) {
106
- await generatePackages(tree, configs.parent, configs.packages.modules);
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,2 +1,6 @@
1
1
  export * from './jenkinsfileUpdate';
2
2
  export * from './packageJsonUpdate';
3
+ export * from './lernaJsonUpdate';
4
+ export * from './htmlPluginUpdate';
5
+ export * from './licenseUpdate';
6
+ export * from './ignoreUpdate';
@@ -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(filePath: string, name: string) {
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 (fs.existsSync(filePath)) {
14
- jenkinsFileContent = fs.readFileSync(filePath, 'utf-8');
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
- fs.writeFileSync(filePath, updatedContent, 'utf-8');
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
+ }
@@ -0,0 +1,23 @@
1
+ import { Tree, readJson } from '@nx/devkit';
2
+ import * as path from 'path';
3
+
4
+ export function updateLicense(tree: Tree, projectRoot: string) {
5
+ const files = ['LICENSE-GNU', 'LICENSE-IST', 'LICENSE-MIT'];
6
+ const packageJsonPath = path.join(projectRoot, 'package.json');
7
+ const packageJson = readJson(tree, packageJsonPath);
8
+
9
+ if (packageJson.license) {
10
+ const fileName = `LICENSE-${packageJson.license.toUpperCase()}`;
11
+
12
+ files.forEach(file => {
13
+ const filePath = path.join(projectRoot, file);
14
+ if (file === fileName) {
15
+ if (tree.exists(filePath)) {
16
+ tree.rename(filePath, path.join(projectRoot, 'LICENSE'));
17
+ }
18
+ } else {
19
+ tree.delete(filePath);
20
+ }
21
+ });
22
+ }
23
+ }
@@ -1,11 +1,52 @@
1
1
  import { Tree, updateJson } from '@nx/devkit';
2
2
  import * as path from 'path';
3
+ import { convertHttpsToSsh } from '../../../utils';
3
4
 
4
- export function updatePackageJson(tree: Tree, projectRoot: string, name: string) {
5
+ export function updatePackageJson(tree: Tree, projectRoot: string, json: any) {
5
6
  const packageJsonPath = path.join(projectRoot, 'package.json');
6
- updateJson(tree, packageJsonPath, (packageJson) => {
7
- packageJson['name'] = name;
8
- // You can add more custom logic here if needed
7
+
8
+ updateJson(tree, packageJsonPath, (packageJson: any) => {
9
+ Object.entries(json).reduce((acc, [key, value]) => {
10
+ acc[key] = value;
11
+ return acc;
12
+ }, packageJson);
9
13
  return packageJson;
10
14
  });
11
15
  }
16
+
17
+ export function updateRepository(tree: Tree, projectRoot: string, repository: string) {
18
+ if (repository.startsWith('http://')) {
19
+ repository = repository.replace('http://', 'https://');
20
+ }
21
+
22
+ // update in package.json
23
+ updatePackageJson(tree, projectRoot, {
24
+ "homepage": `${repository}#readme`,
25
+ "bugs": {
26
+ "url": `${repository}/issues`
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": `git+${repository}.git`
31
+ },
32
+ });
33
+
34
+ // update in Jenkinsfile
35
+ const filePath = path.join(projectRoot, 'Jenkinsfile');
36
+
37
+ if (tree.exists(filePath)) {
38
+ const jenkinsFileContent = tree.read(filePath).toString();
39
+ let paramExists = false;
40
+ const updatedContent = jenkinsFileContent.split('\n').map(line => {
41
+ if (line.includes(`string(name: 'REPOSITORY_SSH_URL'`)) {
42
+ paramExists = true;
43
+ return line.replace(/defaultValue: '.*'/, `defaultValue: '${convertHttpsToSsh(repository)}'`);
44
+ }
45
+ return line;
46
+ }).join('\n');
47
+
48
+ if (paramExists) {
49
+ tree.write(filePath, updatedContent);
50
+ }
51
+ }
52
+ }
@@ -5,5 +5,5 @@ version: v0.1.3
5
5
 
6
6
  dependencies:
7
7
  - name: cdebase
8
- version: "v0.1.9"
8
+ version: "v0.1.13"
9
9
  repository: "https://cdmbase.github.io/helm-chart/helm-packages"
@@ -25,11 +25,11 @@
25
25
  "watch": "npm run start:dev"
26
26
  },
27
27
  "dependencies": {
28
- "@common-stack/client-core": "6.0.6-alpha.5",
29
- "@common-stack/core": "6.0.6-alpha.5",
30
- "@common-stack/server-core": "6.0.6-alpha.5",
31
- "@common-stack/server-stack": "6.0.6-alpha.5",
32
- "@common-stack/store-mongo": "6.0.6-alpha.5",
28
+ "@common-stack/client-core": "6.0.6-alpha.73",
29
+ "@common-stack/core": "6.0.6-alpha.50",
30
+ "@common-stack/server-core": "6.0.6-alpha.72",
31
+ "@common-stack/server-stack": "6.0.6-alpha.73",
32
+ "@common-stack/store-mongo": "6.0.6-alpha.50",
33
33
  "@container-stack/mailing-api": "5.2.1-alpha.1",
34
34
  "helmet": "^3.21.2",
35
35
  "react": "18.2.0",
@@ -6,7 +6,7 @@ import { AddMoleculerGeneratorSchema } from './schema';
6
6
 
7
7
  describe('add-moleculer generator', () => {
8
8
  let tree: Tree;
9
- const options: AddMoleculerGeneratorSchema = { name: 'test', directory: 'lib' };
9
+ const options: AddMoleculerGeneratorSchema = { ns: 'sample', name: 'test', directory: 'lib' };
10
10
 
11
11
  beforeEach(() => {
12
12
  tree = createTreeWithEmptyWorkspace();
@@ -3,18 +3,23 @@ import * as path from 'path';
3
3
  import { AddMoleculerGeneratorSchema } from './schema';
4
4
  import { isValid, getValid } from '../../utils';
5
5
 
6
+ const DEFAULT_SERVER_NAME = 'moleculer-server';
7
+
6
8
  export async function addMoleculerGenerator(tree: Tree, options: AddMoleculerGeneratorSchema) {
7
- const configs: any = {...options};
9
+ const projectName = isValid(options.name) ? `${getValid(options.name)}-server` : DEFAULT_SERVER_NAME;
10
+ const configs: any = {...options, name: projectName};
11
+
8
12
  return await generateMoleculer(tree, configs);
9
13
  }
10
14
 
11
15
  export const generateMoleculer = async (tree: Tree, options: any) => {
12
- const projectName = getValid(options.name) ?? 'moleculer-server';
16
+ let projectName = getValid(options.name) ?? DEFAULT_SERVER_NAME;
13
17
  const projectRoot = isValid(options.directory) ? `${getValid(options.directory)}/${projectName}` : projectName;
18
+ projectName = isValid(options.ns) ? `${getValid(options.ns)}-${projectName}` : projectName;
14
19
 
15
20
  generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
16
21
  updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
17
- packageJson['name'] = options.name;
22
+ packageJson['name'] = projectName;
18
23
  return packageJson;
19
24
  });
20
25
 
@@ -1,4 +1,5 @@
1
1
  export interface AddMoleculerGeneratorSchema {
2
- name: string;
2
+ ns: string;
3
3
  directory: string;
4
+ name: string;
4
5
  }
@@ -4,16 +4,21 @@
4
4
  "title": "",
5
5
  "type": "object",
6
6
  "properties": {
7
- "name": {
7
+ "ns": {
8
8
  "type": "string",
9
- "description": "",
10
- "x-prompt": "What name would you like to use?"
9
+ "description": "The project namespace",
10
+ "x-prompt": "What namespace would you like to use?"
11
11
  },
12
12
  "directory": {
13
13
  "type": "string",
14
14
  "description": "",
15
15
  "x-prompt": "What directory would you like to create in?"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "description": "The module name",
20
+ "x-prompt": "What name would you like to use for this moleculer server module?"
16
21
  }
17
22
  },
18
- "required": ["name", "directory"]
23
+ "required": ["ns", "directory", "name"]
19
24
  }
@@ -1,19 +1,19 @@
1
1
  import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
2
2
  import { Tree, readProjectConfiguration } from '@nx/devkit';
3
3
 
4
- import { addCorePackageGenerator } from './generator';
5
- import { AddCorePackageGeneratorSchema } from './schema';
4
+ import { addPackageGenerator } from './generator';
5
+ import { AddPackageGeneratorSchema } from './schema';
6
6
 
7
- describe('add-core-package generator', () => {
7
+ describe('add-package generator', () => {
8
8
  let tree: Tree;
9
- const options: AddCorePackageGeneratorSchema = { name: 'test', directory: 'lib' };
9
+ const options: AddPackageGeneratorSchema = { name: 'test', directory: 'lib' };
10
10
 
11
11
  beforeEach(() => {
12
12
  tree = createTreeWithEmptyWorkspace();
13
13
  });
14
14
 
15
15
  it('should run successfully', async () => {
16
- await addCorePackageGenerator(tree, options);
16
+ await addPackageGenerator(tree, options);
17
17
  const config = readProjectConfiguration(tree, 'test');
18
18
  expect(config).toBeDefined();
19
19
  });
@@ -0,0 +1,62 @@
1
+ import { addProjectConfiguration, formatFiles, generateFiles, Tree, updateJson } from '@nx/devkit';
2
+ import * as path from 'path';
3
+ import { AddPackageGeneratorSchema } from './schema';
4
+ import { isValid, getValid } from '../../utils';
5
+ import { processFiles } from '../../utils/filesConfig';
6
+ import { syncConfig } from '../../utils/syncConfig';
7
+
8
+ export async function addPackageGenerator(tree: Tree, options: AddPackageGeneratorSchema) {
9
+ if (!isValid(options.name)) {
10
+ console.error('Package name can not be empty, please try again!');
11
+ return;
12
+ }
13
+
14
+ const packages = ['core', 'client', 'browser', 'server'];
15
+ const packageType = getValid(options.packageType);
16
+ if (packageType && packageType.toLocaleLowerCase() !== 'all') {
17
+ if(!packages.includes(packageType)) {
18
+ console.error('Package type is not available! please choice in Client|Browser|Core|Server|All');
19
+ return;
20
+ }
21
+ generatePackage(tree, {...options, type: packageType.toLocaleLowerCase()}, true);
22
+ } else {
23
+ packages.forEach(pkg => {
24
+ const configs: any = {...options, type: pkg};
25
+ generatePackage(tree, configs, true);
26
+ });
27
+ }
28
+
29
+ await formatFiles(tree);
30
+ }
31
+
32
+ // export const generateModule = async (tree: Tree, options: any) => {
33
+ // for (const [packageName, packageConfig] of Object.entries(options)) {
34
+ // const configs: any = {...options, ...(packageConfig as any)};
35
+ // configs.type = packageName;
36
+ // generatePackage(tree, configs, false);
37
+ // }
38
+
39
+ // await formatFiles(tree);
40
+ // }
41
+
42
+ export const generatePackage = async (tree: Tree, options: any, cmdLine: boolean = false) => {
43
+ const basePath = `${options.name}/${options.type}`;
44
+ const packageRoot = isValid(options.directory) ? `${getValid(options.directory)}/${basePath}` : basePath;
45
+ const baseName = isValid(options.name) ? `${options.name}-${options.type}` : options.type;
46
+ const packageName = isValid(options.ns) ? `${getValid(options.ns)}-${baseName}` : baseName;
47
+
48
+ generateFiles(tree, path.join(__dirname, 'files', options.type), packageRoot, options);
49
+ updateJson(tree, `${packageRoot}/package.json`, (packageJson) => {
50
+ packageJson['name'] = packageName;
51
+ return packageJson;
52
+ });
53
+
54
+ if (cmdLine) {
55
+ syncConfig(tree, packageRoot, options);
56
+ } else {
57
+ processFiles(tree, packageRoot, options);
58
+ await formatFiles(tree);
59
+ }
60
+ }
61
+
62
+ export default addPackageGenerator;
@@ -0,0 +1,6 @@
1
+ export interface AddPackageGeneratorSchema {
2
+ name: string;
3
+ directory: string;
4
+ ns?: string;
5
+ packageType?: string;
6
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "AddPackage",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "ns": {
8
+ "type": "string",
9
+ "description": "The project namespace(optional)",
10
+ "x-prompt": "What namespace would you like to use?(optional)"
11
+ },
12
+ "name": {
13
+ "type": "string",
14
+ "description": "",
15
+ "x-prompt": "What name would you like to use to this module?"
16
+ },
17
+ "directory": {
18
+ "type": "string",
19
+ "description": "",
20
+ "x-prompt": "What directory would you like to create in?"
21
+ },
22
+ "packageType": {
23
+ "type": "string",
24
+ "description": "",
25
+ "x-prompt": "What type of package would you like to create in Client|Browser|Core|Server|All?(default: All)"
26
+ }
27
+ },
28
+ "required": ["name", "directory"]
29
+ }
package/src/index.ts CHANGED
@@ -2,9 +2,6 @@ export * from './generators/add-frontend/generator';
2
2
  export * from './generators/add-backend/generator';
3
3
  export * from './generators/add-fullstack/generator';
4
4
  export * from './generators/add-moleculer/generator';
5
- export * from './generators/add-browser-package/generator';
6
- export * from './generators/add-client-package/generator';
7
- export * from './generators/add-core-package/generator';
8
- export * from './generators/add-server-package/generator';
5
+ export * from './generators/add-package/generator';
9
6
  export { default as updateDeployVersion } from './executors/update-deploy-version/executor';
10
7
  export { default as sortPackageJson } from './executors/sort-package-json/executor';