org-core-js 0.0.1
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/README.md +446 -0
- package/babel.config.json +13 -0
- package/cjs/core/driverCore.js +37 -0
- package/cjs/core/drivers/bull.js +56 -0
- package/cjs/core/drivers/fogu.js +14 -0
- package/cjs/core/drivers/mq.js +50 -0
- package/cjs/core/drivers/nats.js +161 -0
- package/cjs/core/drivers/osone.js +14 -0
- package/cjs/core/drivers/rabbitmq.js +68 -0
- package/cjs/core/drivers/redis.js +68 -0
- package/cjs/core/drivers/socket.js +36 -0
- package/cjs/core/entityCore.js +22 -0
- package/cjs/core/eventCore.js +26 -0
- package/cjs/core/index.js +477 -0
- package/cjs/core/libCore.js +22 -0
- package/cjs/core/repositoryCore.js +30 -0
- package/cjs/core/serverCore.js +142 -0
- package/cjs/core/serviceCore.js +26 -0
- package/cjs/core/utilCore.js +22 -0
- package/cjs/core/workerCore.js +27 -0
- package/cjs/fileCore.js +27 -0
- package/cjs/forawait.js +55 -0
- package/cjs/index.js +117 -0
- package/cjs/package.json +3 -0
- package/esm/core/driverCore.js +33 -0
- package/esm/core/drivers/bull.js +49 -0
- package/esm/core/drivers/fogu.js +12 -0
- package/esm/core/drivers/nats.js +160 -0
- package/esm/core/drivers/rabbitmq.js +64 -0
- package/esm/core/drivers/redis.js +71 -0
- package/esm/core/drivers/socket.js +28 -0
- package/esm/core/entityCore.js +12 -0
- package/esm/core/eventCore.js +17 -0
- package/esm/core/index.js +440 -0
- package/esm/core/libCore.js +13 -0
- package/esm/core/repositoryCore.js +25 -0
- package/esm/core/serverCore.js +155 -0
- package/esm/core/serviceCore.js +17 -0
- package/esm/core/utilCore.js +12 -0
- package/esm/core/workerCore.js +20 -0
- package/esm/fileCore.js +19 -0
- package/esm/forawait.js +48 -0
- package/esm/index.js +128 -0
- package/esm/package.json +3 -0
- package/lib/index.html +1021 -0
- package/package.json +73 -0
- package/src/app/events/test/app.js +13 -0
- package/src/app/events/test/ws.js +14 -0
- package/src/app/services/test/app.js +14 -0
- package/src/app/services/test/app1.js +11 -0
- package/src/core/entities/user.js +14 -0
- package/src/core/libs/hash.js +10 -0
- package/src/core/utils/auth.js +19 -0
- package/src/index.js +11 -0
- package/src/infra/db/index.js +7 -0
- package/src/infra/repositories/test/app.js +6 -0
- package/src/infra/web/http.js +15 -0
- package/src/infra/web/routers/auth.js +30 -0
- package/src/infra/web/routers/test.js +26 -0
- package/src/infra/web/ws/test.js +35 -0
- package/src/infra/workers/test/test.md +14 -0
- package/src/start.js +39 -0
- package/test/core.test.js +46 -0
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _serviceCore = _interopRequireDefault(require("./serviceCore.js"));
|
|
8
|
+
var _workerCore = _interopRequireDefault(require("./workerCore.js"));
|
|
9
|
+
var _repositoryCore = _interopRequireDefault(require("./repositoryCore.js"));
|
|
10
|
+
var _serverCore = _interopRequireDefault(require("./serverCore.js"));
|
|
11
|
+
var _driverCore = _interopRequireDefault(require("./driverCore.js"));
|
|
12
|
+
var _entityCore = _interopRequireDefault(require("./entityCore.js"));
|
|
13
|
+
var _utilCore = _interopRequireDefault(require("./utilCore.js"));
|
|
14
|
+
var _libCore = _interopRequireDefault(require("./libCore.js"));
|
|
15
|
+
var _eventCore = _interopRequireDefault(require("./eventCore.js"));
|
|
16
|
+
var _forawait = _interopRequireDefault(require("../forawait.js"));
|
|
17
|
+
var _fileCore = _interopRequireDefault(require("../fileCore.js"));
|
|
18
|
+
var _nodeEvents = require("node:events");
|
|
19
|
+
var _nodeCrypto = _interopRequireDefault(require("node:crypto"));
|
|
20
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
|
+
const eventCore = new _nodeEvents.EventEmitter();
|
|
22
|
+
const libCore = {
|
|
23
|
+
forawait: _forawait.default,
|
|
24
|
+
generate: {
|
|
25
|
+
string(length = 25) {
|
|
26
|
+
let result = '';
|
|
27
|
+
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
28
|
+
const charactersLength = characters.length;
|
|
29
|
+
let counter = 0;
|
|
30
|
+
while (counter < length) {
|
|
31
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
32
|
+
counter += 1;
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
},
|
|
36
|
+
number(length = 25) {
|
|
37
|
+
let result = '';
|
|
38
|
+
const characters = '0123456789';
|
|
39
|
+
const charactersLength = characters.length;
|
|
40
|
+
let counter = 0;
|
|
41
|
+
while (counter < length) {
|
|
42
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
43
|
+
counter += 1;
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
},
|
|
47
|
+
keys({
|
|
48
|
+
type,
|
|
49
|
+
modulusLength = 4096
|
|
50
|
+
}) {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
_nodeCrypto.default.generateKeyPair('rsa', {
|
|
53
|
+
modulusLength,
|
|
54
|
+
publicKeyEncoding: {
|
|
55
|
+
type: 'pkcs1',
|
|
56
|
+
format: 'pem'
|
|
57
|
+
},
|
|
58
|
+
privateKeyEncoding: {
|
|
59
|
+
type: 'pkcs1',
|
|
60
|
+
format: 'pem'
|
|
61
|
+
}
|
|
62
|
+
}, (err, publicKey, privateKey) => {
|
|
63
|
+
if (err) return reject(err);
|
|
64
|
+
resolve({
|
|
65
|
+
public: publicKey,
|
|
66
|
+
private: privateKey
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const ioCore = {
|
|
74
|
+
client: [],
|
|
75
|
+
server: []
|
|
76
|
+
};
|
|
77
|
+
const utilCore = {};
|
|
78
|
+
const services = {};
|
|
79
|
+
const repositoryCore = {};
|
|
80
|
+
const entityCore = {};
|
|
81
|
+
const methodCore = {
|
|
82
|
+
node: {
|
|
83
|
+
pub({
|
|
84
|
+
topic
|
|
85
|
+
}, ...input) {
|
|
86
|
+
eventCore.emit(topic, ...input);
|
|
87
|
+
},
|
|
88
|
+
sub({
|
|
89
|
+
topic
|
|
90
|
+
}, fn = console.log) {
|
|
91
|
+
eventCore.on(topic, fn);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
var _default = ({}) => {
|
|
96
|
+
const app = {
|
|
97
|
+
service: (params = '') => {
|
|
98
|
+
const [service_, method] = params.split('.');
|
|
99
|
+
return {
|
|
100
|
+
async execute(input, event) {
|
|
101
|
+
const output = await services[service_][method](input, event);
|
|
102
|
+
if (!event) return output;
|
|
103
|
+
methodCore[event].pub({
|
|
104
|
+
topic: 'service::' + service_ + '.' + method
|
|
105
|
+
}, output);
|
|
106
|
+
return output;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
driver: (params = '') => {
|
|
111
|
+
return methodCore[params];
|
|
112
|
+
},
|
|
113
|
+
lib: (params = '') => {
|
|
114
|
+
return libCore[params];
|
|
115
|
+
},
|
|
116
|
+
nats: (name = "nats") => {
|
|
117
|
+
return libCore[name];
|
|
118
|
+
},
|
|
119
|
+
util: (params = '') => {
|
|
120
|
+
return utilCore[params];
|
|
121
|
+
},
|
|
122
|
+
entity: (params = '') => {
|
|
123
|
+
const [entity_, method] = params.split('.');
|
|
124
|
+
if (method) {
|
|
125
|
+
return {
|
|
126
|
+
async execute(input, event) {
|
|
127
|
+
const output = await entityCore[entity_][method](input);
|
|
128
|
+
if (!event) return output;
|
|
129
|
+
methodCore[event].pub({
|
|
130
|
+
topic: 'entity::' + entity_ + '.' + method
|
|
131
|
+
}, output);
|
|
132
|
+
return output;
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
async entity(input, event) {
|
|
138
|
+
const output = await entityCore[entity_]["entity"](input);
|
|
139
|
+
if (!event) return output;
|
|
140
|
+
methodCore[event].pub({
|
|
141
|
+
topic: 'entity::' + entity_ + '.' + method
|
|
142
|
+
}, output);
|
|
143
|
+
return output;
|
|
144
|
+
},
|
|
145
|
+
async dto(input) {
|
|
146
|
+
const output = await entityCore[entity_]["dto"](input);
|
|
147
|
+
return output;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
},
|
|
151
|
+
repository: (params = '') => {
|
|
152
|
+
const [repository_, method] = params.split('.');
|
|
153
|
+
return {
|
|
154
|
+
async execute(input, event) {
|
|
155
|
+
const output = await repositoryCore[repository_][method](input);
|
|
156
|
+
if (!event) return output;
|
|
157
|
+
methodCore[event].pub({
|
|
158
|
+
topic: 'repository::' + repository_ + '.' + method
|
|
159
|
+
}, output);
|
|
160
|
+
return output;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
},
|
|
164
|
+
event: name => methodCore[name],
|
|
165
|
+
job: name => {
|
|
166
|
+
return {
|
|
167
|
+
async cmd(code, data, config) {
|
|
168
|
+
return await libCore.bull.job(name).cmd(code, data, config);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
},
|
|
172
|
+
seneca: name => {
|
|
173
|
+
return {
|
|
174
|
+
async cmd(name_, data) {
|
|
175
|
+
return await libCore['seneca']['clients'][name].cmd(name_, data);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
},
|
|
179
|
+
grpc: name => {
|
|
180
|
+
return {
|
|
181
|
+
duplex(name_, fn) {
|
|
182
|
+
libCore['grpc']['clients'][name](name_).duplex(fn);
|
|
183
|
+
},
|
|
184
|
+
data(name_, input, fn, end) {
|
|
185
|
+
libCore['grpc']['clients'][name](name_).data(input, fn, end);
|
|
186
|
+
},
|
|
187
|
+
stream(name_, fn) {
|
|
188
|
+
return libCore['grpc']['clients'][name](name_).stream(fn);
|
|
189
|
+
},
|
|
190
|
+
async cmd(name_, data) {
|
|
191
|
+
return await libCore['grpc']['clients'][name](name_).cmd(data);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const core = {
|
|
197
|
+
fileCore: _fileCore.default,
|
|
198
|
+
async repositories(paths, path, obj) {
|
|
199
|
+
await _forawait.default.generate(paths, async path_ => {
|
|
200
|
+
const path_files = _fileCore.default.paths(path + '/' + path_);
|
|
201
|
+
repositoryCore[path_] = {};
|
|
202
|
+
await _forawait.default.generate(path_files, async (path_file = '') => {
|
|
203
|
+
if (!(path_file.includes('.js') || path_file.includes('.ts'))) return;
|
|
204
|
+
await core.import.repository(path + '/' + path_ + '/' + path_file, {
|
|
205
|
+
path: path_,
|
|
206
|
+
file: path_file
|
|
207
|
+
}, obj);
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
},
|
|
211
|
+
listServices(name) {
|
|
212
|
+
return Object.keys(services[name]);
|
|
213
|
+
},
|
|
214
|
+
forawait: _forawait.default,
|
|
215
|
+
addLib(lib_, name) {
|
|
216
|
+
libCore[name] = lib_;
|
|
217
|
+
},
|
|
218
|
+
async addMethodCore(driver, file) {
|
|
219
|
+
methodCore[driver.name] = await (await core.fileCore.importFile(file)).default(driver.config);
|
|
220
|
+
libCore[driver.name] = methodCore[driver.name];
|
|
221
|
+
},
|
|
222
|
+
import: {
|
|
223
|
+
async service(path_, params, obj = {}, feature = false) {
|
|
224
|
+
const nameService = feature ? params.file.split('.')[0] : params.path;
|
|
225
|
+
if (!services[nameService]) {
|
|
226
|
+
services[nameService] = {};
|
|
227
|
+
}
|
|
228
|
+
const {
|
|
229
|
+
execute,
|
|
230
|
+
driver
|
|
231
|
+
} = await _fileCore.default.import(path_, {
|
|
232
|
+
seneca: app.seneca,
|
|
233
|
+
// command: app.command,
|
|
234
|
+
job: app.job,
|
|
235
|
+
service: app.service,
|
|
236
|
+
nats: app.nats,
|
|
237
|
+
event: app.event,
|
|
238
|
+
repository: app.repository,
|
|
239
|
+
entity: app.entity,
|
|
240
|
+
util: app.util,
|
|
241
|
+
lib: app.lib,
|
|
242
|
+
grpc: app.grpc,
|
|
243
|
+
...obj
|
|
244
|
+
});
|
|
245
|
+
const nameMethod = feature ? params.path : params.file.split('.')[0];
|
|
246
|
+
services[nameService][nameMethod] = execute;
|
|
247
|
+
await _forawait.default.generate(Object.entries(driver || {}), async ([name, dr]) => {
|
|
248
|
+
if (methodCore[name]) {
|
|
249
|
+
methodCore[name].sub({
|
|
250
|
+
topic: dr == true ? nameService + "." + nameMethod : dr
|
|
251
|
+
}, async (...input) => {
|
|
252
|
+
try {
|
|
253
|
+
await services[nameService][nameMethod](input[0]);
|
|
254
|
+
} catch (error) {
|
|
255
|
+
console.log(error);
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
} else {
|
|
259
|
+
if (name == "bull" || name == "job") {
|
|
260
|
+
libCore.bull.addJob({
|
|
261
|
+
name: dr == true ? nameService + "." + nameMethod : dr
|
|
262
|
+
}, Job.config);
|
|
263
|
+
libCore.bull.worker({
|
|
264
|
+
name: dr == true ? nameService + "." + nameMethod : dr,
|
|
265
|
+
fn: execute,
|
|
266
|
+
async completed(job_) {
|
|
267
|
+
await methodCore[job_.method || 'redis'].pub({
|
|
268
|
+
topic: 'worker::completed:' + name
|
|
269
|
+
}, {
|
|
270
|
+
name: job_.name,
|
|
271
|
+
id: job_.id,
|
|
272
|
+
input: job_.data,
|
|
273
|
+
output: job_.returnvalue
|
|
274
|
+
});
|
|
275
|
+
},
|
|
276
|
+
async failed(job_, err) {
|
|
277
|
+
await methodCore[job_.method || 'redis'].pub({
|
|
278
|
+
topic: 'worker::failed:' + name
|
|
279
|
+
}, {
|
|
280
|
+
name: job_.name,
|
|
281
|
+
id: job_.id,
|
|
282
|
+
input: job_.data,
|
|
283
|
+
err: err.message
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
},
|
|
291
|
+
async entity(path_ = '', params, obj, feature = false) {
|
|
292
|
+
entityCore[params.file.split('.')[0]] = await _fileCore.default.import(path_, {
|
|
293
|
+
...obj,
|
|
294
|
+
seneca: app.seneca,
|
|
295
|
+
// command: app.command,
|
|
296
|
+
job: app.job,
|
|
297
|
+
service: app.service,
|
|
298
|
+
nats: app.nats,
|
|
299
|
+
event: app.event,
|
|
300
|
+
repository: app.repository,
|
|
301
|
+
util: app.util,
|
|
302
|
+
lib: app.lib,
|
|
303
|
+
grpc: app.grpc
|
|
304
|
+
});
|
|
305
|
+
},
|
|
306
|
+
async event(path_, params, obj) {
|
|
307
|
+
const {
|
|
308
|
+
event,
|
|
309
|
+
execute
|
|
310
|
+
} = await _fileCore.default.import(path_, {
|
|
311
|
+
seneca: app.seneca,
|
|
312
|
+
// command: app.command,
|
|
313
|
+
job: app.job,
|
|
314
|
+
service: app.service,
|
|
315
|
+
nats: app.nats,
|
|
316
|
+
event: app.event,
|
|
317
|
+
repository: app.repository,
|
|
318
|
+
util: app.util,
|
|
319
|
+
lib: app.lib,
|
|
320
|
+
grpc: app.grpc,
|
|
321
|
+
driver: app.driver,
|
|
322
|
+
...obj
|
|
323
|
+
});
|
|
324
|
+
const nameService = params.path + "." + params.file.split('.')[0];
|
|
325
|
+
if (!event.topic) {
|
|
326
|
+
event.topic = nameService;
|
|
327
|
+
}
|
|
328
|
+
if (!methodCore[event.method]) {
|
|
329
|
+
if (event.method == "ws") {
|
|
330
|
+
if (event.type == "client") {
|
|
331
|
+
methodCore["socket:" + event.name].sub(event, execute);
|
|
332
|
+
} else {
|
|
333
|
+
ioCore.server.push({
|
|
334
|
+
event,
|
|
335
|
+
execute
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
methodCore[event.method].sub(event, execute);
|
|
342
|
+
return;
|
|
343
|
+
},
|
|
344
|
+
async repository(path_, params, obj, feature = false) {
|
|
345
|
+
if (!repositoryCore[feature ? params.file.split('.')[0] : params.path]) {
|
|
346
|
+
repositoryCore[feature ? params.file.split('.')[0] : params.path] = {};
|
|
347
|
+
}
|
|
348
|
+
repositoryCore[feature ? params.file.split('.')[0] : params.path][feature ? params.path : params.file.split('.')[0]] = (await _fileCore.default.import(path_, {
|
|
349
|
+
driver: app.driver,
|
|
350
|
+
lib: app.lib,
|
|
351
|
+
...obj
|
|
352
|
+
})).execute;
|
|
353
|
+
},
|
|
354
|
+
async lib(path_, params, obj) {
|
|
355
|
+
libCore[params.file.split('.')[0]] = await _fileCore.default.import(path_, obj);
|
|
356
|
+
},
|
|
357
|
+
async util(path_, params, obj) {
|
|
358
|
+
utilCore[params.file.split('.')[0]] = await _fileCore.default.import(path_, {
|
|
359
|
+
...obj,
|
|
360
|
+
service: app.service,
|
|
361
|
+
repository: app.repository,
|
|
362
|
+
entity: app.entity,
|
|
363
|
+
util: app.util,
|
|
364
|
+
lib: app.lib
|
|
365
|
+
});
|
|
366
|
+
},
|
|
367
|
+
async job(path_, params, obj = {}) {
|
|
368
|
+
const {
|
|
369
|
+
job: Job,
|
|
370
|
+
execute
|
|
371
|
+
} = await _fileCore.default.import(path_, {
|
|
372
|
+
seneca: app.seneca,
|
|
373
|
+
// command: app.command,
|
|
374
|
+
job: app.job,
|
|
375
|
+
service: app.service,
|
|
376
|
+
nats: app.nats,
|
|
377
|
+
event: app.event,
|
|
378
|
+
repository: app.repository,
|
|
379
|
+
util: app.util,
|
|
380
|
+
lib: app.lib,
|
|
381
|
+
grpc: app.grpc,
|
|
382
|
+
...obj
|
|
383
|
+
});
|
|
384
|
+
const name = Job.name || params.path + '.' + params.file.split('.')[0];
|
|
385
|
+
libCore.bull.addJob({
|
|
386
|
+
name
|
|
387
|
+
}, Job.config);
|
|
388
|
+
libCore.bull.worker({
|
|
389
|
+
name: Job.name,
|
|
390
|
+
fn: execute,
|
|
391
|
+
async completed(job_) {
|
|
392
|
+
await methodCore[job_.method || 'redis'].pub({
|
|
393
|
+
topic: 'worker::completed:' + name
|
|
394
|
+
}, {
|
|
395
|
+
name: job_.name,
|
|
396
|
+
id: job_.id,
|
|
397
|
+
input: job_.data,
|
|
398
|
+
output: job_.returnvalue
|
|
399
|
+
});
|
|
400
|
+
},
|
|
401
|
+
async failed(job_, err) {
|
|
402
|
+
await methodCore[job_.method || 'redis'].pub({
|
|
403
|
+
topic: 'worker::failed:' + name
|
|
404
|
+
}, {
|
|
405
|
+
name: job_.name,
|
|
406
|
+
id: job_.id,
|
|
407
|
+
input: job_.data,
|
|
408
|
+
err: err.message
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
},
|
|
413
|
+
async endPoint(path_, params, obj = {}) {
|
|
414
|
+
const route = await _fileCore.default.import(path_, {
|
|
415
|
+
seneca: app.seneca,
|
|
416
|
+
// command: app.command,
|
|
417
|
+
job: app.job,
|
|
418
|
+
service: app.service,
|
|
419
|
+
nats: app.nats,
|
|
420
|
+
event: app.event,
|
|
421
|
+
repository: app.repository,
|
|
422
|
+
util: app.util,
|
|
423
|
+
lib: app.lib,
|
|
424
|
+
grpc: app.grpc,
|
|
425
|
+
...obj
|
|
426
|
+
});
|
|
427
|
+
if (Array.isArray(route)) {
|
|
428
|
+
return route;
|
|
429
|
+
}
|
|
430
|
+
return [route];
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
app
|
|
434
|
+
};
|
|
435
|
+
const createDriver = (0, _driverCore.default)({
|
|
436
|
+
core
|
|
437
|
+
});
|
|
438
|
+
const createServer = (0, _serverCore.default)({
|
|
439
|
+
core
|
|
440
|
+
});
|
|
441
|
+
return {
|
|
442
|
+
core,
|
|
443
|
+
createWorker: (0, _workerCore.default)({
|
|
444
|
+
core
|
|
445
|
+
}),
|
|
446
|
+
createRepository: (0, _repositoryCore.default)({
|
|
447
|
+
core
|
|
448
|
+
}),
|
|
449
|
+
createService: (0, _serviceCore.default)({
|
|
450
|
+
core
|
|
451
|
+
}),
|
|
452
|
+
createUtil: (0, _utilCore.default)({
|
|
453
|
+
core
|
|
454
|
+
}),
|
|
455
|
+
createEntity: (0, _entityCore.default)({
|
|
456
|
+
core
|
|
457
|
+
}),
|
|
458
|
+
createLib: (0, _libCore.default)({
|
|
459
|
+
core
|
|
460
|
+
}),
|
|
461
|
+
createEvent: (0, _eventCore.default)({
|
|
462
|
+
core
|
|
463
|
+
}),
|
|
464
|
+
async createServer(server) {
|
|
465
|
+
if (!createServer[server.type]) return;
|
|
466
|
+
await createServer[server.type]({
|
|
467
|
+
server,
|
|
468
|
+
ws: ioCore
|
|
469
|
+
});
|
|
470
|
+
},
|
|
471
|
+
async createDriver(driver) {
|
|
472
|
+
if (!createDriver[driver.type]) return;
|
|
473
|
+
await createDriver[driver.type](driver);
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
};
|
|
477
|
+
exports.default = _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = ({
|
|
8
|
+
core
|
|
9
|
+
}) => {
|
|
10
|
+
return async ({
|
|
11
|
+
path = '/src/core/libs'
|
|
12
|
+
}, obj = {}) => {
|
|
13
|
+
const paths = core.fileCore.paths(path);
|
|
14
|
+
await core.forawait.generate(paths, async (path_file = '') => {
|
|
15
|
+
if (!(path_file.includes('.js') || path_file.includes('.ts'))) return;
|
|
16
|
+
await core.import.lib(path + '/' + path_file, {
|
|
17
|
+
file: path_file
|
|
18
|
+
}, obj);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.default = _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = ({
|
|
8
|
+
core
|
|
9
|
+
}) => {
|
|
10
|
+
return async ({
|
|
11
|
+
path = '/src/infra/repositories',
|
|
12
|
+
db = '/src/infra/db/index.js'
|
|
13
|
+
}, obj = {}) => {
|
|
14
|
+
const paths = core.fileCore.paths(path);
|
|
15
|
+
obj.dbTest = process.env.DB_TEST == "True";
|
|
16
|
+
if (obj.dbTest == true) {
|
|
17
|
+
if (typeof obj.getDb == 'function') {
|
|
18
|
+
obj.db = obj.getDb();
|
|
19
|
+
}
|
|
20
|
+
} else {
|
|
21
|
+
try {
|
|
22
|
+
if (!obj.dbTest && !obj.getDb) {
|
|
23
|
+
obj.db = await core.fileCore.import(db, {});
|
|
24
|
+
}
|
|
25
|
+
} catch (error) {}
|
|
26
|
+
}
|
|
27
|
+
await core.repositories(paths, path, obj);
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
exports.default = _default;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = ({
|
|
10
|
+
core
|
|
11
|
+
}) => {
|
|
12
|
+
const servicesGet = (services_, server) => {
|
|
13
|
+
const services = [];
|
|
14
|
+
services_.forEach((service_ = '') => {
|
|
15
|
+
const [s, m] = (service_.name || service_).split('.');
|
|
16
|
+
if (m == '*') {
|
|
17
|
+
core.listServices(s).forEach(_ => {
|
|
18
|
+
services.push({
|
|
19
|
+
name: (server?.name ? server?.name + ":" : '') + s + '.' + _,
|
|
20
|
+
auth: service_.auth || null,
|
|
21
|
+
exec: s + '.' + _
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
services.push({
|
|
27
|
+
name: (server?.name ? server?.name + ":" : '') + s + '.' + m,
|
|
28
|
+
auth: service_.auth || null,
|
|
29
|
+
exec: s + '.' + m
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
return services;
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
async "http"({
|
|
36
|
+
server,
|
|
37
|
+
ws
|
|
38
|
+
}) {
|
|
39
|
+
const endPoints = [];
|
|
40
|
+
const rootFile = server.file || server.rootPath || '/src/infra/web/http.js';
|
|
41
|
+
const rootPath = _nodePath.default.dirname(rootFile);
|
|
42
|
+
const createCoreRouter = async ({
|
|
43
|
+
path = rootPath + '/routers'
|
|
44
|
+
}, obj) => {
|
|
45
|
+
const paths = core.fileCore.paths(path);
|
|
46
|
+
await core.forawait.generate(paths, async (path_file = '') => {
|
|
47
|
+
if (!(path_file.includes('.js') || path_file.includes('.ts'))) return;
|
|
48
|
+
const route = await core.import.endPoint(path + '/' + path_file, {}, obj);
|
|
49
|
+
endPoints.push(...route);
|
|
50
|
+
});
|
|
51
|
+
return endPoints;
|
|
52
|
+
};
|
|
53
|
+
const createCoreSocket = async ({
|
|
54
|
+
path = rootPath + '/ws'
|
|
55
|
+
}, obj) => {
|
|
56
|
+
const paths = core.fileCore.paths(path);
|
|
57
|
+
const sockets = {};
|
|
58
|
+
await core.forawait.generate(paths, async (path_file = '') => {
|
|
59
|
+
if (!(path_file.includes('.js') || path_file.includes('.ts'))) return;
|
|
60
|
+
sockets[path_file.split('.')[0]] = await core.fileCore.import(path + '/' + path_file, {
|
|
61
|
+
seneca: core.app.seneca,
|
|
62
|
+
events: (ws?.server || []).filter(io => {
|
|
63
|
+
return io.event.route == path_file.split('.')[0];
|
|
64
|
+
}),
|
|
65
|
+
service: core.app.service,
|
|
66
|
+
nats: core.app.nats,
|
|
67
|
+
grpc: core.app.grpc,
|
|
68
|
+
job: core.app.job,
|
|
69
|
+
event: core.app.event,
|
|
70
|
+
util: core.app.util,
|
|
71
|
+
lib: core.app.lib,
|
|
72
|
+
...obj
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
return Object.values(sockets);
|
|
76
|
+
};
|
|
77
|
+
const routers = await createCoreRouter({}, {});
|
|
78
|
+
const wsServer = await createCoreSocket({}, {});
|
|
79
|
+
try {
|
|
80
|
+
const serve = await core.fileCore.import(rootFile, {
|
|
81
|
+
util: app.util,
|
|
82
|
+
lib: app.lib,
|
|
83
|
+
routers,
|
|
84
|
+
ws: wsServer
|
|
85
|
+
});
|
|
86
|
+
await serve.start();
|
|
87
|
+
core.addLib(() => serve.io, 'ws');
|
|
88
|
+
core.addLib({
|
|
89
|
+
stop: async () => await serve.stop(),
|
|
90
|
+
start: async () => await serve.start()
|
|
91
|
+
}, 'http');
|
|
92
|
+
} catch (error) {
|
|
93
|
+
console.error(error.message);
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
async "nats"({
|
|
97
|
+
server
|
|
98
|
+
}) {
|
|
99
|
+
const services = servicesGet(server.services, server);
|
|
100
|
+
await core.forawait.generate(services, async service => {
|
|
101
|
+
core.app.driver(server.driver).service((server?.prefix || "") + service.name, core.app.service(service.exec).execute, async headers => {
|
|
102
|
+
if (!service.auth) return true;
|
|
103
|
+
try {
|
|
104
|
+
const [m, exec] = service.auth.split(":");
|
|
105
|
+
const [name, c] = exec.split(".");
|
|
106
|
+
return (await core.app[m](name)[c](headers)) || false;
|
|
107
|
+
} catch (error) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
async "fogu"({
|
|
114
|
+
server
|
|
115
|
+
}) {
|
|
116
|
+
const fogu = core.app.driver(server.driver);
|
|
117
|
+
await core.forawait.generate(server.channels, async channelObj => {
|
|
118
|
+
const channel = fogu.channel(channelObj.name);
|
|
119
|
+
const services = servicesGet(channelObj.services || [], server);
|
|
120
|
+
await core.forawait.generate(services, async service => {
|
|
121
|
+
await channel.action((server?.prefix || "") + service.name, async (message, reply) => {
|
|
122
|
+
let input = message;
|
|
123
|
+
try {
|
|
124
|
+
input = JSON.parse(input);
|
|
125
|
+
} catch (error) {}
|
|
126
|
+
try {
|
|
127
|
+
let res = await core.app.service(service.exec).execute(input);
|
|
128
|
+
try {
|
|
129
|
+
res = JSON.stringify(input);
|
|
130
|
+
} catch (error) {}
|
|
131
|
+
const response = Buffer.from(res);
|
|
132
|
+
reply(null, response);
|
|
133
|
+
} catch (error) {
|
|
134
|
+
reply(error.message || 'error', Buffer.from(""));
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
exports.default = _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = ({
|
|
8
|
+
core
|
|
9
|
+
}) => {
|
|
10
|
+
return async ({
|
|
11
|
+
path = '/src/app/services'
|
|
12
|
+
}, obj = {}) => {
|
|
13
|
+
const paths = core.fileCore.paths(path);
|
|
14
|
+
await core.forawait.generate(paths, async path_ => {
|
|
15
|
+
const path_files = core.fileCore.paths(path + '/' + path_);
|
|
16
|
+
await core.forawait.generate(path_files, async (path_file = '') => {
|
|
17
|
+
if (!(path_file.includes('.js') || path_file.includes('.ts'))) return;
|
|
18
|
+
await core.import.service(path + '/' + path_ + '/' + path_file, {
|
|
19
|
+
path: path_,
|
|
20
|
+
file: path_file
|
|
21
|
+
}, obj);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.default = _default;
|