nodefony 7.0.0-beta.2 → 7.0.0-beta.21
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 +534 -8028
- package/README.md +33 -30
- package/autoloader.es6 +46 -48
- package/builder.es6 +66 -76
- package/cli/builder/bundles/bundle.js +57 -63
- package/cli/builder/bundles/controller.js +34 -38
- package/cli/builder/bundles/users-bundle/Command/fixtureTask.js +11 -12
- package/cli/builder/bundles/users-bundle/Command/usersCommand.js +23 -24
- package/cli/builder/bundles/users-bundle/Entity/mongoose/userEntity.js +25 -30
- package/cli/builder/bundles/users-bundle/Entity/sequelize/userEntity.js +42 -31
- package/cli/builder/bundles/users-bundle/Fixtures/users.js +24 -26
- package/cli/builder/bundles/users-bundle/Fixtures/usersFixtures.js +28 -29
- package/cli/builder/bundles/users-bundle/Resources/config/config.js +4 -3
- package/cli/builder/bundles/users-bundle/Resources/config/routing.js +2 -2
- package/cli/builder/bundles/users-bundle/Resources/config/security.js +9 -8
- package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.dev.config.js +3 -3
- package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.prod.config.js +4 -3
- package/cli/builder/bundles/users-bundle/Resources/config/webpack.config.js +74 -75
- package/cli/builder/bundles/users-bundle/Resources/scss/awesome/font-awesome.config.js +9 -9
- package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/login.js +13 -13
- package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/users.js +14 -14
- package/cli/builder/bundles/users-bundle/controller/api/graphql/graphqlController.js +13 -15
- package/cli/builder/bundles/users-bundle/controller/api/graphql/userResolver.js +29 -29
- package/cli/builder/bundles/users-bundle/controller/api/graphql/usertype.js +2 -2
- package/cli/builder/bundles/users-bundle/controller/api/openapi/loginApiController.js +34 -36
- package/cli/builder/bundles/users-bundle/controller/api/openapi/restUserController.js +32 -36
- package/cli/builder/bundles/users-bundle/controller/loginController.js +30 -34
- package/cli/builder/bundles/users-bundle/controller/usersController.js +54 -60
- package/cli/builder/bundles/users-bundle/package.json +27 -25
- package/cli/builder/bundles/users-bundle/pnpm-lock.yaml +4262 -0
- package/cli/builder/bundles/users-bundle/readme.md +7 -7
- package/cli/builder/bundles/users-bundle/services/usersService.js +97 -102
- package/cli/builder/bundles/users-bundle/src/providers/mongoose/userProvider.js +6 -8
- package/cli/builder/bundles/users-bundle/src/providers/sequelize/userProvider.js +9 -10
- package/cli/builder/bundles/users-bundle/tests/loginTest.js +119 -70
- package/cli/builder/bundles/users-bundle/usersBundle.js +2 -3
- package/cli/builder/microService/microService.js +139 -141
- package/cli/builder/microService/skeletons/package.json +23 -22
- package/cli/builder/project/project.js +228 -181
- package/cli/builder/project/skeletons/README.md +33 -30
- package/cli/builder/project/skeletons/bin/dev-deploy.sh +5 -0
- package/cli/builder/project/skeletons/bin/prod-deploy.sh +3 -0
- package/cli/builder/project/skeletons/config/config.js.skeleton +1 -0
- package/cli/builder/project/skeletons/config/pm2.config.js.skeleton +41 -17
- package/cli/builder/project/skeletons/eslintignore.skeleton +15 -0
- package/cli/builder/project/skeletons/eslintrc.js.skeleton +97 -0
- package/cli/builder/project/skeletons/gitignore.skeleton +1 -0
- package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.37.entity-user.js +137 -0
- package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.38.entity-session.js +97 -0
- package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.39.entity-requests.js +115 -0
- package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.40.entity-jwts.js +97 -0
- package/cli/builder/project/skeletons/migrations/migrations.skeleton.js +0 -2
- package/cli/builder/project/skeletons/package.json.twig +70 -0
- package/cli/builder/react/reactBuilder.js +59 -65
- package/cli/builder/sandbox/sandBoxBuilder.js +132 -134
- package/cli/builder/skeletons/app/appKernel.js +120 -2
- package/cli/builder/skeletons/config/config.js +1 -1
- package/cli/builder/skeletons/config/nodefony/framework-bundle.js +2 -1
- package/cli/builder/skeletons/config/nodefony/http-bundle.js +1 -0
- package/cli/builder/skeletons/config/nodefony/mongoose-bundle.js +38 -12
- package/cli/builder/skeletons/config/nodefony/monitoring-bundle.js +21 -2
- package/cli/builder/skeletons/config/nodefony/sequelize-bundle.js +122 -13
- package/cli/builder/skeletons/package.json.twig +57 -0
- package/cli/builder/skeletons/unittest/testFile.js +44 -45
- package/cli/builder/vue/skeletons/vue.config.js +84 -10
- package/cli/builder/vue/vueBuilder.js +116 -114
- package/cli/generate/generate.es6 +38 -39
- package/cli/install/install.js +45 -58
- package/cli/sequelize/sequelize.js +50 -39
- package/cli/start.js +353 -347
- package/cli/tools/pm2.es6 +55 -57
- package/cli/tools/tools.es6 +36 -37
- package/cli.es6 +280 -228
- package/container.es6 +51 -59
- package/error.es6 +25 -27
- package/fileClass.es6 +53 -55
- package/finder/file.es6 +5 -4
- package/finder/fileResult.es6 +23 -22
- package/finder/finder2.es6 +46 -54
- package/finder.es6 +88 -97
- package/kernel/annotations/annotations.es6 +44 -46
- package/kernel/api/api.es6 +6 -8
- package/kernel/api/graphqlApi.es6 +21 -21
- package/kernel/api/jsonApi.es6 +40 -45
- package/kernel/api/openApi.es6 +9 -11
- package/kernel/api/schemas/openApiSchema.js +61 -32
- package/kernel/babylon.es6 +31 -38
- package/kernel/bundle.es6 +252 -220
- package/kernel/cliKernel.es6 +157 -170
- package/kernel/command.es6 +17 -20
- package/kernel/commands/nodefonyCommand.es6 +111 -58
- package/kernel/commands/tasks/bundlesTask.es6 +14 -19
- package/kernel/controllers/controller.es6 +167 -180
- package/kernel/fixture.es6 +4 -7
- package/kernel/injections/injections.es6 +97 -103
- package/kernel/kernel.es6 +476 -384
- package/kernel/kernelWatcher.es6 +64 -54
- package/kernel/orm/entity.es6 +10 -12
- package/kernel/orm/orm.es6 +68 -48
- package/kernel/reader.es6 +45 -47
- package/kernel/security/encoder.es6 +8 -6
- package/kernel/security/factories/factory.es6 +34 -37
- package/kernel/security/factories/passeportFactory.es6 +13 -14
- package/kernel/security/provider.es6 +11 -13
- package/kernel/security/providers/chainProvider.es6 +13 -28
- package/kernel/security/providers/memoryProvider.es6 +7 -11
- package/kernel/security/providers/providerManager.es6 +11 -14
- package/kernel/security/providers/userEntityProvider.es6 +7 -8
- package/kernel/security/role.es6 +3 -3
- package/kernel/security/secureArea.es6 +143 -149
- package/kernel/security/tokens/token.es6 +30 -32
- package/kernel/security/user.es6 +19 -19
- package/kernel/serviceRealTime.es6 +5 -7
- package/kernel/services/connectionsService.es6 +20 -22
- package/kernel/services/cron/cronService.es6 +14 -16
- package/kernel/task.es6 +20 -26
- package/kernel/templates.es6 +4 -5
- package/kernel/templating/twig.es6 +56 -47
- package/kernel/tests/cliTest.js +7 -11
- package/kernel/tests/containerTest.js +25 -37
- package/kernel/tests/kernelTest.js +9 -16
- package/nodefony.es6 +279 -256
- package/notificationsCenter.es6 +28 -20
- package/package.json +40 -40
- package/protocol.es6 +19 -21
- package/protocols/bayeux.es6 +35 -38
- package/protocols/jsonRpc/jsonrpc.es6 +12 -14
- package/result.es6 +11 -12
- package/service.es6 +62 -62
- package/syslog/pdu.es6 +99 -91
- package/syslog/syslog.es6 +101 -102
- package/watcher.es6 +21 -20
- package/cli/builder/project/skeletons/jshintignore.skeleton +0 -1
- package/cli/builder/project/skeletons/jshintrc.skeleton +0 -60
- package/cli/builder/project/skeletons/package.json.skeleton +0 -52
- package/cli/builder/skeletons/package.json +0 -61
|
@@ -39,37 +39,38 @@
|
|
|
39
39
|
"microservice"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"ejs": "3.1.
|
|
42
|
+
"ejs": "3.1.9",
|
|
43
43
|
"env-cmd": "^10.1.0",
|
|
44
44
|
"hello_world": "./src/n-api",
|
|
45
|
-
"markdown-it": "13.0.
|
|
45
|
+
"markdown-it": "13.0.1",
|
|
46
46
|
"nodefony": "^{{version}}",
|
|
47
47
|
"nodefony-client": "6.0.2",
|
|
48
|
-
"pm2": "5.
|
|
48
|
+
"pm2": "5.3.0",
|
|
49
49
|
"pm2-logrotate": "^2.7.0",
|
|
50
50
|
"serve-static": "1.15.0",
|
|
51
|
-
"socket.io": "4.
|
|
52
|
-
"socket.io-client": "4.
|
|
51
|
+
"socket.io": "4.7.1",
|
|
52
|
+
"socket.io-client": "4.7.1"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@babel/cli": "7.
|
|
56
|
-
"@babel/core": "7.
|
|
57
|
-
"@babel/preset-env": "7.
|
|
58
|
-
"@babel/register": "7.
|
|
59
|
-
"@mapbox/node-pre-gyp": "1.0.
|
|
60
|
-
"babel-loader": "
|
|
61
|
-
"chai": "4.3.
|
|
62
|
-
"html-loader": "
|
|
55
|
+
"@babel/cli": "7.22.9",
|
|
56
|
+
"@babel/core": "7.22.9",
|
|
57
|
+
"@babel/preset-env": "7.22.9",
|
|
58
|
+
"@babel/register": "7.22.5",
|
|
59
|
+
"@mapbox/node-pre-gyp": "1.0.11",
|
|
60
|
+
"babel-loader": "9.1.3",
|
|
61
|
+
"chai": "4.3.7",
|
|
62
|
+
"html-loader": "4.2.0",
|
|
63
63
|
"html-webpack-plugin": "^5.5.0",
|
|
64
|
-
"mini-css-extract-plugin": "2.6
|
|
65
|
-
"mocha": "
|
|
66
|
-
"node-gyp": "9.
|
|
67
|
-
"open": "
|
|
68
|
-
"sass
|
|
69
|
-
"
|
|
70
|
-
"webpack": "5.
|
|
71
|
-
"webpack
|
|
64
|
+
"mini-css-extract-plugin": "2.7.6",
|
|
65
|
+
"mocha": "10.2.0",
|
|
66
|
+
"node-gyp": "9.4.0",
|
|
67
|
+
"open": "9.1.0",
|
|
68
|
+
"sass": "1.64.2",
|
|
69
|
+
"sass-loader": "13.3.2",
|
|
70
|
+
"terser-webpack-plugin": "5.3.9",
|
|
71
|
+
"webpack": "5.88.2",
|
|
72
|
+
"webpack-cli": "5.1.4",
|
|
72
73
|
"webpack-merge": "^5.8.0"
|
|
73
74
|
},
|
|
74
75
|
"license": "ISC"
|
|
75
|
-
}
|
|
76
|
+
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
class generateProject extends nodefony.Builder {
|
|
2
|
-
|
|
3
|
-
constructor(cli, cmd, args) {
|
|
2
|
+
constructor (cli, cmd, args) {
|
|
4
3
|
super(cli, cmd, args);
|
|
5
4
|
this.name = null;
|
|
6
5
|
this.pathSkeleton = path.resolve(__dirname, "skeletons");
|
|
7
6
|
this.bundleUsersPath = path.resolve(nodefony.path, "cli", "builder", "bundles", "users-bundle");
|
|
8
|
-
//this.bundlePath = path.resolve(nodefony.path, "cli", "builder", "bundles", "users-bundle");
|
|
7
|
+
// this.bundlePath = path.resolve(nodefony.path, "cli", "builder", "bundles", "users-bundle");
|
|
9
8
|
if (this.cmd === "create:project" || this.cmd === "create") {
|
|
10
9
|
if (args && args[0]) {
|
|
11
10
|
this.name = args[0];
|
|
@@ -32,7 +31,7 @@ class generateProject extends nodefony.Builder {
|
|
|
32
31
|
version: nodefony.version,
|
|
33
32
|
year: new Date().getFullYear(),
|
|
34
33
|
orm: "sequelize",
|
|
35
|
-
npm:
|
|
34
|
+
npm: "npm",
|
|
36
35
|
addons: {
|
|
37
36
|
annotations: true,
|
|
38
37
|
users: true
|
|
@@ -45,7 +44,7 @@ class generateProject extends nodefony.Builder {
|
|
|
45
44
|
this.setEnv();
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
generate(response) {
|
|
47
|
+
generate (response) {
|
|
49
48
|
return super.generate(response, true)
|
|
50
49
|
.then(() => {
|
|
51
50
|
if (!this.buildFront) {
|
|
@@ -72,190 +71,187 @@ class generateProject extends nodefony.Builder {
|
|
|
72
71
|
});
|
|
73
72
|
}
|
|
74
73
|
|
|
75
|
-
generateUserBundle() {
|
|
74
|
+
generateUserBundle () {
|
|
76
75
|
return new Promise((resolve, reject) => {
|
|
77
|
-
this.log(
|
|
76
|
+
this.log("Copy users-bundle in src/bundles", "INFO", "USERS-BUNDLE");
|
|
78
77
|
try {
|
|
79
|
-
|
|
80
|
-
this.cli.cp(
|
|
78
|
+
const mypath = path.resolve(this.path, "src", "bundles");
|
|
79
|
+
this.cli.cp("-Rf", this.bundleUsersPath, mypath);
|
|
81
80
|
return this.cli.packageManager.call(this.cli, ["install"], path.resolve(mypath, "users-bundle"))
|
|
82
|
-
.then((res) =>
|
|
83
|
-
return resolve(res);
|
|
84
|
-
});
|
|
81
|
+
.then((res) => resolve(res));
|
|
85
82
|
} catch (e) {
|
|
86
83
|
return reject(e);
|
|
87
84
|
}
|
|
88
85
|
});
|
|
89
86
|
}
|
|
90
87
|
|
|
91
|
-
async interaction() {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
return `${value} Unauthorised Please enter a valid project name`;
|
|
104
|
-
}
|
|
105
|
-
}, {
|
|
106
|
-
type: 'input',
|
|
107
|
-
name: 'description',
|
|
108
|
-
message: 'Enter short description',
|
|
109
|
-
default: "Project Description",
|
|
110
|
-
validate: (value) => {
|
|
111
|
-
if (!value) {
|
|
112
|
-
this.cli.response.description = `${this.response.description} ${this.name}`;
|
|
113
|
-
}
|
|
88
|
+
async interaction () {
|
|
89
|
+
const promtOptions = [{
|
|
90
|
+
type: "input",
|
|
91
|
+
name: "name",
|
|
92
|
+
default: this.response.name,
|
|
93
|
+
message: "Enter Nodefony Project Name",
|
|
94
|
+
validate: (value) => {
|
|
95
|
+
if (value && value !== "nodefony") {
|
|
96
|
+
this.name = value;
|
|
97
|
+
nodefony.projectName = value;
|
|
114
98
|
return true;
|
|
115
|
-
},
|
|
116
|
-
filter: (value) => {
|
|
117
|
-
if (!value) {
|
|
118
|
-
return this.response.description;
|
|
119
|
-
}
|
|
120
|
-
if (value === "Project Description") {
|
|
121
|
-
return this.response.description;
|
|
122
|
-
}
|
|
123
|
-
return value;
|
|
124
99
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
name: "React"
|
|
136
|
-
}, {
|
|
137
|
-
name: "Electron",
|
|
138
|
-
disabled: true
|
|
139
|
-
}],
|
|
140
|
-
message: 'Choose Project Application Type (Mapping Front Framework in App) :',
|
|
141
|
-
filter: (value) => {
|
|
142
|
-
let front = null;
|
|
143
|
-
switch (value) {
|
|
144
|
-
case "Sandbox (without Front framwork)":
|
|
145
|
-
front = "sandbox";
|
|
146
|
-
break;
|
|
147
|
-
case "Vue.js":
|
|
148
|
-
front = "vue";
|
|
149
|
-
break;
|
|
150
|
-
case "React":
|
|
151
|
-
front = 'react';
|
|
152
|
-
break;
|
|
153
|
-
case "Electron":
|
|
154
|
-
front = 'electron';
|
|
155
|
-
break;
|
|
156
|
-
default:
|
|
157
|
-
front = value;
|
|
158
|
-
}
|
|
159
|
-
return front;
|
|
160
|
-
}
|
|
161
|
-
}, {
|
|
162
|
-
type: 'input',
|
|
163
|
-
name: 'path',
|
|
164
|
-
default: this.location,
|
|
165
|
-
message: 'Project Path',
|
|
166
|
-
validate: (value) => {
|
|
167
|
-
let myPath = null;
|
|
168
|
-
try {
|
|
169
|
-
myPath = new nodefony.fileClass(path.resolve(value));
|
|
170
|
-
} catch (e) {
|
|
171
|
-
return e.message;
|
|
172
|
-
}
|
|
173
|
-
let res = nodefony.isNodefonyTrunk(myPath.path);
|
|
174
|
-
if (res) {
|
|
175
|
-
return "You can't install project in nodefony Trunk project !";
|
|
176
|
-
}
|
|
177
|
-
if (value) {
|
|
178
|
-
this.location = value;
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
return 'Please enter a valid project Path';
|
|
100
|
+
return `${value} Unauthorised Please enter a valid project name`;
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
103
|
+
type: "input",
|
|
104
|
+
name: "description",
|
|
105
|
+
message: "Enter short description",
|
|
106
|
+
default: "Project Description",
|
|
107
|
+
validate: (value) => {
|
|
108
|
+
if (!value) {
|
|
109
|
+
this.cli.response.description = `${this.response.description} ${this.name}`;
|
|
182
110
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
filter: (value) => {
|
|
189
|
-
if (!value) {
|
|
190
|
-
this.response.authorName = this.response.authorFullName;
|
|
191
|
-
return this.response.authorFullName;
|
|
192
|
-
}
|
|
193
|
-
return value;
|
|
111
|
+
return true;
|
|
112
|
+
},
|
|
113
|
+
filter: (value) => {
|
|
114
|
+
if (!value) {
|
|
115
|
+
return this.response.description;
|
|
194
116
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
name: 'authorMail',
|
|
198
|
-
default: this.response.authorMail,
|
|
199
|
-
message: 'Please Enter Email Author ',
|
|
200
|
-
filter: (value) => {
|
|
201
|
-
if (!value) {
|
|
202
|
-
return this.response.authorMail;
|
|
203
|
-
}
|
|
204
|
-
return value;
|
|
117
|
+
if (value === "Project Description") {
|
|
118
|
+
return this.response.description;
|
|
205
119
|
}
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
}, {
|
|
123
|
+
type: "list",
|
|
124
|
+
name: "front",
|
|
125
|
+
default: 0,
|
|
126
|
+
pageSize: 5,
|
|
127
|
+
choices: [{
|
|
128
|
+
name: "Sandbox (without Front framwork)"
|
|
206
129
|
}, {
|
|
207
|
-
|
|
208
|
-
name: 'domain',
|
|
209
|
-
default: this.response.domain,
|
|
210
|
-
message: 'Enter Server Domain :',
|
|
211
|
-
}, {
|
|
212
|
-
type: 'input',
|
|
213
|
-
name: 'portHttp',
|
|
214
|
-
default: this.response.portHttp,
|
|
215
|
-
message: 'Enter server Domain http Port :',
|
|
216
|
-
}, {
|
|
217
|
-
type: 'input',
|
|
218
|
-
name: 'portHttps',
|
|
219
|
-
default: this.response.portHttps,
|
|
220
|
-
message: 'Enter Server Secure Domain https Port :',
|
|
130
|
+
name: "Vue.js"
|
|
221
131
|
}, {
|
|
222
|
-
|
|
223
|
-
name: 'orm',
|
|
224
|
-
default: 0,
|
|
225
|
-
pageSize: 2,
|
|
226
|
-
choices: ["sequelize", "mongoose"],
|
|
227
|
-
message: 'Choose default ORM (Mapping Objet Relationnel) :'
|
|
132
|
+
name: "React"
|
|
228
133
|
}, {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
134
|
+
name: "Electron",
|
|
135
|
+
disabled: true
|
|
136
|
+
}],
|
|
137
|
+
message: "Choose Project Application Type (Mapping Front Framework in App) :",
|
|
138
|
+
filter: (value) => {
|
|
139
|
+
let front = null;
|
|
140
|
+
switch (value) {
|
|
141
|
+
case "Sandbox (without Front framwork)":
|
|
142
|
+
front = "sandbox";
|
|
143
|
+
break;
|
|
144
|
+
case "Vue.js":
|
|
145
|
+
front = "vue";
|
|
146
|
+
break;
|
|
147
|
+
case "React":
|
|
148
|
+
front = "react";
|
|
149
|
+
break;
|
|
150
|
+
case "Electron":
|
|
151
|
+
front = "electron";
|
|
152
|
+
break;
|
|
153
|
+
default:
|
|
154
|
+
front = value;
|
|
242
155
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
return
|
|
156
|
+
return front;
|
|
157
|
+
}
|
|
158
|
+
}, {
|
|
159
|
+
type: "input",
|
|
160
|
+
name: "path",
|
|
161
|
+
default: this.location,
|
|
162
|
+
message: "Project Path",
|
|
163
|
+
validate: (value) => {
|
|
164
|
+
let myPath = null;
|
|
165
|
+
try {
|
|
166
|
+
myPath = new nodefony.fileClass(path.resolve(value));
|
|
167
|
+
} catch (e) {
|
|
168
|
+
return e.message;
|
|
169
|
+
}
|
|
170
|
+
const res = nodefony.isNodefonyTrunk(myPath.path);
|
|
171
|
+
if (res) {
|
|
172
|
+
return "You can't install project in nodefony Trunk project !";
|
|
173
|
+
}
|
|
174
|
+
if (value) {
|
|
175
|
+
this.location = value;
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
return "Please enter a valid project Path";
|
|
179
|
+
}
|
|
180
|
+
}, {
|
|
181
|
+
type: "input",
|
|
182
|
+
name: "authorFullName",
|
|
183
|
+
default: this.response.authorFullName,
|
|
184
|
+
message: "Please Enter Author Full Name",
|
|
185
|
+
filter: (value) => {
|
|
186
|
+
if (!value) {
|
|
187
|
+
this.response.authorName = this.response.authorFullName;
|
|
188
|
+
return this.response.authorFullName;
|
|
256
189
|
}
|
|
190
|
+
return value;
|
|
257
191
|
}
|
|
258
|
-
|
|
192
|
+
}, {
|
|
193
|
+
type: "input",
|
|
194
|
+
name: "authorMail",
|
|
195
|
+
default: this.response.authorMail,
|
|
196
|
+
message: "Please Enter Email Author ",
|
|
197
|
+
filter: (value) => {
|
|
198
|
+
if (!value) {
|
|
199
|
+
return this.response.authorMail;
|
|
200
|
+
}
|
|
201
|
+
return value;
|
|
202
|
+
}
|
|
203
|
+
}, {
|
|
204
|
+
type: "input",
|
|
205
|
+
name: "domain",
|
|
206
|
+
default: this.response.domain,
|
|
207
|
+
message: "Enter Server Domain :"
|
|
208
|
+
}, {
|
|
209
|
+
type: "input",
|
|
210
|
+
name: "portHttp",
|
|
211
|
+
default: this.response.portHttp,
|
|
212
|
+
message: "Enter server Domain http Port :"
|
|
213
|
+
}, {
|
|
214
|
+
type: "input",
|
|
215
|
+
name: "portHttps",
|
|
216
|
+
default: this.response.portHttps,
|
|
217
|
+
message: "Enter Server Secure Domain https Port :"
|
|
218
|
+
}, {
|
|
219
|
+
type: "list",
|
|
220
|
+
name: "orm",
|
|
221
|
+
default: 0,
|
|
222
|
+
pageSize: 2,
|
|
223
|
+
choices: ["sequelize", "mongoose"],
|
|
224
|
+
message: "Choose default ORM (Mapping Objet Relationnel) :"
|
|
225
|
+
}, {
|
|
226
|
+
type: "list",
|
|
227
|
+
name: "packageManager",
|
|
228
|
+
message: "Choose a default Package Manager : ",
|
|
229
|
+
default: 0,
|
|
230
|
+
pageSize: 2,
|
|
231
|
+
choices: ["npm", "yarn", "pnpm"],
|
|
232
|
+
filter: (value) => {
|
|
233
|
+
if (this.cli[value]) {
|
|
234
|
+
this.cli.packageManager = this.cli[value];
|
|
235
|
+
} else {
|
|
236
|
+
throw new Error(`Package Manager ${value} not available ! `);
|
|
237
|
+
}
|
|
238
|
+
return value;
|
|
239
|
+
}
|
|
240
|
+
}, {
|
|
241
|
+
type: "checkbox",
|
|
242
|
+
message: "Select addons project",
|
|
243
|
+
name: "addons",
|
|
244
|
+
pageSize: 10,
|
|
245
|
+
choices: [{
|
|
246
|
+
name: "Users Management",
|
|
247
|
+
message: "Bootstrap only",
|
|
248
|
+
checked: this.response.addons.users,
|
|
249
|
+
disabled: this.cli.response.command === "bundle"
|
|
250
|
+
}],
|
|
251
|
+
filter: (value) => value
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/* , {
|
|
259
255
|
type: 'confirm',
|
|
260
256
|
name: 'bundle',
|
|
261
257
|
message: 'Do You Want Generate Bundle?',
|
|
@@ -264,7 +260,7 @@ class generateProject extends nodefony.Builder {
|
|
|
264
260
|
];
|
|
265
261
|
return this.cli.prompt(promtOptions)
|
|
266
262
|
.then((response) => {
|
|
267
|
-
|
|
263
|
+
const addons = {
|
|
268
264
|
users: false
|
|
269
265
|
};
|
|
270
266
|
if (response.addons.length) {
|
|
@@ -285,20 +281,29 @@ class generateProject extends nodefony.Builder {
|
|
|
285
281
|
if (myresponse.remove) {
|
|
286
282
|
return response;
|
|
287
283
|
}
|
|
288
|
-
|
|
284
|
+
const error = new Error(`${this.path} Already exist`);
|
|
289
285
|
error.code = 0;
|
|
290
286
|
throw error;
|
|
291
|
-
})
|
|
287
|
+
})
|
|
288
|
+
.catch((e) => {
|
|
292
289
|
throw e;
|
|
293
290
|
});
|
|
294
291
|
}
|
|
295
292
|
return response;
|
|
296
|
-
})
|
|
293
|
+
})
|
|
294
|
+
.catch((e) => {
|
|
297
295
|
throw e;
|
|
298
296
|
});
|
|
299
297
|
}
|
|
300
298
|
|
|
301
|
-
|
|
299
|
+
getPadDate () {
|
|
300
|
+
// return new Date().toISOString().split('.')[0].replace(/[^\d]/gi, '')
|
|
301
|
+
return new Date().toISOString()
|
|
302
|
+
.replace(/\.\d{3}Z$/, "")
|
|
303
|
+
.replace(/\W/g, ".");
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
createBuilder (response) {
|
|
302
307
|
try {
|
|
303
308
|
return {
|
|
304
309
|
name: this.response.name,
|
|
@@ -306,7 +311,7 @@ class generateProject extends nodefony.Builder {
|
|
|
306
311
|
childs: [{
|
|
307
312
|
name: "package.json",
|
|
308
313
|
type: "file",
|
|
309
|
-
skeleton: path.resolve(this.pathSkeleton, "package.json.
|
|
314
|
+
skeleton: path.resolve(this.pathSkeleton, "package.json.twig"),
|
|
310
315
|
params: this.response
|
|
311
316
|
}, {
|
|
312
317
|
name: ".gitignore",
|
|
@@ -314,14 +319,14 @@ class generateProject extends nodefony.Builder {
|
|
|
314
319
|
skeleton: path.resolve(this.pathSkeleton, "gitignore.skeleton"),
|
|
315
320
|
params: this.response
|
|
316
321
|
}, {
|
|
317
|
-
name: ".
|
|
322
|
+
name: ".eslintrc.js",
|
|
318
323
|
type: "file",
|
|
319
|
-
skeleton: path.resolve(this.pathSkeleton, "
|
|
324
|
+
skeleton: path.resolve(this.pathSkeleton, "eslintrc.js.skeleton"),
|
|
320
325
|
params: this.response
|
|
321
326
|
}, {
|
|
322
|
-
name: ".
|
|
327
|
+
name: ".eslintignore",
|
|
323
328
|
type: "file",
|
|
324
|
-
skeleton: path.resolve(this.pathSkeleton, "
|
|
329
|
+
skeleton: path.resolve(this.pathSkeleton, "eslintignore.skeleton"),
|
|
325
330
|
params: this.response
|
|
326
331
|
}, {
|
|
327
332
|
name: ".editorconfig",
|
|
@@ -338,14 +343,44 @@ class generateProject extends nodefony.Builder {
|
|
|
338
343
|
name: "migrations",
|
|
339
344
|
type: "directory",
|
|
340
345
|
childs: [{
|
|
341
|
-
name: "
|
|
346
|
+
name: "sequelize",
|
|
342
347
|
type: "directory",
|
|
343
348
|
childs: [{
|
|
344
|
-
name:
|
|
349
|
+
name: `${this.getPadDate()}-migrate-entity.js.example`,
|
|
345
350
|
type: "file",
|
|
346
351
|
skeleton: path.resolve(this.pathSkeleton, "migrations", "migrations.skeleton.js"),
|
|
347
352
|
params: this.response
|
|
353
|
+
}, {
|
|
354
|
+
name: "nodefony",
|
|
355
|
+
type: "directory",
|
|
356
|
+
childs: [{
|
|
357
|
+
name: "2022.12.25T17.37.37.entity-user.js",
|
|
358
|
+
skeleton: path.resolve(this.pathSkeleton, "migrations", "2022.12.25T17.37.37.entity-user.js"),
|
|
359
|
+
type: "file",
|
|
360
|
+
params: this.response
|
|
361
|
+
}, {
|
|
362
|
+
name: "2022.12.25T17.37.38.entity-session.js",
|
|
363
|
+
skeleton: path.resolve(this.pathSkeleton, "migrations", "2022.12.25T17.37.38.entity-session.js"),
|
|
364
|
+
type: "file",
|
|
365
|
+
params: this.response
|
|
366
|
+
}, {
|
|
367
|
+
name: "2022.12.25T17.37.39.entity-requests.js",
|
|
368
|
+
skeleton: path.resolve(this.pathSkeleton, "migrations", "2022.12.25T17.37.39.entity-requests.js"),
|
|
369
|
+
type: "file",
|
|
370
|
+
params: this.response
|
|
371
|
+
}, {
|
|
372
|
+
name: "2022.12.25T17.37.40.entity-jwts.js",
|
|
373
|
+
skeleton: path.resolve(this.pathSkeleton, "migrations", "2022.12.25T17.37.40.entity-jwts.js"),
|
|
374
|
+
type: "file",
|
|
375
|
+
params: this.response
|
|
376
|
+
}]
|
|
348
377
|
}]
|
|
378
|
+
}, {
|
|
379
|
+
name: "mongoose",
|
|
380
|
+
type: "directory"
|
|
381
|
+
}, {
|
|
382
|
+
name: "seedeers",
|
|
383
|
+
type: "directory"
|
|
349
384
|
}]
|
|
350
385
|
}, {
|
|
351
386
|
name: "config",
|
|
@@ -395,6 +430,18 @@ class generateProject extends nodefony.Builder {
|
|
|
395
430
|
chmod: 755,
|
|
396
431
|
skeleton: path.resolve(this.pathSkeleton, "bin", "generateCertificates.sh.skeleton"),
|
|
397
432
|
params: this.response
|
|
433
|
+
}, {
|
|
434
|
+
name: "dev-deploy.sh",
|
|
435
|
+
type: "file",
|
|
436
|
+
chmod: 755,
|
|
437
|
+
skeleton: path.resolve(this.pathSkeleton, "bin", "dev-deploy.sh"),
|
|
438
|
+
params: this.response
|
|
439
|
+
}, {
|
|
440
|
+
name: "prod-deploy.sh",
|
|
441
|
+
type: "file",
|
|
442
|
+
chmod: 755,
|
|
443
|
+
skeleton: path.resolve(this.pathSkeleton, "bin", "prod-deploy.sh"),
|
|
444
|
+
params: this.response
|
|
398
445
|
}]
|
|
399
446
|
}, {
|
|
400
447
|
name: "src",
|