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.
Files changed (63) hide show
  1. package/README.md +446 -0
  2. package/babel.config.json +13 -0
  3. package/cjs/core/driverCore.js +37 -0
  4. package/cjs/core/drivers/bull.js +56 -0
  5. package/cjs/core/drivers/fogu.js +14 -0
  6. package/cjs/core/drivers/mq.js +50 -0
  7. package/cjs/core/drivers/nats.js +161 -0
  8. package/cjs/core/drivers/osone.js +14 -0
  9. package/cjs/core/drivers/rabbitmq.js +68 -0
  10. package/cjs/core/drivers/redis.js +68 -0
  11. package/cjs/core/drivers/socket.js +36 -0
  12. package/cjs/core/entityCore.js +22 -0
  13. package/cjs/core/eventCore.js +26 -0
  14. package/cjs/core/index.js +477 -0
  15. package/cjs/core/libCore.js +22 -0
  16. package/cjs/core/repositoryCore.js +30 -0
  17. package/cjs/core/serverCore.js +142 -0
  18. package/cjs/core/serviceCore.js +26 -0
  19. package/cjs/core/utilCore.js +22 -0
  20. package/cjs/core/workerCore.js +27 -0
  21. package/cjs/fileCore.js +27 -0
  22. package/cjs/forawait.js +55 -0
  23. package/cjs/index.js +117 -0
  24. package/cjs/package.json +3 -0
  25. package/esm/core/driverCore.js +33 -0
  26. package/esm/core/drivers/bull.js +49 -0
  27. package/esm/core/drivers/fogu.js +12 -0
  28. package/esm/core/drivers/nats.js +160 -0
  29. package/esm/core/drivers/rabbitmq.js +64 -0
  30. package/esm/core/drivers/redis.js +71 -0
  31. package/esm/core/drivers/socket.js +28 -0
  32. package/esm/core/entityCore.js +12 -0
  33. package/esm/core/eventCore.js +17 -0
  34. package/esm/core/index.js +440 -0
  35. package/esm/core/libCore.js +13 -0
  36. package/esm/core/repositoryCore.js +25 -0
  37. package/esm/core/serverCore.js +155 -0
  38. package/esm/core/serviceCore.js +17 -0
  39. package/esm/core/utilCore.js +12 -0
  40. package/esm/core/workerCore.js +20 -0
  41. package/esm/fileCore.js +19 -0
  42. package/esm/forawait.js +48 -0
  43. package/esm/index.js +128 -0
  44. package/esm/package.json +3 -0
  45. package/lib/index.html +1021 -0
  46. package/package.json +73 -0
  47. package/src/app/events/test/app.js +13 -0
  48. package/src/app/events/test/ws.js +14 -0
  49. package/src/app/services/test/app.js +14 -0
  50. package/src/app/services/test/app1.js +11 -0
  51. package/src/core/entities/user.js +14 -0
  52. package/src/core/libs/hash.js +10 -0
  53. package/src/core/utils/auth.js +19 -0
  54. package/src/index.js +11 -0
  55. package/src/infra/db/index.js +7 -0
  56. package/src/infra/repositories/test/app.js +6 -0
  57. package/src/infra/web/http.js +15 -0
  58. package/src/infra/web/routers/auth.js +30 -0
  59. package/src/infra/web/routers/test.js +26 -0
  60. package/src/infra/web/ws/test.js +35 -0
  61. package/src/infra/workers/test/test.md +14 -0
  62. package/src/start.js +39 -0
  63. 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;