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.
Files changed (136) hide show
  1. package/CHANGELOG.md +534 -8028
  2. package/README.md +33 -30
  3. package/autoloader.es6 +46 -48
  4. package/builder.es6 +66 -76
  5. package/cli/builder/bundles/bundle.js +57 -63
  6. package/cli/builder/bundles/controller.js +34 -38
  7. package/cli/builder/bundles/users-bundle/Command/fixtureTask.js +11 -12
  8. package/cli/builder/bundles/users-bundle/Command/usersCommand.js +23 -24
  9. package/cli/builder/bundles/users-bundle/Entity/mongoose/userEntity.js +25 -30
  10. package/cli/builder/bundles/users-bundle/Entity/sequelize/userEntity.js +42 -31
  11. package/cli/builder/bundles/users-bundle/Fixtures/users.js +24 -26
  12. package/cli/builder/bundles/users-bundle/Fixtures/usersFixtures.js +28 -29
  13. package/cli/builder/bundles/users-bundle/Resources/config/config.js +4 -3
  14. package/cli/builder/bundles/users-bundle/Resources/config/routing.js +2 -2
  15. package/cli/builder/bundles/users-bundle/Resources/config/security.js +9 -8
  16. package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.dev.config.js +3 -3
  17. package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.prod.config.js +4 -3
  18. package/cli/builder/bundles/users-bundle/Resources/config/webpack.config.js +74 -75
  19. package/cli/builder/bundles/users-bundle/Resources/scss/awesome/font-awesome.config.js +9 -9
  20. package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/login.js +13 -13
  21. package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/users.js +14 -14
  22. package/cli/builder/bundles/users-bundle/controller/api/graphql/graphqlController.js +13 -15
  23. package/cli/builder/bundles/users-bundle/controller/api/graphql/userResolver.js +29 -29
  24. package/cli/builder/bundles/users-bundle/controller/api/graphql/usertype.js +2 -2
  25. package/cli/builder/bundles/users-bundle/controller/api/openapi/loginApiController.js +34 -36
  26. package/cli/builder/bundles/users-bundle/controller/api/openapi/restUserController.js +32 -36
  27. package/cli/builder/bundles/users-bundle/controller/loginController.js +30 -34
  28. package/cli/builder/bundles/users-bundle/controller/usersController.js +54 -60
  29. package/cli/builder/bundles/users-bundle/package.json +27 -25
  30. package/cli/builder/bundles/users-bundle/pnpm-lock.yaml +4262 -0
  31. package/cli/builder/bundles/users-bundle/readme.md +7 -7
  32. package/cli/builder/bundles/users-bundle/services/usersService.js +97 -102
  33. package/cli/builder/bundles/users-bundle/src/providers/mongoose/userProvider.js +6 -8
  34. package/cli/builder/bundles/users-bundle/src/providers/sequelize/userProvider.js +9 -10
  35. package/cli/builder/bundles/users-bundle/tests/loginTest.js +119 -70
  36. package/cli/builder/bundles/users-bundle/usersBundle.js +2 -3
  37. package/cli/builder/microService/microService.js +139 -141
  38. package/cli/builder/microService/skeletons/package.json +23 -22
  39. package/cli/builder/project/project.js +228 -181
  40. package/cli/builder/project/skeletons/README.md +33 -30
  41. package/cli/builder/project/skeletons/bin/dev-deploy.sh +5 -0
  42. package/cli/builder/project/skeletons/bin/prod-deploy.sh +3 -0
  43. package/cli/builder/project/skeletons/config/config.js.skeleton +1 -0
  44. package/cli/builder/project/skeletons/config/pm2.config.js.skeleton +41 -17
  45. package/cli/builder/project/skeletons/eslintignore.skeleton +15 -0
  46. package/cli/builder/project/skeletons/eslintrc.js.skeleton +97 -0
  47. package/cli/builder/project/skeletons/gitignore.skeleton +1 -0
  48. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.37.entity-user.js +137 -0
  49. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.38.entity-session.js +97 -0
  50. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.39.entity-requests.js +115 -0
  51. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.40.entity-jwts.js +97 -0
  52. package/cli/builder/project/skeletons/migrations/migrations.skeleton.js +0 -2
  53. package/cli/builder/project/skeletons/package.json.twig +70 -0
  54. package/cli/builder/react/reactBuilder.js +59 -65
  55. package/cli/builder/sandbox/sandBoxBuilder.js +132 -134
  56. package/cli/builder/skeletons/app/appKernel.js +120 -2
  57. package/cli/builder/skeletons/config/config.js +1 -1
  58. package/cli/builder/skeletons/config/nodefony/framework-bundle.js +2 -1
  59. package/cli/builder/skeletons/config/nodefony/http-bundle.js +1 -0
  60. package/cli/builder/skeletons/config/nodefony/mongoose-bundle.js +38 -12
  61. package/cli/builder/skeletons/config/nodefony/monitoring-bundle.js +21 -2
  62. package/cli/builder/skeletons/config/nodefony/sequelize-bundle.js +122 -13
  63. package/cli/builder/skeletons/package.json.twig +57 -0
  64. package/cli/builder/skeletons/unittest/testFile.js +44 -45
  65. package/cli/builder/vue/skeletons/vue.config.js +84 -10
  66. package/cli/builder/vue/vueBuilder.js +116 -114
  67. package/cli/generate/generate.es6 +38 -39
  68. package/cli/install/install.js +45 -58
  69. package/cli/sequelize/sequelize.js +50 -39
  70. package/cli/start.js +353 -347
  71. package/cli/tools/pm2.es6 +55 -57
  72. package/cli/tools/tools.es6 +36 -37
  73. package/cli.es6 +280 -228
  74. package/container.es6 +51 -59
  75. package/error.es6 +25 -27
  76. package/fileClass.es6 +53 -55
  77. package/finder/file.es6 +5 -4
  78. package/finder/fileResult.es6 +23 -22
  79. package/finder/finder2.es6 +46 -54
  80. package/finder.es6 +88 -97
  81. package/kernel/annotations/annotations.es6 +44 -46
  82. package/kernel/api/api.es6 +6 -8
  83. package/kernel/api/graphqlApi.es6 +21 -21
  84. package/kernel/api/jsonApi.es6 +40 -45
  85. package/kernel/api/openApi.es6 +9 -11
  86. package/kernel/api/schemas/openApiSchema.js +61 -32
  87. package/kernel/babylon.es6 +31 -38
  88. package/kernel/bundle.es6 +252 -220
  89. package/kernel/cliKernel.es6 +157 -170
  90. package/kernel/command.es6 +17 -20
  91. package/kernel/commands/nodefonyCommand.es6 +111 -58
  92. package/kernel/commands/tasks/bundlesTask.es6 +14 -19
  93. package/kernel/controllers/controller.es6 +167 -180
  94. package/kernel/fixture.es6 +4 -7
  95. package/kernel/injections/injections.es6 +97 -103
  96. package/kernel/kernel.es6 +476 -384
  97. package/kernel/kernelWatcher.es6 +64 -54
  98. package/kernel/orm/entity.es6 +10 -12
  99. package/kernel/orm/orm.es6 +68 -48
  100. package/kernel/reader.es6 +45 -47
  101. package/kernel/security/encoder.es6 +8 -6
  102. package/kernel/security/factories/factory.es6 +34 -37
  103. package/kernel/security/factories/passeportFactory.es6 +13 -14
  104. package/kernel/security/provider.es6 +11 -13
  105. package/kernel/security/providers/chainProvider.es6 +13 -28
  106. package/kernel/security/providers/memoryProvider.es6 +7 -11
  107. package/kernel/security/providers/providerManager.es6 +11 -14
  108. package/kernel/security/providers/userEntityProvider.es6 +7 -8
  109. package/kernel/security/role.es6 +3 -3
  110. package/kernel/security/secureArea.es6 +143 -149
  111. package/kernel/security/tokens/token.es6 +30 -32
  112. package/kernel/security/user.es6 +19 -19
  113. package/kernel/serviceRealTime.es6 +5 -7
  114. package/kernel/services/connectionsService.es6 +20 -22
  115. package/kernel/services/cron/cronService.es6 +14 -16
  116. package/kernel/task.es6 +20 -26
  117. package/kernel/templates.es6 +4 -5
  118. package/kernel/templating/twig.es6 +56 -47
  119. package/kernel/tests/cliTest.js +7 -11
  120. package/kernel/tests/containerTest.js +25 -37
  121. package/kernel/tests/kernelTest.js +9 -16
  122. package/nodefony.es6 +279 -256
  123. package/notificationsCenter.es6 +28 -20
  124. package/package.json +40 -40
  125. package/protocol.es6 +19 -21
  126. package/protocols/bayeux.es6 +35 -38
  127. package/protocols/jsonRpc/jsonrpc.es6 +12 -14
  128. package/result.es6 +11 -12
  129. package/service.es6 +62 -62
  130. package/syslog/pdu.es6 +99 -91
  131. package/syslog/syslog.es6 +101 -102
  132. package/watcher.es6 +21 -20
  133. package/cli/builder/project/skeletons/jshintignore.skeleton +0 -1
  134. package/cli/builder/project/skeletons/jshintrc.skeleton +0 -60
  135. package/cli/builder/project/skeletons/package.json.skeleton +0 -52
  136. package/cli/builder/skeletons/package.json +0 -61
