@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.
Files changed (232) hide show
  1. package/CHANGELOG.md +234 -0
  2. package/README.md +157 -211
  3. package/cde-config.json +43 -42
  4. package/generators.json +5 -0
  5. package/lib/{constants/index.cjs → common/constants.cjs} +1 -1
  6. package/lib/common/constants.cjs.map +1 -0
  7. package/lib/{constants/index.mjs → common/constants.mjs} +1 -1
  8. package/lib/common/constants.mjs.map +1 -0
  9. package/lib/generators/add-backend/files/package.json +5 -4
  10. package/lib/generators/add-backend/files/src/api/root-schema.graphqls +1 -7
  11. package/lib/generators/add-backend/generator.cjs +12 -3
  12. package/lib/generators/add-backend/generator.cjs.map +1 -1
  13. package/lib/generators/add-backend/generator.mjs +12 -3
  14. package/lib/generators/add-backend/generator.mjs.map +1 -1
  15. package/lib/generators/add-backend/schema.json +6 -1
  16. package/lib/generators/add-frontend/frameworks/antui/root.tsx.template +2 -2
  17. package/lib/generators/add-frontend/frameworks/chakraui/root.tsx.template +4 -3
  18. package/lib/generators/add-frontend/frameworks/tailwindui/root.tsx.template +2 -2
  19. package/lib/generators/add-frontend/generator.cjs +17 -13
  20. package/lib/generators/add-frontend/generator.cjs.map +1 -1
  21. package/lib/generators/add-frontend/generator.mjs +12 -8
  22. package/lib/generators/add-frontend/generator.mjs.map +1 -1
  23. package/lib/generators/add-frontend/schema.json +8 -3
  24. package/lib/generators/add-frontend/templates/config.json +2 -47
  25. package/lib/generators/add-frontend/templates/package.json +5 -8
  26. package/lib/generators/add-frontend/templates/tools/checkQueryUsage.mjs +192 -0
  27. package/lib/generators/add-frontend/templates/tools/mergeConfig.js +3 -0
  28. package/lib/generators/add-frontend/templates/vite.config.ts.template +53 -32
  29. package/lib/generators/add-fullstack/files/Jenkinsfile +7 -7
  30. package/lib/generators/add-fullstack/files/package.json +19 -14
  31. package/lib/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
  32. package/lib/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -63
  33. package/lib/generators/add-fullstack/files/tools/update-dependency-link.mjs +12 -10
  34. package/lib/generators/add-fullstack/files/tools/{update-dependency-version.js → update-dependency-version.mjs} +57 -26
  35. package/lib/generators/add-fullstack/generator.cjs +39 -30
  36. package/lib/generators/add-fullstack/generator.cjs.map +1 -1
  37. package/lib/generators/add-fullstack/generator.mjs +39 -30
  38. package/lib/generators/add-fullstack/generator.mjs.map +1 -1
  39. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.cjs +8 -0
  40. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.cjs.map +1 -0
  41. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.d.ts +2 -0
  42. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.mjs +8 -0
  43. package/lib/generators/add-fullstack/updates/htmlPluginUpdate.mjs.map +1 -0
  44. package/lib/generators/add-fullstack/updates/ignoreUpdate.cjs +19 -0
  45. package/lib/generators/add-fullstack/updates/ignoreUpdate.cjs.map +1 -0
  46. package/lib/generators/add-fullstack/updates/ignoreUpdate.d.ts +3 -0
  47. package/lib/generators/add-fullstack/updates/ignoreUpdate.mjs +19 -0
  48. package/lib/generators/add-fullstack/updates/ignoreUpdate.mjs.map +1 -0
  49. package/lib/generators/add-fullstack/updates/index.d.ts +4 -0
  50. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs +5 -4
  51. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.cjs.map +1 -1
  52. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.d.ts +2 -1
  53. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs +5 -4
  54. package/lib/generators/add-fullstack/updates/jenkinsfileUpdate.mjs.map +1 -1
  55. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.cjs +45 -0
  56. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.cjs.map +1 -0
  57. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.d.ts +3 -0
  58. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.mjs +45 -0
  59. package/lib/generators/add-fullstack/updates/lernaJsonUpdate.mjs.map +1 -0
  60. package/lib/generators/add-fullstack/updates/licenseUpdate.cjs +19 -0
  61. package/lib/generators/add-fullstack/updates/licenseUpdate.cjs.map +1 -0
  62. package/lib/generators/add-fullstack/updates/licenseUpdate.d.ts +2 -0
  63. package/lib/generators/add-fullstack/updates/licenseUpdate.mjs +19 -0
  64. package/lib/generators/add-fullstack/updates/licenseUpdate.mjs.map +1 -0
  65. package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs +38 -4
  66. package/lib/generators/add-fullstack/updates/packageJsonUpdate.cjs.map +1 -1
  67. package/lib/generators/add-fullstack/updates/packageJsonUpdate.d.ts +2 -1
  68. package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs +38 -4
  69. package/lib/generators/add-fullstack/updates/packageJsonUpdate.mjs.map +1 -1
  70. package/lib/generators/add-moleculer/files/charts/chart/Chart.yaml +1 -1
  71. package/lib/generators/add-moleculer/files/package.json +5 -5
  72. package/lib/generators/add-moleculer/generator.cjs +7 -4
  73. package/lib/generators/add-moleculer/generator.cjs.map +1 -1
  74. package/lib/generators/add-moleculer/generator.mjs +7 -4
  75. package/lib/generators/add-moleculer/generator.mjs.map +1 -1
  76. package/lib/generators/add-moleculer/schema.json +9 -4
  77. package/lib/generators/add-package/generator.cjs +50 -0
  78. package/lib/generators/add-package/generator.cjs.map +1 -0
  79. package/lib/generators/add-package/generator.d.ts +5 -0
  80. package/lib/generators/add-package/generator.mjs +50 -0
  81. package/lib/generators/add-package/generator.mjs.map +1 -0
  82. package/lib/generators/add-package/schema.json +29 -0
  83. package/lib/index.cjs +1 -1
  84. package/lib/index.d.ts +1 -4
  85. package/lib/index.mjs +1 -1
  86. package/lib/utils/filesConfig.cjs +76 -0
  87. package/lib/utils/filesConfig.cjs.map +1 -0
  88. package/lib/utils/filesConfig.d.ts +2 -0
  89. package/lib/utils/filesConfig.mjs +76 -0
  90. package/lib/utils/filesConfig.mjs.map +1 -0
  91. package/lib/utils/index.cjs +28 -2
  92. package/lib/utils/index.cjs.map +1 -1
  93. package/lib/utils/index.d.ts +3 -0
  94. package/lib/utils/index.mjs +28 -2
  95. package/lib/utils/index.mjs.map +1 -1
  96. package/lib/utils/syncConfig.cjs +116 -0
  97. package/lib/utils/syncConfig.cjs.map +1 -0
  98. package/lib/utils/syncConfig.d.ts +9 -0
  99. package/lib/utils/syncConfig.mjs +116 -0
  100. package/lib/utils/syncConfig.mjs.map +1 -0
  101. package/package.json +3 -4
  102. package/rollup.config.mjs +2 -8
  103. package/src/generators/add-backend/generator.ts +14 -3
  104. package/src/generators/add-backend/schema.d.ts +1 -0
  105. package/src/generators/add-backend/schema.json +6 -1
  106. package/src/generators/add-frontend/frameworks/antui/root.tsx.template +2 -2
  107. package/src/generators/add-frontend/frameworks/chakraui/root.tsx.template +4 -3
  108. package/src/generators/add-frontend/frameworks/tailwindui/root.tsx.template +2 -2
  109. package/src/generators/add-frontend/generator.ts +12 -8
  110. package/src/generators/add-frontend/schema.d.ts +1 -0
  111. package/src/generators/add-frontend/schema.json +8 -3
  112. package/src/generators/add-fullstack/files/Jenkinsfile +7 -7
  113. package/src/generators/add-fullstack/files/LICENSE-IST +39 -0
  114. package/src/generators/add-fullstack/files/package.json +19 -14
  115. package/src/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
  116. package/src/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -63
  117. package/src/generators/add-fullstack/files/tools/update-dependency-link.mjs +12 -10
  118. package/src/generators/add-fullstack/files/tools/{update-dependency-version.js → update-dependency-version.mjs} +57 -26
  119. package/src/generators/add-fullstack/generator.ts +64 -38
  120. package/src/generators/add-fullstack/updates/htmlPluginUpdate.ts +11 -0
  121. package/src/generators/add-fullstack/updates/ignoreUpdate.ts +23 -0
  122. package/src/generators/add-fullstack/updates/index.ts +4 -0
  123. package/src/generators/add-fullstack/updates/jenkinsfileUpdate.ts +6 -4
  124. package/src/generators/add-fullstack/updates/lernaJsonUpdate.ts +53 -0
  125. package/src/generators/add-fullstack/updates/licenseUpdate.ts +23 -0
  126. package/src/generators/add-fullstack/updates/packageJsonUpdate.ts +45 -4
  127. package/src/generators/add-moleculer/files/charts/chart/Chart.yaml +1 -1
  128. package/src/generators/add-moleculer/files/package.json +5 -5
  129. package/src/generators/add-moleculer/generator.spec.ts +1 -1
  130. package/src/generators/add-moleculer/generator.ts +8 -3
  131. package/src/generators/add-moleculer/schema.d.ts +2 -1
  132. package/src/generators/add-moleculer/schema.json +9 -4
  133. package/src/generators/{add-core-package → add-package}/generator.spec.ts +5 -5
  134. package/src/generators/add-package/generator.ts +62 -0
  135. package/src/generators/add-package/schema.d.ts +6 -0
  136. package/src/generators/add-package/schema.json +29 -0
  137. package/src/index.ts +1 -4
  138. package/src/utils/filesConfig.ts +84 -0
  139. package/src/utils/index.ts +31 -0
  140. package/src/utils/syncConfig.ts +128 -0
  141. package/lib/constants/index.cjs.map +0 -1
  142. package/lib/constants/index.mjs.map +0 -1
  143. package/lib/generators/add-browser-package/files/jest.config.js +0 -8
  144. package/lib/generators/add-browser-package/files/package.json +0 -49
  145. package/lib/generators/add-browser-package/files/rollup.config.mjs +0 -29
  146. package/lib/generators/add-browser-package/files/src/index.ts.template +0 -4
  147. package/lib/generators/add-browser-package/files/src/interfaces/index.ts.template +0 -1
  148. package/lib/generators/add-browser-package/files/src/interfaces/interfaces.ts.template +0 -1
  149. package/lib/generators/add-browser-package/files/src/module.tsx.template +0 -7
  150. package/lib/generators/add-browser-package/files/tsconfig.json +0 -28
  151. package/lib/generators/add-browser-package/files/webpack.config.js +0 -71
  152. package/lib/generators/add-browser-package/generator.cjs +0 -17
  153. package/lib/generators/add-browser-package/generator.cjs.map +0 -1
  154. package/lib/generators/add-browser-package/generator.d.ts +0 -5
  155. package/lib/generators/add-browser-package/generator.mjs +0 -17
  156. package/lib/generators/add-browser-package/generator.mjs.map +0 -1
  157. package/lib/generators/add-browser-package/schema.json +0 -19
  158. package/lib/generators/add-client-package/files/CHANGELOG.md +0 -807
  159. package/lib/generators/add-client-package/files/jest.config.js +0 -13
  160. package/lib/generators/add-client-package/files/package.json +0 -30
  161. package/lib/generators/add-client-package/files/rollup.config.mjs +0 -29
  162. package/lib/generators/add-client-package/files/src/components/index.tsx.template +0 -1
  163. package/lib/generators/add-client-package/files/src/index.ts.template +0 -1
  164. package/lib/generators/add-client-package/files/tsconfig.json +0 -27
  165. package/lib/generators/add-client-package/files/webpack.config.js +0 -72
  166. package/lib/generators/add-client-package/generator.cjs +0 -17
  167. package/lib/generators/add-client-package/generator.cjs.map +0 -1
  168. package/lib/generators/add-client-package/generator.d.ts +0 -5
  169. package/lib/generators/add-client-package/generator.mjs +0 -17
  170. package/lib/generators/add-client-package/generator.mjs.map +0 -1
  171. package/lib/generators/add-client-package/generator.spec.d.ts +0 -1
  172. package/lib/generators/add-client-package/schema.json +0 -19
  173. package/lib/generators/add-core-package/files/jest.config.js +0 -3
  174. package/lib/generators/add-core-package/files/package.json +0 -30
  175. package/lib/generators/add-core-package/files/rollup.config.mjs +0 -65
  176. package/lib/generators/add-core-package/files/src/constants/index.ts.template +0 -1
  177. package/lib/generators/add-core-package/files/src/constants/types.ts.template +0 -3
  178. package/lib/generators/add-core-package/files/src/index.ts.template +0 -2
  179. package/lib/generators/add-core-package/files/src/types/index.ts.template +0 -1
  180. package/lib/generators/add-core-package/files/src/types/types.ts.template +0 -17
  181. package/lib/generators/add-core-package/files/tsconfig.json +0 -22
  182. package/lib/generators/add-core-package/files/webpack.config.js +0 -53
  183. package/lib/generators/add-core-package/generator.cjs +0 -17
  184. package/lib/generators/add-core-package/generator.cjs.map +0 -1
  185. package/lib/generators/add-core-package/generator.d.ts +0 -5
  186. package/lib/generators/add-core-package/generator.mjs +0 -17
  187. package/lib/generators/add-core-package/generator.mjs.map +0 -1
  188. package/lib/generators/add-core-package/generator.spec.d.ts +0 -1
  189. package/lib/generators/add-core-package/schema.json +0 -19
  190. package/lib/generators/add-fullstack/files/CHANGELOG.md +0 -20
  191. package/lib/generators/add-server-package/files/CHANGELOG.md +0 -2599
  192. package/lib/generators/add-server-package/files/LICENSE +0 -674
  193. package/lib/generators/add-server-package/files/jest.config.js +0 -32
  194. package/lib/generators/add-server-package/files/package.json +0 -78
  195. package/lib/generators/add-server-package/files/rollup.config.mjs +0 -30
  196. package/lib/generators/add-server-package/files/src/constants/constants.ts.template +0 -62
  197. package/lib/generators/add-server-package/files/src/constants/index.ts.template +0 -1
  198. package/lib/generators/add-server-package/files/src/constants/types.ts.template +0 -21
  199. package/lib/generators/add-server-package/files/src/index.ts.template +0 -6
  200. package/lib/generators/add-server-package/files/src/module.ts.template +0 -6
  201. package/lib/generators/add-server-package/files/tsconfig.json +0 -27
  202. package/lib/generators/add-server-package/generator.cjs +0 -17
  203. package/lib/generators/add-server-package/generator.cjs.map +0 -1
  204. package/lib/generators/add-server-package/generator.d.ts +0 -5
  205. package/lib/generators/add-server-package/generator.mjs +0 -17
  206. package/lib/generators/add-server-package/generator.mjs.map +0 -1
  207. package/lib/generators/add-server-package/generator.spec.d.ts +0 -1
  208. package/lib/generators/add-server-package/schema.json +0 -19
  209. package/src/generators/add-browser-package/generator.spec.ts +0 -20
  210. package/src/generators/add-browser-package/generator.ts +0 -24
  211. package/src/generators/add-browser-package/schema.d.ts +0 -4
  212. package/src/generators/add-browser-package/schema.json +0 -19
  213. package/src/generators/add-client-package/generator.spec.ts +0 -20
  214. package/src/generators/add-client-package/generator.ts +0 -24
  215. package/src/generators/add-client-package/schema.d.ts +0 -4
  216. package/src/generators/add-client-package/schema.json +0 -19
  217. package/src/generators/add-core-package/generator.ts +0 -24
  218. package/src/generators/add-core-package/schema.d.ts +0 -4
  219. package/src/generators/add-core-package/schema.json +0 -19
  220. package/src/generators/add-fullstack/files/CHANGELOG.md +0 -28
  221. package/src/generators/add-server-package/generator.spec.ts +0 -20
  222. package/src/generators/add-server-package/generator.ts +0 -24
  223. package/src/generators/add-server-package/schema.d.ts +0 -4
  224. package/src/generators/add-server-package/schema.json +0 -19
  225. /package/lib/{constants/index.d.ts → common/constants.d.ts} +0 -0
  226. /package/lib/generators/{add-browser-package/files/LICENSE → add-fullstack/files/LICENSE-GNU} +0 -0
  227. /package/lib/generators/{add-core-package/files/LICENSE → add-fullstack/files/LICENSE-IST} +0 -0
  228. /package/lib/generators/add-fullstack/files/{LICENSE → LICENSE-MIT} +0 -0
  229. /package/lib/generators/{add-browser-package → add-package}/generator.spec.d.ts +0 -0
  230. /package/src/{constants/index.ts → common/constants.ts} +0 -0
  231. /package/{lib/generators/add-client-package/files/LICENSE → src/generators/add-fullstack/files/LICENSE-GNU} +0 -0
  232. /package/src/generators/add-fullstack/files/{LICENSE → LICENSE-MIT} +0 -0
