@common-stack/generate-plugin 5.0.4-alpha.0 → 5.0.4-alpha.11

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 (142) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +42 -0
  3. package/generators.json +9 -4
  4. package/lib/generators/add-backend/files/CHANGELOG.md +196 -0
  5. package/lib/generators/add-backend/files/Dockerfile +30 -0
  6. package/lib/generators/add-backend/files/LICENSE +661 -0
  7. package/lib/generators/add-backend/files/README.md +133 -0
  8. package/lib/generators/add-backend/files/__tests__/test.ts.template +95 -0
  9. package/lib/generators/add-backend/files/babel.config.js +45 -0
  10. package/lib/generators/add-backend/files/build.config.js +14 -0
  11. package/lib/generators/add-backend/files/build.config.mjs +27 -0
  12. package/lib/generators/add-backend/files/generated-schema.graphql +235 -0
  13. package/lib/generators/add-backend/files/jest.config.js +27 -0
  14. package/lib/generators/add-backend/files/knexfile.js +63 -0
  15. package/lib/generators/add-backend/files/package.json +162 -0
  16. package/lib/generators/add-backend/files/src/api/remote-config.ts.template +11 -0
  17. package/lib/generators/add-backend/files/src/api/resolver.ts.template +15 -0
  18. package/lib/generators/add-backend/files/src/api/root-schema.graphqls +96 -0
  19. package/lib/generators/add-backend/files/src/api/scalar.ts.template +16 -0
  20. package/lib/generators/add-backend/files/src/api/schema-builder.ts.template +189 -0
  21. package/lib/generators/add-backend/files/src/api/utils.ts.template +44 -0
  22. package/lib/generators/add-backend/files/src/config/env-config.ts.template +34 -0
  23. package/lib/generators/add-backend/files/src/config/index.ts.template +1 -0
  24. package/lib/generators/add-backend/files/src/config/moleculer.config.ts.template +228 -0
  25. package/lib/generators/add-backend/files/src/connectors/connection-broker.ts.template +80 -0
  26. package/lib/generators/add-backend/files/src/connectors/graphql-pubsub-connector.ts.template +43 -0
  27. package/lib/generators/add-backend/files/src/connectors/mongo-connector.ts.template +78 -0
  28. package/lib/generators/add-backend/files/src/connectors/nats-connector.ts.template +82 -0
  29. package/lib/generators/add-backend/files/src/connectors/redis-connector.ts.template +73 -0
  30. package/lib/generators/add-backend/files/src/env.ts.template +5 -0
  31. package/lib/generators/add-backend/files/src/express-app.ts.template +67 -0
  32. package/lib/generators/add-backend/files/src/index.ts.template +56 -0
  33. package/lib/generators/add-backend/files/src/interfaces/index.ts.template +1 -0
  34. package/lib/generators/add-backend/files/src/interfaces/module-interface.ts.template +16 -0
  35. package/lib/generators/add-backend/files/src/main.spec.ts.template +129 -0
  36. package/lib/generators/add-backend/files/src/middleware/__tests__/cors.test.ts.template +12 -0
  37. package/lib/generators/add-backend/files/src/middleware/cors.ts.template +31 -0
  38. package/lib/generators/add-backend/files/src/middleware/error.ts.template +63 -0
  39. package/lib/generators/add-backend/files/src/middleware/moleculer-inter-namespace.ts.template +60 -0
  40. package/lib/generators/add-backend/files/src/middleware/persistedQuery.ts.template +40 -0
  41. package/lib/generators/add-backend/files/src/middleware/sentry.ts.template +9 -0
  42. package/lib/generators/add-backend/files/src/middleware/services.ts.template +16 -0
  43. package/lib/generators/add-backend/files/src/middleware/tracer.ts.template +24 -0
  44. package/lib/generators/add-backend/files/src/modules/auth/schema/auth-schema.graphql +25 -0
  45. package/lib/generators/add-backend/files/src/modules/index.ts.template +17 -0
  46. package/lib/generators/add-backend/files/src/modules/module.ts.template +78 -0
  47. package/lib/generators/add-backend/files/src/server-setup/graphql-server.ts.template +185 -0
  48. package/lib/generators/add-backend/files/src/server-setup/graphql-subscription-server.ts.template +113 -0
  49. package/lib/generators/add-backend/files/src/server-setup/graphql-ws.ts.template +158 -0
  50. package/lib/generators/add-backend/files/src/server-setup/mongodb-migration-update.ts.template +47 -0
  51. package/lib/generators/add-backend/files/src/server-setup/utils.ts.template +43 -0
  52. package/lib/generators/add-backend/files/src/server-setup/websocket-multipath-update.ts.template +88 -0
  53. package/lib/generators/add-backend/files/src/service.ts.template +36 -0
  54. package/lib/generators/add-backend/files/src/stack-server.ts.template +277 -0
  55. package/lib/generators/add-backend/files/src/utils/migrations.ts.template +32 -0
  56. package/lib/generators/add-backend/files/tsconfig.base.json +30 -0
  57. package/lib/generators/add-backend/files/tsconfig.json +19 -0
  58. package/lib/generators/add-backend/files/uploads/3986781.ppt +0 -0
  59. package/lib/generators/add-backend/files/webpack.config.js +186 -0
  60. package/lib/generators/add-backend/files/webpack.config.mjs +209 -0
  61. package/lib/generators/add-backend/generator.cjs +20 -0
  62. package/lib/generators/add-backend/generator.cjs.map +1 -0
  63. package/lib/generators/add-backend/generator.d.ts +4 -0
  64. package/lib/generators/add-backend/generator.mjs +20 -0
  65. package/lib/generators/add-backend/generator.mjs.map +1 -0
  66. package/lib/generators/add-backend/schema.json +17 -0
  67. package/lib/generators/add-frontend/generator.cjs +29 -0
  68. package/lib/generators/add-frontend/generator.cjs.map +1 -0
  69. package/lib/generators/add-frontend/generator.d.ts +4 -0
  70. package/lib/generators/add-frontend/generator.mjs +29 -0
  71. package/lib/generators/add-frontend/generator.mjs.map +1 -0
  72. package/lib/generators/add-frontend/generator.spec.d.ts +1 -0
  73. package/lib/generators/add-frontend/schema.json +21 -0
  74. package/lib/generators/add-frontend/templates/Dockerfile +30 -0
  75. package/lib/generators/add-frontend/templates/codecept.json +28 -0
  76. package/lib/generators/add-frontend/templates/config.json +58 -0
  77. package/lib/generators/add-frontend/templates/env.d.ts.template +9 -0
  78. package/lib/generators/add-frontend/templates/env.js +5 -0
  79. package/lib/generators/add-frontend/templates/favicon.ico +0 -0
  80. package/lib/generators/add-frontend/templates/jest.config.js +33 -0
  81. package/lib/generators/add-frontend/templates/package.json +182 -0
  82. package/lib/generators/add-frontend/templates/public/css/dashboard.css +491 -0
  83. package/lib/generators/add-frontend/templates/public/favicon.ico +0 -0
  84. package/lib/generators/add-frontend/templates/server.js +78 -0
  85. package/lib/generators/add-frontend/templates/src/config/public-config.ts.template +82 -0
  86. package/lib/generators/add-frontend/templates/tools/mergeConfig.js +34 -0
  87. package/lib/generators/add-frontend/templates/tsconfig.base.json +38 -0
  88. package/lib/generators/add-frontend/templates/tsconfig.json +32 -0
  89. package/lib/generators/add-frontend/templates/tsconfig.node.json +10 -0
  90. package/lib/generators/add-frontend/templates/vite.config.ts.template +70 -0
  91. package/lib/index.cjs +1 -1
  92. package/lib/index.d.ts +2 -1
  93. package/lib/index.mjs +1 -1
  94. package/lib/utils/index.cjs +8 -0
  95. package/lib/utils/index.cjs.map +1 -0
  96. package/lib/utils/index.d.ts +1 -0
  97. package/lib/utils/index.mjs +8 -0
  98. package/lib/utils/index.mjs.map +1 -0
  99. package/package.json +2 -2
  100. package/rollup.config.mjs +14 -5
  101. package/src/generators/{add-entries → add-backend}/generator.spec.ts +5 -5
  102. package/src/generators/add-backend/generator.ts +30 -0
  103. package/src/generators/add-backend/schema.d.ts +4 -0
  104. package/src/generators/add-backend/schema.json +17 -0
  105. package/src/generators/add-frontend/generator.spec.ts +20 -0
  106. package/src/generators/add-frontend/generator.ts +40 -0
  107. package/src/generators/add-frontend/schema.d.ts +5 -0
  108. package/src/generators/add-frontend/schema.json +21 -0
  109. package/src/index.ts +2 -2
  110. package/src/utils/index.ts +10 -0
  111. package/lib/generators/add-entries/generator.cjs +0 -55
  112. package/lib/generators/add-entries/generator.cjs.map +0 -1
  113. package/lib/generators/add-entries/generator.d.ts +0 -4
  114. package/lib/generators/add-entries/generator.mjs +0 -55
  115. package/lib/generators/add-entries/generator.mjs.map +0 -1
  116. package/lib/generators/add-entries/schema.json +0 -13
  117. package/src/generators/add-entries/files/common/AntStyles.tsx.template +0 -8
  118. package/src/generators/add-entries/files/common/createEmotionCache.ts.template +0 -7
  119. package/src/generators/add-entries/files/common/index.ts.template +0 -3
  120. package/src/generators/add-entries/files/common/utils.ts.template +0 -16
  121. package/src/generators/add-entries/generator.ts +0 -66
  122. package/src/generators/add-entries/schema.d.ts +0 -3
  123. package/src/generators/add-entries/schema.json +0 -13
  124. /package/lib/generators/{add-entries → add-backend}/generator.spec.d.ts +0 -0
  125. /package/lib/generators/{add-entries/entries → add-frontend/frameworks}/antui/entry.client.tsx.template +0 -0
  126. /package/lib/generators/{add-entries/entries → add-frontend/frameworks}/antui/entry.server.tsx.template +0 -0
  127. /package/lib/generators/{add-entries/entries → add-frontend/frameworks}/antui/root.tsx.template +0 -0
  128. /package/lib/generators/{add-entries/entries → add-frontend/frameworks}/chakraui/context.tsx.template +0 -0
  129. /package/lib/generators/{add-entries/entries → add-frontend/frameworks}/chakraui/entry.client.tsx.template +0 -0
  130. /package/lib/generators/{add-entries/entries → add-frontend/frameworks}/chakraui/entry.server.tsx.template +0 -0
  131. /package/lib/generators/{add-entries/entries → add-frontend/frameworks}/chakraui/root.tsx.template +0 -0
  132. /package/lib/generators/{add-entries/files → add-frontend/templates/src}/common/AntStyles.tsx.template +0 -0
  133. /package/lib/generators/{add-entries/files → add-frontend/templates/src}/common/createEmotionCache.ts.template +0 -0
  134. /package/lib/generators/{add-entries/files → add-frontend/templates/src}/common/index.ts.template +0 -0
  135. /package/lib/generators/{add-entries/files → add-frontend/templates/src}/common/utils.ts.template +0 -0
  136. /package/src/generators/{add-entries/entries → add-frontend/frameworks}/antui/entry.client.tsx.template +0 -0
  137. /package/src/generators/{add-entries/entries → add-frontend/frameworks}/antui/entry.server.tsx.template +0 -0
  138. /package/src/generators/{add-entries/entries → add-frontend/frameworks}/antui/root.tsx.template +0 -0
  139. /package/src/generators/{add-entries/entries → add-frontend/frameworks}/chakraui/context.tsx.template +0 -0
  140. /package/src/generators/{add-entries/entries → add-frontend/frameworks}/chakraui/entry.client.tsx.template +0 -0
  141. /package/src/generators/{add-entries/entries → add-frontend/frameworks}/chakraui/entry.server.tsx.template +0 -0
  142. /package/src/generators/{add-entries/entries → add-frontend/frameworks}/chakraui/root.tsx.template +0 -0
