sqs-consumer
Version:
Build SQS-based Node applications without the boilerplate
46 lines (45 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypedEventEmitter = void 0;
const node_events_1 = require("node:events");
const logger_js_1 = require("./logger.js");
class TypedEventEmitter extends node_events_1.EventEmitter {
/**
* @param queueUrl - The URL of the SQS queue this emitter is associated with
*/
constructor(queueUrl) {
super();
this.queueUrl = queueUrl;
}
/**
* Trigger a listener on all emitted events
* @param event The name of the event to listen to
* @param listener A function to trigger when the event is emitted
*/
on(event, listener) {
return super.on(event, listener);
}
/**
* Trigger a listener only once for an emitted event
* @param event The name of the event to listen to
* @param listener A function to trigger when the event is emitted
*/
once(event, listener) {
return super.once(event, listener);
}
/**
* Emits an event with the provided arguments and adds queue metadata
* @param event The name of the event to emit
* @param args The arguments to pass to the event listeners
* @returns {boolean} Returns true if the event had listeners, false otherwise
* @example
* // Inside a method:
* this.emit('message_received', message);
*/
emit(event, ...args) {
const metadata = { queueUrl: this.queueUrl };
logger_js_1.logger.debug(event, ...args, metadata);
return super.emit(event, ...args, metadata);
}
}
exports.TypedEventEmitter = TypedEventEmitter;