exodus-framework 2.0.953 → 2.0.955

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 (114) hide show
  1. package/lib/app/settings.d.ts.map +1 -1
  2. package/lib/contracts/settings.d.ts +1 -2
  3. package/lib/contracts/settings.d.ts.map +1 -1
  4. package/lib/services/database.d.ts +2 -0
  5. package/lib/services/database.d.ts.map +1 -1
  6. package/lib/services/sequelize.d.ts +0 -1
  7. package/lib/services/sequelize.d.ts.map +1 -1
  8. package/lib/utils/database.d.ts +1 -2
  9. package/lib/utils/database.d.ts.map +1 -1
  10. package/package.json +1 -1
  11. package/lib/app/classes/broadcast.js +0 -79
  12. package/lib/app/classes/cache.js +0 -94
  13. package/lib/app/classes/communication.js +0 -99
  14. package/lib/app/classes/communicationcontext.js +0 -1
  15. package/lib/app/classes/event.js +0 -94
  16. package/lib/app/classes/index.js +0 -105
  17. package/lib/app/classes/managed.js +0 -145
  18. package/lib/app/classes/service.js +0 -232
  19. package/lib/app/classes/servicemodel.js +0 -22
  20. package/lib/app/classes/singleton.js +0 -26
  21. package/lib/app/classes/socket/clienthandler.js +0 -54
  22. package/lib/app/classes/socket/eventhandler.js +0 -51
  23. package/lib/app/classes/socket/index.js +0 -20
  24. package/lib/app/classes/system.js +0 -49
  25. package/lib/app/controller.js +0 -97
  26. package/lib/app/core.js +0 -47
  27. package/lib/app/error.js +0 -66
  28. package/lib/app/exodus.js +0 -97
  29. package/lib/app/index.js +0 -68
  30. package/lib/app/settings.js +0 -162
  31. package/lib/certificates/private_key.pem +0 -27
  32. package/lib/certificates/public_key.pem +0 -9
  33. package/lib/contracts/communication/communication.js +0 -39
  34. package/lib/contracts/communication/index.js +0 -27
  35. package/lib/contracts/communication/operation.js +0 -5
  36. package/lib/contracts/console.js +0 -5
  37. package/lib/contracts/contansts.js +0 -13
  38. package/lib/contracts/core.js +0 -12
  39. package/lib/contracts/entity.js +0 -5
  40. package/lib/contracts/http.js +0 -52
  41. package/lib/contracts/index.js +0 -104
  42. package/lib/contracts/messaging.js +0 -50
  43. package/lib/contracts/security.js +0 -5
  44. package/lib/contracts/service.js +0 -11
  45. package/lib/contracts/session.js +0 -5
  46. package/lib/contracts/settings.js +0 -5
  47. package/lib/contracts/singleton.js +0 -5
  48. package/lib/contracts/socket.js +0 -11
  49. package/lib/contracts/tasks.js +0 -1
  50. package/lib/controllers/api/file.js +0 -24
  51. package/lib/controllers/api/index.js +0 -13
  52. package/lib/controllers/api/log.js +0 -55
  53. package/lib/controllers/api/report.js +0 -55
  54. package/lib/controllers/index.js +0 -16
  55. package/lib/controllers/messaging/application.js +0 -75
  56. package/lib/controllers/messaging/database.js +0 -64
  57. package/lib/controllers/messaging/environment.js +0 -111
  58. package/lib/express.d.js +0 -5
  59. package/lib/index.js +0 -104
  60. package/lib/middlewares/access.js +0 -114
  61. package/lib/middlewares/authentication.js +0 -104
  62. package/lib/middlewares/file.js +0 -41
  63. package/lib/middlewares/index.js +0 -36
  64. package/lib/models/Application.js +0 -65
  65. package/lib/models/DatabaseHost.js +0 -62
  66. package/lib/models/EnvConnection.js +0 -41
  67. package/lib/models/Log.js +0 -67
  68. package/lib/models/Report.js +0 -65
  69. package/lib/models/System.js +0 -54
  70. package/lib/models/index.js +0 -82
  71. package/lib/routes/api/index.js +0 -16
  72. package/lib/routes/api/v1/index.js +0 -38
  73. package/lib/routes/api/v1/logs.js +0 -19
  74. package/lib/routes/api/v1/report.js +0 -19
  75. package/lib/routes/api/v1/sse.js +0 -36
  76. package/lib/routes/index.js +0 -27
  77. package/lib/routes/messaging/index.js +0 -34
  78. package/lib/services/database.js +0 -115
  79. package/lib/services/ecosystem.js +0 -46
  80. package/lib/services/express.js +0 -162
  81. package/lib/services/file.js +0 -65
  82. package/lib/services/file_new.js +0 -136
  83. package/lib/services/index.js +0 -108
  84. package/lib/services/log.js +0 -26
  85. package/lib/services/rabitmq.js +0 -187
  86. package/lib/services/redis.js +0 -84
  87. package/lib/services/security.js +0 -231
  88. package/lib/services/sequelize.js +0 -323
  89. package/lib/services/socket.js +0 -123
  90. package/lib/services/task/TaskServiceBase.js +0 -17
  91. package/lib/services/task/index.js +0 -40
  92. package/lib/services/task/queue/QueueService.js +0 -48
  93. package/lib/services/task/queue/QueueTask.js +0 -134
  94. package/lib/services/task/queue/SingleQueue.js +0 -68
  95. package/lib/services/task/queue/index.js +0 -27
  96. package/lib/services/task/scheduler/SchedulerService.js +0 -31
  97. package/lib/services/task/scheduler/SchedulerTask.js +0 -211
  98. package/lib/services/task/scheduler/index.js +0 -20
  99. package/lib/services/test.js +0 -27
  100. package/lib/socket.d.js +0 -3
  101. package/lib/tasks/index.js +0 -27
  102. package/lib/tasks/queue/application.js +0 -44
  103. package/lib/tasks/queue/environment.js +0 -92
  104. package/lib/tasks/queue/index.js +0 -20
  105. package/lib/tasks/queue/teste.js +0 -21
  106. package/lib/tasks/schedule/index.js +0 -13
  107. package/lib/tasks/schedule/restart.js +0 -19
  108. package/lib/tasks/schedule/teste.js +0 -61
  109. package/lib/utils/api.js +0 -65
  110. package/lib/utils/database.js +0 -155
  111. package/lib/utils/date.js +0 -28
  112. package/lib/utils/index.js +0 -60
  113. package/lib/utils/logger.js +0 -51
  114. package/lib/utils/session.js +0 -23
