fix(events): guard extra spread and prevent core field override

- Use (extra ?? {}) to handle undefined extra safely
- Spread extra first to prevent overriding core fields like event, instance, data
- Applied fix to all 7 event controllers

Addresses Sourcery AI review feedback.
This commit is contained in:
Alexandre Martins 2025-11-26 15:48:53 -03:00
parent fa6b5c28a6
commit 930d32df3a
8 changed files with 7 additions and 7 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -285,6 +285,7 @@ export class KafkaController extends EventController implements EventControllerI
const logEnabled = configService.get<Log>('LOG').LEVEL.includes('WEBHOOKS');
const message = {
...(extra ?? {}),
event,
instance: instanceName,
data,
@ -293,7 +294,6 @@ export class KafkaController extends EventController implements EventControllerI
sender,
apikey: apiKey,
timestamp: Date.now(),
...extra,
};
const messageValue = JSON.stringify(message);

View File

@ -66,6 +66,7 @@ export class NatsController extends EventController implements EventControllerIn
const logEnabled = configService.get<Log>('LOG').LEVEL.includes('WEBHOOKS');
const message = {
...(extra ?? {}),
event,
instance: instanceName,
data,
@ -73,7 +74,6 @@ export class NatsController extends EventController implements EventControllerIn
date_time: dateTime,
sender,
apikey: apiKey,
...extra,
};
// Instância específica

View File

@ -134,6 +134,7 @@ export class PusherController extends EventController implements EventController
const enabledLog = configService.get<Log>('LOG').LEVEL.includes('WEBHOOKS');
const eventName = event.replace(/_/g, '.').toLowerCase();
const pusherData = {
...(extra ?? {}),
event,
instance: instanceName,
data,
@ -142,7 +143,6 @@ export class PusherController extends EventController implements EventController
sender,
server_url: serverUrl,
apikey: apiKey,
...extra,
};
if (event == 'qrcode.updated') {
delete pusherData.data.qrcode.base64;

View File

@ -234,6 +234,7 @@ export class RabbitmqController extends EventController implements EventControll
const logEnabled = configService.get<Log>('LOG').LEVEL.includes('WEBHOOKS');
const message = {
...(extra ?? {}),
event,
instance: instanceName,
data,
@ -241,7 +242,6 @@ export class RabbitmqController extends EventController implements EventControll
date_time: dateTime,
sender,
apikey: apiKey,
...extra,
};
if (instanceRabbitmq?.enabled && this.amqpChannel) {

View File

@ -129,6 +129,7 @@ export class SqsController extends EventController implements EventControllerInt
const sqsUrl = `https://sqs.${sqsConfig.REGION}.amazonaws.com/${sqsConfig.ACCOUNT_ID}/${queueName}`;
const message = {
...(extra ?? {}),
event,
instance: instanceName,
dataType: 'json',
@ -138,7 +139,6 @@ export class SqsController extends EventController implements EventControllerInt
date_time: dateTime,
sender,
apikey: apiKey,
...extra,
};
const jsonStr = JSON.stringify(message);

View File

@ -91,6 +91,7 @@ export class WebhookController extends EventController implements EventControlle
const regex = /^(https?:\/\/)/;
const webhookData = {
...(extra ?? {}),
event,
instance: instanceName,
data,
@ -99,7 +100,6 @@ export class WebhookController extends EventController implements EventControlle
sender,
server_url: serverUrl,
apikey: apiKey,
...extra,
};
if (local && instance?.enabled) {

View File

@ -128,6 +128,7 @@ export class WebsocketController extends EventController implements EventControl
const configEv = event.replace(/[.-]/gm, '_').toUpperCase();
const logEnabled = configService.get<Log>('LOG').LEVEL.includes('WEBSOCKET');
const message = {
...(extra ?? {}),
event,
instance: instanceName,
data,
@ -135,7 +136,6 @@ export class WebsocketController extends EventController implements EventControl
date_time: dateTime,
sender,
apikey: apiKey,
...extra,
};
if (configService.get<Websocket>('WEBSOCKET')?.GLOBAL_EVENTS) {