exodus-framework 2.0.699 → 2.0.700

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 (56) hide show
  1. package/lib/app/app.js +84 -0
  2. package/lib/app/controller.js +95 -0
  3. package/lib/app/core.js +66 -0
  4. package/lib/app/index.js +60 -0
  5. package/lib/app/service.js +24 -0
  6. package/lib/app/settings.js +135 -0
  7. package/lib/app/singleton.js +29 -0
  8. package/lib/contracts/console.js +5 -0
  9. package/lib/contracts/entity.js +5 -0
  10. package/lib/contracts/http.js +50 -0
  11. package/lib/contracts/index.js +104 -0
  12. package/lib/contracts/messaging.js +18 -0
  13. package/lib/contracts/security.js +5 -0
  14. package/lib/contracts/service.js +5 -0
  15. package/lib/contracts/session.js +5 -0
  16. package/lib/contracts/settings.js +5 -0
  17. package/lib/contracts/singleton.js +5 -0
  18. package/lib/contracts/socket.js +11 -0
  19. package/lib/controllers/api/file.js +24 -0
  20. package/lib/controllers/api/index.js +13 -0
  21. package/lib/controllers/index.js +16 -0
  22. package/lib/controllers/messaging/database.js +53 -0
  23. package/lib/controllers/messaging/environment.js +70 -0
  24. package/lib/express.d.js +5 -0
  25. package/lib/index.js +92 -0
  26. package/lib/middlewares/access.js +63 -0
  27. package/lib/middlewares/authentication.js +21 -0
  28. package/lib/middlewares/file.js +41 -0
  29. package/lib/middlewares/index.js +27 -0
  30. package/lib/models/Application.js +61 -0
  31. package/lib/models/Connection.js +54 -0
  32. package/lib/models/EnvConnection.js +41 -0
  33. package/lib/models/index.js +46 -0
  34. package/lib/routes/index.js +16 -0
  35. package/lib/routes/messaging/index.js +26 -0
  36. package/lib/services/error.js +49 -0
  37. package/lib/services/express.js +140 -0
  38. package/lib/services/file.js +65 -0
  39. package/lib/services/index.d.ts +1 -0
  40. package/lib/services/index.d.ts.map +1 -1
  41. package/lib/services/index.js +88 -0
  42. package/lib/services/rabitmq.js +93 -0
  43. package/lib/services/redis.js +60 -0
  44. package/lib/services/security.js +224 -0
  45. package/lib/services/sequelize.js +242 -0
  46. package/lib/services/socket.js +56 -0
  47. package/lib/services/task.js +162 -0
  48. package/lib/utils/api.js +50 -0
  49. package/lib/utils/database.js +36 -0
  50. package/lib/utils/date.js +28 -0
  51. package/lib/utils/index.d.ts +0 -1
  52. package/lib/utils/index.d.ts.map +1 -1
  53. package/lib/utils/index.js +60 -0
  54. package/lib/utils/logger.js +55 -0
  55. package/lib/utils/session.js +23 -0
  56. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _messaging = require("./messaging");
