exodus-framework 2.0.772 → 2.0.774
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/lib/app/settings.js +1 -1
- package/lib/contracts/messaging.d.ts +27 -2
- package/lib/contracts/messaging.d.ts.map +1 -1
- package/lib/contracts/messaging.js +2 -0
- package/lib/routes/api/v1/index.d.ts +1 -0
- package/lib/routes/api/v1/index.d.ts.map +1 -1
- package/lib/routes/api/v1/index.js +11 -0
- package/lib/routes/api/v1/sse.d.ts +2 -0
- package/lib/routes/api/v1/sse.d.ts.map +1 -0
- package/lib/routes/api/v1/sse.js +36 -0
- package/lib/services/rabitmq.d.ts +1 -1
- package/lib/services/rabitmq.d.ts.map +1 -1
- package/lib/services/rabitmq.js +5 -2
- package/package.json +1 -1
package/lib/app/settings.js
CHANGED
@@ -17,7 +17,9 @@ export declare enum EMessagingQueue {
|
|
17
17
|
applicationCreated = "exodus.application.created",
|
18
18
|
applicationUpdate = "exodus.application.updated",
|
19
19
|
applicationDeleted = "exodus.application.deleted",
|
20
|
-
smsSend = "exodus.sms.send"
|
20
|
+
smsSend = "exodus.sms.send",
|
21
|
+
smsCreateWallet = "exodus.sms.create.wallet",
|
22
|
+
smsConfirmationCreateWallet = "exodus.sms.confirmation.create.wallet"
|
21
23
|
}
|
22
24
|
export type TMessageQueueDataMap = {
|
23
25
|
[EMessagingQueue.test]: {
|
@@ -62,8 +64,31 @@ export type TMessageQueueDataMap = {
|
|
62
64
|
phone: string;
|
63
65
|
message: string;
|
64
66
|
campaignId: string;
|
67
|
+
walletId?: string;
|
68
|
+
tenantId: string;
|
65
69
|
};
|
70
|
+
[EMessagingQueue.smsCreateWallet]: {
|
71
|
+
name: string;
|
72
|
+
type: 'MAIN' | 'CAMPAIGN' | 'COMMON';
|
73
|
+
description: string;
|
74
|
+
params: Record<string, any>;
|
75
|
+
tenantId: string;
|
76
|
+
};
|
77
|
+
[EMessagingQueue.smsConfirmationCreateWallet]: {
|
78
|
+
walletId: string;
|
79
|
+
type: 'MAIN' | 'CAMPAIGN' | 'COMMON';
|
80
|
+
description: string;
|
81
|
+
params: Record<string, any>;
|
82
|
+
tenantId: string;
|
83
|
+
} & {
|
84
|
+
originalTransaction: TMessagingTransaction;
|
85
|
+
};
|
86
|
+
};
|
87
|
+
export type TMessagingTransaction = {
|
88
|
+
id: string;
|
66
89
|
};
|
67
|
-
export type TMessagingQueueHandler<K extends keyof TMessageQueueDataMap = any> = (data: TMessageQueueDataMap[K]
|
90
|
+
export type TMessagingQueueHandler<K extends keyof TMessageQueueDataMap = any> = (data: TMessageQueueDataMap[K] & {
|
91
|
+
transaction: TMessagingTransaction;
|
92
|
+
}, ack: () => void, serviceId?: string, transactionId?: string) => void;
|
68
93
|
export type TMessagingQueueEventList = Partial<Record<keyof TMessageQueueDataMap, TMessagingQueueHandler>>;
|
69
94
|
//# sourceMappingURL=messaging.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/contracts/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE9E,oBAAY,eAAe;IACzB,IAAI,sBAAsB;IAG1B,cAAc,2BAA2B;IAGzC,eAAe,4BAA4B;IAC3C,kBAAkB,+BAA+B;IACjD,kBAAkB,+BAA+B;IACjD,uBAAuB,qCAAqC;IAC5D,0BAA0B,wCAAwC;IAGlE,YAAY,yBAAyB;IACrC,eAAe,4BAA4B;IAC3C,cAAc,4BAA4B;IAC1C,eAAe,4BAA4B;IAG3C,eAAe,4BAA4B;IAC3C,kBAAkB,+BAA+B;IACjD,iBAAiB,+BAA+B;IAChD,kBAAkB,+BAA+B;IAEjD,OAAO,oBAAoB;
|
1
|
+
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/contracts/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE9E,oBAAY,eAAe;IACzB,IAAI,sBAAsB;IAG1B,cAAc,2BAA2B;IAGzC,eAAe,4BAA4B;IAC3C,kBAAkB,+BAA+B;IACjD,kBAAkB,+BAA+B;IACjD,uBAAuB,qCAAqC;IAC5D,0BAA0B,wCAAwC;IAGlE,YAAY,yBAAyB;IACrC,eAAe,4BAA4B;IAC3C,cAAc,4BAA4B;IAC1C,eAAe,4BAA4B;IAG3C,eAAe,4BAA4B;IAC3C,kBAAkB,+BAA+B;IACjD,iBAAiB,+BAA+B;IAChD,kBAAkB,+BAA+B;IAEjD,OAAO,oBAAoB;IAC3B,eAAe,6BAA6B;IAC5C,2BAA2B,0CAA0C;CACtE;AAGD,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;QACtB,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;IACF,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IAG3C,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IAClD,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC;IACnD,CAAC,eAAe,CAAC,uBAAuB,CAAC,EAAE;QACzC,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,CAAC,eAAe,CAAC,0BAA0B,CAAC,EAAE;QAC5C,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE;QACpC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/C,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC;IAChD,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;KAC9B,CAAC;IACF,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAGpD,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IAClD,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC;IACnD,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE;QACnC,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;KAC/B,CAAC;IACF,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAGvD,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,CAAC,eAAe,CAAC,2BAA2B,CAAC,EAAE;QAC7C,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG;QAAE,mBAAmB,EAAE,qBAAqB,CAAA;KAAE,CAAC;CACpD,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AACF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,oBAAoB,GAAG,GAAG,IAAI,CAC/E,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAAE,WAAW,EAAE,qBAAqB,CAAA;CAAE,EACtE,GAAG,EAAE,MAAM,IAAI,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,KACnB,IAAI,CAAC;AAEV,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,MAAM,CAAC,MAAM,oBAAoB,EAAE,sBAAsB,CAAC,CAC3D,CAAC"}
|
@@ -21,5 +21,7 @@ let EMessagingQueue = exports.EMessagingQueue = /*#__PURE__*/function (EMessagin
|
|
21
21
|
EMessagingQueue["applicationUpdate"] = "exodus.application.updated";
|
22
22
|
EMessagingQueue["applicationDeleted"] = "exodus.application.deleted";
|
23
23
|
EMessagingQueue["smsSend"] = "exodus.sms.send";
|
24
|
+
EMessagingQueue["smsCreateWallet"] = "exodus.sms.create.wallet";
|
25
|
+
EMessagingQueue["smsConfirmationCreateWallet"] = "exodus.sms.confirmation.create.wallet";
|
24
26
|
return EMessagingQueue;
|
25
27
|
}({}); // Mapeamento de tópicos para tipos
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/api/v1/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/api/v1/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"}
|
@@ -13,4 +13,15 @@ Object.keys(_logs).forEach(function (key) {
|
|
13
13
|
return _logs[key];
|
14
14
|
}
|
15
15
|
});
|
16
|
+
});
|
17
|
+
var _sse = require("./sse");
|
18
|
+
Object.keys(_sse).forEach(function (key) {
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
20
|
+
if (key in exports && exports[key] === _sse[key]) return;
|
21
|
+
Object.defineProperty(exports, key, {
|
22
|
+
enumerable: true,
|
23
|
+
get: function () {
|
24
|
+
return _sse[key];
|
25
|
+
}
|
26
|
+
});
|
16
27
|
});
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../../src/routes/api/v1/sse.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,4CAAW,CAAC"}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.sseRouter = void 0;
|
7
|
+
var _express = require("express");
|
8
|
+
const sseRouter = exports.sseRouter = (0, _express.Router)();
|
9
|
+
sseRouter.route('/sse').post((req, res) => {
|
10
|
+
// Definir cabeçalhos SSE
|
11
|
+
res.setHeader('Content-Type', 'text/event-stream');
|
12
|
+
res.setHeader('Cache-Control', 'no-cache');
|
13
|
+
res.setHeader('Connection', 'keep-alive');
|
14
|
+
res.flushHeaders(); // Enviar headers imediatamente
|
15
|
+
|
16
|
+
// Função para enviar eventos
|
17
|
+
const sendEvent = data => {
|
18
|
+
res.write(`data: ${data}\n\n`); // Formatação para SSE
|
19
|
+
};
|
20
|
+
|
21
|
+
// Enviar um evento inicial
|
22
|
+
sendEvent('Conexão SSE estabelecida!');
|
23
|
+
|
24
|
+
// Exemplo: enviar eventos periodicamente
|
25
|
+
const intervalId = setInterval(() => {
|
26
|
+
const message = `Mensagem do servidor: ${new Date().toLocaleTimeString()}`;
|
27
|
+
sendEvent(message);
|
28
|
+
}, 5000);
|
29
|
+
|
30
|
+
// Limpar intervalo e encerrar conexão quando o cliente fechar a conexão
|
31
|
+
req.on('close', () => {
|
32
|
+
clearInterval(intervalId);
|
33
|
+
res.end();
|
34
|
+
console.log('Conexão SSE fechada.');
|
35
|
+
});
|
36
|
+
});
|
@@ -11,7 +11,7 @@ declare class RabbitMQService extends Service implements IService {
|
|
11
11
|
init(): Promise<void>;
|
12
12
|
registerHandles(): Promise<void>;
|
13
13
|
connect(): Promise<void>;
|
14
|
-
sendToQueue<K extends keyof TMessageQueueDataMap>(topic: K, data: TMessageQueueDataMap[K]): Promise
|
14
|
+
sendToQueue<K extends keyof TMessageQueueDataMap>(topic: K, data: TMessageQueueDataMap[K]): Promise<`${string}-${string}-${string}-${string}-${string}`>;
|
15
15
|
consumeFromQueue(msg: client.ConsumeMessage): Promise<void>;
|
16
16
|
registerRouter(router: TMessagingQueueEventList): void;
|
17
17
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rabitmq.d.ts","sourceRoot":"","sources":["../../src/services/rabitmq.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAUhD,cAAM,eAAgB,SAAQ,OAAQ,YAAW,QAAQ;IACvD,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,EAAG,OAAO,CAAC;IAClB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,UAAU,CAA2B;;IAMvC,IAAI;IAMJ,eAAe;IAiBf,OAAO;IAwBP,WAAW,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"rabitmq.d.ts","sourceRoot":"","sources":["../../src/services/rabitmq.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAUhD,cAAM,eAAgB,SAAQ,OAAQ,YAAW,QAAQ;IACvD,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,EAAG,OAAO,CAAC;IAClB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,UAAU,CAA2B;;IAMvC,IAAI;IAMJ,eAAe;IAiBf,OAAO;IAwBP,WAAW,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAoBzF,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc;IAqBjD,cAAc,CAAC,MAAM,EAAE,wBAAwB;CAGhD;AAED,eAAe,eAAe,CAAC"}
|
package/lib/services/rabitmq.js
CHANGED
@@ -8,6 +8,7 @@ var _amqplib = _interopRequireDefault(require("amqplib"));
|
|
8
8
|
var _app = require("../app");
|
9
9
|
var _service = _interopRequireDefault(require("../app/service"));
|
10
10
|
var _messaging = _interopRequireDefault(require("../routes/messaging"));
|
11
|
+
var _crypto = require("crypto");
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
12
13
|
/**
|
13
14
|
* Serviço de Mensageria
|
@@ -69,13 +70,15 @@ class RabbitMQService extends _service.default {
|
|
69
70
|
if (!this.channel) {
|
70
71
|
await this.connect();
|
71
72
|
}
|
73
|
+
const transactionId = (0, _crypto.randomUUID)();
|
72
74
|
this.channel.publish(_app.Core.settings.getMessaging().exchanges.main, topic, Buffer.from(JSON.stringify({
|
73
75
|
data,
|
74
76
|
serviceId: _app.Core.settings.getAppication().appId
|
75
77
|
})), {
|
76
|
-
messageId:
|
78
|
+
messageId: transactionId,
|
77
79
|
persistent: true
|
78
80
|
});
|
81
|
+
return transactionId;
|
79
82
|
} catch (error) {
|
80
83
|
new _app.ErrorHandler('Houve um erro no envio de uma mensagem para o rabitmq', error);
|
81
84
|
}
|
@@ -88,7 +91,7 @@ class RabbitMQService extends _service.default {
|
|
88
91
|
const topic = msg.fields.routingKey;
|
89
92
|
const content = JSON.parse(msg.content.toString());
|
90
93
|
const callBack = this.mainRouter[topic];
|
91
|
-
callBack(content.data, () => this.channel.ack(msg), content.serviceId);
|
94
|
+
callBack(content.data, () => this.channel.ack(msg), content.serviceId, msg.properties.messageId);
|
92
95
|
} catch (error) {
|
93
96
|
this.channel.ack(msg);
|
94
97
|
new _app.ErrorHandler('Error on parsing message from queue', error);
|