@@ -1,162 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _cors = _interopRequireDefault(require("cors"));
8
- var _express = _interopRequireDefault(require("express"));
9
- var _expressRequestsLogger = _interopRequireDefault(require("express-requests-logger"));
10
- var http = _interopRequireWildcard(require("http"));
11
- var _qs = _interopRequireDefault(require("qs"));
12
- var _core = _interopRequireDefault(require("../app/core"));
13
- var _error = require("../app/error");
14
- var _service = _interopRequireDefault(require("../app/classes/service"));
15
- var _http2 = require("../contracts/http");
16
- var _logger = _interopRequireDefault(require("../utils/logger"));
17
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
- // import 'express-async-errors';
21
-
22
- class ExpressService extends _service.default {
23
- server;
24
- mainRouter;
25
-
26
- //!Deve ser iniciado no cluster, pois no master causa erro de port bind
27
- async onServiceClusterInit() {
28
- await super.onServiceClusterInit();
29
- if (!this.mainRouter) throw new Error('Need router'); //!sem router
30
- }
31
- async onStartCluster() {
32
- await super.onStartCluster();
33
- const expss = (0, _express.default)();
34
- this.server = http.createServer(expss);
35
- expss.use('/public', _express.default.static(_core.default.settings.getHttp().publicPath));
36
- expss.use((0, _expressRequestsLogger.default)({
37
- logger: (0, _logger.default)()
38
- }));
39
- expss.set('query parser', str => _qs.default.parse(str));
40
- expss.use(this.responseTypeMiddleware.bind(this));
41
- expss.use(_express.default.json({
42
- limit: '10mb'
43
- }));
44
- expss.use(_express.default.urlencoded({
45
- extended: true,
46
- limit: '10mb'
47
- }));
48
- expss.use((0, _cors.default)({
49
- origin: '*'
50
- }));
51
- expss.use(this.mainRouter);
52
- expss.use(this.handleAuthorizationFailure.bind(this));
53
- expss.use(this.handleNotFoud.bind(this));
54
- expss.use(this.handleRequestProcessFailure.bind(this));
55
- return true;
56
- }
57
- async onExodusClusterStarted() {
58
- await super.onExodusClusterStarted();
59
- this.server.listen(_core.default.settings.getAppication().port, () => {
60
- (0, _logger.default)().info(`servidor iniciado na porta: ${_core.default.settings.getAppication().port}`);
61
- this.log(`🌍 Http Server Listering On: ${_core.default.settings.getAppication().port}`, 'success');
62
- });
63
- }
64
- getHttpServer() {
65
- return this.server;
66
- }
67
- sendResponse(objResponse, res, next) {
68
- objResponse.timestamp = Date.now();
69
- if (!objResponse.code) objResponse.code = _http2.EHttpResponseCode.successfullyProcessedInformation;
70
- res.status(objResponse.code);
71
- if (objResponse.location) {
72
- res.location(objResponse.location);
73
- delete objResponse.location;
74
- }
75
- let FormulatedResponse;
76
- switch (_core.default.settings.getHttp().formulation) {
77
- case 'direct':
78
- if (objResponse['data']) {
79
- FormulatedResponse = objResponse.data;
80
- } else {
81
- FormulatedResponse = objResponse;
82
- }
83
- break;
84
- case 'standart':
85
- FormulatedResponse = objResponse;
86
- break;
87
- default:
88
- FormulatedResponse = objResponse;
89
- break;
90
- }
91
- if (next) {
92
- res.write(JSON.stringify(FormulatedResponse));
93
- next();
94
- } else {
95
- res.send(JSON.stringify(FormulatedResponse));
96
- }
97
- }
98
- responseTypeMiddleware(req, res, next) {
99
- res.contentType('application/json');
100
- next();
101
- }
102
-
103
- //* Handler errors
104
- handleNotFoud(req, res) {
105
- this.sendResponse({
106
- message: 'Endereço não encontrado',
107
- type: 'warning',
108
- status: false,
109
- code: _http2.EHttpResponseCode.informationNotFound
110
- }, res);
111
- }
112
- handleAuthorizationFailure(err, req, res, next) {
113
- if (err.name === 'UnauthorizedError') {
114
- throw new _error.HttpError({
115
- message: 'Falha na autorização',
116
- statusCode: _http2.EHttpResponseCode.informationUnauthorized
117
- });
118
- } else {
119
- next(err);
120
- }
121
- }
122
- handleRequestProcessFailure = async (err, req, res, _) => {
123
- if (err instanceof _error.HttpError) {
124
- return this.sendResponse({
125
- message: err.message,
126
- type: err.level,
127
- status: false,
128
- code: err.statusCode,
129
- data: err.data
130
- }, res);
131
- }
132
- this.sendResponse({
133
- message: 'Houve um erro ao acessar este recurso',
134
- type: 'error',
135
- status: false,
136
- code: 500
137
- }, res);
138
- new _error.ErrorHandler('Erro não tratado em uma rota.', err);
139
- };
140
- async checkRequest(params) {
141
- let pass = true;
142
- const need = [];
143
- for (const [key, param] of Object.entries(params)) {
144
- if (!param || param === null || param.length < 1 || typeof param === 'string' && param === '' || typeof param === 'object' && Object.values(param).length < 1) {
145
- pass = false;
146
- need.push(key);
147
- }
148
- }
149
- if (!pass) throw new _error.HttpError({
150
- message: 'Requisição incompleta',
151
- statusCode: _http2.EHttpResponseCode.incompleteRequest,
152
- level: 'error',
153
- data: {
154
- need
155
- }
156
- });
157
- }
158
- static registerRouter(router) {
159
- this.getService().mainRouter = router;
160
- }
161
- }
162
- var _default = exports.default = ExpressService;
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _service = _interopRequireDefault(require("../app/classes/service"));
8
- var _logger = _interopRequireDefault(require("../utils/logger"));
9
- var fs = _interopRequireWildcard(require("fs"));
10
- var fsPromisses = _interopRequireWildcard(require("fs/promises"));
11
- var _app = require("../app");
12
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- class FileService extends _service.default {
16
- async onStart() {
17
- await Promise.all([this.checkPaths(), this.cleanTemp()]);
18
- return true;
19
- }
20
- async checkPaths() {
21
- for (const path of Object.values(_app.Core.settings.getAppication().filePaths)) {
22
- !fs.existsSync(path) && fs.mkdirSync(path, {
23
- recursive: true
24
- });
25
- }
26
- }
27
- async cleanTemp() {
28
- this.listFiles('temporary', files => {
29
- for (const file of files) {
30
- const p = _app.Core.settings.getAppication().filePaths.temporary + '/' + file;
31
- fs.rmSync(p, {
32
- recursive: true
33
- });
34
- }
35
- });
36
- }
37
- async save(filename, destiny) {
38
- const p = _app.Core.settings.getAppication().filePaths.temporary + '/' + filename;
39
- const d = _app.Core.settings.getAppication().filePaths[destiny] + '/' + filename;
40
- return await fsPromisses.rename(p, d).then(() => d).catch(e => {
41
- (0, _logger.default)().error({
42
- filename,
43
- destiny,
44
- erro: e
45
- }, 'Não foi possível salvar o arquivo');
46
- return false;
47
- });
48
- }
49
- async delete(filename, destiny) {
50
- const d = _app.Core.settings.getAppication().filePaths[destiny] + '/' + filename;
51
- return await fsPromisses.unlink(d).then(() => true).catch(e => {
52
- (0, _logger.default)().error({
53
- filename,
54
- destiny,
55
- erro: e
56
- }, 'Não foi possível deletar o arquivo');
57
- return false;
58
- });
59
- }
60
- listFiles(origin, cb) {
61
- const p = _app.Core.settings.getAppication().filePaths[origin];
62
- fs.readdir(p, (_, file) => cb(file));
63
- }
64
- }
65
- var _default = exports.default = FileService;
@@ -1,136 +0,0 @@
1
- // import { createHash } from 'crypto';
2
- // import * as fs from 'fs';
3
- // import * as fsPromisses from 'fs/promises';
4
- // import NodeCache from 'node-cache';
5
- // import { Core, ErrorHandler } from '../app';
6
- // import Service from '../app/classes/service';
7
- // import { TFilePathSettings } from '../contracts/settings';
8
- // import logger from '../utils/logger';
9
-
10
- // class FileService extends Service {
11
- // protected cache: NodeCache;
12
-
13
- // async onServiceInit() {
14
- // this.cache = new NodeCache();
15
- // await Promise.all([this.checkPaths(), this.cleanTemp()]);
16
- // }
17
-
18
- // //# Managment
19
- // async save(filename: string, destiny: keyof TFilePathSettings) {
20
- // const p = Core.settings.getAppication().filePaths.temporary + '/' + filename;
21
- // const d = Core.settings.getAppication().filePaths[destiny] + '/' + filename;
22
-
23
- // try {
24
- // const md5 = await this.getMD5FromFile(p);
25
-
26
- // if (this.cache.has(md5)) {
27
- // return true;
28
- // }
29
-
30
- // await this.move(p, d);
31
- // this.cache.set(md5, d);
32
-
33
- // return true;
34
- // } catch (error) {
35
- // new ErrorHandler('Não foi possível salva o arquivo', error);
36
- // return false;
37
- // }
38
- // }
39
- // async delete(filename: string, destiny: keyof TFilePathSettings) {
40
- // const d = Core.settings.getAppication().filePaths[destiny] + '/' + filename;
41
- // return await fsPromisses
42
- // .unlink(d)
43
- // .then(() => true)
44
- // .catch((e) => {
45
- // logger().error({ filename, destiny, erro: e }, 'Não foi possível deletar o arquivo');
46
- // return false;
47
- // });
48
- // }
49
- // async move(to: string, from: string) {
50
- // return await fsPromisses
51
- // .rename(to, from)
52
- // .then((d) => d)
53
- // .catch((e) => {
54
- // logger().error({ to, from, erro: e }, 'Não foi possível mover o arquivo');
55
- // return false;
56
- // });
57
- // }
58
-
59
- // //# Getters
60
- // public getBuffer(filename: string, destiny: keyof TFilePathSettings) {
61
- // const d = Core.settings.getAppication().filePaths[destiny] + '/' + filename;
62
-
63
- // return new Promise((resolve, reject) => {
64
- // this.getMD5FromFile(d).then();
65
-
66
- // fsPromisses
67
- // .readFile(path)
68
- // .then(cb)
69
- // .catch((e) => {
70
- // logger.error({ path, erro: e }, 'Não foi possível ler o arquivo', path);
71
- // });
72
- // });
73
- // }
74
- // /* public getStatByMD5(filename: string, destiny: keyof TFilePathSettings) {
75
- // const p = this.getPathByMD5(md5);
76
- // if (!p) return;
77
- // return fs.statSync(p);
78
- // } */
79
-
80
- // //# Utils
81
- // private async checkPaths() {
82
- // for (const path of Object.values(Core.settings.getAppication().filePaths)) {
83
- // !fs.existsSync(path) && fs.mkdirSync(path, { recursive: true });
84
- // }
85
- // }
86
- // private async cleanTemp() {
87
- // this.listFiles('temporary', (files) => {
88
- // for (const file of files) {
89
- // const p = Core.settings.getAppication().filePaths.temporary + '/' + file;
90
- // fs.rmSync(p, { recursive: true });
91
- // }
92
- // });
93
- // }
94
- // public listFiles(origin: keyof TFilePathSettings, cb: (file: string[]) => void) {
95
- // const p = Core.settings.getAppication().filePaths[origin];
96
- // fs.readdir(p, (_, file) => cb(file));
97
- // }
98
-
99
- // //# MD5
100
- // public getMD5FromFile(filePath: string) {
101
- // return new Promise<string>((resolve, reject) => {
102
- // const hash = createHash('md5');
103
- // const stream = fs.createReadStream(filePath);
104
-
105
- // stream.on('data', (dados) => hash.update(dados));
106
- // stream.on('error', (error) => reject(error));
107
- // stream.on('end', () => resolve(hash.digest('hex')));
108
- // });
109
- // }
110
- // public getMD5FromBuffer(buffer: Buffer) {
111
- // const hash = createHash('md5');
112
- // hash.update(buffer);
113
- // return hash.digest('hex');
114
- // }
115
-
116
- // //# Cache
117
- // public loadCache() {}
118
- // public async hasCached(filePath: string) {
119
- // const md5 = await this.getMD5FromFile(filePath);
120
-
121
- // return this.cache.has(md5);
122
- // }
123
- // //!imcomplete
124
- // /* public async loadItem(filename: string, origin: keyof TFilePathSettings) {
125
- // try {
126
- // const p = Core.settings.getAppication().filePaths[origin] + '/' + filename;
127
- // const md5 = await this.getMD5FromFile(p);
128
-
129
- // return md5;
130
- // } catch (error) {
131
- // return;
132
- // }
133
- // } */
134
- // }
135
- // export default FileService;
136
- "use strict";
@@ -1,108 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- ExpressService: true,
8
- FileService: true,
9
- RabbitMQService: true,
10
- RedisService: true,
11
- SequelizeService: true,
12
- SocketIOService: true,
13
- SecurityService: true,
14
- LogService: true,
15
- EcosystemService: true,
16
- TestService: true,
17
- DatabaseService: true
18
- };
19
- Object.defineProperty(exports, "DatabaseService", {
20
- enumerable: true,
21
- get: function () {
22
- return _database.default;
23
- }
24
- });
25
- Object.defineProperty(exports, "EcosystemService", {
26
- enumerable: true,
27
- get: function () {
28
- return _ecosystem.default;
29
- }
30
- });
31
- Object.defineProperty(exports, "ExpressService", {
32
- enumerable: true,
33
- get: function () {
34
- return _express.default;
35
- }
36
- });
37
- Object.defineProperty(exports, "FileService", {
38
- enumerable: true,
39
- get: function () {
40
- return _file.default;
41
- }
42
- });
43
- Object.defineProperty(exports, "LogService", {
44
- enumerable: true,
45
- get: function () {
46
- return _log.default;
47
- }
48
- });
49
- Object.defineProperty(exports, "RabbitMQService", {
50
- enumerable: true,
51
- get: function () {
52
- return _rabitmq.default;
53
- }
54
- });
55
- Object.defineProperty(exports, "RedisService", {
56
- enumerable: true,
57
- get: function () {
58
- return _redis.default;
59
- }
60
- });
61
- Object.defineProperty(exports, "SecurityService", {
62
- enumerable: true,
63
- get: function () {
64
- return _security.default;
65
- }
66
- });
67
- Object.defineProperty(exports, "SequelizeService", {
68
- enumerable: true,
69
- get: function () {
70
- return _sequelize.default;
71
- }
72
- });
73
- Object.defineProperty(exports, "SocketIOService", {
74
- enumerable: true,
75
- get: function () {
76
- return _socket.default;
77
- }
78
- });
79
- Object.defineProperty(exports, "TestService", {
80
- enumerable: true,
81
- get: function () {
82
- return _test.default;
83
- }
84
- });
85
- var _express = _interopRequireDefault(require("./express"));
86
- var _file = _interopRequireDefault(require("./file"));
87
- var _rabitmq = _interopRequireDefault(require("./rabitmq"));
88
- var _redis = _interopRequireDefault(require("./redis"));
89
- var _sequelize = _interopRequireDefault(require("./sequelize"));
90
- var _socket = _interopRequireDefault(require("./socket"));
91
- var _security = _interopRequireDefault(require("./security"));
92
- var _log = _interopRequireDefault(require("./log"));
93
- var _ecosystem = _interopRequireDefault(require("./ecosystem"));
94
- var _test = _interopRequireDefault(require("./test"));
95
- var _database = _interopRequireDefault(require("./database"));
96
- var _task = require("./task");
97
- Object.keys(_task).forEach(function (key) {
98
- if (key === "default" || key === "__esModule") return;
99
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
100
- if (key in exports && exports[key] === _task[key]) return;
101
- Object.defineProperty(exports, key, {
102
- enumerable: true,
103
- get: function () {
104
- return _task[key];
105
- }
106
- });
107
- });
108
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -1,26 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _dateFns = require("date-fns");
8
- var _app = require("../app");
9
- var _Log = require("../models/Log");
10
- var _sequelize = _interopRequireDefault(require("./sequelize"));
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- class LogService extends _app.Service {
13
- async register(tenantId, data) {
14
- try {
15
- const Entity = await _sequelize.default.singleton().getModel(_Log.Log, tenantId);
16
- await Entity.create({
17
- ...data,
18
- happenedAt: (0, _dateFns.format)(new Date(), 'yyyy-MM-dd HH:mm:ss')
19
- });
20
- return true;
21
- } catch (error) {
22
- new _app.ErrorHandler('Não foi possível registrar um log', error);
23
- }
24
- }
25
- }
26
- var _default = exports.default = LogService;
@@ -1,187 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _amqplib = _interopRequireDefault(require("amqplib"));
8
- var _crypto = require("crypto");
9
- var _app = require("../app");
10
- var _service = _interopRequireDefault(require("../app/classes/service"));
11
- var _messaging = _interopRequireDefault(require("../routes/messaging"));
12
- var _utils = require("../utils");
13
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- /**
15
- * Serviço de Mensageria
16
- *
17
- * @class RabbitMQService
18
- * @extends {Service}
19
- * @implements {IService}
20
- */
21
- class RabbitMQService extends _service.default {
22
- connection;
23
- channel;
24
- mainRouter;
25
- eventCustomListeners;
26
- exchangeName;
27
- queueName;
28
- isReconnecting = false; // Flag para evitar múltiplas tentativas simultâneas de reconexão
29
- isConnected = false; // Flag para controlar o estado da conexão
30
-
31
- async onServiceClusterInit() {
32
- await super.onServiceClusterInit();
33
- if (!this.mainRouter) throw new Error('Need router'); //!sem router
34
-
35
- //Start params
36
- this.startAttemptDelay = 5 * 1000;
37
- this.maxStartAttempts = 3;
38
- this.exchangeName = _app.Core.settings.getMessaging().exchanges.main;
39
- this.queueName = _app.Core.settings.getAppication().appId;
40
- this.eventCustomListeners = new Map();
41
- this.mainRouter = {
42
- ..._messaging.default,
43
- ...this.mainRouter
44
- }; // # Register native router
45
- }
46
- async onStartCluster() {
47
- await super.onStartCluster();
48
- return this.connect();
49
- }
50
- async onExodusClusterStarted() {
51
- await super.onExodusClusterStarted();
52
- await this.channel.consume(this.queueName, this.consumeFromQueue.bind(this), {
53
- noAck: false
54
- });
55
- }
56
- async onStartFail() {
57
- await super.onStartFail();
58
- this.log(`Not possible to connect RabitMQ`, 'danger');
59
- }
60
- async connect() {
61
- if (this.isConnected) return true;
62
- if (this.isReconnecting) return false;
63
- this.log(`⌛️ Connecting to Rabbit-MQ Server: ${this.currentStartAttempts}/${this.maxStartAttempts}`);
64
- this.isReconnecting = true;
65
- try {
66
- const query = `amqp://${_app.Core.settings.getMessaging().user}:${_app.Core.settings.getMessaging().pass}@${_app.Core.settings.getMessaging().host}:5672`;
67
- this.connection = await _amqplib.default.connect(query);
68
- this.channel = await this.connection.createChannel();
69
- const mainExchanges = _app.Core.settings.getMessaging().exchanges.main;
70
- await this.channel.assertExchange(mainExchanges, 'topic', {
71
- durable: true
72
- });
73
- await this.channel.assertQueue(_app.Core.settings.getAppication().appId, {
74
- durable: true
75
- });
76
- this.isConnected = true;
77
- this.isReconnecting = false;
78
- this.setupErrorHandles();
79
- await this.registerHandles();
80
- this.log(`✅ Rabbit MQ Connection is ready`);
81
- return true;
82
- } catch (error) {
83
- (0, _utils.logger)().error(error, `Not connected to MQ Server`);
84
- this.isReconnecting = false;
85
- return false;
86
- }
87
- }
88
- async registerHandles() {
89
- for (const topic of Object.keys(this.mainRouter)) {
90
- await this.channel.bindQueue(this.queueName, this.exchangeName, topic);
91
- }
92
- }
93
- setupErrorHandles() {
94
- this.channel.on('error', err => {
95
- new _app.ErrorHandler('falha no canal rabitmq', err);
96
- this.isConnected = false;
97
- });
98
- this.channel.on('close', err => {
99
- new _app.ErrorHandler('o canal rabitmq foi fechado', err);
100
- this.isConnected = false;
101
- });
102
- }
103
-
104
- //# Common
105
- async sendToQueue(topic, data, transactionId) {
106
- try {
107
- if (!this.isConnected) {
108
- this.log('RabbitMQ is not connected. Message not sent.');
109
- return false;
110
- }
111
- const messageId = (0, _crypto.randomUUID)();
112
- const packeg = Buffer.from(JSON.stringify({
113
- data,
114
- serviceId: _app.Core.settings.getAppication().appId,
115
- transactionId
116
- }));
117
- this.channel.publish(this.exchangeName, topic, packeg, {
118
- messageId,
119
- persistent: true
120
- });
121
- return messageId;
122
- } catch (error) {
123
- new _app.ErrorHandler('Houve um erro no envio de uma mensagem para o rabitmq', error);
124
- }
125
- }
126
- async consumeFromQueue(msg) {
127
- if (!this.isConnected) return;
128
- if (!msg) {
129
- this.log(`Invalid incoming message in`);
130
- return;
131
- }
132
- try {
133
- const topic = msg.fields.routingKey;
134
- const content = JSON.parse(msg.content.toString());
135
- const callBack = this.mainRouter[topic];
136
- if (callBack) await callBack(content.data, () => {}, content.serviceId, content.transactionId);
137
- this.channel.ack(msg); //# the next function is temporary and not confirm ack
138
-
139
- if (this.eventCustomListeners.has(topic)) {
140
- const cb = this.eventCustomListeners.get(topic);
141
- cb(content.data, () => {}, content.serviceId, content.transactionId);
142
- }
143
- } catch (error) {
144
- setTimeout(() => {
145
- this.channel.nack(msg, false, true); // Reenfileira para nova tentativa
146
- this.log(`Message requeue: ${msg.fields.routingKey}`, 'info');
147
- }, 3000);
148
- new _app.ErrorHandler('Error on parsing message from queue', error);
149
- }
150
- }
151
- static registerRouter(router) {
152
- this.getService().mainRouter = router;
153
- }
154
- onTransaction(topic, callBack) {
155
- if (!this.mainRouter[topic]) {
156
- this.channel.bindQueue(_app.Core.settings.getAppication().appId, _app.Core.settings.getMessaging().exchanges.main, topic);
157
- }
158
- this.eventCustomListeners.set(topic, callBack);
159
- }
160
- offTransaction(topic) {
161
- this.eventCustomListeners.delete(topic);
162
- if (!this.mainRouter[topic]) {
163
- this.channel.unbindQueue(_app.Core.settings.getAppication().appId, _app.Core.settings.getMessaging().exchanges.main, topic);
164
- }
165
- }
166
- asyncRequest(data) {
167
- const timeout = data.listen.timeout || 5000;
168
- const send = data.send;
169
- const listen = data.listen;
170
- const sendtransactionId = (0, _crypto.randomUUID)();
171
- this.onTransaction(listen.topic, (data, ack, serviceId, transactionId) => {
172
- ack(); // !auto ack because rabbit app crash
173
- if (sendtransactionId != transactionId) {
174
- return;
175
- }
176
- this.offTransaction(listen.topic);
177
- clearTimeout(fnTimeout);
178
- listen.callback(data, ack, serviceId, transactionId);
179
- });
180
- const fnTimeout = setTimeout(() => {
181
- this.offTransaction(listen.topic);
182
- listen.onTimeout();
183
- }, timeout);
184
- this.sendToQueue(send.topic, send.data, sendtransactionId);
185
- }
186
- }
187
- var _default = exports.default = RabbitMQService;