7
+ Object.keys(_messaging).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _messaging[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _messaging[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _database = _interopRequireDefault(require("../../controllers/messaging/database"));
8
+ var _environment = _interopRequireDefault(require("../../controllers/messaging/environment"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ //* Controllers
11
+ const databaseController = new _database.default();
12
+ const envController = new _environment.default();
13
+
14
+ //* Definitions
15
+ const NativeMessagingRoutes = {
16
+ /* Connections Library */
17
+ 'exodus.database.created': databaseController.created,
18
+ 'exodus.database.updated': databaseController.update,
19
+ 'exodus.database.deleted': databaseController.delete,
20
+ /* Environment Sync Database Relations */
21
+ 'exodus.environment.created': envController.created,
22
+ 'exodus.environment.deleted': envController.deleted,
23
+ 'exodus.environment.updated.token': envController.updatedToken,
24
+ 'exodus.environment.updated.database': envController.updatedDatabase
25
+ };
26
+ var _default = exports.default = NativeMessagingRoutes;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ApplicationHttpException = exports.ApplicationException = void 0;
7
+ var _logger = _interopRequireDefault(require("../utils/logger"));
8
+ var _http = require("../contracts/http");
9
+ var _core = _interopRequireDefault(require("../app/core"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ class ExodusErrorBase extends _core.default {
12
+ constructor() {
13
+ super();
14
+ }
15
+ }
16
+ class ApplicationHttpException extends ExodusErrorBase {
17
+ message;
18
+ statusCode;
19
+ level;
20
+ data;
21
+ constructor(message, statusCode = _http.EHttpResponseCode.iternalErro, level = 'error', data) {
22
+ super();
23
+ this.message = message;
24
+ this.statusCode = statusCode;
25
+ this.level = level;
26
+ this.data = data;
27
+ this.handle();
28
+ }
29
+ handle() {
30
+ (0, _logger.default)().warn(this.message, this.statusCode);
31
+ (0, _logger.default)().warn(this.data);
32
+ }
33
+ }
34
+ exports.ApplicationHttpException = ApplicationHttpException;
35
+ class ApplicationException extends ExodusErrorBase {
36
+ message;
37
+ error;
38
+ constructor(message, error) {
39
+ super();
40
+ this.message = message;
41
+ this.error = error;
42
+ this.handle();
43
+ }
44
+ handle() {
45
+ this.log(`${this.message}`, 'danger');
46
+ (0, _logger.default)().error(this.error);
47
+ }
48
+ }
49
+ exports.ApplicationException = ApplicationException;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _service = _interopRequireDefault(require("../app/service"));
8
+ var _logger = _interopRequireDefault(require("../utils/logger"));
9
+ var _cors = _interopRequireDefault(require("cors"));
10
+ var _express = _interopRequireDefault(require("express"));
11
+ require("express-async-errors");
12
+ var http = _interopRequireWildcard(require("http"));
13
+ var _pinoHttp = _interopRequireDefault(require("pino-http"));
14
+ var _http2 = require("../contracts/http");
15
+ var _error = require("./error");
16
+ var _app = require("../app");
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
+ class ExpressService extends _service.default {
21
+ server;
22
+ mainRouter;
23
+ async init() {
24
+ if (!this.mainRouter) throw new _error.ApplicationException('Need router'); //!sem router
25
+
26
+ const expss = (0, _express.default)();
27
+ const pino = (0, _pinoHttp.default)({
28
+ logger: (0, _logger.default)()
29
+ });
30
+ this.server = http.createServer(expss);
31
+ expss.use('/public', _express.default.static(_app.Core.settings.getHttp().publicPath));
32
+ expss.use(pino);
33
+ expss.use(this.responseTypeMiddleware.bind(this));
34
+ expss.use(_express.default.json());
35
+ expss.use(_express.default.urlencoded({
36
+ extended: false
37
+ }));
38
+ expss.use((0, _cors.default)({
39
+ origin: '*'
40
+ }));
41
+ expss.use(this.mainRouter);
42
+ expss.use(this.handleAuthorizationFailure.bind(this));
43
+ expss.use(this.handleNotFoud.bind(this));
44
+ expss.use(this.handleRequestProcessFailure.bind(this));
45
+ this.server.listen(_app.Core.settings.getAppication().port, () => {
46
+ (0, _logger.default)().info(`servidor iniciado na porta: ${_app.Core.settings.getAppication().port}`);
47
+ this.log(`🌍 Http Server Listering On: ${_app.Core.settings.getAppication().port}`, 'success');
48
+ });
49
+ }
50
+ getHttpServer() {
51
+ return this.server;
52
+ }
53
+ sendResponse(objResponse, res, next) {
54
+ objResponse.timestamp = Date.now();
55
+ if (!objResponse.code) objResponse.code = _http2.EHttpResponseCode.successfullyProcessedInformation;
56
+ res.status(objResponse.code);
57
+ if (objResponse.location) {
58
+ res.location(objResponse.location);
59
+ delete objResponse.location;
60
+ }
61
+ let FormulatedResponse;
62
+ switch (_app.Core.settings.getHttp().formulation) {
63
+ case 'direct':
64
+ if (objResponse['data']) {
65
+ FormulatedResponse = objResponse.data;
66
+ } else {
67
+ FormulatedResponse = objResponse;
68
+ }
69
+ break;
70
+ case 'standart':
71
+ FormulatedResponse = objResponse;
72
+ break;
73
+ default:
74
+ FormulatedResponse = objResponse;
75
+ break;
76
+ }
77
+ if (next) {
78
+ res.write(JSON.stringify(FormulatedResponse));
79
+ next();
80
+ } else {
81
+ res.send(JSON.stringify(FormulatedResponse));
82
+ }
83
+ }
84
+ responseTypeMiddleware(req, res, next) {
85
+ res.contentType('application/json');
86
+ next();
87
+ }
88
+
89
+ //* Handlers
90
+ handleNotFoud(req, res) {
91
+ this.sendResponse({
92
+ message: 'Endereço não encontrado',
93
+ type: 'warning',
94
+ status: false,
95
+ code: _http2.EHttpResponseCode.informationNotFound
96
+ }, res);
97
+ }
98
+ handleAuthorizationFailure(err, req, res, next) {
99
+ if (err.name === 'UnauthorizedError') {
100
+ throw new _error.ApplicationHttpException('Falha na autorização', _http2.EHttpResponseCode.informationUnauthorized);
101
+ } else {
102
+ next(err);
103
+ }
104
+ }
105
+ handleRequestProcessFailure = async (err, req, res, _) => {
106
+ if (err instanceof _error.ApplicationHttpException) {
107
+ return this.sendResponse({
108
+ message: err.message,
109
+ type: err.level,
110
+ status: false,
111
+ code: err.statusCode,
112
+ data: err.data
113
+ }, res);
114
+ }
115
+ this.sendResponse({
116
+ message: 'Houve um erro ao acessar este recurso',
117
+ type: 'error',
118
+ status: false,
119
+ code: 500
120
+ }, res);
121
+ new _error.ApplicationException('Erro não tratado em uma rota.', err);
122
+ };
123
+ async checkRequest(params) {
124
+ let pass = true;
125
+ const need = [];
126
+ for (const [key, param] of Object.entries(params)) {
127
+ if (!param || param === null || param.length < 1 || typeof param === 'string' && param === '' || typeof param === 'object' && Object.values(param).length < 1) {
128
+ pass = false;
129
+ need.push(key);
130
+ }
131
+ }
132
+ if (!pass) throw new _error.ApplicationHttpException('Requisição incompleta', _http2.EHttpResponseCode.incompleteRequest, 'error', {
133
+ need
134
+ });
135
+ }
136
+ registerRouter(router) {
137
+ this.mainRouter = router;
138
+ }
139
+ }
140
+ var _default = exports.default = ExpressService;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _service = _interopRequireDefault(require("../app/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 init() {
17
+ await this.checkPaths();
18
+ await this.cleanTemp();
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
+ files.forEach(file => {
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;
@@ -5,5 +5,6 @@ export { default as RabbitMQService } from './rabitmq';
5
5
  export { default as RedisService } from './redis';
6
6
  export { default as SequelizeService } from './sequelize';
7
7
  export { default as SocketIOService } from './socket';
8
+ export { default as SecurityService } from './security';
8
9
  export * from './task';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AACtD,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,YAAY,CAAC;AACxD,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,88 @@
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
+ };
15
+ Object.defineProperty(exports, "ExpressService", {
16
+ enumerable: true,
17
+ get: function () {
18
+ return _express.default;
19
+ }
20
+ });
21
+ Object.defineProperty(exports, "FileService", {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _file.default;
25
+ }
26
+ });
27
+ Object.defineProperty(exports, "RabbitMQService", {
28
+ enumerable: true,
29
+ get: function () {
30
+ return _rabitmq.default;
31
+ }
32
+ });
33
+ Object.defineProperty(exports, "RedisService", {
34
+ enumerable: true,
35
+ get: function () {
36
+ return _redis.default;
37
+ }
38
+ });
39
+ Object.defineProperty(exports, "SecurityService", {
40
+ enumerable: true,
41
+ get: function () {
42
+ return _security.default;
43
+ }
44
+ });
45
+ Object.defineProperty(exports, "SequelizeService", {
46
+ enumerable: true,
47
+ get: function () {
48
+ return _sequelize.default;
49
+ }
50
+ });
51
+ Object.defineProperty(exports, "SocketIOService", {
52
+ enumerable: true,
53
+ get: function () {
54
+ return _socket.default;
55
+ }
56
+ });
57
+ var _error = require("./error");
58
+ Object.keys(_error).forEach(function (key) {
59
+ if (key === "default" || key === "__esModule") return;
60
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
61
+ if (key in exports && exports[key] === _error[key]) return;
62
+ Object.defineProperty(exports, key, {
63
+ enumerable: true,
64
+ get: function () {
65
+ return _error[key];
66
+ }
67
+ });
68
+ });
69
+ var _express = _interopRequireDefault(require("./express"));
70
+ var _file = _interopRequireDefault(require("./file"));
71
+ var _rabitmq = _interopRequireDefault(require("./rabitmq"));
72
+ var _redis = _interopRequireDefault(require("./redis"));
73
+ var _sequelize = _interopRequireDefault(require("./sequelize"));
74
+ var _socket = _interopRequireDefault(require("./socket"));
75
+ var _security = _interopRequireDefault(require("./security"));
76
+ var _task = require("./task");
77
+ Object.keys(_task).forEach(function (key) {
78
+ if (key === "default" || key === "__esModule") return;
79
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
80
+ if (key in exports && exports[key] === _task[key]) return;
81
+ Object.defineProperty(exports, key, {
82
+ enumerable: true,
83
+ get: function () {
84
+ return _task[key];
85
+ }
86
+ });
87
+ });
88
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _service = _interopRequireDefault(require("../app/service"));
8
+ var _amqplib = _interopRequireDefault(require("amqplib"));
9
+ var _error = require("./error");
10
+ var _app = require("../app");
11
+ var _messaging = _interopRequireDefault(require("../routes/messaging"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ /**
14
+ * Serviço de Mensageria
15
+ *
16
+ * @class RabbitMQService
17
+ * @extends {Service}
18
+ * @implements {IService}
19
+ */
20
+ class RabbitMQService extends _service.default {
21
+ connection;
22
+ channel;
23
+ connected;
24
+ mainRouter;
25
+
26
+ //# Initialization
27
+ constructor() {
28
+ super();
29
+ }
30
+ async init() {
31
+ if (!this.mainRouter) throw new _error.ApplicationException('Need router'); //!sem router
32
+
33
+ this.mainRouter = {
34
+ ...this.mainRouter,
35
+ ..._messaging.default
36
+ }; // # Register native router
37
+ await this.connect();
38
+ }
39
+ registerHandles() {
40
+ for (const [queue, handle] of Object.entries(this.mainRouter)) {
41
+ this.consumeFromQueue(queue, handle);
42
+ }
43
+ }
44
+ async connect() {
45
+ if (this.connected && this.channel) return;else this.connected = true;
46
+ try {
47
+ this.log(`⌛️ Connecting to Rabbit-MQ Server`);
48
+ this.connection = await _amqplib.default.connect(`amqp://${_app.Core.settings.getMessaging().user}:${_app.Core.settings.getMessaging().pass}@${_app.Core.settings.getMessaging().host}:5672`);
49
+ this.log(`✅ Rabbit MQ Connection is ready`);
50
+ this.channel = await this.connection.createChannel();
51
+ this.log(`🛸 Created RabbitMQ Channel successfully`);
52
+ this.registerHandles();
53
+ } catch (error) {
54
+ new _error.ApplicationException(`Not connected to MQ Server`, error);
55
+ }
56
+ }
57
+
58
+ //# Common
59
+ async sendToQueue(queue, data) {
60
+ try {
61
+ if (!this.channel) {
62
+ await this.connect();
63
+ }
64
+ this.channel.sendToQueue(queue, Buffer.from(JSON.stringify(data)));
65
+ } catch (error) {
66
+ new _error.ApplicationException('Houve um erro no envio de uma mensagem para o rabitmq', error);
67
+ }
68
+ }
69
+ async consumeFromQueue(queue, callBack) {
70
+ await this.channel.assertQueue(queue, {
71
+ durable: true
72
+ });
73
+ this.channel.consume(queue, msg => {
74
+ {
75
+ if (!msg) {
76
+ return this.log(`Invalid incoming message in`);
77
+ }
78
+ try {
79
+ callBack(JSON.parse(msg.content.toString()), () => this.channel.ack(msg));
80
+ } catch (error) {
81
+ this.channel.ack(msg);
82
+ new _error.ApplicationException('Error on parsing message from queue', error);
83
+ }
84
+ }
85
+ }, {
86
+ noAck: false
87
+ });
88
+ }
89
+ registerRouter(router) {
90
+ this.mainRouter = router;
91
+ }
92
+ }
93
+ var _default = exports.default = RabbitMQService;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _service = _interopRequireDefault(require("../app/service"));
8
+ var _redis = require("redis");
9
+ var _error = require("./error");
10
+ var _app = require("../app");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ /**
13
+ * Serviço de cache
14
+ *
15
+ * @class RedisService
16
+ * @extends {Service}
17
+ * @implements {IService}
18
+ */
19
+ class RedisService extends _service.default {
20
+ client;
21
+
22
+ //* Initialization
23
+ async init() {
24
+ this.client = (0, _redis.createClient)({
25
+ url: `redis://${_app.Core.settings.getCache().host}:${_app.Core.settings.getCache().port}`,
26
+ password: _app.Core.settings.getCache().password
27
+ });
28
+ await this.connect();
29
+ }
30
+ connect() {
31
+ this.client.on('error', this.onClientError.bind(this));
32
+ return new Promise(resolve => {
33
+ this.client.connect().then(() => {
34
+ this.log('Redis client connected.', 'success');
35
+ resolve(true);
36
+ });
37
+ });
38
+ }
39
+ async disconnect() {
40
+ await this.client.quit();
41
+ }
42
+
43
+ //* Common
44
+ async setValue(key, value) {
45
+ await this.client.set(key, value);
46
+ }
47
+ async getValue(key) {
48
+ const value = await this.client.get(key);
49
+ return value;
50
+ }
51
+ async deleteValue(key) {
52
+ await this.client.del(key);
53
+ }
54
+
55
+ //* Events
56
+ onClientError(err) {
57
+ new _error.ApplicationException('Error on init redis client', err);
58
+ }
59
+ }
60
+ var _default = exports.default = RedisService;