@@ -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.61",
29
+ "@common-stack/core": "6.0.6-alpha.50",
30
+ "@common-stack/server-core": "6.0.6-alpha.50",
31
+ "@common-stack/server-stack": "6.0.6-alpha.69",
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';
@@ -0,0 +1,84 @@
1
+ import { Tree } from '@nx/devkit';
2
+ import * as fs from 'node:fs';
3
+ import * as path from 'path';
4
+ import { deepMerge } from '@common-stack/rollup-vite-utils/lib/utils/setupConfig.cjs';
5
+
6
+ export const processFiles = (tree: Tree, projectRoot: string, options: any) => {
7
+ if (options.files && Object.entries(options.files).length > 0) {
8
+ for (const [fileName, addContent] of Object.entries(options.files)) {
9
+ switch (fileName) {
10
+ case 'config/env-config.ts':
11
+ updateEnvConfigFile(tree, projectRoot, addContent);
12
+ break;
13
+ case 'cdm-locales':
14
+ addLocalesFile(tree, projectRoot, addContent);
15
+ break;
16
+ default:
17
+ break;
18
+ }
19
+ }
20
+ }
21
+ }
22
+
23
+ const updateEnvConfigFile = (tree: Tree, projectRoot: string, jsonContent: any) => {
24
+ const filePath = path.join(projectRoot, 'src/config/env-config.ts');
25
+ if (tree.exists(filePath)) {
26
+ try {
27
+ let fileContent: string = tree.read(filePath).toString();
28
+ let additionalContent: string = ',';
29
+
30
+ for (const [key, val] of Object.entries(jsonContent)) {
31
+ if (typeof val === 'string') {
32
+ additionalContent += `${key}: str({ default: '${val}' }),\n`;
33
+ } else {
34
+ additionalContent += `${key}: ${(val as any).type}(${JSON.stringify((val as any).value)}),\n`;
35
+ }
36
+ }
37
+ additionalContent = additionalContent.substring(1);
38
+ console.log('Changing the env-config file with {', additionalContent, '}');
39
+
40
+ const lines = fileContent.split(/\n/);
41
+ let idx;
42
+ for (idx = lines.length - 1; idx >= 0; idx--) {
43
+ if (lines[idx].trim() === '});') {
44
+ break;
45
+ }
46
+ }
47
+
48
+ if (idx > 0) {
49
+ const newLines = [
50
+ ...lines.slice(0, idx),
51
+ additionalContent,
52
+ ...lines.slice(idx),
53
+ ];
54
+ fileContent = newLines.join('\n');
55
+ }
56
+
57
+ tree.write(filePath, fileContent);
58
+ } catch(e) {
59
+ console.error('Failed to change env-config', e);
60
+ }
61
+ } else {
62
+ console.log('No exist env-config file at ', filePath);
63
+ }
64
+ }
65
+
66
+ const addLocalesFile = async(tree: Tree, projectRoot: string, jsonContent: any) => {
67
+ try {
68
+ for (const [dirName, filesContent] of Object.entries(jsonContent)) {
69
+ const dirPath = path.join(projectRoot, 'src/cdm-locales', dirName);
70
+ for (const [fileName, fileContent] of Object.entries(filesContent)) {
71
+ const filePath = path.join(dirPath, fileName);
72
+ if (!tree.exists(filePath)) {
73
+ tree.write(filePath, JSON.stringify(fileContent, null, 2));
74
+ } else {
75
+ let newContent = tree.read(filePath).toJSON();
76
+ newContent = deepMerge(newContent, fileContent);
77
+ tree.write(filePath, JSON.stringify(newContent, null, 2));
78
+ }
79
+ }
80
+ }
81
+ } catch (e) {
82
+ console.error(e);
83
+ }
84
+ }
@@ -1,4 +1,6 @@
1
+ import { Tree } from '@nx/devkit';
1
2
  import * as fs from 'node:fs';
