nsgm-cli 1.0.25 → 1.0.26

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 (51) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +162 -162
  3. package/generation/.babelrc +9 -9
  4. package/generation/README.md +18 -18
  5. package/generation/app.js +2 -2
  6. package/generation/client/layout/index.tsx +223 -223
  7. package/generation/client/redux/reducers.ts +5 -5
  8. package/generation/client/redux/store.ts +44 -44
  9. package/generation/client/redux/template/manage/actions.ts +190 -190
  10. package/generation/client/redux/template/manage/reducers.ts +118 -118
  11. package/generation/client/redux/template/manage/types.ts +24 -24
  12. package/generation/client/service/template/manage.ts +73 -73
  13. package/generation/client/styled/common.ts +28 -28
  14. package/generation/client/styled/layout/index.ts +13 -13
  15. package/generation/client/styled/template/manage.ts +51 -51
  16. package/generation/client/utils/common.ts +45 -45
  17. package/generation/client/utils/fetch.ts +25 -25
  18. package/generation/client/utils/menu.tsx +26 -26
  19. package/generation/gitignore +3 -3
  20. package/generation/mysql.config.js +12 -12
  21. package/generation/next-env.d.ts +2 -2
  22. package/generation/next.config.js +6 -6
  23. package/generation/package.json +20 -20
  24. package/generation/pages/_app.tsx +44 -44
  25. package/generation/pages/_document.tsx +53 -53
  26. package/generation/pages/index.tsx +54 -54
  27. package/generation/pages/template/manage.tsx +280 -280
  28. package/generation/project.config.js +12 -12
  29. package/generation/server/apis/template.js +18 -18
  30. package/generation/server/modules/template/resolver.js +231 -231
  31. package/generation/server/modules/template/schema.js +33 -33
  32. package/generation/server/rest.js +20 -20
  33. package/generation/server/sql/template.sql +8 -8
  34. package/generation/tsconfig.json +29 -29
  35. package/index.js +10 -10
  36. package/lib/args.d.ts +6 -6
  37. package/lib/args.js +47 -47
  38. package/lib/generate.d.ts +3 -3
  39. package/lib/generate.js +590 -590
  40. package/lib/index.d.ts +2 -2
  41. package/lib/index.js +182 -182
  42. package/lib/server/db.d.ts +5 -5
  43. package/lib/server/db.js +47 -47
  44. package/lib/server/graphql.d.ts +7 -7
  45. package/lib/server/graphql.js +119 -119
  46. package/lib/server/plugins/date.d.ts +5 -5
  47. package/lib/server/plugins/date.js +16 -16
  48. package/mysql.config.js +14 -14
  49. package/next.config.js +210 -210
  50. package/package.json +113 -113
  51. package/project.config.js +14 -14
