prisma-error-formatter
Version:
A flexible and customizable Prisma error formatter to simplify and unify error handling in Prisma Client applications.
48 lines (47 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaExceptionFormatter = void 0;
const library_1 = require("@prisma/client/runtime/library");
const default_formatters_1 = require("./default-formatters");
class PrismaExceptionFormatter {
constructor(options) {
this.customFormat = options === null || options === void 0 ? void 0 : options.format;
}
applyFormat(type, error, defaults) {
return this.customFormat
? this.customFormat({ type, error, default: defaults })
: defaults;
}
formatPrismaError(exception) {
const defaults = (0, default_formatters_1.formatKnownError)(exception);
return this.applyFormat("known", exception, defaults);
}
formatQueryError(exception) {
const defaults = (0, default_formatters_1.formatValidationError)(exception);
return this.applyFormat("validation", exception, defaults);
}
formatInitializationError(exception) {
const defaults = (0, default_formatters_1.formatInitializationError)(exception);
return this.applyFormat("initialization", exception, defaults);
}
formatUnknownError(exception) {
const defaults = (0, default_formatters_1.formatUnknownError)(exception);
return this.applyFormat("unknown", exception, defaults);
}
formatError(exception) {
if (exception instanceof library_1.PrismaClientKnownRequestError) {
return this.formatPrismaError(exception);
}
else if (exception instanceof library_1.PrismaClientValidationError ||
exception instanceof library_1.PrismaClientRustPanicError) {
return this.formatQueryError(exception);
}
else if (exception instanceof library_1.PrismaClientInitializationError) {
return this.formatInitializationError(exception);
}
else {
return this.formatUnknownError(exception);
}
}
}
exports.PrismaExceptionFormatter = PrismaExceptionFormatter;