@thisisagile/easy-express
Version:
Straightforward library for building domain-driven microservice architectures
37 lines (36 loc) • 1.77 kB
JavaScript
import {
isAuthError
} from "../chunk-RL5ICAHT.mjs";
// src/express/ErrorHandler.ts
import {
asString,
choose,
ctx,
HttpStatus,
isDoesNotExist,
isError,
isException,
isResponse,
isResults,
isText,
rest,
toHttpStatus,
toResult,
tryTo
} from "@thisisagile/easy";
import { toOriginatedError } from "@thisisagile/easy-service";
var toResponse = (status, errors = []) => ({
status,
body: rest.toError(status, errors)
});
var toBody = ({ origin, options }) => {
return choose(origin).type(isAuthError, (ae) => toResponse(toHttpStatus(ae.status), [toResult(ae.message)])).type(isDoesNotExist, (e) => toResponse(options?.onNotFound ?? HttpStatus.NotFound, [toResult(e.reason ?? e.message)])).type(isError, (e) => toResponse(HttpStatus.InternalServerError, [toResult(e.message)])).type(isResults, (r) => toResponse(options?.onError ?? HttpStatus.BadRequest, r.results)).type(isResponse, (r) => toResponse(HttpStatus.InternalServerError, r.body.error?.errors)).type(isException, (e) => toResponse(options?.onError ?? HttpStatus.BadRequest, [toResult(e.reason ?? e.message)])).type(isText, (t) => toResponse(options?.onError ?? HttpStatus.BadRequest, [toResult(asString(t))])).else(() => toResponse(HttpStatus.InternalServerError, [toResult("Unknown error")]));
};
var error = (e, req, res, _next) => {
let response;
tryTo(() => toOriginatedError(e)).map((oe) => toBody(oe)).accept((r) => response = r).accept((r) => ctx.request.lastError = r.status.isServerError ? r.body.error?.errors[0]?.message : void 0).accept((r) => ctx.request.lastErrorStack = r.status.isServerError ? e.stack : void 0).recover(() => response).accept((r) => res.status(r.status.status).json(r.body));
};
export {
error
};
//# sourceMappingURL=ErrorHandler.mjs.map