3
+ import * as path from 'path';
2
4
 
3
5
  export const resetProject = (rootDir: string) => {
4
6
  if (fs.existsSync(`${rootDir}/project.json`)) {
@@ -16,3 +18,32 @@ export const isValid = (val: string) => {
16
18
  export const getValid = (val: string) => {
17
19
  return val ? val.trim() : null;
18
20
  }
21
+
22
+ export const convertHttpsToSsh = (url) => {
23
+ const httpsPattern = /^https:\/\/(.+?)\/(.+?)\/(.+?)(\.git)?$/;
24
+
25
+ const match = url.match(httpsPattern);
26
+
27
+ if (match) {
28
+ const domain = match[1];
29
+ const user = match[2];
30
+ const repo = match[3];
31
+
32
+ return `git@${domain}:${user}/${repo}.git`;
33
+ } else {
34
+ throw new Error("Invalid HTTPS URL format");
35
+ }
36
+ }
37
+
38
+ export const readDir = (tree: Tree, dirPath: string) => {
39
+ const files = tree.children(dirPath);
40
+ const result = {};
41
+ files.forEach(file => {
42
+ if (tree.isFile(path.join(dirPath, file))) {
43
+ result[file] = JSON.parse(tree.read(path.join(dirPath, file)).toString());
44
+ } else {
45
+ result[file] = readDir(tree, path.join(dirPath, file));
46
+ }
47
+ });
48
+ return result;
49
+ }
@@ -0,0 +1,128 @@
1
+ import { Tree, updateJson } from '@nx/devkit';
2
+ import * as path from 'path';
3
+ import { parse } from '@babel/parser';
4
+ import traverse from '@babel/traverse';
5
+ import { set } from 'lodash';
6
+ import { getValid, readDir } from './index';
7
+
8
+ export interface SyncConfigOptions {
9
+ name: string;
10
+ type: string;
11
+ directory: string;
12
+ ns?: string;
13
+ }
14
+
15
+ const DEFAULT_PACKAGE = 'core';
16
+
17
+ export const syncConfig = (tree: Tree, projectRoot: string, options: SyncConfigOptions) => {
18
+ // synchronize package in package.json and lerna.json
19
+ syncPackage(tree, options);
20
+
21
+ const configPath = 'cde-config.json';
22
+ if (tree.exists(configPath)) {
23
+ try {
24
+ const directory = getValid(options.directory) ?? 'packages';
25
+ const type = getValid(options.type) ?? DEFAULT_PACKAGE;
26
+ const moduleName = options.name; // name should not be null
27
+
28
+ const envConfigContent = getEnvConfigFileContent(tree, projectRoot);
29
+ const localesContent = getLocalesFileContent(tree, projectRoot);
30
+ const packageContent = {
31
+ type: `packages-${type}`,
32
+ files: {
33
+ "config/env-config.ts": envConfigContent ?? {},
34
+ "cdm-locales": localesContent ?? {},
35
+ },
36
+ };
37
+
38
+ updateJson(tree, configPath, (config: any) => {
39
+ set(config, [directory, 'modules', moduleName, type], packageContent);
40
+ return config;
41
+ });
42
+ } catch(e) {
43
+ console.error('Failed to change env-config', e);
44
+ }
45
+ } else {
46
+ console.log('No exist env-config file at ', path.join(tree.root, configPath));
47
+ }
48
+ }
49
+
50
+ const getEnvConfigFileContent = (tree: Tree, projectRoot: string) => {
51
+ const filePath = path.join(projectRoot, 'src/config/env-config.ts');
52
+ if (tree.exists(filePath)) {
53
+ try {
54
+ const result = {};
55
+ let fileContent: string = tree.read(filePath).toString();
56
+ const ast = parse(fileContent, {
57
+ sourceType: 'module',
58
+ plugins: ['typescript', 'dynamicImport'],
59
+ });
60
+ (traverse as any).default(ast, {
61
+ enter(astroPath) {
62
+ if (astroPath.node.type === "VariableDeclarator" && astroPath.node.id.name === "config") {
63
+ astroPath.node.init.arguments[1].properties.forEach(prop => {
64
+ const key = prop.key.name;
65
+ const callee = prop.value.callee.name;
66
+ let value: any;
67
+ if (prop.value.arguments && prop.value.arguments.length > 0) {
68
+ value = {};
69
+ prop.value.arguments[0].properties.forEach(p => {
70
+ if (p.value.elements && p.value.elements.length > 0) {
71
+ value[p.key.name] = [];
72
+ p.value.elements.forEach(ele => value[p.key.name].push(ele.value));
73
+ } else {
74
+ value[p.key.name] = callee == 'json' ? JSON.parse(p.value.value) : p.value.value;
75
+ }
76
+ });
77
+ } else {
78
+ value = '';
79
+ }
80
+ console.log(`${key}:`, `${callee}(${JSON.stringify(value)})`);
81
+ result[key] = { type: callee, value: value };
82
+ });
83
+ }
84
+ },
85
+ });
86
+ return result;
87
+ } catch(e) {
88
+ console.error('Failed to change env-config', e);
89
+ }
90
+ } else {
91
+ console.log('No exist env-config file at ', filePath);
92
+ }
93
+ return null;
94
+ }
95
+
96
+ const getLocalesFileContent = (tree: Tree, projectRoot: string) => {
97
+ const dirPath = path.join(projectRoot, 'src/cdm-locales');
98
+ if (tree.exists(dirPath)) {
99
+ try {
100
+ return readDir(tree, dirPath);
101
+ } catch (e) {
102
+ console.error(e);
103
+ }
104
+ } else {
105
+ console.log('No exist cdm-locales directory at ', dirPath);
106
+ }
107
+ return null;
108
+ }
109
+
110
+ export const syncPackage = (tree: Tree, options: any) => {
111
+ const directory = getValid(options.directory) ?? 'packages';
112
+
113
+ updateJson(tree, 'package.json', (packageJson: any) => {
114
+ const packages = packageJson.workspaces?.packages || [];
115
+ if (!packages.includes(`${directory}/*`)) {
116
+ packageJson.workspaces.packages.push(`${directory}/*`);
117
+ }
118
+ return packageJson;
119
+ });
120
+
121
+ updateJson(tree, 'lerna.json', (lernaJson: any) => {
122
+ const packages = lernaJson.packages || [];
123
+ if (!packages.includes(`${directory}/*`)) {
124
+ lernaJson.packages.push(`${directory}/*`);
125
+ }
126
+ return lernaJson;
127
+ });
128
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/constants/index.ts"],"sourcesContent":[null],"names":[],"mappings":"aAAO,MAAM,eAAe,GAAG,QAAQ;AAChC,MAAM,kBAAkB,GAAG,WAAW;AACtC,MAAM,oBAAoB,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/constants/index.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAO,MAAM,eAAe,GAAG,QAAQ;AAChC,MAAM,kBAAkB,GAAG,WAAW;AACtC,MAAM,oBAAoB,GAAG"}
@@ -1,8 +0,0 @@
1
- const base = require('../../../jest.config.base');
2
- const packageJson = require('./package');
3
-
4
- module.exports = {
5
- ...base,
6
- name: packageJson.name,
7
- displayName: packageJson.name,
8
- };
@@ -1,49 +0,0 @@
1
- {
2
- "name": "browser-package",
3
- "version": "3.1.1-alpha.6",
4
- "description": "Sample core for higher packages to depend on",
5
- "license": "ISC",
6
- "author": "CDMBase LLC",
7
- "type": "module",
8
- "main": "lib/index.js",
9
- "module": "lib/index.js",
10
- "typings": "lib/index.d.ts",
11
- "scripts": {
12
- "build": "npm run build:clean && npm run build:lib",
13
- "build:clean": "rimraf lib",
14
- "build:lib": "rollup -c rollup.config.mjs",
15
- "build:lib:watch": "npm run build:lib -- --watch",
16
- "jest": "./node_modules/.bin/jest",
17
- "prepublish": "npm run build",
18
- "schema:download": "./node_modules/.bin/apollo-codegen download-schema http://localhost:8080/graphql --output schema.json ",
19
- "schema:generate": "./node_modules/.bin/apollo-codegen generate src/browser/graphql/**/*.gql --schema schema.json --target typescript --output src/browser/graphql/schema.ts",
20
- "test": "cross-env ENV_FILE=../../config/test/test.env jest",
21
- "test:debug": "npm test -- --runInBand",
22
- "test:watch": "npm test -- --watch",
23
- "watch": "npm run build:lib:watch"
24
- },
25
- "dependencies": {
26
- "envalid": "~7.2.2",
27
- "pluralize": "8.0.0",
28
- "react-csv": "^2.0.3"
29
- },
30
- "peerDependencies": {
31
- "@cdm-logger/client": "*",
32
- "@common-stack/client-react": "6.0.6-alpha.5",
33
- "@remix-run/react": "*",
34
- "antd": ">=5.1.6",
35
- "lodash": "*",
36
- "moment": "*",
37
- "react": "*",
38
- "react-redux": "*",
39
- "redux": ">=4.0.1",
40
- "redux-observable": "*",
41
- "rxjs": "*"
42
- },
43
- "publishConfig": {
44
- "access": "public"
45
- },
46
- "typescript": {
47
- "definition": "lib/index.d.ts"
48
- }
49
- }