@@ -0,0 +1,78 @@
1
+ import express from 'express';
2
+ import compression from 'compression';
3
+ import { createRequestHandler } from '@remix-run/express';
4
+ import { installGlobals } from '@remix-run/node';
5
+ import './env.js';
6
+ import {
7
+ performCopyOperations,
8
+ } from '@common-stack/rollup-vite-utils/lib/preStartup/configLoader/configLoader.js';
9
+ import config from './app/cde-webconfig.json' assert { type: 'json' };
10
+
11
+ installGlobals();
12
+
13
+ Object.keys(config.buildConfig).forEach((key) => {
14
+ global[key] = config.buildConfig[key];
15
+ });
16
+
17
+ const startServer = async () => {
18
+ await performCopyOperations(config);
19
+
20
+ const { corsMiddleware } = await import(`./${config.commonPaths.appPath}/${config.commonPaths.frontendStackPath}/backend/middlewares/cors.js`);
21
+ const { containerMiddleware } = await import(`./${config.commonPaths.appPath}/${config.commonPaths.frontendStackPath}/backend/middlewares/container.js`);
22
+ const { loadContext } = await import(`./${config.commonPaths.appPath}/${config.commonPaths.frontendStackPath}/load-context.server.js`);
23
+
24
+ const viteDevServer =
25
+ process.env.NODE_ENV === 'production'
26
+ ? undefined
27
+ : await import('vite').then((vite) => {
28
+ return vite.createServer({
29
+ server: { middlewareMode: true },
30
+ });
31
+ });
32
+
33
+ const remixHandler = createRequestHandler({
34
+ getLoadContext: loadContext,
35
+ build: viteDevServer
36
+ ? () => viteDevServer.ssrLoadModule('virtual:remix/server-build')
37
+ : await import('./build/server/index.js'),
38
+ });
39
+
40
+ const app = express();
41
+
42
+ app.use(compression());
43
+ app.disable('x-powered-by');
44
+
45
+ if (viteDevServer) {
46
+ app.use(viteDevServer.middlewares);
47
+ } else {
48
+ app.use('/assets', express.static('build/client/assets', { immutable: true, maxAge: '1y' }));
49
+ }
50
+
51
+ app.use(express.static('build/client', { maxAge: '1h' }));
52
+
53
+ app.use(corsMiddleware);
54
+ app.options('*', corsMiddleware);
55
+
56
+ app.use(async (req, res, next) => {
57
+ let isAssetRequest = (url) =>
58
+ /\.[jt]sx?$/.test(url) ||
59
+ /@id\/__x00__virtual:/.test(url) ||
60
+ /@vite\/client/.test(url) ||
61
+ /node_modules\/vite\/dist\/client\/env/.test(url);
62
+
63
+ if (isAssetRequest(req.url)) {
64
+ next();
65
+ } else {
66
+ return await containerMiddleware(req, res, async () => {
67
+ return remixHandler(req, res, next);
68
+ });
69
+ }
70
+ });
71
+
72
+ const port = process.env.PORT || 3000;
73
+ app.listen(port, () => console.log(`Express server listening at http://localhost:${port}`));
74
+ };
75
+
76
+ startServer().catch((err) => {
77
+ console.error('Failed to start server:', err);
78
+ });
@@ -0,0 +1,82 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
2
+ /* eslint-disable no-underscore-dangle */
3
+ /* eslint-disable no-restricted-syntax */
4
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
5
+ /* eslint-disable @typescript-eslint/triple-slash-reference */
6
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
7
+ /// <reference path='../../../../typings/index.d.ts' />
8
+ import { logger } from '@cdm-logger/client';
9
+ import { lowerCase } from 'lodash-es';
10
+ /**
11
+ * This file opens up in public site, so make sure it is
12
+ * not dependent on any other file that compromises the security.
13
+ * hello
14
+ */
15
+ const publicEnv = [
16
+ 'NODE_ENV',
17
+ 'APP_URL',
18
+ 'GA_ID',
19
+ 'GRAPHQL_URL',
20
+ 'LOG_LEVEL',
21
+ 'AUTH0_CLIENT_ID',
22
+ 'AUTH0_DOMAIN',
23
+ 'AUTH0_CUSTOM_DOMAIN',
24
+ 'CLIENT_URL',
25
+ 'APP_NAME',
26
+ 'AUTH0_API_AUDIENCE',
27
+ 'AUTH0_REALM',
28
+ 'PAYPAL_ENVIRONMENT',
29
+ 'STRIPE_PUBLISHABLE_KEY',
30
+ 'AUTH0_TOKEN_GRANTED_TIME',
31
+ 'AUTH0_CUSTOM_CLAIMS_NAMESPACE',
32
+ 'INITIAL_ACCOUNT_PAGE',
33
+ 'SOCIAL_LOGIN_PROVIDERS',
34
+ 'CALLBACK_REDIRECT_URL',
35
+ 'POPUP_REDIRECT_URL',
36
+ 'LAYOUT_SETTINGS',
37
+ 'DEFAULT_EXTENDED_RENEWAL_TIME',
38
+ 'DISABLE_EMAIL_VERIFICATION',
39
+ 'WEB_APP_URL',
40
+ 'LOGOUT_REDIRECT_PATH',
41
+ 'LOGIN_REDIRECT_PATH',
42
+ 'REDIRECT_ON_LOGIN_VISIT',
43
+ 'ENABLE_COOKIE_BASED_AUTH',
44
+ 'APP_DOMAIN',
45
+ 'AUTH_ID_TOKEN_COOKIE_MAX_AGE'
46
+ ];
47
+
48
+ const isBrowser = typeof window !== 'undefined';
49
+
50
+ const base = (isBrowser ? window.__ENV__ || (typeof __ENV__ !== 'undefined' && __ENV__) : process.env) || {};
51
+ const env: any = {};
52
+ for (const v of publicEnv) {
53
+ env[v] = base[v];
54
+ }
55
+
56
+ // add subscription url for temporary
57
+ export default env;
58
+
59
+ if (isBrowser) {
60
+ // process[lowerCase('env')] = env; // to avoid webpack to replace `process` with actual value.
61
+ // process.APP_ENV = env;
62
+ const process: any = {};
63
+ process[lowerCase('env')] = env; // to avoid webpack to replace `process` with actual value.
64
+ process.APP_ENV = env;
65
+ window.process = process;
66
+ window.__CLIENT__ = true;
67
+ window.__SERVER__ = false;
68
+ } else {
69
+ global.__CLIENT__ = false;
70
+ global.__SERVER__ = true;
71
+ __CLIENT__ = false;
72
+ __SERVER__ = true;
73
+ }
74
+ try {
75
+ // global.process = process;
76
+ logger.info('Process Update Success!');
77
+ } catch (e) {
78
+ logger.warn(e);
79
+ logger.info(
80
+ 'Encountered above issue while running "global.process = process", will automatically try again in next render',
81
+ );
82
+ }
@@ -0,0 +1,34 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { setupConfig } from '@common-stack/rollup-vite-utils/lib/utils/setupConfig.js';
4
+ import projectConfig from '../config.json' assert { type: 'json' };
5
+
6
+ // Function to merge configurations
7
+ const mergeConfigs = setupConfig(projectConfig);
8
+
9
+ // Ensure the 'app' directory exists
10
+ const appDir = path.resolve('app');
11
+ if (!fs.existsSync(appDir)) {
12
+ fs.mkdirSync(appDir);
13
+ console.log(`Created directory: ${appDir}`);
14
+ }
15
+
16
+ // Write the merged configuration to 'app/finalConfig.json'
17
+ const finalConfigPath = path.resolve(appDir, 'cde-webconfig.json');
18
+ fs.writeFileSync(finalConfigPath, JSON.stringify(mergeConfigs, null, 2));
19
+ console.log(`Merged configuration written to ${finalConfigPath}`);
20
+
21
+ // Add 'app' to .gitignore if not already present
22
+ const gitignorePath = path.resolve('.gitignore');
23
+ let gitignoreContent = '';
24
+ if (fs.existsSync(gitignorePath)) {
25
+ gitignoreContent = fs.readFileSync(gitignorePath, 'utf8');
26
+ } else {
27
+ fs.writeFileSync(gitignorePath, '');
28
+ console.log('Created .gitignore file');
29
+ }
30
+
31
+ if (!gitignoreContent.includes('app')) {
32
+ fs.appendFileSync(gitignorePath, '\napp\n');
33
+ console.log('Added "app" to .gitignore');
34
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "ES2022",
5
+ "moduleResolution": "NodeNext",
6
+ "esModuleInterop": true,
7
+ "jsx": "react",
8
+ "skipLibCheck": true,
9
+ "declaration": true,
10
+ "experimentalDecorators": true,
11
+ "emitDecoratorMetadata": true,
12
+ "preserveConstEnums": true,
13
+ "sourceMap": true,
14
+ "noImplicitAny": false,
15
+ "allowSyntheticDefaultImports": true,
16
+ "pretty": true,
17
+ "removeComments": false,
18
+ "lib": [
19
+ "ES2020",
20
+ "dom",
21
+ "esnext.asynciterable"
22
+ ],
23
+ "typeRoots": [
24
+ "./typings/*.d.ts",
25
+ "node_modules/@types"
26
+ ],
27
+ "types": [
28
+ "@types/node",
29
+ "@types/jest"
30
+ ]
31
+ },
32
+ "include": [
33
+ "./typings/*.d.ts"
34
+ ],
35
+ "exclude": [
36
+ "node_modules"
37
+ ]
38
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "include": [
3
+ "**/*.ts",
4
+ "**/*.tsx",
5
+ "**/.server/**/*.ts",
6
+ "**/.server/**/*.tsx",
7
+ "**/.client/**/*.ts",
8
+ "**/.client/**/*.tsx"
9
+ ],
10
+ "compilerOptions": {
11
+ "lib": ["DOM", "DOM.Iterable", "ES2022"],
12
+ "types": ["@remix-run/node", "vite/client"],
13
+ "isolatedModules": true,
14
+ "esModuleInterop": true,
15
+ "jsx": "react-jsx",
16
+ "module": "ESNext",
17
+ "moduleResolution": "Bundler",
18
+ "resolveJsonModule": true,
19
+ "target": "ES2022",
20
+ "strict": true,
21
+ "allowJs": true,
22
+ "skipLibCheck": true,
23
+ "forceConsistentCasingInFileNames": true,
24
+ "baseUrl": ".",
25
+ "paths": {
26
+ "~/*": ["./src/*"]
27
+ },
28
+
29
+ // Vite takes care of building everything, not tsc.
30
+ "noEmit": true
31
+ }
32
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "skipLibCheck": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "allowSyntheticDefaultImports": true
8
+ },
9
+ "include": ["vite.config.ts"]
10
+ }
@@ -0,0 +1,70 @@
1
+ import { defineConfig } from 'vite';
2
+ import { vitePlugin as remix } from '@remix-run/dev';
3
+ import { dirname, resolve } from 'path';
4
+ import { installGlobals } from '@remix-run/node';
5
+ import { fileURLToPath } from 'url';
6
+ import { defineRoutesConfig } from '@common-stack/rollup-vite-utils/lib/vite-wrappers/json-wrappers.js';
7
+ import tsconfigPaths from 'vite-tsconfig-paths';
8
+ import { i18nInternationalizationPlugin } from '@common-stack/rollup-vite-utils/lib/vite-plugins/i18n-internationalization-plugin.js';
9
+ import { performCopyOperations } from '@common-stack/rollup-vite-utils/lib/preStartup/configLoader/configLoader.js';
10
+ import { loadEnvConfig } from '@common-stack/rollup-vite-utils/lib/preStartup/configLoader/envLoader.js';
11
+ import { cjsInterop } from 'vite-plugin-cjs-interop';
12
+ import config from './app/cde-webconfig.json' assert { type: 'json' };
13
+
14
+ // This installs globals such as "fetch", "Response", "Request" and "Headers".
15
+ installGlobals();
16
+ const directoryName = dirname(fileURLToPath(import.meta.url));
17
+
18
+ export default defineConfig(({ isSsrBuild }) => {
19
+ console.log('---IS SSR BUILD', isSsrBuild);
20
+
21
+ const dotEnvResult = loadEnvConfig(directoryName);
22
+
23
+ return {
24
+ define: {
25
+ __ENV__: JSON.stringify(dotEnvResult?.parsed),
26
+ ...Object.assign(
27
+ ...Object.entries(config.buildConfig).map(([k, v]) => ({
28
+ [k]: typeof v !== 'string' ? v : `"${v.replace(/\\/g, '\\\\')}"`,
29
+ __SERVER__: true,
30
+ __CLIENT__: false,
31
+ }))
32
+ ),
33
+ },
34
+ plugins: [
35
+ i18nInternationalizationPlugin({
36
+ folderName: 'cdm-locales',
37
+ packages: [...config.modules, ...config.i18n.packages],
38
+ namespaceResolution: 'basename',
39
+ }),
40
+ cjsInterop({
41
+ dependencies:["@apollo/client"]
42
+ }),
43
+ remix({
44
+ appDirectory: 'src',
45
+ routes: async (defineRoutes) => {
46
+ if (process.env.NODE_ENV === 'production') {
47
+ await performCopyOperations(config);
48
+ }
49
+ const metaJson = await import('./app/sync-meta.json').catch(() => null);
50
+ return defineRoutes((routeFn) => {
51
+ defineRoutesConfig(routeFn, {
52
+ routesFileName: 'routes.json',
53
+ packages: config.modules,
54
+ paths: config.paths,
55
+ rootPath: resolve(directoryName, '../..'),
56
+ }, metaJson);
57
+ });
58
+ },
59
+ }),
60
+ tsconfigPaths({ ignoreConfigErrors: true }),
61
+ ],
62
+ resolve: {
63
+ // preserveSymlinks: true,
64
+ alias: {
65
+ '@app': resolve(__dirname, 'app'),
66
+ '@src': resolve(__dirname, 'src'),
67
+ },
68
+ },
69
+ };
70
+ });
package/lib/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var generator=require('./generators/add-entries/generator.cjs');exports.addEntriesGenerator=generator.addEntriesGenerator;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var generator=require('./generators/add-frontend/generator.cjs'),generator$1=require('./generators/add-backend/generator.cjs');exports.addFrontendGenerator=generator.addFrontendGenerator;exports.addBackendGenerator=generator$1.addBackendGenerator;//# sourceMappingURL=index.cjs.map
package/lib/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- export * from './generators/add-entries/generator';
1
+ export * from './generators/add-frontend/generator';
2
+ export * from './generators/add-backend/generator';
package/lib/index.mjs CHANGED
@@ -1 +1 @@
1
- export{addEntriesGenerator}from'./generators/add-entries/generator.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{addFrontendGenerator}from'./generators/add-frontend/generator.mjs';export{addBackendGenerator}from'./generators/add-backend/generator.mjs';//# sourceMappingURL=index.mjs.map
@@ -0,0 +1,8 @@
1
+ 'use strict';var fs=require('node:fs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var fs__namespace=/*#__PURE__*/_interopNamespaceDefault(fs);const resetProject = (rootDir) => {
2
+ if (fs__namespace.existsSync(`${rootDir}/project.json`)) {
3
+ fs__namespace.unlinkSync(`${rootDir}/project.json`);
4
+ }
5
+ if (fs__namespace.existsSync(`${rootDir}/src`)) {
6
+ fs__namespace.rmSync(`${rootDir}/src`, { recursive: true, force: true });
7
+ }
8
+ };exports.resetProject=resetProject;//# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/utils/index.ts"],"sourcesContent":[null],"names":["fs"],"mappings":"iYAEa,MAAA,YAAY,GAAG,CAAC,OAAe,KAAI;IAC5C,IAAIA,aAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAA,aAAA,CAAe,CAAC,EAAE;AAC1C,QAAAA,aAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAA,aAAA,CAAe,CAAC,CAAC;KAC5C;IACD,IAAIA,aAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAA,IAAA,CAAM,CAAC,EAAE;AACjC,QAAAA,aAAE,CAAC,MAAM,CAAC,CAAG,EAAA,OAAO,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KACjE;AACL"}
@@ -0,0 +1 @@
1
+ export declare const resetProject: (rootDir: string) => void;
@@ -0,0 +1,8 @@
1
+ import*as fs from'node:fs';const resetProject = (rootDir) => {
2
+ if (fs.existsSync(`${rootDir}/project.json`)) {
3
+ fs.unlinkSync(`${rootDir}/project.json`);
4
+ }
5
+ if (fs.existsSync(`${rootDir}/src`)) {
6
+ fs.rmSync(`${rootDir}/src`, { recursive: true, force: true });
7
+ }
8
+ };export{resetProject};//# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../src/utils/index.ts"],"sourcesContent":[null],"names":[],"mappings":"2BAEa,MAAA,YAAY,GAAG,CAAC,OAAe,KAAI;IAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAA,aAAA,CAAe,CAAC,EAAE;AAC1C,QAAA,EAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAA,aAAA,CAAe,CAAC,CAAC;KAC5C;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAA,IAAA,CAAM,CAAC,EAAE;AACjC,QAAA,EAAE,CAAC,MAAM,CAAC,CAAG,EAAA,OAAO,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KACjE;AACL"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@common-stack/generate-plugin",
3
- "version": "5.0.4-alpha.0",
3
+ "version": "5.0.4-alpha.11",
4
4
  "type": "module",