package/next.config.js CHANGED
@@ -1,211 +1,211 @@
1
- /**
2
- * Created by lei_sun on 2019/7/9.
3
- */
4
- const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')
5
- const fs = require('fs')
6
- const { promisify } = require('util')
7
- const { join } = require('path')
8
- const copyFile = promisify(fs.copyFile)
9
- const SimpleProgressPlugin = require('webpack-simple-progress-plugin')
10
- const TerserPlugin = require('terser-webpack-plugin')
11
-
12
- module.exports = (phase, defaultConfig, options) => {
13
- let projectConfig = null
14
- const curFolder = process.cwd()
15
- const curProjectConfigPath = curFolder + '/project.config.js'
16
-
17
- if (fs.existsSync(curProjectConfigPath)) {
18
- projectConfig = require(curProjectConfigPath)
19
- } else {
20
- projectConfig = require('./project.config.js')
21
- }
22
-
23
- // console.log('projectConfig', projectConfig)
24
- let { version, prefix, protocol, host, port } = projectConfig
25
-
26
- if(options != undefined){
27
- version = options.version
28
- prefix = options.prefix
29
- protocol = options.protocol
30
- host = options.host
31
- port = options.port
32
- // console.log('options', options)
33
- }
34
-
35
- // console.log('phase', phase, PHASE_DEVELOPMENT_SERVER, version, prefix, protocol, host, port)
36
-
37
- let configObj = {
38
- async rewrites() {
39
- return [
40
- {
41
- source: prefix + '/:slug*',
42
- destination: '/:slug*'
43
- }
44
- ]
45
- },
46
- //target: 'serverless',
47
- assetPrefix: '',
48
- crossOrign: 'anonymous',
49
- serverRuntimeConfig: {},
50
- publicRuntimeConfig: {
51
- version,
52
- prefix,
53
- protocol,
54
- host,
55
- port,
56
- phase
57
- },
58
- generateBuildId: async () => {
59
- return 'nsgm-cli-' + version
60
- },
61
- exportPathMap: async function (defaultPathMap,
62
- { dev, dir, outDir }) {
63
- if (dev) {
64
- return defaultPathMap
65
- }
66
-
67
- return defaultPathMap
68
- },
69
- generateEtags: false,
70
- useFileSystemPublicRoutes: true,
71
- webpack: (config, { dev, isServer }) => {
72
- //console.log('dev', dev, isServer)
73
-
74
- if(!dev){
75
- if(!isServer){
76
- config.optimization.splitChunks = {
77
- cacheGroups: {
78
- default: false,
79
- vendors: false,
80
- framework: {
81
- //将react和react-dom打入framework当中
82
- name: 'framework',
83
- chunks: 'all',
84
- test: /[\\/]node_modules[\\/](react|react-dom)[\\/]/, //匹配库当中的react和react-dom
85
- priority: 40, //权重为40 最大权重
86
- },
87
- lib: {
88
- test(module) {
89
- //匹配包大于160000的
90
- if(module.size() > 100000){
91
- console.log('test_module', module.identifier(), module.size())
92
- }
93
- return module.size() > 100000
94
- },
95
- name(module) {
96
- //名字就是包当中的名字
97
- return (
98
- /[\\/]node_modules[\\/](.*)/.exec(module.identifier()) &&
99
- /[\\/]node_modules[\\/](.*)/.exec(module.identifier()).length &&
100
- /[\\/]node_modules[\\/](.*)/.exec(module.identifier())[1].replace(/\/|\\/g, '_')
101
- )
102
- },
103
- priority: 30, //权重为30
104
- minChunks: 1, //最小共用次数为1时就使用
105
- reuseExistingChunk: true
106
- },
107
- commons: {
108
- name: 'commons',
109
- chunks: 'all',
110
- minChunks: 20,
111
- maxSize: 30720,
112
- priority: 20
113
- },
114
- shared: {
115
- priority: 10,
116
- minChunks: 2,
117
- reuseExistingChunk: true
118
- },
119
- styles: {
120
- name: 'styles',
121
- test: /\.css$/,
122
- chunks: 'all',
123
- maxSize: 30720,
124
- enforce: true
125
- },
126
- less: {
127
- name: 'less',
128
- test: /\.less$/,
129
- chunks: 'all',
130
- maxSize: 30720,
131
- enforce: true
132
- }
133
- }
134
- }
135
- config.output.chunkFilename = `static/chunks/[name].${version}.js`
136
-
137
- config.output.filename = ({ chunk }) => {
138
- const { name } = chunk
139
- //console.log('name', name)
140
-
141
- if(name === 'main'){
142
- return `static/main.${version}.js`
143
- } else if(name === 'polyfills') {
144
- return `static/polyfills.${version}.js`
145
- } else if(name.indexOf('webpack') != -1){
146
- return `[name]`
147
- }
148
-
149
- return `static/[name].${version}.js`
150
- }
151
-
152
- config.optimization.runtimeChunk = {
153
- name: `static/runtime/webpack.${version}.js`,
154
- }
155
- }
156
-
157
- config.plugins.map(plugin => {
158
- //console.log('plugin.constructor.name', plugin.constructor.name)
159
- if ('NextMiniCssExtractPlugin' == plugin.constructor.name) {
160
- plugin.options = {
161
- filename: `static/css/[name].${version}.css`,
162
- chunkFilename: `static/css/[name].${version}.css`,
163
- moduleFilename: ({ name }) => {
164
- //console.log('name', name)
165
- return `static/css/${name}.${version}.css`
166
- }
167
- }
168
- }
169
- })
170
-
171
- config.plugins.push(new SimpleProgressPlugin())
172
-
173
- config.optimization.minimizer = [
174
- new TerserPlugin({
175
- parallel: true,
176
- terserOptions: {
177
- ecma: 6
178
- },
179
- minify: (file, sourceMap) => {
180
- // https://github.com/mishoo/UglifyJS2#minify-options
181
- const uglifyJsOptions = {
182
- /* your `uglify-js` package options */
183
- compress: {
184
- warnings: true,
185
- drop_console: true,
186
- drop_debugger: true
187
- }
188
- }
189
-
190
- if (sourceMap) {
191
- uglifyJsOptions.sourceMap = {
192
- content: sourceMap
193
- }
194
- }
195
-
196
- return require('uglify-es').minify(file, uglifyJsOptions)
197
- }
198
- })
199
- ]
200
- }
201
-
202
- return config
203
- }
204
- }
205
-
206
- if(phase != PHASE_DEVELOPMENT_SERVER){
207
- configObj.distDir = 'build'
208
- }
209
-
210
- return configObj
1
+ /**
2
+ * Created by lei_sun on 2019/7/9.
3
+ */
4
+ const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')
5
+ const fs = require('fs')
6
+ const { promisify } = require('util')
7
+ const { join } = require('path')
8
+ const copyFile = promisify(fs.copyFile)
9
+ const SimpleProgressPlugin = require('webpack-simple-progress-plugin')
10
+ const TerserPlugin = require('terser-webpack-plugin')
11
+
12
+ module.exports = (phase, defaultConfig, options) => {
13
+ let projectConfig = null
14
+ const curFolder = process.cwd()
15
+ const curProjectConfigPath = curFolder + '/project.config.js'
16
+
17
+ if (fs.existsSync(curProjectConfigPath)) {
18
+ projectConfig = require(curProjectConfigPath)
19
+ } else {
20
+ projectConfig = require('./project.config.js')
21
+ }
22
+
23
+ // console.log('projectConfig', projectConfig)
24
+ let { version, prefix, protocol, host, port } = projectConfig
25
+
26
+ if(options != undefined){
27
+ version = options.version
28
+ prefix = options.prefix
29
+ protocol = options.protocol
30
+ host = options.host
31
+ port = options.port
32
+ // console.log('options', options)
33
+ }
34
+
35
+ // console.log('phase', phase, PHASE_DEVELOPMENT_SERVER, version, prefix, protocol, host, port)
36
+
37
+ let configObj = {
38
+ async rewrites() {
39
+ return [
40
+ {
41
+ source: prefix + '/:slug*',
42
+ destination: '/:slug*'
43
+ }
44
+ ]
45
+ },
46
+ //target: 'serverless',
47
+ assetPrefix: '',
48
+ crossOrign: 'anonymous',
49
+ serverRuntimeConfig: {},
50
+ publicRuntimeConfig: {
51
+ version,
52
+ prefix,
53
+ protocol,
54
+ host,
55
+ port,
56
+ phase
57
+ },
58
+ generateBuildId: async () => {
59
+ return 'nsgm-cli-' + version
60
+ },
61
+ exportPathMap: async function (defaultPathMap,
62
+ { dev, dir, outDir }) {
63
+ if (dev) {
64
+ return defaultPathMap
65
+ }
66
+
67
+ return defaultPathMap
68
+ },
69
+ generateEtags: false,
70
+ useFileSystemPublicRoutes: true,
71
+ webpack: (config, { dev, isServer }) => {
72
+ //console.log('dev', dev, isServer)
73
+
74
+ if(!dev){
75
+ if(!isServer){
76
+ config.optimization.splitChunks = {
77
+ cacheGroups: {
78
+ default: false,
79
+ vendors: false,
80
+ framework: {
81
+ //将react和react-dom打入framework当中
82
+ name: 'framework',
83
+ chunks: 'all',
84
+ test: /[\\/]node_modules[\\/](react|react-dom)[\\/]/, //匹配库当中的react和react-dom
85
+ priority: 40, //权重为40 最大权重
86
+ },
87
+ lib: {
88
+ test(module) {
89
+ //匹配包大于160000的
90
+ if(module.size() > 100000){
91
+ console.log('test_module', module.identifier(), module.size())
92
+ }
93
+ return module.size() > 100000
94
+ },
95
+ name(module) {
96
+ //名字就是包当中的名字
97
+ return (
98
+ /[\\/]node_modules[\\/](.*)/.exec(module.identifier()) &&
99
+ /[\\/]node_modules[\\/](.*)/.exec(module.identifier()).length &&
100
+ /[\\/]node_modules[\\/](.*)/.exec(module.identifier())[1].replace(/\/|\\/g, '_')
101
+ )
102
+ },
103
+ priority: 30, //权重为30
104
+ minChunks: 1, //最小共用次数为1时就使用
105
+ reuseExistingChunk: true
106
+ },
107
+ commons: {
108
+ name: 'commons',
109
+ chunks: 'all',
110
+ minChunks: 20,
111
+ maxSize: 30720,
112
+ priority: 20
113
+ },
114
+ shared: {
115
+ priority: 10,
116
+ minChunks: 2,
117
+ reuseExistingChunk: true
118
+ },
119
+ styles: {
120
+ name: 'styles',
121
+ test: /\.css$/,
122
+ chunks: 'all',
123
+ maxSize: 30720,
124
+ enforce: true
125
+ },
126
+ less: {
127
+ name: 'less',
128
+ test: /\.less$/,
129
+ chunks: 'all',
130
+ maxSize: 30720,
131
+ enforce: true
132
+ }
133
+ }
134
+ }
135
+ config.output.chunkFilename = `static/chunks/[name].${version}.js`
136
+
137
+ config.output.filename = ({ chunk }) => {
138
+ const { name } = chunk
139
+ //console.log('name', name)
140
+
141
+ if(name === 'main'){
142
+ return `static/main.${version}.js`
143
+ } else if(name === 'polyfills') {
144
+ return `static/polyfills.${version}.js`
145
+ } else if(name.indexOf('webpack') != -1){
146
+ return `[name]`
147
+ }
148
+
149
+ return `static/[name].${version}.js`
150
+ }
151
+
152
+ config.optimization.runtimeChunk = {
153
+ name: `static/runtime/webpack.${version}.js`,
154
+ }
155
+ }
156
+
157
+ config.plugins.map(plugin => {
158
+ //console.log('plugin.constructor.name', plugin.constructor.name)
159
+ if ('NextMiniCssExtractPlugin' == plugin.constructor.name) {
160
+ plugin.options = {
161
+ filename: `static/css/[name].${version}.css`,
162
+ chunkFilename: `static/css/[name].${version}.css`,
163
+ moduleFilename: ({ name }) => {
164
+ //console.log('name', name)
165
+ return `static/css/${name}.${version}.css`
166
+ }
167
+ }
168
+ }
169
+ })
170
+
171
+ config.plugins.push(new SimpleProgressPlugin())
172
+
173
+ config.optimization.minimizer = [
174
+ new TerserPlugin({
175
+ parallel: true,
176
+ terserOptions: {
177
+ ecma: 6
178
+ },
179
+ minify: (file, sourceMap) => {
180
+ // https://github.com/mishoo/UglifyJS2#minify-options
181
+ const uglifyJsOptions = {
182
+ /* your `uglify-js` package options */
183
+ compress: {
184
+ warnings: true,
185
+ drop_console: true,
186
+ drop_debugger: true
187
+ }
188
+ }
189
+
190
+ if (sourceMap) {
191
+ uglifyJsOptions.sourceMap = {
192
+ content: sourceMap
193
+ }
194
+ }
195
+
196
+ return require('uglify-es').minify(file, uglifyJsOptions)
197
+ }
198
+ })
199
+ ]
200
+ }
201
+
202
+ return config
203
+ }
204
+ }
205
+
206
+ if(phase != PHASE_DEVELOPMENT_SERVER){
207
+ configObj.distDir = 'build'
208
+ }
209
+
210
+ return configObj
211
211
  }
package/package.json CHANGED
@@ -1,113 +1,113 @@
1
- {
2
- "name": "nsgm-cli",
3
- "version": "1.0.25",
4
- "description": "A CLI tool to run Next/Style-components and Graphql/Mysql fullstack project",
5
- "main": "index.js",
6
- "scripts": {
7
- "dev": "node ./lib/index.js dev",
8
- "build": "next build",
9
- "tsv": "node ./lib/index.js version",
10
- "start": "node ./lib/index.js start",
11
- "export": "node ./lib/index.js export",
12
- "init": "node ./lib/index.js init",
13
- "upgrade": "node ./lib/index.js upgrade",
14
- "create": "node ./lib/index.js create",
15
- "delete": "node ./lib/index.js delete",
16
- "clean": "rimraf .next && rimraf build && rimraf webapp && rimraf lib",
17
- "tsbuild": "rimraf lib && tsc --build tsconfig.build.json",
18
- "lint": "tslint -p tsconfig.build.json",
19
- "format": "prettier --write \"src/**/*.ts\" ",
20
- "prepare": "npm run tsbuild",
21
- "prepublishOnly": "npm run lint",
22
- "preversion": "npm run lint",
23
- "version": "npm run format && git add -A src",
24
- "postversion": "git push && git push --tags",
25
- "release": "npm run lint && npm run tsbuild && npm run build"
26
- },
27
- "repository": {
28
- "type": "git",
29
- "url": "git+https://github.com/erishen/nsgm-cli.git"
30
- },
31
- "keywords": [
32
- "next",
33
- "style-components",
34
- "graphql",
35
- "mysql",
36
- "redux",
37
- "react",
38
- "hooks",
39
- "express"
40
- ],
41
- "author": {
42
- "name": "Erishen Sun",
43
- "email": "leisun8309@gmail.com"
44
- },
45
- "license": "ISC",
46
- "bugs": {
47
- "url": "https://github.com/erishen/nsgm-cli/issues"
48
- },
49
- "bin": {
50
- "nsgmtest": "lib/index.js"
51
- },
52
- "files": [
53
- "generation/*",
54
- "lib/*",
55
- "*.config.js"
56
- ],
57
- "homepage": "https://github.com/erishen/nsgm-cli#readme",
58
- "dependencies": {
59
- "antd": "^4.11.2",
60
- "axios": "^0.21.1",
61
- "body-parser": "^1.19.0",
62
- "express": "^4.17.1",
63
- "express-fileupload": "^1.2.1",
64
- "express-graphql": "^0.12.0",
65
- "graphql": "^15.5.0",
66
- "lodash": "^4.17.20",
67
- "markdown-it": "^12.0.4",
68
- "moment": "^2.29.1",
69
- "mysql": "^2.18.1",
70
- "next": "^11.0.1",
71
- "react": "^17.0.1",
72
- "react-dom": "^17.0.1",
73
- "react-redux": "^7.2.2",
74
- "redux": "^4.0.5",
75
- "redux-devtools-extension": "^2.13.8",
76
- "redux-thunk": "^2.3.0",
77
- "replace": "^1.2.0",
78
- "replace-in-file": "^6.2.0",
79
- "shelljs": "^0.8.4",
80
- "styled-components": "^5.2.1",
81
- "terser-webpack-plugin": "^4.2.3",
82
- "typescript": "^4.1.3",
83
- "uglify-es": "^3.3.9",
84
- "webpack": "^5.44.0",
85
- "webpack-simple-progress-plugin": "0.0.4",
86
- "xlsx": "^0.16.9"
87
- },
88
- "devDependencies": {
89
- "@babel/core": "^7.12.10",
90
- "@babel/plugin-proposal-optional-chaining": "^7.12.7",
91
- "@types/body-parser": "^1.19.0",
92
- "@types/express": "^4.17.11",
93
- "@types/express-fileupload": "^1.1.6",
94
- "@types/express-graphql": "^0.9.0",
95
- "@types/graphql": "^14.5.0",
96
- "@types/lodash": "^4.14.168",
97
- "@types/moment": "^2.13.0",
98
- "@types/mysql": "^2.15.17",
99
- "@types/next": "^9.0.0",
100
- "@types/node": "^14.14.22",
101
- "@types/react": "^17.0.0",
102
- "@types/react-dom": "^17.0.0",
103
- "@types/react-redux": "^7.1.16",
104
- "@types/shelljs": "^0.8.8",
105
- "@types/styled-components": "^5.1.7",
106
- "babel-plugin-react-html-attrs": "^3.0.5",
107
- "babel-plugin-styled-components": "^1.12.0",
108
- "prettier": "^2.2.1",
109
- "rimraf": "^3.0.2",
110
- "tslint": "^6.1.3",
111
- "tslint-config-prettier": "^1.18.0"
112
- }
113
- }
1
+ {
2
+ "name": "nsgm-cli",
3
+ "version": "1.0.26",
4
+ "description": "A CLI tool to run Next/Style-components and Graphql/Mysql fullstack project",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "dev": "node ./lib/index.js dev",
8
+ "build": "next build",
9
+ "tsv": "node ./lib/index.js version",
10
+ "start": "node ./lib/index.js start",
11
+ "export": "node ./lib/index.js export",
12
+ "init": "node ./lib/index.js init",
13
+ "upgrade": "node ./lib/index.js upgrade",
14
+ "create": "node ./lib/index.js create",
15
+ "delete": "node ./lib/index.js delete",
16
+ "clean": "rimraf .next && rimraf build && rimraf webapp && rimraf lib",
17
+ "tsbuild": "rimraf lib && tsc --build tsconfig.build.json",
18
+ "lint": "tslint -p tsconfig.build.json",
19
+ "format": "prettier --write \"src/**/*.ts\" ",
20
+ "prepare": "npm run tsbuild",
21
+ "prepublishOnly": "npm run lint",
22
+ "preversion": "npm run lint",
23
+ "version": "npm run format && git add -A src",
24
+ "postversion": "git push && git push --tags",
25
+ "release": "npm run lint && npm run tsbuild && npm run build"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/erishen/nsgm-cli.git"
30
+ },
31
+ "keywords": [
32
+ "next",
33
+ "style-components",
34
+ "graphql",
35
+ "mysql",
36
+ "redux",
37
+ "react",
38
+ "hooks",
39
+ "express"
40
+ ],
41
+ "author": {
42
+ "name": "Erishen Sun",
43
+ "email": "leisun8309@gmail.com"
44
+ },
45
+ "license": "ISC",
46
+ "bugs": {
47
+ "url": "https://github.com/erishen/nsgm-cli/issues"
48
+ },
49
+ "bin": {
50
+ "nsgm": "lib/index.js"
51
+ },
52
+ "files": [
53
+ "generation/*",
54
+ "lib/*",
55
+ "*.config.js"
56
+ ],
57
+ "homepage": "https://github.com/erishen/nsgm-cli#readme",
58
+ "dependencies": {
59
+ "antd": "^4.11.2",
60
+ "axios": "^0.21.1",
61
+ "body-parser": "^1.19.0",
62
+ "express": "^4.17.1",
63
+ "express-fileupload": "^1.2.1",
64
+ "express-graphql": "^0.12.0",
65
+ "graphql": "^15.5.0",
66
+ "lodash": "^4.17.20",
67
+ "markdown-it": "^12.0.4",
68
+ "moment": "^2.29.1",
69
+ "mysql": "^2.18.1",
70
+ "next": "^11.0.1",
71
+ "react": "^17.0.1",
72
+ "react-dom": "^17.0.1",
73
+ "react-redux": "^7.2.2",
74
+ "redux": "^4.0.5",
75
+ "redux-devtools-extension": "^2.13.8",
76
+ "redux-thunk": "^2.3.0",
77
+ "replace": "^1.2.0",
78
+ "replace-in-file": "^6.2.0",
79
+ "shelljs": "^0.8.4",
80
+ "styled-components": "^5.2.1",
81
+ "terser-webpack-plugin": "^4.2.3",
82
+ "typescript": "^4.1.3",
83
+ "uglify-es": "^3.3.9",
84
+ "webpack": "^5.44.0",
85
+ "webpack-simple-progress-plugin": "0.0.4",
86
+ "xlsx": "^0.16.9"
87
+ },
88
+ "devDependencies": {
89
+ "@babel/core": "^7.12.10",
90
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
91
+ "@types/body-parser": "^1.19.0",
92
+ "@types/express": "^4.17.11",
93
+ "@types/express-fileupload": "^1.1.6",
94
+ "@types/express-graphql": "^0.9.0",
95
+ "@types/graphql": "^14.5.0",
96
+ "@types/lodash": "^4.14.168",
97
+ "@types/moment": "^2.13.0",
98
+ "@types/mysql": "^2.15.17",
99
+ "@types/next": "^9.0.0",
100
+ "@types/node": "^14.14.22",
101
+ "@types/react": "18.0.1",
102
+ "@types/react-dom": "^18.0.11",
103
+ "@types/react-redux": "^7.1.16",
104
+ "@types/shelljs": "^0.8.8",
105
+ "@types/styled-components": "^5.1.7",
106
+ "babel-plugin-react-html-attrs": "^3.0.5",
107
+ "babel-plugin-styled-components": "^1.12.0",
108
+ "prettier": "^2.2.1",
109
+ "rimraf": "^3.0.2",
110
+ "tslint": "^6.1.3",
111
+ "tslint-config-prettier": "^1.18.0"
112
+ }
113
+ }