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
@@ -1,7 +1,7 @@
1
- const spdx = require('spdx');
1
+ const spdx = require("spdx");
2
2
 
3
3
  class openApiSchema extends nodefony.Service {
4
- constructor(api, config, entity) {
4
+ constructor (api, config, entity) {
5
5
  const container = api ? api.container : kernel.container;
6
6
  super("openApiSchema", container, false);
7
7
  this.api = api;
@@ -15,7 +15,7 @@ class openApiSchema extends nodefony.Service {
15
15
  components: {
16
16
  schemas: {
17
17
  NodefonyError: this.getErrorSchema(),
18
- Pdu: this.getPduSchema(),
18
+ Pdu: this.getPduSchema()
19
19
  },
20
20
  responses: this.getResponseSchema()
21
21
  },
@@ -27,16 +27,16 @@ class openApiSchema extends nodefony.Service {
27
27
  }
28
28
  }
29
29
 
30
- loadConfig(config, entity) {
30
+ loadConfig (config, entity) {
31
31
  this.setConfig(entity);
32
32
  return nodefony.extend(true, this.obj, config);
33
33
  }
34
34
 
35
- getConfig() {
35
+ getConfig () {
36
36
  return this.obj;
37
37
  }
38
38
 
39
- setConfig(entity = this.entity) {
39
+ setConfig (entity = this.entity) {
40
40
  this.obj.info = this.getInfo();
41
41
  this.obj.servers = this.getServers();
42
42
  if (entity) {
@@ -51,7 +51,7 @@ class openApiSchema extends nodefony.Service {
51
51
  return this.obj;
52
52
  }
53
53
 
54
- getInfo() {
54
+ getInfo () {
55
55
  return {
56
56
  title: this.api.name,
57
57
  version: this.api.version,
@@ -66,9 +66,9 @@ class openApiSchema extends nodefony.Service {
66
66
  };
67
67
  }
68
68
 
69
- getServers() {
70
- return [{
71
- "url": `https://${this.kernel.domain}:{port}`,
69
+ getServers () {
70
+ const tab = [];
71
+ const base = {
72
72
  "description": this.kernel.description,
73
73
  "variables": {
74
74
  "port": {
@@ -82,11 +82,22 @@ class openApiSchema extends nodefony.Service {
82
82
  "default": this.api.basePath || ""
83
83
  }
84
84
  }
85
- }];
85
+ };
86
+ if (this.kernel.domain === "0.0.0.0") {
87
+ tab.push({
88
+ "url": "https://localhost:{port}",
89
+ ...base
90
+ });
91
+ }
92
+ tab.push({
93
+ "url": `https://${this.kernel.domain}:{port}`,
94
+ ...base
95
+ });
96
+ return tab;
86
97
  }
87
98
 
88
- getLicence(licence = "", url = "") {
89
- const bundle = this.api.bundle;
99
+ getLicence (licence = "", url = "") {
100
+ const {bundle} = this.api;
90
101
  if (bundle) {
91
102
  if (bundle.package && bundle.package.license) {
92
103
  try {
@@ -103,7 +114,7 @@ class openApiSchema extends nodefony.Service {
103
114
  this.log(e, "WARNING");
104
115
  spdx.licenses.every((element) => {
105
116
  this.log(element, "WARNING");
106
- return typeof element === 'string';
117
+ return typeof element === "string";
107
118
  });
108
119
  this.log("licence not valid ", "WARNING");
109
120
  this.log("Show licence param in package.json and use spdx to valid : https://github.com/kemitchell/spdx.js ");
@@ -114,7 +125,7 @@ class openApiSchema extends nodefony.Service {
114
125
  if (licence) {
115
126
  return {
116
127
  name: licence,
117
- url: url
128
+ url
118
129
  };
119
130
  }
120
131
  return {
@@ -122,13 +133,31 @@ class openApiSchema extends nodefony.Service {
122
133
  };
123
134
  }
124
135
 
125
- setSchema(name, entity = this.entity) {
136
+ setSchema (name, entity = this.entity) {
126
137
  try {
127
138
  if (name) {
128
139
  this.obj.components.schemas[name] = {};
129
140
  }
130
141
  if (entity) {
131
142
  this.obj.components.schemas[name] = this.orm.getOpenApiSchema(entity);
143
+ for (let ele in this.obj.components.schemas[name].properties) {
144
+ if (this.obj.components.schemas[ele]) {
145
+ continue;
146
+ }
147
+ const attr = this.obj.components.schemas[name].properties[ele];
148
+ if (attr.items && attr.items.$ref) {
149
+ let entityRef = this.orm.getEntity(ele);
150
+ if (entityRef) {
151
+ this.obj.components.schemas[ele] = this.orm.getOpenApiSchema(entityRef);
152
+ } else if (ele.endsWith("s")) {
153
+ ele = ele.slice(0, -1);
154
+ entityRef = this.orm.getEntity(ele);
155
+ if (entityRef) {
156
+ this.obj.components.schemas[ele] = this.orm.getOpenApiSchema(entityRef);
157
+ }
158
+ }
159
+ }
160
+ }
132
161
  }
133
162
  } catch (e) {
134
163
  this.log(e, "WARNING");
@@ -137,9 +166,9 @@ class openApiSchema extends nodefony.Service {
137
166
  }
138
167
 
139
168
 
140
- getResponseSchema() {
169
+ getResponseSchema () {
141
170
  return {
142
- '400': {
171
+ "400": {
143
172
  description: "Bad Request",
144
173
  content: {
145
174
  "application/json": {
@@ -149,7 +178,7 @@ class openApiSchema extends nodefony.Service {
149
178
  }
150
179
  }
151
180
  },
152
- '401': {
181
+ "401": {
153
182
  description: "Unauthorized",
154
183
  content: {
155
184
  "application/json": {
@@ -159,7 +188,7 @@ class openApiSchema extends nodefony.Service {
159
188
  }
160
189
  }
161
190
  },
162
- '403': {
191
+ "403": {
163
192
  description: "Forbidden",
164
193
  content: {
165
194
  "application/json": {
@@ -169,7 +198,7 @@ class openApiSchema extends nodefony.Service {
169
198
  }
170
199
  }
171
200
  },
172
- '404': {
201
+ "404": {
173
202
  description: "Not Found",
174
203
  content: {
175
204
  "application/json": {
@@ -179,7 +208,7 @@ class openApiSchema extends nodefony.Service {
179
208
  }
180
209
  }
181
210
  },
182
- '405': {
211
+ "405": {
183
212
  description: "Method Not Allowed",
184
213
  content: {
185
214
  "application/json": {
@@ -189,7 +218,7 @@ class openApiSchema extends nodefony.Service {
189
218
  }
190
219
  }
191
220
  },
192
- '406': {
221
+ "406": {
193
222
  description: "Not Acceptable",
194
223
  content: {
195
224
  "application/json": {
@@ -199,7 +228,7 @@ class openApiSchema extends nodefony.Service {
199
228
  }
200
229
  }
201
230
  },
202
- '412': {
231
+ "412": {
203
232
  description: "Precondition Failed",
204
233
  content: {
205
234
  "application/json": {
@@ -209,7 +238,7 @@ class openApiSchema extends nodefony.Service {
209
238
  }
210
239
  }
211
240
  },
212
- '415': {
241
+ "415": {
213
242
  description: "Unsupported Media Type",
214
243
  content: {
215
244
  "application/json": {
@@ -219,7 +248,7 @@ class openApiSchema extends nodefony.Service {
219
248
  }
220
249
  }
221
250
  },
222
- '500': {
251
+ "500": {
223
252
  description: "Internal Server Error",
224
253
  content: {
225
254
  "application/json": {
@@ -229,7 +258,7 @@ class openApiSchema extends nodefony.Service {
229
258
  }
230
259
  }
231
260
  },
232
- '501': {
261
+ "501": {
233
262
  description: "Not Implemented",
234
263
  content: {
235
264
  "application/json": {
@@ -252,7 +281,7 @@ class openApiSchema extends nodefony.Service {
252
281
  };
253
282
  }
254
283
 
255
- getErrorSchema() {
284
+ getErrorSchema () {
256
285
  return {
257
286
  type: "object",
258
287
  properties: {
@@ -261,7 +290,7 @@ class openApiSchema extends nodefony.Service {
261
290
  },
262
291
  code: {
263
292
  type: "integer",
264
- format: "int32",
293
+ format: "int32"
265
294
  },
266
295
  url: {
267
296
  type: "string"
@@ -271,7 +300,7 @@ class openApiSchema extends nodefony.Service {
271
300
  },
272
301
  pdu: {
273
302
  "$ref": "#/components/schemas/Pdu"
274
- },
303
+ }
275
304
  },
276
305
  example: `
277
306
  {
@@ -303,7 +332,7 @@ class openApiSchema extends nodefony.Service {
303
332
  };
304
333
  }
305
334
 
306
- getPduSchema() {
335
+ getPduSchema () {
307
336
  return {
308
337
  type: "object",
309
338
  properties: {
@@ -362,4 +391,4 @@ class openApiSchema extends nodefony.Service {
362
391
  }
363
392
 
364
393
  nodefony.openApiSchema = openApiSchema;
365
- module.exports = openApiSchema;
394
+ module.exports = openApiSchema;
@@ -1,8 +1,8 @@
1
- const babylon = require('@babel/parser');
1
+ const babylon = require("@babel/parser");
2
2
  const defaultSettings = {
3
3
  sourceType: "module",
4
- //strictMode: false,
5
- //tokens: true,
4
+ // strictMode: false,
5
+ // tokens: true,
6
6
  plugins: [
7
7
  "espree"
8
8
  ]
@@ -12,36 +12,30 @@ const regAction = new RegExp("^(.*)Action$");
12
12
 
13
13
 
14
14
  class Babylon {
15
- constructor() {
15
+ constructor () {
16
16
  this.engine = babylon;
17
17
  this.settings = nodefony.extend({}, defaultSettings);
18
18
  }
19
19
 
20
- parse(file, options) {
20
+ parse (file, options) {
21
21
  return new Promise((resolve, reject) => {
22
22
  try {
23
23
  if (file) {
24
- let opt = nodefony.extend({}, this.settings, options);
24
+ const opt = nodefony.extend({}, this.settings, options);
25
25
  switch (true) {
26
- case (file instanceof nodefony.fileClass):
26
+ case file instanceof nodefony.fileClass:
27
27
  opt.sourceFilename = file.path;
28
28
  file.readAsync()
29
- .then((str) => {
30
- return resolve(this.engine.parse(str, opt));
31
- }).catch(e => {
32
- return reject(e);
33
- });
29
+ .then((str) => resolve(this.engine.parse(str, opt)))
30
+ .catch((e) => reject(e));
34
31
  break;
35
- case (typeof file === "string"):
32
+ case typeof file === "string":
36
33
  try {
37
- let myfile = new nodefony.fileClass(file);
34
+ const myfile = new nodefony.fileClass(file);
38
35
  opt.sourceFilename = myfile.path;
39
36
  myfile.readAsync()
40
- .then((str) => {
41
- return resolve(this.engine.parse(str, opt));
42
- }).catch(e => {
43
- return reject(e);
44
- });
37
+ .then((str) => resolve(this.engine.parse(str, opt)))
38
+ .catch((e) => reject(e));
45
39
  } catch (e) {
46
40
  return resolve(this.engine.parse(file, opt));
47
41
  }
@@ -55,11 +49,10 @@ class Babylon {
55
49
  } catch (e) {
56
50
  return reject(e);
57
51
  }
58
-
59
52
  });
60
53
  }
61
54
 
62
- logger(res, deep) {
55
+ logger (res, deep) {
63
56
  if (deep) {
64
57
  console.log(util.inspect(res, {
65
58
  depth: 10
@@ -69,7 +62,7 @@ class Babylon {
69
62
  console.log(res);
70
63
  }
71
64
 
72
- parseClassNode(node, obj) {
65
+ parseClassNode (node, obj) {
73
66
  if (nodefony.typeOf(node) === "array") {
74
67
  for (let i = 0; i < node.length; i++) {
75
68
  this.parseClassNode(node[i], obj);
@@ -104,30 +97,30 @@ class Babylon {
104
97
  case "ClassDeclaration":
105
98
  case "ClassExpression":
106
99
  let name = this.parseClassNode(node.id);
107
- let res = regClass.exec(name);
100
+ const res = regClass.exec(name);
108
101
  if (res) {
109
102
  name = res[1];
110
103
  }
111
- let superClass = this.parseClassNode(node.superClass);
112
- let myclass = {
113
- name: name,
104
+ const superClass = this.parseClassNode(node.superClass);
105
+ const myclass = {
106
+ name,
114
107
  extends: superClass,
115
108
  actions: [],
116
109
  comments: node.leadingComments || []
117
110
  };
118
111
  obj.class.push(myclass);
119
112
  return this.parseClassNode(node.body, myclass);
120
- case 'MemberExpression':
121
- let object = this.parseClassNode(node.object);
122
- let property = this.parseClassNode(node.property);
113
+ case "MemberExpression":
114
+ const object = this.parseClassNode(node.object);
115
+ const property = this.parseClassNode(node.property);
123
116
  return `${object}.${property}`;
124
117
  case "ClassBody":
125
118
  return this.parseClassNode(node.body, obj);
126
- case 'ClassMethod':
127
- let methodName = this.parseClassNode(node.key);
128
- let ret = regAction.exec(methodName);
119
+ case "ClassMethod":
120
+ const methodName = this.parseClassNode(node.key);
121
+ const ret = regAction.exec(methodName);
129
122
  if (ret) {
130
- let action = {
123
+ const action = {
131
124
  name: ret[1],
132
125
  comments: []
133
126
  };
@@ -135,13 +128,13 @@ class Babylon {
135
128
  this.parseClassNode(node.leadingComments, action);
136
129
  }
137
130
  obj.actions.push(action);
138
- //return this.parseClassNode(node.body, action);
131
+ // return this.parseClassNode(node.body, action);
139
132
  }
140
133
  break;
141
134
  case "CommentBlock":
142
135
  obj.comments.push(node.value);
143
136
  return node.value;
144
- case 'Identifier':
137
+ case "Identifier":
145
138
  return node.name;
146
139
  case "Program":
147
140
  obj.program = {
@@ -153,10 +146,10 @@ class Babylon {
153
146
  return obj;
154
147
  }
155
148
 
156
- parseController(file) {
149
+ parseController (file) {
157
150
  return this.parse(file)
158
151
  .then((ast) => {
159
- let obj = {
152
+ const obj = {
160
153
  raw: ast
161
154
  };
162
155
  this.parseClassNode(ast, obj);
@@ -166,4 +159,4 @@ class Babylon {
166
159
  }
167
160
 
168
161
  nodefony.babylon = new Babylon();
169
- module.exports = nodefony.babylon;
162
+ module.exports = nodefony.babylon;