UNPKG

sqs-consumer

Version:

Build SQS-based Node applications without the boilerplate

46 lines (45 loc) 1.61 kB
"use strict"; 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;