5
5
  "main": "./lib/index.mjs",
6
6
  "typings": "./lib/index.d.ts",
@@ -24,5 +24,5 @@
24
24
  "tslib": "^2.3.0"
25
25
  },
26
26
  "generators": "./generators.json",
27
- "gitHead": "0861be852c850b9d89deb432252a0b849b085a4b"
27
+ "gitHead": "c7d1d652a22de1c57969724a587f90435c0e2fae"
28
28
  }
package/rollup.config.mjs CHANGED
@@ -7,19 +7,28 @@ import copy from 'rollup-plugin-copy';
7
7
  // Define a base configuration for reuse
8
8
  const baseConfig = {
9
9
  plugins: [
10
- image(),
10
+ image({
11
+ exclude: ['src/generators/add-frontend', 'src/generators/add-backend'],
12
+ }),
11
13
  graphql({
12
14
  include: '**/*.gql',
15
+ exclude: ['src/generators/add-frontend', 'src/generators/add-backend'],
13
16
  }),
14
17
  string({
15
18
  include: '**/*.graphql',
19
+ exclude: ['src/generators/add-frontend', 'src/generators/add-backend'],
20
+ }),
21
+ typescript({
22
+ noEmitOnError: true,
23
+ exclude: ['src/generators/add-frontend', 'src/generators/add-backend'],
16
24
  }),
17
- typescript({ noEmitOnError: true }),
18
25
  copy({
19
26
  targets: [
20
- { src: 'src/generators/add-entries/schema.json', dest: 'lib/generators/add-entries' },
21
- { src: 'src/generators/add-entries/files/*', dest: 'lib/generators/add-entries/files' },
22
- { src: 'src/generators/add-entries/entries/*', dest: 'lib/generators/add-entries/entries' },
27
+ { src: 'src/generators/add-frontend/schema.json', dest: 'lib/generators/add-frontend' },
28
+ { src: 'src/generators/add-frontend/templates/*', dest: 'lib/generators/add-frontend/templates' },
29
+ { src: 'src/generators/add-frontend/frameworks/*', dest: 'lib/generators/add-frontend/frameworks' },
30
+ { src: 'src/generators/add-backend/schema.json', dest: 'lib/generators/add-backend' },
31
+ { src: 'src/generators/add-backend/files/*', dest: 'lib/generators/add-backend/files' },
23
32
  ],
24
33
  verbose: true,
25
34
  }),
@@ -1,19 +1,19 @@
1
1
  import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
2
2
  import { Tree, readProjectConfiguration } from '@nx/devkit';
3
3
 
4
- import { addEntriesGenerator } from './generator';
5
- import { AddEntriesGeneratorSchema } from './schema';
4
+ import { addBackendGenerator } from './generator';
5
+ import { AddBackendGeneratorSchema } from './schema';
6
6
 
7
- describe('add-entries generator', () => {
7
+ describe('add-backend generator', () => {
8
8
  let tree: Tree;
9
- const options: AddEntriesGeneratorSchema = { projectPath: '/' };
9
+ const options: AddBackendGeneratorSchema = { ns: 'test' };
10
10
 
11
11
  beforeEach(() => {
12
12
  tree = createTreeWithEmptyWorkspace();
13
13
  });
14
14
 
15
15
  it('should run successfully', async () => {
16
- await addEntriesGenerator(tree, options);
16
+ await addBackendGenerator(tree, options);
17
17
  const config = readProjectConfiguration(tree, 'test');
18
18
  expect(config).toBeDefined();
19
19
  });
@@ -0,0 +1,30 @@
1
+ import { addProjectConfiguration, formatFiles, generateFiles, Tree, updateJson } from '@nx/devkit';
2
+ import * as path from 'path';
3
+ import { AddBackendGeneratorSchema } from './schema';
4
+ import { resetProject } from '../../utils';
5
+
6
+ export async function addBackendGenerator(tree: Tree, options: AddBackendGeneratorSchema) {
7
+ const basePath = process.cwd();
8
+ const projectName = options.ns ? `backend-${options.ns}-server` : 'backend-server';
9
+ const projectRoot = options.path ? `${options.path}${projectName}` : projectName;
10
+ const projectSrc = `${projectRoot}/src`;
11
+
12
+ resetProject(`${basePath}/${projectRoot}`);
13
+
14
+ // addProjectConfiguration(tree, framework, {
15
+ // root: projectRoot,
16
+ // projectType: 'library',
17
+ // sourceRoot: projectSrc,
18
+ // targets: {},
19
+ // });
20
+
21
+ generateFiles(tree, path.join(__dirname, 'files'), projectRoot, {});
22
+ updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
23
+ packageJson['name'] = projectName;
24
+ return packageJson;
25
+ });
26
+
27
+ await formatFiles(tree);
28
+ }
29
+
30
+ export default addBackendGenerator;
@@ -0,0 +1,4 @@
1
+ export interface AddBackendGeneratorSchema {
2
+ ns: string;
3
+ path?: string;
4
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "AddBackend",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "ns": {
8
+ "type": "string",
9
+ "description": "The project namespace"
10
+ },
11
+ "path": {
12
+ "type": "string",
13
+ "description": "The project path ex: \"servers/\", default: \"/\""
14
+ }
15
+ },
16
+ "required": ["ns"]
17
+ }
@@ -0,0 +1,20 @@
1
+ import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
2
+ import { Tree, readProjectConfiguration } from '@nx/devkit';
3
+
4
+ import { addFrontendGenerator } from './generator';
5
+ import { AddFrontendGeneratorSchema } from './schema';
6
+
7
+ describe('add-frontend generator', () => {
8
+ let tree: Tree;
9
+ const options: AddFrontendGeneratorSchema = { ns: 'test' };
10
+
11
+ beforeEach(() => {
12
+ tree = createTreeWithEmptyWorkspace();
13
+ });
14
+
15
+ it('should run successfully', async () => {
16
+ await addFrontendGenerator(tree, options);
17
+ const config = readProjectConfiguration(tree, 'test');
18
+ expect(config).toBeDefined();
19
+ });
20
+ });
@@ -0,0 +1,40 @@
1
+ import { addProjectConfiguration, formatFiles, generateFiles, Tree, updateJson } from '@nx/devkit';
2
+ import * as path from 'path';
3
+ import { AddFrontendGeneratorSchema } from './schema';
4
+ import { resetProject } from '../../utils';
5
+
6
+ const DEFAULT_FRAMEWORK = 'antui';
7
+
8
+ export async function addFrontendGenerator(tree: Tree, options: AddFrontendGeneratorSchema) {
9
+ const basePath = process.cwd();
10
+ const projectName = options.ns ? `frontend-${options.ns}-server` : 'frontend-server';
11
+ const projectRoot = options.path ? `${options.path}${projectName}` : projectName;
12
+ const projectSrc = `${projectRoot}/src`;
13
+
14
+ const framework = options.framework || DEFAULT_FRAMEWORK;
15
+ console.log('UI framework specified: ', framework);
16
+
17
+ resetProject(`${basePath}/${projectRoot}`);
18
+
19
+ // addProjectConfiguration(tree, framework, {
20
+ // root: projectRoot,
21
+ // projectType: 'library',
22
+ // sourceRoot: projectSrc,
23
+ // targets: {},
24
+ // });
25
+
26
+ generateFiles(tree, path.join(__dirname, 'templates'), projectRoot, {});
27
+ generateFiles(tree, path.join(__dirname, 'frameworks', framework), projectSrc, options);
28
+ updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
29
+ packageJson['name'] = projectName;
30
+ return packageJson;
31
+ });
32
+ updateJson(tree, `${projectRoot}/config.json`, (configJson) => {
33
+ configJson['uiFramework'] = framework;
34
+ return configJson;
35
+ });
36
+
37
+ await formatFiles(tree);
38
+ }
39
+
40
+ export default addFrontendGenerator;
@@ -0,0 +1,5 @@
1
+ export interface AddFrontendGeneratorSchema {
2
+ ns: string;
3
+ path?: string;
4
+ framework?: string;
5
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "AddFrontend",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "ns": {
8
+ "type": "string",
9
+ "description": "The project namespace"
10
+ },
11
+ "path": {
12
+ "type": "string",
13
+ "description": "The project path ex: \"servers/\", default: \"/\""
14
+ },
15
+ "framework": {
16
+ "type": "string",
17
+ "description": "UI framework in [antui, chakraui]"
18
+ }
19
+ },
20
+ "required": ["ns"]
21
+ }
package/src/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './generators/add-entries/generator';
2
- // export const schema = import('./generators/add-entries/schema.json');
1
+ export * from './generators/add-frontend/generator';
2
+ export * from './generators/add-backend/generator';
@@ -0,0 +1,10 @@
1
+ import * as fs from 'node:fs';
2
+
3
+ export const resetProject = (rootDir: string) => {
4
+ if (fs.existsSync(`${rootDir}/project.json`)) {
5
+ fs.unlinkSync(`${rootDir}/project.json`);
6
+ }
7
+ if (fs.existsSync(`${rootDir}/src`)) {
8
+ fs.rmSync(`${rootDir}/src`, { recursive: true, force: true });
9
+ }
10
+ }