UNPKG

@piggly/fastify-chassis

Version:

An ESM/CommonJS toolkit to help you to do common operations in your back-end applications with Fastify and NodeJS.

63 lines 2.22 kB
import { EventPayload, EventBus } from '@piggly/event-bus'; import { LoggerService } from '@piggly/ddd-toolkit'; /** * @file This event should be published when an error occurs. * @since 7.0.0 * @copyright Piggly Lab 2025 * @author Caique Araujo <caique@piggly.com.br> */ export class ApplicationErrorEvent extends EventPayload { /** * Create a new instance of the event. * * @param {Error} error The error. * @param {string} hash The hash. * @memberof ApplicationErrorEvent * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ constructor(error, hash) { super('APPLICATION_ERROR_EVENT', { error: error.message, hash, raw: error, }); } /** * Publish the event. * * This event should be completed on a graceful shutdown or interruption. * But use carrefully, as it will heavily increase memory usage if you have a lot of * events to wait. * * If you don't use the EventBus.interface.cleanup you * may change flag removing "wait_onclean" to false when * publishing this event. * * It will be logged as error when log is true. with parameters: * - event: APPLICATION_ERROR_EVENT * - hash: hash * - message: error.message * - stack: error.stack * * If you enable FileLogStreamService on LoggerService, the message will be: * [date-time] [uuid] (error) "APPLICATION_ERROR_EVENT" - "hash" - "error.message" - "error.stack" * * @param {Error} error The error. * @param {string} hash The hash. * @param {EventOptions} options The options. * @public * @static * @memberof ApplicationErrorEvent * @since 7.0.0 * @author Caique Araujo <caique@piggly.com.br> */ static publish(error, hash, options = { log: true, wait_onclean: true }) { const event = new ApplicationErrorEvent(error, hash); if (options.log) { LoggerService.softResolve().error(`APPLICATION_ERROR_EVENT`, hash, error.message, error.stack); } EventBus.instance.send(event, options.wait_onclean); } } //# sourceMappingURL=ApplicationErrorEvent.js.map