@@ -39,37 +39,38 @@
39
39
  "microservice"
40
40
  ],
41
41
  "dependencies": {
42
- "ejs": "3.1.7",
42
+ "ejs": "3.1.9",
43
43
  "env-cmd": "^10.1.0",
44
44
  "hello_world": "./src/n-api",
45
- "markdown-it": "13.0.0",
45
+ "markdown-it": "13.0.1",
46
46
  "nodefony": "^{{version}}",
47
47
  "nodefony-client": "6.0.2",
48
- "pm2": "5.2.0",
48
+ "pm2": "5.3.0",
49
49
  "pm2-logrotate": "^2.7.0",
50
50
  "serve-static": "1.15.0",
51
- "socket.io": "4.4.1",
52
- "socket.io-client": "4.4.1"
51
+ "socket.io": "4.7.1",
52
+ "socket.io-client": "4.7.1"
53
53
  },
54
54
  "devDependencies": {
55
- "@babel/cli": "7.17.6",
56
- "@babel/core": "7.17.9",
57
- "@babel/preset-env": "7.16.11",
58
- "@babel/register": "7.17.7",
59
- "@mapbox/node-pre-gyp": "1.0.9",
60
- "babel-loader": "8.2.5",
61
- "chai": "4.3.6",
62
- "html-loader": "3.1.0",
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.0",
65
- "mocha": "9.2.2",
66
- "node-gyp": "9.0.0",
67
- "open": "8.4.0",
68
- "sass-loader": "12.6.0",
69
- "terser-webpack-plugin": "5.3.1",
70
- "webpack": "5.72.0",
71
- "webpack-cli": "4.9.2",
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: '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('Copy users-bundle in src/bundles', "INFO", "USERS-BUNDLE");
76
+ this.log("Copy users-bundle in src/bundles", "INFO", "USERS-BUNDLE");
78
77
  try {
79
- let mypath = path.resolve(this.path, "src", "bundles");
80
- this.cli.cp('-Rf', this.bundleUsersPath, mypath);
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
- let promtOptions = [{
93
- type: 'input',
94
- name: 'name',
95
- default: this.response.name,
96
- message: 'Enter Nodefony Project Name',
97
- validate: (value) => {
98
- if (value && value !== "nodefony") {
99
- this.name = value;
100
- nodefony.projectName = value;
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
- type: 'list',
127
- name: 'front',
128
- default: 0,
129
- pageSize: 5,
130
- choices: [{
131
- name: "Sandbox (without Front framwork)"
132
- }, {
133
- name: "Vue.js"
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
- type: 'input',
185
- name: 'authorFullName',
186
- default: this.response.authorFullName,
187
- message: 'Please Enter Author Full Name',
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
- type: 'input',
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
- type: 'input',
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
- type: 'list',
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
- type: 'list',
230
- name: 'packageManager',
231
- message: 'Choose a default Package Manager : ',
232
- default: 0,
233
- pageSize: 2,
234
- choices: ["npm", "yarn"],
235
- filter: (value) => {
236
- if (this.cli[value]) {
237
- this.cli.packageManager = this.cli[value];
238
- } else {
239
- throw new Error(`Package Manager ${value} not available ! `);
240
- }
241
- return value;
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
- type: 'checkbox',
245
- message: 'Select addons project',
246
- name: 'addons',
247
- pageSize: 10,
248
- choices: [{
249
- name: 'Users Management',
250
- message: "Bootstrap only",
251
- checked: this.response.addons.users,
252
- disabled: (this.cli.response.command === "bundle")
253
- }],
254
- filter: (value) => {
255
- return value;
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
- let addons = {
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
- let error = new Error(`${this.path} Already exist`);
284
+ const error = new Error(`${this.path} Already exist`);
289
285
  error.code = 0;
290
286
  throw error;
291
- }).catch((e) => {
287
+ })
288
+ .catch((e) => {
292
289
  throw e;
293
290
  });
294
291
  }
295
292
  return response;
296
- }).catch(e => {
293
+ })
294
+ .catch((e) => {
297
295
  throw e;
298
296
  });
299
297
  }
300
298
 
301
- createBuilder(response) {
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.skeleton"),
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: ".jshintrc",
322
+ name: ".eslintrc.js",
318
323
  type: "file",
319
- skeleton: path.resolve(this.pathSkeleton, "jshintrc.skeleton"),
324
+ skeleton: path.resolve(this.pathSkeleton, "eslintrc.js.skeleton"),
320
325
  params: this.response
321
326
  }, {
322
- name: ".jshintignore",
327
+ name: ".eslintignore",
323
328
  type: "file",
324
- skeleton: path.resolve(this.pathSkeleton, "jshintignore.skeleton"),
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: "nodefony",
346
+ name: "sequelize",
342
347
  type: "directory",
343
348
  childs: [{
344
- name: "00_migration.js.example",
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",