UNPKG

pg-transactional-outbox

Version:

A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).

54 lines 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ensureExtendedError = exports.MessageError = exports.TransactionalOutboxInboxError = void 0; /** An error that was raised from the transactional outbox/inbox library. Includes an error code. */ class TransactionalOutboxInboxError extends Error { constructor(message, errorCode, innerError) { super(message); this.errorCode = errorCode; this.name = this.constructor.name; this.innerError = ensureError(innerError); } } exports.TransactionalOutboxInboxError = TransactionalOutboxInboxError; /** An error that was raised when handling an outbox/inbox message. */ class MessageError extends TransactionalOutboxInboxError { constructor(message, errorCode, messageObject, innerError) { super(message, errorCode, innerError); this.messageObject = messageObject; this.name = this.constructor.name; } } exports.MessageError = MessageError; /** * Returns the error as verified Error object or wraps the input as * ExtendedError with error code and potential innerError. * @param error The error variable to check * @param fallbackErrorCode The error code to use if the message is not already a TransactionalOutboxInboxError. * @param message The message object to use if the message is not a TransactionalOutboxInboxError. * @returns The error if the input was already an error otherwise a wrapped error. Enriched with the error code property. */ const ensureExtendedError = (error, fallbackErrorCode, message) => { if (error instanceof TransactionalOutboxInboxError) { return error; } const err = ensureError(error); if (message) { return new MessageError(err.message, fallbackErrorCode, message, err); } else { err.errorCode = fallbackErrorCode; return err; } }; exports.ensureExtendedError = ensureExtendedError; const ensureError = (error) => { if (error === null || error === undefined) { return undefined; } if (error instanceof Error) { return error; } return new Error(String(error)); }; //# sourceMappingURL=error.js.map