@common-stack/generate-plugin 6.0.8-alpha.43 → 6.0.8-alpha.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [6.0.8-alpha.45](https://github.com/cdmbase/common-stack/compare/v6.0.8-alpha.44...v6.0.8-alpha.45) (2025-02-07)
7
+
8
+ **Note:** Version bump only for package @common-stack/generate-plugin
9
+
10
+ ## [6.0.8-alpha.44](https://github.com/cdmbase/common-stack/compare/v6.0.8-alpha.43...v6.0.8-alpha.44) (2025-02-05)
11
+
12
+ **Note:** Version bump only for package @common-stack/generate-plugin
13
+
6
14
  ## [6.0.8-alpha.43](https://github.com/cdmbase/common-stack/compare/v6.0.8-alpha.42...v6.0.8-alpha.43) (2025-02-04)
7
15
 
8
16
  **Note:** Version bump only for package @common-stack/generate-plugin
@@ -1,5 +1,61 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib=require('tslib'),devkit=require('@nx/devkit'),path=require('path'),setupConfig_cjs=require('@common-stack/rollup-vite-utils/lib/utils/setupConfig.cjs'),index=require('../../utils/index.cjs'),constants=require('../../common/constants.cjs');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 path__namespace=/*#__PURE__*/_interopNamespaceDefault(path);const DEFAULT_FRAMEWORK = constants.FRAMEWORK_ANTUI;
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib=require('tslib'),devkit=require('@nx/devkit'),path=require('path'),fs=require('node:fs'),setupConfig_cjs=require('@common-stack/rollup-vite-utils/lib/utils/setupConfig.cjs'),index=require('../../utils/index.cjs'),constants=require('../../common/constants.cjs');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 path__namespace=/*#__PURE__*/_interopNamespaceDefault(path);var fs__namespace=/*#__PURE__*/_interopNamespaceDefault(fs);const DEFAULT_FRAMEWORK = constants.FRAMEWORK_ANTUI;
2
2
  const DEFAULT_SERVER_NAME = 'frontend-server';
3
+ // Read the generator's package.json. This file is updated using ncu,
4
+ // so the generator always picks up the latest dependency versions.
5
+ const pluginPkgPath = path__namespace.resolve(__dirname, '../../common/package-releases/package.json');
6
+ const pluginPkg = JSON.parse(fs__namespace.readFileSync(pluginPkgPath, 'utf-8'));
7
+ /**
8
+ * Helper to retrieve a package version from pluginPkg.
9
+ * Throws an error if a version for packageName is not defined.
10
+ */
11
+ function getPackageVersion(packageName) {
12
+ const version = (pluginPkg.dependencies && pluginPkg.dependencies[packageName]) ||
13
+ (pluginPkg.devDependencies && pluginPkg.devDependencies[packageName]);
14
+ if (!version) {
15
+ throw new Error(`Version for package "${packageName}" not found in plugin package.json.`);
16
+ }
17
+ return version;
18
+ }
19
+ /**
20
+ * Helper to map an array of dependency names to an object where each key is a dependency
21
+ * and its value is obtained via getPackageVersion().
22
+ */
23
+ function mapDependencies(depNames) {
24
+ return depNames.reduce((acc, name) => {
25
+ acc[name] = getPackageVersion(name);
26
+ return acc;
27
+ }, {});
28
+ }
29
+ /**
30
+ * A mapping of frameworks to dependency definitions.
31
+ * Each dependency's version is obtained dynamically from pluginPkg using a helper.
32
+ */
33
+ const frameworkDependencyMap = {
34
+ [constants.FRAMEWORK_ANTUI]: {
35
+ dependencies: mapDependencies([
36
+ '@admin-layout/ant-design-pro',
37
+ '@ant-design/static-style-extract',
38
+ '@emotion/react',
39
+ '@emotion/server',
40
+ '@emotion/css',
41
+ '@emotion/styled',
42
+ 'antd',
43
+ ]),
44
+ },
45
+ [constants.FRAMEWORK_CHAKRAUI]: {
46
+ dependencies: mapDependencies([
47
+ '@chakra-ui/react',
48
+ 'framer-motion',
49
+ '@emotion/react',
50
+ '@emotion/server',
51
+ '@emotion/css',
52
+ '@emotion/styled',
53
+ ]),
54
+ },
55
+ [constants.FRAMEWORK_TAILWINDUI]: {
56
+ devDependencies: mapDependencies(['tailwindcss', 'postcss', 'autoprefixer']),
57
+ },
58
+ };
3
59
  function addFrontendGenerator(tree, options) {
4
60
  return tslib.__awaiter(this, void 0, void 0, function* () {
5
61
  const projectName = index.isValid(options.name) ? `frontend-${index.getValid(options.name)}-server` : DEFAULT_SERVER_NAME;
@@ -15,52 +71,44 @@ const generateFrontend = (tree, options) => tslib.__awaiter(void 0, void 0, void
15
71
  const projectSrc = `${projectRoot}/src`;
16
72
  const framework = (_b = index.getValid(options.framework)) !== null && _b !== void 0 ? _b : DEFAULT_FRAMEWORK;
17
73
  console.log('UI framework specified: ', framework);
18
- // resetProject(`${basePath}/${projectRoot}`);
19
- // addProjectConfiguration(tree, framework, {
20
- // root: projectRoot,
21
- // projectType: 'library',
22
- // sourceRoot: projectSrc,
23
- // targets: {},
24
- // });
25
74
  devkit.generateFiles(tree, path__namespace.join(__dirname, 'templates'), projectRoot, {});
26
75
  devkit.generateFiles(tree, path__namespace.join(__dirname, 'frameworks', framework), projectSrc, options);
27
76
  devkit.updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
28
- packageJson['name'] = projectName;
29
- if (framework === constants.FRAMEWORK_ANTUI) {
30
- packageJson['dependencies']["@admin-layout/ant-design-pro"] = "latest";
31
- packageJson['dependencies']["@ant-design/static-style-extract"] = "^1.0.2";
32
- packageJson['dependencies']["@emotion/react"] = "^11.10.0";
33
- packageJson['dependencies']["@emotion/server"] = "^11.10.0";
34
- packageJson['dependencies']["@emotion/css"] = "^11.10.0";
35
- packageJson['dependencies']["@emotion/styled"] = "^11.10.4";
36
- packageJson['dependencies']["antd"] = "^5.14.0";
37
- }
38
- else if (framework === constants.FRAMEWORK_CHAKRAUI) {
39
- packageJson['dependencies']["@chakra-ui/react"] = "^2.8.2";
40
- packageJson['dependencies']["framer-motion"] = "^11.5.4";
41
- packageJson['dependencies']["@emotion/react"] = "^11.10.0";
42
- packageJson['dependencies']["@emotion/server"] = "^11.10.0";
43
- packageJson['dependencies']["@emotion/css"] = "^11.10.0";
44
- packageJson['dependencies']["@emotion/styled"] = "^11.10.4";
77
+ packageJson.name = projectName;
78
+ packageJson.dependencies = packageJson.dependencies || {};
79
+ packageJson.devDependencies = packageJson.devDependencies || {};
80
+ const dependencyOverrides = frameworkDependencyMap[framework] || {};
81
+ if (dependencyOverrides.dependencies) {
82
+ Object.entries(dependencyOverrides.dependencies).forEach(([pkg, version]) => {
83
+ if (!packageJson.dependencies[pkg]) {
84
+ packageJson.dependencies[pkg] = version;
85
+ }
86
+ });
45
87
  }
46
- else if (framework === constants.FRAMEWORK_TAILWINDUI) {
47
- packageJson['devDependencies']["tailwindcss"] = "^3.4.10";
48
- packageJson['devDependencies']["postcss"] = "^8.4.41";
49
- packageJson['devDependencies']["autoprefixer"] = "^10.4.20";
88
+ if (dependencyOverrides.devDependencies) {
89
+ Object.entries(dependencyOverrides.devDependencies).forEach(([pkg, version]) => {
90
+ if (!packageJson.devDependencies[pkg]) {
91
+ packageJson.devDependencies[pkg] = version;
92
+ }
93
+ });
50
94
  }
51
95
  return packageJson;
52
96
  });
53
97
  devkit.updateJson(tree, `${projectRoot}/config.json`, (configJson) => {
54
- configJson['uiFramework'] = framework;
98
+ configJson.uiFramework = framework;
55
99
  if (framework === constants.FRAMEWORK_ANTUI) {
56
- configJson['modules'].push("@admin-layout/ant-design-pro");
100
+ if (!configJson.modules.includes('@admin-layout/ant-design-pro')) {
101
+ configJson.modules.push('@admin-layout/ant-design-pro');
102
+ }
57
103
  }
58
104
  else if (framework === constants.FRAMEWORK_CHAKRAUI) {
59
- configJson['modules'].push("@admin-layout/chakra-design-pro");
105
+ if (!configJson.modules.includes('@admin-layout/chakra-design-pro')) {
106
+ configJson.modules.push('@admin-layout/chakra-design-pro');
107
+ }
60
108
  }
61
109
  if (options['config.json']) {
62
- const addtionalConfigs = options['config.json'];
63
- configJson = setupConfig_cjs.deepMerge(configJson, addtionalConfigs);
110
+ const additionalConfigs = options['config.json'];
111
+ configJson = setupConfig_cjs.deepMerge(configJson, additionalConfigs);
64
112
  }
65
113
  return configJson;
66
114
  });
@@ -1 +1 @@
1
- {"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-frontend/generator.ts"],"sourcesContent":[null],"names":["FRAMEWORK_ANTUI","isValid","getValid","__awaiter","generateFiles","path","updateJson","FRAMEWORK_CHAKRAUI","FRAMEWORK_TAILWINDUI","deepMerge","formatFiles"],"mappings":"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"}
1
+ {"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-frontend/generator.ts"],"sourcesContent":[null],"names":["FRAMEWORK_ANTUI","path","fs","FRAMEWORK_CHAKRAUI","FRAMEWORK_TAILWINDUI","isValid","getValid","__awaiter","generateFiles","updateJson","deepMerge","formatFiles"],"mappings":"+uBAWA,MAAM,iBAAiB,GAAGA,yBAAe,CAAC;AAC1C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAE9C;AACA;AACA,MAAM,aAAa,GAAGC,eAAI,CAAC,OAAO,CAAC,SAAS,EAAE,4CAA4C,CAAC,CAAC;AAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAACC,aAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtE;;;AAGG;AACH,SAAS,iBAAiB,CAAC,WAAmB,EAAA;AAC1C,IAAA,MAAM,OAAO,GACT,CAAC,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC;SAC7D,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1E,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,WAAW,CAAA,mCAAA,CAAqC,CAAC,CAAC;KAC7F;AACD,IAAA,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;AAGG;AACH,SAAS,eAAe,CAAC,QAAkB,EAAA;IACvC,OAAO,QAAQ,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,IAAI,KAAI;QACV,GAAG,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,OAAO,GAAG,CAAC;KACd,EACD,EAA4B,CAC/B,CAAC;AACN,CAAC;AAED;;;AAGG;AACH,MAAM,sBAAsB,GAExB;IACA,CAACF,yBAAe,GAAG;QACf,YAAY,EAAE,eAAe,CAAC;YAC1B,8BAA8B;YAC9B,kCAAkC;YAClC,gBAAgB;YAChB,iBAAiB;YACjB,cAAc;YACd,iBAAiB;YACjB,MAAM;SACT,CAAC;AACL,KAAA;IACD,CAACG,4BAAkB,GAAG;QAClB,YAAY,EAAE,eAAe,CAAC;YAC1B,kBAAkB;YAClB,eAAe;YACf,gBAAgB;YAChB,iBAAiB;YACjB,cAAc;YACd,iBAAiB;SACpB,CAAC;AACL,KAAA;IACD,CAACC,8BAAoB,GAAG;QACpB,eAAe,EAAE,eAAe,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC/E,KAAA;CACJ,CAAC;AAEoB,SAAA,oBAAoB,CAAC,IAAU,EAAE,OAAmC,EAAA;;QACtF,MAAM,WAAW,GAAGC,aAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAYC,cAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;QAC9G,MAAM,OAAO,mCAAa,OAAO,CAAA,EAAA,EAAE,IAAI,EAAE,WAAW,GAAE,CAAC;AACvD,QAAA,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAChD,CAAA,CAAA;AAAA,CAAA;MAEY,gBAAgB,GAAG,CAAO,IAAU,EAAE,OAAY,KAAIC,eAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;IAC/D,IAAI,WAAW,GAAG,CAAA,EAAA,GAAAD,cAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,mBAAmB,CAAC;IAChE,MAAM,WAAW,GAAGD,aAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA,EAAGC,cAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,WAAW,CAAC;IAC/G,WAAW,GAAGD,aAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAG,EAAAC,cAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAI,CAAA,EAAA,WAAW,EAAE,GAAG,WAAW,CAAC;AAC3F,IAAA,MAAM,UAAU,GAAG,CAAG,EAAA,WAAW,MAAM,CAAC;IAExC,MAAM,SAAS,GAAG,CAAA,EAAA,GAAAA,cAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,iBAAiB,CAAC;AACnE,IAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;AAEnD,IAAAE,oBAAa,CAAC,IAAI,EAAEP,eAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;AACxE,IAAAO,oBAAa,CAAC,IAAI,EAAEP,eAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAExFQ,iBAAU,CAAC,IAAI,EAAE,CAAG,EAAA,WAAW,eAAe,EAAE,CAAC,WAAW,KAAI;AAC5D,QAAA,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC;QAC/B,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;QAC1D,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;QAEhE,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAEpE,QAAA,IAAI,mBAAmB,CAAC,YAAY,EAAE;AAClC,YAAA,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAI;gBACxE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;AAChC,oBAAA,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;iBAC3C;AACL,aAAC,CAAC,CAAC;SACN;AAED,QAAA,IAAI,mBAAmB,CAAC,eAAe,EAAE;AACrC,YAAA,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAI;gBAC3E,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;AACnC,oBAAA,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;iBAC9C;AACL,aAAC,CAAC,CAAC;SACN;AAED,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;IAEHA,iBAAU,CAAC,IAAI,EAAE,CAAG,EAAA,WAAW,cAAc,EAAE,CAAC,UAAU,KAAI;AAC1D,QAAA,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;AACnC,QAAA,IAAI,SAAS,KAAKT,yBAAe,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE;AAC9D,gBAAA,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;aAC3D;SACJ;AAAM,aAAA,IAAI,SAAS,KAAKG,4BAAkB,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE;AACjE,gBAAA,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;aAC9D;SACJ;AAED,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;AACxB,YAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACjD,YAAA,UAAU,GAAGO,yBAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;SACzD;AAED,QAAA,OAAO,UAAU,CAAC;AACtB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAMC,kBAAW,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,5 +1,61 @@
1
- import {__awaiter}from'tslib';import {generateFiles,updateJson,formatFiles}from'@nx/devkit';import*as path from'path';import {deepMerge}from'@common-stack/rollup-vite-utils/lib/utils/setupConfig.cjs';import {isValid,getValid}from'../../utils/index.mjs';import {FRAMEWORK_ANTUI,FRAMEWORK_CHAKRAUI,FRAMEWORK_TAILWINDUI}from'../../common/constants.mjs';const DEFAULT_FRAMEWORK = FRAMEWORK_ANTUI;
1
+ import {__awaiter}from'tslib';import {generateFiles,updateJson,formatFiles}from'@nx/devkit';import*as path from'path';import*as fs from'node:fs';import {deepMerge}from'@common-stack/rollup-vite-utils/lib/utils/setupConfig.cjs';import {isValid,getValid}from'../../utils/index.mjs';import {FRAMEWORK_ANTUI,FRAMEWORK_CHAKRAUI,FRAMEWORK_TAILWINDUI}from'../../common/constants.mjs';const DEFAULT_FRAMEWORK = FRAMEWORK_ANTUI;
2
2
  const DEFAULT_SERVER_NAME = 'frontend-server';
3
+ // Read the generator's package.json. This file is updated using ncu,
4
+ // so the generator always picks up the latest dependency versions.
5
+ const pluginPkgPath = path.resolve(__dirname, '../../common/package-releases/package.json');
6
+ const pluginPkg = JSON.parse(fs.readFileSync(pluginPkgPath, 'utf-8'));
7
+ /**
8
+ * Helper to retrieve a package version from pluginPkg.
9
+ * Throws an error if a version for packageName is not defined.
10
+ */
11
+ function getPackageVersion(packageName) {
12
+ const version = (pluginPkg.dependencies && pluginPkg.dependencies[packageName]) ||
13
+ (pluginPkg.devDependencies && pluginPkg.devDependencies[packageName]);
14
+ if (!version) {
15
+ throw new Error(`Version for package "${packageName}" not found in plugin package.json.`);
16
+ }
17
+ return version;
18
+ }
19
+ /**
20
+ * Helper to map an array of dependency names to an object where each key is a dependency
21
+ * and its value is obtained via getPackageVersion().
22
+ */
23
+ function mapDependencies(depNames) {
24
+ return depNames.reduce((acc, name) => {
25
+ acc[name] = getPackageVersion(name);
26
+ return acc;
27
+ }, {});
28
+ }
29
+ /**
30
+ * A mapping of frameworks to dependency definitions.
31
+ * Each dependency's version is obtained dynamically from pluginPkg using a helper.
32
+ */
33
+ const frameworkDependencyMap = {
34
+ [FRAMEWORK_ANTUI]: {
35
+ dependencies: mapDependencies([
36
+ '@admin-layout/ant-design-pro',
37
+ '@ant-design/static-style-extract',
38
+ '@emotion/react',
39
+ '@emotion/server',
40
+ '@emotion/css',
41
+ '@emotion/styled',
42
+ 'antd',
43
+ ]),
44
+ },
45
+ [FRAMEWORK_CHAKRAUI]: {
46
+ dependencies: mapDependencies([
47
+ '@chakra-ui/react',
48
+ 'framer-motion',
49
+ '@emotion/react',
50
+ '@emotion/server',
51
+ '@emotion/css',
52
+ '@emotion/styled',
53
+ ]),
54
+ },
55
+ [FRAMEWORK_TAILWINDUI]: {
56
+ devDependencies: mapDependencies(['tailwindcss', 'postcss', 'autoprefixer']),
57
+ },
58
+ };
3
59
  function addFrontendGenerator(tree, options) {
4
60
  return __awaiter(this, void 0, void 0, function* () {
5
61
  const projectName = isValid(options.name) ? `frontend-${getValid(options.name)}-server` : DEFAULT_SERVER_NAME;
@@ -15,52 +71,44 @@ const generateFrontend = (tree, options) => __awaiter(void 0, void 0, void 0, fu
15
71
  const projectSrc = `${projectRoot}/src`;
16
72
  const framework = (_b = getValid(options.framework)) !== null && _b !== void 0 ? _b : DEFAULT_FRAMEWORK;
17
73
  console.log('UI framework specified: ', framework);
18
- // resetProject(`${basePath}/${projectRoot}`);
19
- // addProjectConfiguration(tree, framework, {
20
- // root: projectRoot,
21
- // projectType: 'library',
22
- // sourceRoot: projectSrc,
23
- // targets: {},
24
- // });
25
74
  generateFiles(tree, path.join(__dirname, 'templates'), projectRoot, {});
26
75
  generateFiles(tree, path.join(__dirname, 'frameworks', framework), projectSrc, options);
27
76
  updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
28
- packageJson['name'] = projectName;
29
- if (framework === FRAMEWORK_ANTUI) {
30
- packageJson['dependencies']["@admin-layout/ant-design-pro"] = "latest";
31
- packageJson['dependencies']["@ant-design/static-style-extract"] = "^1.0.2";
32
- packageJson['dependencies']["@emotion/react"] = "^11.10.0";
33
- packageJson['dependencies']["@emotion/server"] = "^11.10.0";
34
- packageJson['dependencies']["@emotion/css"] = "^11.10.0";
35
- packageJson['dependencies']["@emotion/styled"] = "^11.10.4";
36
- packageJson['dependencies']["antd"] = "^5.14.0";
37
- }
38
- else if (framework === FRAMEWORK_CHAKRAUI) {
39
- packageJson['dependencies']["@chakra-ui/react"] = "^2.8.2";
40
- packageJson['dependencies']["framer-motion"] = "^11.5.4";
41
- packageJson['dependencies']["@emotion/react"] = "^11.10.0";
42
- packageJson['dependencies']["@emotion/server"] = "^11.10.0";
43
- packageJson['dependencies']["@emotion/css"] = "^11.10.0";
44
- packageJson['dependencies']["@emotion/styled"] = "^11.10.4";
77
+ packageJson.name = projectName;
78
+ packageJson.dependencies = packageJson.dependencies || {};
79
+ packageJson.devDependencies = packageJson.devDependencies || {};
80
+ const dependencyOverrides = frameworkDependencyMap[framework] || {};
81
+ if (dependencyOverrides.dependencies) {
82
+ Object.entries(dependencyOverrides.dependencies).forEach(([pkg, version]) => {
83
+ if (!packageJson.dependencies[pkg]) {
84
+ packageJson.dependencies[pkg] = version;
85
+ }
86
+ });
45
87
  }
46
- else if (framework === FRAMEWORK_TAILWINDUI) {
47
- packageJson['devDependencies']["tailwindcss"] = "^3.4.10";
48
- packageJson['devDependencies']["postcss"] = "^8.4.41";
49
- packageJson['devDependencies']["autoprefixer"] = "^10.4.20";
88
+ if (dependencyOverrides.devDependencies) {
89
+ Object.entries(dependencyOverrides.devDependencies).forEach(([pkg, version]) => {
90
+ if (!packageJson.devDependencies[pkg]) {
91
+ packageJson.devDependencies[pkg] = version;
92
+ }
93
+ });
50
94
  }
51
95
  return packageJson;
52
96
  });
53
97
  updateJson(tree, `${projectRoot}/config.json`, (configJson) => {
54
- configJson['uiFramework'] = framework;
98
+ configJson.uiFramework = framework;
55
99
  if (framework === FRAMEWORK_ANTUI) {
56
- configJson['modules'].push("@admin-layout/ant-design-pro");
100
+ if (!configJson.modules.includes('@admin-layout/ant-design-pro')) {
101
+ configJson.modules.push('@admin-layout/ant-design-pro');
102
+ }
57
103
  }
58
104
  else if (framework === FRAMEWORK_CHAKRAUI) {
59
- configJson['modules'].push("@admin-layout/chakra-design-pro");
105
+ if (!configJson.modules.includes('@admin-layout/chakra-design-pro')) {
106
+ configJson.modules.push('@admin-layout/chakra-design-pro');
107
+ }
60
108
  }
61
109
  if (options['config.json']) {
62
- const addtionalConfigs = options['config.json'];
63
- configJson = deepMerge(configJson, addtionalConfigs);
110
+ const additionalConfigs = options['config.json'];
111
+ configJson = deepMerge(configJson, additionalConfigs);
64
112
  }
65
113
  return configJson;
66
114
  });
@@ -1 +1 @@
1
- {"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-frontend/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-frontend/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -88,6 +88,14 @@ export default defineConfig(async ({ isSsrBuild }) => {
88
88
  }),
89
89
  tsconfigPaths({ ignoreConfigErrors: true }),
90
90
  ],
91
+ optimizeDeps: {
92
+ esbuildOptions: {
93
+ target: 'esnext',
94
+ },
95
+ },
96
+ build: {
97
+ target: 'esnext',
98
+ },
91
99
  resolve: {
92
100
  alias: {
93
101
  '@app': resolve(directoryName, 'app'),
@@ -97,5 +105,11 @@ export default defineConfig(async ({ isSsrBuild }) => {
97
105
  };
98
106
 
99
107
  // Deep merge custom Vite config from config.json
100
- return mergeWith(viteConfig, config.viteConfig);
108
+ // to merge Arrays properly need to concat.
109
+ const result = mergeWith(config.viteConfig, viteConfig, (objValue, srcValue) => {
110
+ if (Array.isArray(objValue)) {
111
+ return objValue.concat(srcValue);
112
+ }
113
+ });
114
+ return result;
101
115
  });
@@ -150,7 +150,7 @@
150
150
  "@babel/register": "^7.18.9",
151
151
  "@babel/runtime": "^7.20.1",
152
152
  "@common-stack/env-list-loader": "6.0.8-alpha.31",
153
- "@common-stack/generate-plugin": "6.0.8-alpha.42",
153
+ "@common-stack/generate-plugin": "6.0.8-alpha.44",
154
154
  "@common-stack/rollup-vite-utils": "6.0.8-alpha.40",
155
155
  "@emotion/babel-plugin": "^11.11.0",
156
156
  "@graphql-codegen/add": "^5.0.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@common-stack/generate-plugin",
3
- "version": "6.0.8-alpha.43",
3
+ "version": "6.0.8-alpha.45",
4
4
  "type": "module",
5
5
  "main": "./lib/index.mjs",
6
6
  "typings": "./lib/index.d.ts",
@@ -25,5 +25,5 @@
25
25
  },
26
26
  "executors": "./executors.json",
27
27
  "generators": "./generators.json",
28
- "gitHead": "46570a4970ffd587ba4049983159e0c4376c7f39"
28
+ "gitHead": "1d9871fda608e2054d03b7a9491d367a67d848e7"
29
29
  }
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "sample-stack-frontend-server",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "resolutions": {
6
+ "common": "link:./common"
7
+ },
8
+ "dependencies": {
9
+ "@admin-layout/ant-design-pro": "10.0.2-alpha.4",
10
+ "@ant-design/static-style-extract": "^1.0.3",
11
+ "@chakra-ui/react": "^2.8.0",
12
+ "@emotion/css": "^11.13.5",
13
+ "@emotion/react": "^11.14.0",
14
+ "@emotion/server": "^11.11.0",
15
+ "@emotion/styled": "^11.14.0",
16
+ "antd": "^5.23.4",
17
+ "autoprefixer": "^10.4.20",
18
+ "framer-motion": "^12.4.1",
19
+ "postcss": "^8.5.1",
20
+ "tailwindcss": "^4.0.4"
21
+ },
22
+ "devDependencies": {},
23
+ "peerDependencies": {
24
+ "body-parser": "*"
25
+ }
26
+ }
@@ -0,0 +1,33 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`addFrontendGenerator should add missing dependencies and update config.json for antui 1`] = `
4
+ {
5
+ "dependencies": {
6
+ "@admin-layout/ant-design-pro": "10.0.2-alpha.4",
7
+ "@ant-design/static-style-extract": "^1.0.3",
8
+ "@emotion/css": "^11.13.5",
9
+ "@emotion/react": "^11.14.0",
10
+ "@emotion/server": "^11.11.0",
11
+ "@emotion/styled": "^11.14.0",
12
+ "antd": "^5.23.4",
13
+ },
14
+ "devDependencies": {},
15
+ "name": "frontend-demo-server",
16
+ }
17
+ `;
18
+
19
+ exports[`addFrontendGenerator should not override an already existing dependency version 1`] = `
20
+ {
21
+ "dependencies": {
22
+ "@admin-layout/ant-design-pro": "10.0.2-alpha.4",
23
+ "@ant-design/static-style-extract": "^1.0.3",
24
+ "@emotion/css": "^11.13.5",
25
+ "@emotion/react": "^11.14.0",
26
+ "@emotion/server": "^11.11.0",
27
+ "@emotion/styled": "^11.14.0",
28
+ "antd": "1.0.0",
29
+ },
30
+ "devDependencies": {},
31
+ "name": "frontend-demo-server",
32
+ }
33
+ `;
@@ -0,0 +1,79 @@
1
+ /* eslint-disable jest/no-hooks */
2
+ /* eslint-disable import/no-extraneous-dependencies */
3
+ import { beforeEach, describe, expect, it, jest } from '@jest/globals';
4
+ import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
5
+ import { readJson, Tree, writeJson } from '@nx/devkit';
6
+ import * as devkit from '@nx/devkit';
7
+ import { addFrontendGenerator } from './generator';
8
+ import { FRAMEWORK_ANTUI } from '../../common/constants';
9
+
10
+ describe('addFrontendGenerator', () => {
11
+ let tree: Tree;
12
+ const options = { name: 'demo', framework: FRAMEWORK_ANTUI, ns: '', directory: '' };
13
+
14
+ const projectRoot = 'frontend-demo-server';
15
+
16
+ beforeEach(() => {
17
+ // Create an in-memory workspace
18
+ tree = createTreeWithEmptyWorkspace();
19
+
20
+ // Stub out generateFiles so we don't trigger file reading from the real templates folders.
21
+ jest.spyOn(devkit, 'generateFiles').mockImplementation(() => {});
22
+ });
23
+
24
+ it('should add missing dependencies and update config.json for antui', async () => {
25
+ // Simulate an existing package.json with no dependencies.
26
+ writeJson(tree, `${projectRoot}/package.json`, {
27
+ name: 'demo',
28
+ dependencies: {},
29
+ });
30
+ // Simulate an existing config.json with an empty modules array.
31
+ writeJson(tree, `${projectRoot}/config.json`, {
32
+ modules: [],
33
+ });
34
+
35
+ await addFrontendGenerator(tree, options);
36
+
37
+ // Read and verify package.json updates.
38
+ const pkg = readJson(tree, `${projectRoot}/package.json`);
39
+
40
+ expect(pkg.name).toBe('frontend-demo-server');
41
+ // Check that the key dependency is added.
42
+ expect(pkg.dependencies['@admin-layout/ant-design-pro']).toBeDefined();
43
+ expect(pkg.dependencies['@ant-design/static-style-extract']).toBeDefined();
44
+ expect(pkg.dependencies['@emotion/react']).toBeDefined();
45
+ expect(pkg.dependencies['antd']).toBeDefined();
46
+ expect(pkg).toMatchSnapshot();
47
+
48
+ // Read and verify config.json updates.
49
+ const config = readJson(tree, `${projectRoot}/config.json`);
50
+
51
+ expect(config.uiFramework).toBe(FRAMEWORK_ANTUI);
52
+ // Ensure that the module is added only once.
53
+ expect(config.modules.includes('@admin-layout/ant-design-pro')).toBeTruthy();
54
+ });
55
+
56
+ it('should not override an already existing dependency version', async () => {
57
+ // Create an initial package.json that already defines a version for a dependency.
58
+ writeJson(tree, `${projectRoot}/package.json`, {
59
+ name: 'demo',
60
+ dependencies: {
61
+ antd: '1.0.0', // Already defined version
62
+ },
63
+ });
64
+ // Create a minimal config.json.
65
+ writeJson(tree, `${projectRoot}/config.json`, {
66
+ modules: [],
67
+ });
68
+
69
+ await addFrontendGenerator(tree, options);
70
+
71
+ const pkg = readJson(tree, `${projectRoot}/package.json`);
72
+
73
+ // Make sure the dependency already there was not overridden.
74
+ expect(pkg.dependencies.antd).toEqual('1.0.0');
75
+ // Ensure other expected dependencies have been added.
76
+ expect(pkg.dependencies['@admin-layout/ant-design-pro']).toBeDefined();
77
+ expect(pkg).toMatchSnapshot();
78
+ });
79
+ });
@@ -1,4 +1,7 @@
1
- import { addProjectConfiguration, formatFiles, generateFiles, Tree, updateJson } from '@nx/devkit';
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable no-param-reassign */
3
+ /* eslint-disable no-use-before-define */
4
+ import { formatFiles, generateFiles, Tree, updateJson } from '@nx/devkit';
2
5
  import * as path from 'path';
3
6
  import * as fs from 'node:fs';
4
7
  import { deepMerge } from '@common-stack/rollup-vite-utils/lib/utils/setupConfig.cjs';
@@ -9,10 +12,76 @@ import { FRAMEWORK_ANTUI, FRAMEWORK_CHAKRAUI, FRAMEWORK_TAILWINDUI } from '../..
9
12
  const DEFAULT_FRAMEWORK = FRAMEWORK_ANTUI;
10
13
  const DEFAULT_SERVER_NAME = 'frontend-server';
11
14
 
15
+ // Read the generator's package.json. This file is updated using ncu,
16
+ // so the generator always picks up the latest dependency versions.
17
+ const pluginPkgPath = path.resolve(__dirname, '../../common/package-releases/package.json');
18
+ const pluginPkg = JSON.parse(fs.readFileSync(pluginPkgPath, 'utf-8'));
19
+
20
+ /**
21
+ * Helper to retrieve a package version from pluginPkg.
22
+ * Throws an error if a version for packageName is not defined.
23
+ */
24
+ function getPackageVersion(packageName: string): string {
25
+ const version =
26
+ (pluginPkg.dependencies && pluginPkg.dependencies[packageName]) ||
27
+ (pluginPkg.devDependencies && pluginPkg.devDependencies[packageName]);
28
+
29
+ if (!version) {
30
+ throw new Error(`Version for package "${packageName}" not found in plugin package.json.`);
31
+ }
32
+ return version;
33
+ }
34
+
35
+ /**
36
+ * Helper to map an array of dependency names to an object where each key is a dependency
37
+ * and its value is obtained via getPackageVersion().
38
+ */
39
+ function mapDependencies(depNames: string[]): Record<string, string> {
40
+ return depNames.reduce(
41
+ (acc, name) => {
42
+ acc[name] = getPackageVersion(name);
43
+ return acc;
44
+ },
45
+ {} as Record<string, string>,
46
+ );
47
+ }
48
+
49
+ /**
50
+ * A mapping of frameworks to dependency definitions.
51
+ * Each dependency's version is obtained dynamically from pluginPkg using a helper.
52
+ */
53
+ const frameworkDependencyMap: {
54
+ [key: string]: { dependencies?: Record<string, string>; devDependencies?: Record<string, string> };
55
+ } = {
56
+ [FRAMEWORK_ANTUI]: {
57
+ dependencies: mapDependencies([
58
+ '@admin-layout/ant-design-pro',
59
+ '@ant-design/static-style-extract',
60
+ '@emotion/react',
61
+ '@emotion/server',
62
+ '@emotion/css',
63
+ '@emotion/styled',
64
+ 'antd',
65
+ ]),
66
+ },
67
+ [FRAMEWORK_CHAKRAUI]: {
68
+ dependencies: mapDependencies([
69
+ '@chakra-ui/react',
70
+ 'framer-motion',
71
+ '@emotion/react',
72
+ '@emotion/server',
73
+ '@emotion/css',
74
+ '@emotion/styled',
75
+ ]),
76
+ },
77
+ [FRAMEWORK_TAILWINDUI]: {
78
+ devDependencies: mapDependencies(['tailwindcss', 'postcss', 'autoprefixer']),
79
+ },
80
+ };
81
+
12
82
  export async function addFrontendGenerator(tree: Tree, options: AddFrontendGeneratorSchema) {
13
83
  const projectName = isValid(options.name) ? `frontend-${getValid(options.name)}-server` : DEFAULT_SERVER_NAME;
14
- const configs: any = {...options, name: projectName};
15
-
84
+ const configs: any = { ...options, name: projectName };
16
85
  return await generateFrontend(tree, configs);
17
86
  }
18
87
 
@@ -21,64 +90,60 @@ export const generateFrontend = async (tree: Tree, options: any) => {
21
90
  const projectRoot = isValid(options.directory) ? `${getValid(options.directory)}/${projectName}` : projectName;
22
91
  projectName = isValid(options.ns) ? `${getValid(options.ns)}-${projectName}` : projectName;
23
92
  const projectSrc = `${projectRoot}/src`;
24
-
93
+
25
94
  const framework = getValid(options.framework) ?? DEFAULT_FRAMEWORK;
26
95
  console.log('UI framework specified: ', framework);
27
-
28
- // resetProject(`${basePath}/${projectRoot}`);
29
-
30
- // addProjectConfiguration(tree, framework, {
31
- // root: projectRoot,
32
- // projectType: 'library',
33
- // sourceRoot: projectSrc,
34
- // targets: {},
35
- // });
36
-
96
+
37
97
  generateFiles(tree, path.join(__dirname, 'templates'), projectRoot, {});
38
98
  generateFiles(tree, path.join(__dirname, 'frameworks', framework), projectSrc, options);
99
+
39
100
  updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
40
- packageJson['name'] = projectName;
41
- if (framework === FRAMEWORK_ANTUI) {
42
- packageJson['dependencies']["@admin-layout/ant-design-pro"] = "latest";
43
- packageJson['dependencies']["@ant-design/static-style-extract"] = "^1.0.2";
44
- packageJson['dependencies']["@emotion/react"] = "^11.10.0";
45
- packageJson['dependencies']["@emotion/server"] = "^11.10.0";
46
- packageJson['dependencies']["@emotion/css"] = "^11.10.0";
47
- packageJson['dependencies']["@emotion/styled"] = "^11.10.4";
48
- packageJson['dependencies']["antd"] = "^5.14.0";
49
- } else if (framework === FRAMEWORK_CHAKRAUI) {
50
- packageJson['dependencies']["@chakra-ui/react"] = "^2.8.2";
51
- packageJson['dependencies']["framer-motion"] = "^11.5.4";
52
- packageJson['dependencies']["@emotion/react"] = "^11.10.0";
53
- packageJson['dependencies']["@emotion/server"] = "^11.10.0";
54
- packageJson['dependencies']["@emotion/css"] = "^11.10.0";
55
- packageJson['dependencies']["@emotion/styled"] = "^11.10.4";
56
-
57
- } else if (framework === FRAMEWORK_TAILWINDUI) {
58
- packageJson['devDependencies']["tailwindcss"] = "^3.4.10";
59
- packageJson['devDependencies']["postcss"] = "^8.4.41";
60
- packageJson['devDependencies']["autoprefixer"] = "^10.4.20";
101
+ packageJson.name = projectName;
102
+ packageJson.dependencies = packageJson.dependencies || {};
103
+ packageJson.devDependencies = packageJson.devDependencies || {};
104
+
105
+ const dependencyOverrides = frameworkDependencyMap[framework] || {};
106
+
107
+ if (dependencyOverrides.dependencies) {
108
+ Object.entries(dependencyOverrides.dependencies).forEach(([pkg, version]) => {
109
+ if (!packageJson.dependencies[pkg]) {
110
+ packageJson.dependencies[pkg] = version;
111
+ }
112
+ });
61
113
  }
62
-
114
+
115
+ if (dependencyOverrides.devDependencies) {
116
+ Object.entries(dependencyOverrides.devDependencies).forEach(([pkg, version]) => {
117
+ if (!packageJson.devDependencies[pkg]) {
118
+ packageJson.devDependencies[pkg] = version;
119
+ }
120
+ });
121
+ }
122
+
63
123
  return packageJson;
64
124
  });
125
+
65
126
  updateJson(tree, `${projectRoot}/config.json`, (configJson) => {
66
- configJson['uiFramework'] = framework;
127
+ configJson.uiFramework = framework;
67
128
  if (framework === FRAMEWORK_ANTUI) {
68
- configJson['modules'].push("@admin-layout/ant-design-pro");
129
+ if (!configJson.modules.includes('@admin-layout/ant-design-pro')) {
130
+ configJson.modules.push('@admin-layout/ant-design-pro');
131
+ }
69
132
  } else if (framework === FRAMEWORK_CHAKRAUI) {
70
- configJson['modules'].push("@admin-layout/chakra-design-pro");
133
+ if (!configJson.modules.includes('@admin-layout/chakra-design-pro')) {
134
+ configJson.modules.push('@admin-layout/chakra-design-pro');
135
+ }
71
136
  }
72
137
 
73
138
  if (options['config.json']) {
74
- const addtionalConfigs = options['config.json'];
75
- configJson = deepMerge(configJson, addtionalConfigs);
139
+ const additionalConfigs = options['config.json'];
140
+ configJson = deepMerge(configJson, additionalConfigs);
76
141
  }
77
142
 
78
143
  return configJson;
79
144
  });
80
145
 
81
146
  await formatFiles(tree);
82
- }
147
+ };
83
148
 
84
149
  export default addFrontendGenerator;
@@ -150,7 +150,7 @@
150
150
  "@babel/register": "^7.18.9",
151
151
  "@babel/runtime": "^7.20.1",
152
152
  "@common-stack/env-list-loader": "6.0.8-alpha.31",
153
- "@common-stack/generate-plugin": "6.0.8-alpha.42",
153
+ "@common-stack/generate-plugin": "6.0.8-alpha.44",
154
154
  "@common-stack/rollup-vite-utils": "6.0.8-alpha.40",
155
155
  "@emotion/babel-plugin": "^11.11.0",
156
156
  "@graphql-codegen/add": "^5.0.2",
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "module": "commonjs",
5
+ "target": "es6",
6
+ "types": ["jest", "node"]
7
+ },
8
+ "include": ["**/*.spec.ts", "**/*.test.ts"]
9
+ }
@@ -1,134 +0,0 @@
1
- {
2
- "name": "base-backend-server",
3
- "version": "6.0.6-alpha.82",
4
- "private": true,
5
- "description": "Starter kit for apollo server using webpack and typescript",
6
- "keywords": [
7
- "apollo",
8
- "apollo-server",
9
- "backend",
10
- "express",
11
- "graphiql",
12
- "graphql",
13
- "typescript",
14
- "webpack"
15
- ],
16
- "homepage": "https://github.com/cdmbase/fullstack-pro#readme",
17
- "bugs": {
18
- "url": "https://github.com/cdmbase/fullstack-pro/issues"
19
- },
20
- "repository": {
21
- "type": "git",
22
- "url": "git+https://github.com/cdmbase/fullstack-pro.git"
23
- },
24
- "license": "MIT",
25
- "author": "CDMBase LLC",
26
- "main": "dist/index.js",
27
- "typings": "dist/main.d.ts",
28
- "scripts": {
29
- "build": "cross-env NODE_ENV=production webpack --config webpack.config.js",
30
- "build:clean": "rimraf dist .awcache",
31
- "build:dev": "cross-env NODE_ENV=development ENV_FILE=../../config/development/dev.env webpack --config webpack.config.js",
32
- "db:migrate": "knex -- migrate:latest --cwd . --knexfile ./knexfile.js",
33
- "db:migrate:rollback": "knex -- migrate:rollback --cwd . --knexfile ./knexfile.js",
34
- "db:seed": "yarn db:migrate && knex -- seed:run --cwd . --knexfile ./knexfile.js",
35
- "docker:build": "yarn build && docker build . -t $npm_package_name:$npm_package_version",
36
- "docker:build:debug": "yarn build:debug && docker build . -t $npm_package_name:$npm_package_version",
37
- "docker:run": "docker run --env-file ../../config/staging/docker-staging.env -p 8080:8080 -it $npm_package_name:$npm_package_version",
38
- "docker:run:debug": "cross-env NODE_ENV=development docker run --env-file ../../config/staging/docker-staging.env -p 8080:8080 -it $npm_package_name:$npm_package_version",
39
- "proddb:migrate": "NODE_ENV=production yarn db:migrate",
40
- "proddb:migrate:rollback": "NODE_ENV=production yarn db:migrate:rollback",
41
- "proddb:seed": "NODE_ENV=production yarn db:seed",
42
- "prepublish": "yarn build:clean",
43
- "stagedb:migrate": "cross-env ENV_FILE=../../config/test/test.env NODE_ENV=test yarn db:migrate",
44
- "stagedb:migrate:rollback": "cross-env ENV_FILE=../../config/test/test.env NODE_ENV=test yarn db:migrate:rollback",
45
- "stagedb:seed": "cross-env ENV_FILE=../../config/test/test.env NODE_ENV=test yarn db:seed",
46
- "start": "cross-env NODE_ENV=production tsx dist/index.js",
47
- "start:dev": "cross-env NODE_ENV=development ENV_FILE=../../config/development/dev.env tsx watch dist/index.js",
48
- "start:staging": "cross-env NODE_ENV=staging ENV_FILE=../../config/staging/staging.env tsx dist/index.js",
49
- "start:test": "cross-env NODE_ENV=test ENV_FILE=../../config/test/test.env tsx dist/index.js",
50
- "test": "jest",
51
- "test:notify": "yarn test:watch -- --notify",
52
- "test:watch": "npm test -- --watch",
53
- "preupver": "npm test",
54
- "upver": "standard-version",
55
- "watch": "cross-env NODE_ENV=development ENV_FILE=../../config/development/dev.env yarn build:dev && yarn start:dev",
56
- "watch:staging": "cross-env NODE_ENV=test ENV_FILE=../../config/staging/staging.env yarn build && yarn start:stage",
57
- "watch:test": "cross-env NODE_ENV=test ENV_FILE=../../config/test/test.env yarn build:test && yarn start:test"
58
- },
59
- "resolutions": {
60
- "html-to-text": "^8.0.0"
61
- },
62
- "dependencies": {
63
- "@apollo/client": "^3.9.0",
64
- "@apollo/datasource-rest": "^6.3.0",
65
- "@apollo/server": "^4.10.4",
66
- "@apollo/server-plugin-response-cache": "^4.1.3",
67
- "@apollo/utils.keyvadapter": "^3.1.0",
68
- "@babel/runtime": "^7.20.1",
69
- "@casl/ability": "^4.1.5",
70
- "@cdm-logger/client": "^9.0.3",
71
- "@cdm-logger/server": "^9.0.3",
72
- "@cdmbase/graphql-type-uri": "^4.0.0",
73
- "@common-stack/cache-api-server": "6.0.8-alpha.31",
74
- "@common-stack/client-core": "6.0.8-alpha.31",
75
- "@common-stack/core": "6.0.8-alpha.31",
76
- "@common-stack/server-core": "6.0.8-alpha.31",
77
- "@common-stack/server-stack": "6.0.8-alpha.32",
78
- "@common-stack/store-mongo": "6.0.8-alpha.31",
79
- "@graphql-tools/links": "~9.0.1",
80
- "@graphql-tools/schema": "~10.0.6",
81
- "@graphql-tools/stitch": "~9.2.10",
82
- "@graphql-tools/utils": "~10.5.4",
83
- "@graphql-tools/wrap": "~10.0.5",
84
- "@keyv/redis": "2.8.4",
85
- "@remix-run/node": "~2.10.1",
86
- "@sentry/node": "~7.24.2",
87
- "@sentry/profiling-node": "^8.25.0",
88
- "apollo-errors": "^1.9.0",
89
- "body-parser": "^1.19.0",
90
- "cors": "^2.8.5",
91
- "dataloader": "^2.0.0",
92
- "dotenv": "^8.2.0",
93
- "dotenv-esm": "^16.0.3-4",
94
- "envalid": "~7.2.2",
95
- "express": "^4.17.1",
96
- "graphql": "^16.0.0",
97
- "graphql-bigint": "^1.0.0",
98
- "graphql-middleware": "^6.1.33",
99
- "graphql-nats-subscriptions": "^1.5.0",
100
- "graphql-playground-middleware-express": "^1.7.3",
101
- "graphql-shield": "^7.3.5",
102
- "graphql-subscriptions": "^2.0.0",
103
- "graphql-tools": "~9.0.0",
104
- "graphql-type-json": "^0.3.1",
105
- "graphql-ws": "^5.11.2",
106
- "inversify": "~6.0.2",
107
- "ioredis": "^5.4.1",
108
- "isomorphic-fetch": "^2.2.1",
109
- "lodash": "^4.17.15",
110
- "moleculer": "^0.14.2",
111
- "mongoose": "^6.3.3",
112
- "mongoose-autopopulate": "^1.1.0",
113
- "mongoose-execution-time": "^1.1.0",
114
- "morgan": "^1.9.1",
115
- "nats": "^1.3.2",
116
- "react": "18.2.0",
117
- "redux": "^5.0.1",
118
- "reflect-metadata": "^0.1.13",
119
- "rxjs": "^7.8.1",
120
- "subscriptions-transport-ws": "^0.11.0",
121
- "universal-cookie-express": "^4.0.1",
122
- "ws": "^8.11.0"
123
- },
124
- "devDependencies": {
125
- "cross-env": "^7.0.3",
126
- "esbuild-loader": "^4.2.2",
127
- "pm2": "^5.2.2",
128
- "rimraf": "^3.0.2",
129
- "tsx": "^4.7.0"
130
- },
131
- "typescript": {
132
- "definition": "dist/main.d.ts"
133
- }
134
- }
@@ -1,121 +0,0 @@
1
- {
2
- "name": "base-backend-server",
3
- "version": "6.0.6-alpha.82",
4
- "private": true,
5
- "description": "Starter kit for apollo server using webpack and typescript",
6
- "keywords": [
7
- "apollo",
8
- "apollo-server",
9
- "backend",
10
- "express",
11
- "graphiql",
12
- "graphql",
13
- "typescript",
14
- "webpack"
15
- ],
16
- "homepage": "https://github.com/cdmbase/fullstack-pro#readme",
17
- "bugs": {
18
- "url": "https://github.com/cdmbase/fullstack-pro/issues"
19
- },
20
- "repository": {
21
- "type": "git",
22
- "url": "git+https://github.com/cdmbase/fullstack-pro.git"
23
- },
24
- "license": "MIT",
25
- "author": "CDMBase LLC",
26
- "main": "dist/index.js",
27
- "typings": "dist/main.d.ts",
28
- "scripts": {
29
- "build": "cross-env NODE_ENV=production webpack --config webpack.config.js",
30
- "build:clean": "rimraf dist .awcache",
31
- "build:dev": "cross-env NODE_ENV=development ENV_FILE=../../config/development/dev.env webpack --config webpack.config.js",
32
- "db:migrate": "knex -- migrate:latest --cwd . --knexfile ./knexfile.js",
33
- "db:migrate:rollback": "knex -- migrate:rollback --cwd . --knexfile ./knexfile.js",
34
- "db:seed": "yarn db:migrate && knex -- seed:run --cwd . --knexfile ./knexfile.js",
35
- "docker:build": "yarn build && docker build . -t $npm_package_name:$npm_package_version",
36
- "docker:build:debug": "yarn build:debug && docker build . -t $npm_package_name:$npm_package_version",
37
- "docker:run": "docker run --env-file ../../config/staging/docker-staging.env -p 8080:8080 -it $npm_package_name:$npm_package_version",
38
- "docker:run:debug": "cross-env NODE_ENV=development docker run --env-file ../../config/staging/docker-staging.env -p 8080:8080 -it $npm_package_name:$npm_package_version",
39
- "proddb:migrate": "NODE_ENV=production yarn db:migrate",
40
- "proddb:migrate:rollback": "NODE_ENV=production yarn db:migrate:rollback",
41
- "proddb:seed": "NODE_ENV=production yarn db:seed",
42
- "prepublish": "yarn build:clean",
43
- "stagedb:migrate": "cross-env ENV_FILE=../../config/test/test.env NODE_ENV=test yarn db:migrate",
44
- "stagedb:migrate:rollback": "cross-env ENV_FILE=../../config/test/test.env NODE_ENV=test yarn db:migrate:rollback",
45
- "stagedb:seed": "cross-env ENV_FILE=../../config/test/test.env NODE_ENV=test yarn db:seed",
46
- "start": "cross-env NODE_ENV=production tsx dist/index.js",
47
- "start:dev": "cross-env NODE_ENV=development ENV_FILE=../../config/development/dev.env tsx watch dist/index.js",
48
- "start:staging": "cross-env NODE_ENV=staging ENV_FILE=../../config/staging/staging.env tsx dist/index.js",
49
- "start:test": "cross-env NODE_ENV=test ENV_FILE=../../config/test/test.env tsx dist/index.js",
50
- "test": "jest",
51
- "test:notify": "yarn test:watch -- --notify",
52
- "test:watch": "npm test -- --watch",
53
- "preupver": "npm test",
54
- "upver": "standard-version",
55
- "watch": "cross-env NODE_ENV=development ENV_FILE=../../config/development/dev.env yarn build:dev && yarn start:dev",
56
- "watch:staging": "cross-env NODE_ENV=test ENV_FILE=../../config/staging/staging.env yarn build && yarn start:stage",
57
- "watch:test": "cross-env NODE_ENV=test ENV_FILE=../../config/test/test.env yarn build:test && yarn start:test"
58
- },
59
- "resolutions": {
60
- "html-to-text": "^8.0.0"
61
- },
62
- "dependencies": {
63
- "@apollo/client": "^3.9.0",
64
- "@cdm-logger/client": "^9.0.3",
65
- "@cdm-logger/server": "^9.0.3",
66
- "@common-stack/cache-api-server": "6.0.8-alpha.31",
67
- "@common-stack/client-core": "6.0.8-alpha.31",
68
- "@common-stack/client-react": "6.0.8-alpha.31",
69
- "@common-stack/components-pro": "6.0.8-alpha.31",
70
- "@common-stack/core": "6.0.8-alpha.31",
71
- "@common-stack/remix-router-redux": "6.0.8-alpha.31",
72
- "@common-stack/server-core": "6.0.8-alpha.31",
73
- "@reduxjs/toolkit": "^2.2.6",
74
- "@remix-run/express": "~2.10.1",
75
- "@remix-run/node": "~2.10.1",
76
- "@remix-run/react": "~2.10.1",
77
- "@sentry/browser": "~5.11.2",
78
- "cors": "^2.8.5",
79
- "cross-fetch": "^4.0.0",
80
- "dotenv": "^8.2.0",
81
- "envalid": "~7.2.2",
82
- "express": "^4.18.2",
83
- "graphql": "^16.0.0",
84
- "graphql-tag": "^2.11.0",
85
- "graphql-ws": "^5.11.2",
86
- "i18next": "^23.10.1",
87
- "i18next-browser-languagedetector": "^8.0.0",
88
- "i18next-fs-backend": "^2.3.1",
89
- "i18next-http-backend": "^2.5.2",
90
- "inversify": "~6.0.2",
91
- "ioredis": "^5.4.1",
92
- "isbot": "^4.1.0",
93
- "isomorphic-fetch": "^2.2.1",
94
- "lodash": "^4.17.15",
95
- "prop-types": "^15.8.1",
96
- "react": "18.3.1",
97
- "react-dom": "18.3.1",
98
- "react-i18next": "^14.1.0",
99
- "react-redux": "^9.1.1",
100
- "redux-observable": "^3.0.0-rc.2",
101
- "redux-persist": "^6.0.0",
102
- "redux-persist-transform-filter": "^0.0.20",
103
- "reflect-metadata": "^0.1.13",
104
- "remix-i18next": "~6.1.0",
105
- "remix-island": "^0.2.0",
106
- "rxjs": "^7.8.1",
107
- "serialize-javascript": "^6.0.0",
108
- "ts-deepmerge": "^7.0.0",
109
- "ts-invariant": "^0.10.3"
110
- },
111
- "devDependencies": {
112
- "cross-env": "^7.0.3",
113
- "esbuild-loader": "^4.2.2",
114
- "pm2": "^5.2.2",
115
- "rimraf": "^3.0.2",
116
- "tsx": "^4.7.0"
117
- },
118
- "typescript": {
119
- "definition": "dist/main.d.ts"
120
- }
121
- }
@@ -1,20 +0,0 @@
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', directory: 'lib' };
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
- });