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
package/kernel/fixture.es6
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
class Fixture extends nodefony.Service {
|
|
2
|
-
constructor(name, container) {
|
|
2
|
+
constructor (name, container) {
|
|
3
3
|
super(name, container);
|
|
4
4
|
this.orm = this.kernel.getORM();
|
|
5
5
|
this.ormName = this.orm.name;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
async run(...args) {
|
|
8
|
+
async run (...args) {
|
|
9
9
|
return new Promise((resolve) => {
|
|
10
|
-
//console.log(...args)
|
|
10
|
+
// console.log(...args)
|
|
11
11
|
if (this.orm.ready) {
|
|
12
12
|
return resolve(this.initialize.call(this, ...args));
|
|
13
|
-
} else {
|
|
14
|
-
this.orm.once("onOrmReady", () => {
|
|
15
|
-
return resolve(this.initialize.call(this, ...args));
|
|
16
|
-
});
|
|
17
13
|
}
|
|
14
|
+
this.orm.once("onOrmReady", () => resolve(this.initialize.call(this, ...args)));
|
|
18
15
|
});
|
|
19
16
|
}
|
|
20
17
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// plugin Reader
|
|
2
|
-
const pluginReader = function () {
|
|
2
|
+
const pluginReader = (function () {
|
|
3
3
|
const importXmlConfig = function (file, prefix, callback, parser) {
|
|
4
4
|
if (parser) {
|
|
5
5
|
file = this.render(file, parser.data, parser.options);
|
|
@@ -8,20 +8,20 @@ const pluginReader = function () {
|
|
|
8
8
|
let parameters;
|
|
9
9
|
|
|
10
10
|
this.xmlParser.parseString(file, (err, node) => {
|
|
11
|
-
//console.log(require('util').inspect(node, {depth: null}));
|
|
12
|
-
//console.log('\n\n');
|
|
11
|
+
// console.log(require('util').inspect(node, {depth: null}));
|
|
12
|
+
// console.log('\n\n');
|
|
13
13
|
if (err) {
|
|
14
|
-
this.log(
|
|
14
|
+
this.log(`INJECTION xmlParser.parseString : ${err}`, "WARNING");
|
|
15
15
|
}
|
|
16
16
|
if (!node) {
|
|
17
17
|
return node;
|
|
18
18
|
}
|
|
19
|
-
for (
|
|
19
|
+
for (const key in node) {
|
|
20
20
|
switch (key) {
|
|
21
|
-
case
|
|
21
|
+
case "parameters":
|
|
22
22
|
parameters = this.xmlToJson.call(this, node[key][0].parameter);
|
|
23
23
|
break;
|
|
24
|
-
case
|
|
24
|
+
case "services":
|
|
25
25
|
services = this.xmlToJson.call(this, node[key][0].service);
|
|
26
26
|
break;
|
|
27
27
|
}
|
|
@@ -32,28 +32,28 @@ const pluginReader = function () {
|
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
34
|
const nomarlizeXmlJson = function (services, parameters, callback) {
|
|
35
|
-
for (
|
|
36
|
-
for (
|
|
35
|
+
for (const key in services) {
|
|
36
|
+
for (const param in services[key]) {
|
|
37
37
|
let values = null;
|
|
38
38
|
switch (param) {
|
|
39
|
-
case
|
|
39
|
+
case "argument":
|
|
40
40
|
values = [];
|
|
41
41
|
for (let elm = 0; elm < services[key][param].length; elm++) {
|
|
42
42
|
if (services[key][param][elm].type && services[key][param][elm].id) {
|
|
43
|
-
if (services[key][param][elm].type ==
|
|
44
|
-
values.push(
|
|
43
|
+
if (services[key][param][elm].type == "service") {
|
|
44
|
+
values.push(`@${services[key][param][elm].id}`);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
services[key]
|
|
48
|
+
services[key].arguments = values;
|
|
49
49
|
delete services[key][param];
|
|
50
50
|
break;
|
|
51
|
-
case
|
|
51
|
+
case "property":
|
|
52
52
|
values = {};
|
|
53
53
|
for (let elm = 0; elm < services[key][param].length; elm++) {
|
|
54
54
|
if (services[key][param][elm].type && services[key][param][elm].id && services[key][param][elm].name) {
|
|
55
|
-
if (services[key][param][elm].type ==
|
|
56
|
-
values[services[key][param][elm].name] =
|
|
55
|
+
if (services[key][param][elm].type == "service") {
|
|
56
|
+
values[services[key][param][elm].name] = `@${services[key][param][elm].id}`;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -61,21 +61,21 @@ const pluginReader = function () {
|
|
|
61
61
|
delete services[key][param];
|
|
62
62
|
break;
|
|
63
63
|
|
|
64
|
-
case
|
|
64
|
+
case "call":
|
|
65
65
|
values = [];
|
|
66
66
|
for (let elm = 0; elm < services[key][param].length; elm++) {
|
|
67
|
-
|
|
68
|
-
for (
|
|
67
|
+
const tab = [];
|
|
68
|
+
for (const sparam in services[key][param][elm]) {
|
|
69
69
|
switch (sparam) {
|
|
70
|
-
case
|
|
70
|
+
case "method":
|
|
71
71
|
tab[0] = services[key][param][elm][sparam];
|
|
72
72
|
break;
|
|
73
|
-
case
|
|
74
|
-
|
|
73
|
+
case "argument":
|
|
74
|
+
const args = [];
|
|
75
75
|
for (let selem = 0; selem < services[key][param][elm][sparam].length; selem++) {
|
|
76
76
|
if (services[key][param][elm][sparam][selem].type && services[key][param][elm][sparam][selem].id) {
|
|
77
|
-
if (services[key][param][elm][sparam][selem].type ==
|
|
78
|
-
args.push(
|
|
77
|
+
if (services[key][param][elm][sparam][selem].type == "service") {
|
|
78
|
+
args.push(`@${services[key][param][elm][sparam][selem].id}`);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -88,7 +88,7 @@ const pluginReader = function () {
|
|
|
88
88
|
services[key].calls = values;
|
|
89
89
|
delete services[key][param];
|
|
90
90
|
break;
|
|
91
|
-
case
|
|
91
|
+
case "scope":
|
|
92
92
|
break;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -98,19 +98,19 @@ const pluginReader = function () {
|
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
100
|
const renderParameters = function (callback, services, parameters) {
|
|
101
|
-
if (parameters && Object.keys(parameters).length > 0 && typeof
|
|
101
|
+
if (parameters && Object.keys(parameters).length > 0 && typeof services === "object" && Object.keys(services).length > 0) {
|
|
102
102
|
services = JSON.parse(this.render(JSON.stringify(services), parameters));
|
|
103
103
|
}
|
|
104
104
|
callback(services);
|
|
105
105
|
};
|
|
106
106
|
const getServicesXML = function (file, bundle, parser, callback) {
|
|
107
|
-
importXmlConfig.call(this, file,
|
|
107
|
+
importXmlConfig.call(this, file, "", callback, parser);
|
|
108
108
|
};
|
|
109
109
|
const getServicesJSON = function (file, bundle, parser, callback) {
|
|
110
110
|
if (parser) {
|
|
111
111
|
file = this.render(file, parser.data, parser.options);
|
|
112
112
|
}
|
|
113
|
-
|
|
113
|
+
const json = JSON.parse(file);
|
|
114
114
|
if (callback) {
|
|
115
115
|
renderParameters.call(this, callback, json.services, json.parameters);
|
|
116
116
|
}
|
|
@@ -119,7 +119,7 @@ const pluginReader = function () {
|
|
|
119
119
|
if (parser) {
|
|
120
120
|
file = this.render(file, parser.data, parser.options);
|
|
121
121
|
}
|
|
122
|
-
|
|
122
|
+
const json = yaml.load(file);
|
|
123
123
|
if (callback) {
|
|
124
124
|
renderParameters.call(this, callback, json.services, json.parameters);
|
|
125
125
|
}
|
|
@@ -135,17 +135,18 @@ const pluginReader = function () {
|
|
|
135
135
|
xml: getServicesXML,
|
|
136
136
|
json: getServicesJSON,
|
|
137
137
|
yml: getServicesYML,
|
|
138
|
-
javascript
|
|
138
|
+
javascript
|
|
139
139
|
};
|
|
140
|
-
}();
|
|
140
|
+
}());
|
|
141
141
|
|
|
142
142
|
const regService = new RegExp("^(.+)Service$");
|
|
143
143
|
const reg = /constructor\s*\((.*)\)/;
|
|
144
|
+
|
|
144
145
|
/**
|
|
145
146
|
* CLASS INJECTOR
|
|
146
147
|
*/
|
|
147
148
|
class Injector extends nodefony.Service {
|
|
148
|
-
constructor(name, service, container) {
|
|
149
|
+
constructor (name, service, container) {
|
|
149
150
|
super(name, container);
|
|
150
151
|
this.services = nodefony.services;
|
|
151
152
|
try {
|
|
@@ -154,12 +155,12 @@ class Injector extends nodefony.Service {
|
|
|
154
155
|
this.classArgs = Injector.getArguments.call(this.Class);
|
|
155
156
|
this.injections = this.findInjections(service.arguments);
|
|
156
157
|
this.calls = this.getServiceCall(service);
|
|
157
|
-
this.setParameters(
|
|
158
|
+
this.setParameters(`services.${this.name}`, {
|
|
158
159
|
class: this.Class,
|
|
159
160
|
name: this.name,
|
|
160
161
|
scope: this.container.id,
|
|
161
|
-
//className: this.className,
|
|
162
|
-
//orderArguments: false,
|
|
162
|
+
// className: this.className,
|
|
163
|
+
// orderArguments: false,
|
|
163
164
|
injections: service.arguments,
|
|
164
165
|
calls: service.calls
|
|
165
166
|
});
|
|
@@ -169,7 +170,7 @@ class Injector extends nodefony.Service {
|
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
|
|
172
|
-
getServiceClass(service) {
|
|
173
|
+
getServiceClass (service) {
|
|
173
174
|
let Class = null;
|
|
174
175
|
switch (nodefony.typeOf(service.class)) {
|
|
175
176
|
case "array":
|
|
@@ -182,15 +183,15 @@ class Injector extends nodefony.Service {
|
|
|
182
183
|
Class = this.services[service.class];
|
|
183
184
|
break;
|
|
184
185
|
default:
|
|
185
|
-
throw new Error(
|
|
186
|
+
throw new Error(`Service Name ${this.className} bad Class`);
|
|
186
187
|
}
|
|
187
188
|
if (!Class) {
|
|
188
|
-
throw new Error(
|
|
189
|
+
throw new Error(`Service Name ${this.className} class not found`);
|
|
189
190
|
}
|
|
190
191
|
return this.Class = Class;
|
|
191
192
|
}
|
|
192
193
|
|
|
193
|
-
getServiceName(Class) {
|
|
194
|
+
getServiceName (Class) {
|
|
194
195
|
let name = null;
|
|
195
196
|
if (Class) {
|
|
196
197
|
name = Class.name;
|
|
@@ -198,7 +199,7 @@ class Injector extends nodefony.Service {
|
|
|
198
199
|
name = this.Class.name;
|
|
199
200
|
}
|
|
200
201
|
if (name) {
|
|
201
|
-
|
|
202
|
+
const res = regService.exec(name);
|
|
202
203
|
if (res) {
|
|
203
204
|
return this.className = res[1];
|
|
204
205
|
}
|
|
@@ -207,7 +208,7 @@ class Injector extends nodefony.Service {
|
|
|
207
208
|
return null;
|
|
208
209
|
}
|
|
209
210
|
|
|
210
|
-
getServiceCall(service) {
|
|
211
|
+
getServiceCall (service) {
|
|
211
212
|
let ele = null;
|
|
212
213
|
if (service.calls) {
|
|
213
214
|
ele = {};
|
|
@@ -224,7 +225,7 @@ class Injector extends nodefony.Service {
|
|
|
224
225
|
args = service.calls[i].arguments;
|
|
225
226
|
break;
|
|
226
227
|
default:
|
|
227
|
-
this.log(service.calls,
|
|
228
|
+
this.log(service.calls, "ERROR");
|
|
228
229
|
throw new Error("Service bad Calls config ");
|
|
229
230
|
}
|
|
230
231
|
ele[method] = this.findInjections(args);
|
|
@@ -233,16 +234,16 @@ class Injector extends nodefony.Service {
|
|
|
233
234
|
return ele;
|
|
234
235
|
}
|
|
235
236
|
|
|
236
|
-
startService(restart) {
|
|
237
|
+
async startService (restart) {
|
|
237
238
|
try {
|
|
238
|
-
|
|
239
|
+
const instance = await this.reflect();
|
|
239
240
|
this.set(this.name, instance);
|
|
240
241
|
if (this.calls) {
|
|
241
|
-
for (
|
|
242
|
+
for (const call in this.calls) {
|
|
242
243
|
if (instance[call]) {
|
|
243
|
-
this.call(instance, instance[call], this.calls[call]);
|
|
244
|
+
await this.call(instance, instance[call], this.calls[call]);
|
|
244
245
|
} else {
|
|
245
|
-
this.log(
|
|
246
|
+
this.log(`Method ${call} in service ${this.name} not found`, "ERROR");
|
|
246
247
|
continue;
|
|
247
248
|
}
|
|
248
249
|
}
|
|
@@ -251,7 +252,7 @@ class Injector extends nodefony.Service {
|
|
|
251
252
|
if (restart) {
|
|
252
253
|
log = "RESTARTED";
|
|
253
254
|
}
|
|
254
|
-
instance.log(log,
|
|
255
|
+
instance.log(log, "DEBUG");
|
|
255
256
|
return instance;
|
|
256
257
|
} catch (e) {
|
|
257
258
|
this.log(e, "ERROR");
|
|
@@ -259,11 +260,11 @@ class Injector extends nodefony.Service {
|
|
|
259
260
|
}
|
|
260
261
|
}
|
|
261
262
|
|
|
262
|
-
async restartService() {
|
|
263
|
-
this.log(
|
|
263
|
+
async restartService () {
|
|
264
|
+
this.log(`RESTART : ${this.name}`, "INFO");
|
|
264
265
|
try {
|
|
265
266
|
const service = this.get(this.name);
|
|
266
|
-
if(
|
|
267
|
+
if (service && service.close) {
|
|
267
268
|
await service.close();
|
|
268
269
|
}
|
|
269
270
|
this.remove(this.name);
|
|
@@ -273,35 +274,33 @@ class Injector extends nodefony.Service {
|
|
|
273
274
|
}
|
|
274
275
|
}
|
|
275
276
|
|
|
276
|
-
static getArguments() {
|
|
277
|
-
|
|
277
|
+
static getArguments () {
|
|
278
|
+
const str = this.toString();
|
|
278
279
|
let m = str.match(reg);
|
|
279
280
|
if (m) {
|
|
280
281
|
// case class
|
|
281
|
-
m = m[1].replace(/\s/g,
|
|
282
|
-
return m.split(
|
|
283
|
-
} else {
|
|
284
|
-
// case function
|
|
285
|
-
m = str.match(new RegExp(this.name + "\s*\((.*)\)"));
|
|
286
|
-
if (m) {
|
|
287
|
-
m = m[1].replace(/\s/g, '');
|
|
288
|
-
return m.split(',');
|
|
289
|
-
} else {
|
|
290
|
-
throw new Error("Service :" + this.name + " constructor not find");
|
|
291
|
-
}
|
|
282
|
+
m = m[1].replace(/\s/g, "");
|
|
283
|
+
return m.split(",");
|
|
292
284
|
}
|
|
285
|
+
// case function
|
|
286
|
+
m = str.match(new RegExp(`${this.name}\s*\((.*)\)`));
|
|
287
|
+
if (m) {
|
|
288
|
+
m = m[1].replace(/\s/g, "");
|
|
289
|
+
return m.split(",");
|
|
290
|
+
}
|
|
291
|
+
throw new Error(`Service :${this.name} constructor not find`);
|
|
293
292
|
}
|
|
294
293
|
|
|
295
|
-
reflect() {
|
|
294
|
+
async reflect () {
|
|
296
295
|
try {
|
|
297
|
-
return Reflect.construct(this.Class, this.injections);
|
|
296
|
+
return await Reflect.construct(this.Class, this.injections);
|
|
298
297
|
} catch (e) {
|
|
299
|
-
this.log(
|
|
298
|
+
this.log(`ERRROR SERVICE CLASS ${this.name} ${e.message}`, "ERROR");
|
|
300
299
|
throw e;
|
|
301
300
|
}
|
|
302
301
|
}
|
|
303
302
|
|
|
304
|
-
/*static reflectEs5(Class, args) {
|
|
303
|
+
/* static reflectEs5(Class, args) {
|
|
305
304
|
try {
|
|
306
305
|
Array.prototype.unshift.call(args, Class);
|
|
307
306
|
return new(Function.prototype.bind.apply(Class, args));
|
|
@@ -310,7 +309,7 @@ class Injector extends nodefony.Service {
|
|
|
310
309
|
throw e;
|
|
311
310
|
}
|
|
312
311
|
}*/
|
|
313
|
-
call(context, func, args) {
|
|
312
|
+
call (context, func, args) {
|
|
314
313
|
try {
|
|
315
314
|
func.apply(context, args);
|
|
316
315
|
} catch (e) {
|
|
@@ -318,21 +317,21 @@ class Injector extends nodefony.Service {
|
|
|
318
317
|
}
|
|
319
318
|
}
|
|
320
319
|
|
|
321
|
-
findInjections(args) {
|
|
322
|
-
|
|
320
|
+
findInjections (args) {
|
|
321
|
+
const tab = [];
|
|
323
322
|
if (args instanceof Array) {
|
|
324
323
|
for (let elm = 0; elm < args.length; elm++) {
|
|
325
324
|
switch (nodefony.typeOf(args[elm])) {
|
|
326
325
|
case "string":
|
|
327
326
|
let name = null;
|
|
328
327
|
switch (args[elm][0]) {
|
|
329
|
-
case
|
|
328
|
+
case "@":
|
|
330
329
|
name = args[elm].substring(1);
|
|
331
|
-
|
|
330
|
+
const service = this.get(name);
|
|
332
331
|
if (service) {
|
|
333
332
|
tab.push(service);
|
|
334
333
|
} else {
|
|
335
|
-
this.log(
|
|
334
|
+
this.log(`Injection Service : ${name} not found !!`, "ERROR");
|
|
336
335
|
}
|
|
337
336
|
break;
|
|
338
337
|
default:
|
|
@@ -352,48 +351,43 @@ class Injector extends nodefony.Service {
|
|
|
352
351
|
* CLASS INJECTION
|
|
353
352
|
*/
|
|
354
353
|
class Injection extends nodefony.Service {
|
|
355
|
-
|
|
356
|
-
constructor(container) {
|
|
354
|
+
constructor (container) {
|
|
357
355
|
super("injection", container, container.get("notificationsCenter"));
|
|
358
356
|
this.injectors = {};
|
|
359
357
|
|
|
360
|
-
this.reader = function (context) {
|
|
358
|
+
this.reader = (function (context) {
|
|
361
359
|
const func = context.get("reader").loadPlugin("injection", pluginReader);
|
|
362
360
|
return function (result, bundle, parser) {
|
|
363
361
|
return func(result, bundle, parser, context.nodeReader.bind(context));
|
|
364
362
|
};
|
|
365
|
-
}(this);
|
|
363
|
+
}(this));
|
|
366
364
|
}
|
|
367
365
|
|
|
368
|
-
nodeReader(jsonServices) {
|
|
369
|
-
for (
|
|
366
|
+
async nodeReader (jsonServices) {
|
|
367
|
+
for (const lib in jsonServices) {
|
|
370
368
|
if (jsonServices[lib].class) {
|
|
371
369
|
if (jsonServices[lib].environment) {
|
|
372
370
|
let inject = false;
|
|
373
|
-
if (
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
inject = true;
|
|
378
|
-
}
|
|
379
|
-
res = jsonServices[lib].environment.indexOf(this.kernel.type);
|
|
380
|
-
if (res >= 0) {
|
|
381
|
-
inject = true;
|
|
382
|
-
}
|
|
383
|
-
} else {
|
|
384
|
-
if (jsonServices[lib].environment === process.env.NODE_ENV) {
|
|
385
|
-
inject = true;
|
|
386
|
-
}
|
|
371
|
+
if (nodefony.typeOf(jsonServices[lib].environment) === "array") {
|
|
372
|
+
let res = jsonServices[lib].environment.indexOf(process.env.NODE_ENV);
|
|
373
|
+
if (res >= 0) {
|
|
374
|
+
inject = true;
|
|
387
375
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
376
|
+
res = jsonServices[lib].environment.indexOf(this.kernel.type);
|
|
377
|
+
if (res >= 0) {
|
|
378
|
+
inject = true;
|
|
391
379
|
}
|
|
380
|
+
} else if (jsonServices[lib].environment === process.env.NODE_ENV) {
|
|
381
|
+
inject = true;
|
|
382
|
+
}
|
|
383
|
+
if (!inject) {
|
|
384
|
+
this.log(`environment : ${process.env.NODE_ENV} BYPASS SERVICE START : ${lib}`, "DEBUG");
|
|
385
|
+
continue;
|
|
392
386
|
}
|
|
393
387
|
}
|
|
394
388
|
try {
|
|
395
|
-
|
|
396
|
-
injector.startService();
|
|
389
|
+
const injector = this.setInjector(lib, jsonServices[lib]);
|
|
390
|
+
await injector.startService();
|
|
397
391
|
} catch (e) {
|
|
398
392
|
throw e;
|
|
399
393
|
}
|
|
@@ -403,12 +397,12 @@ class Injection extends nodefony.Service {
|
|
|
403
397
|
}
|
|
404
398
|
}
|
|
405
399
|
|
|
406
|
-
setInjector(name, service) {
|
|
400
|
+
setInjector (name, service) {
|
|
407
401
|
try {
|
|
408
|
-
|
|
402
|
+
const injector = new Injector(name, service, this.container);
|
|
409
403
|
if (this.kernel.environment === "dev" && this.kernel.type !== "CONSOLE") {
|
|
410
404
|
if (this.injectors[name]) {
|
|
411
|
-
this.log(
|
|
405
|
+
this.log(`Service name : ${name} Already exist `, "WARNING");
|
|
412
406
|
}
|
|
413
407
|
this.injectors[name] = injector;
|
|
414
408
|
}
|
|
@@ -418,7 +412,7 @@ class Injection extends nodefony.Service {
|
|
|
418
412
|
}
|
|
419
413
|
}
|
|
420
414
|
|
|
421
|
-
getInjector(name) {
|
|
415
|
+
getInjector (name) {
|
|
422
416
|
if (this.injectors[name]) {
|
|
423
417
|
return this.injectors[name];
|
|
424
418
|
}
|