@middy/http-error-handler
Version:
Http error handler middleware for the middy framework
47 lines (45 loc) • 1.57 kB
JavaScript
import { jsonSafeParse, normalizeHttpResponse } from '@middy/util';
const defaults = {
logger: console.error,
fallbackMessage: null
};
const httpErrorHandlerMiddleware = (opts = {})=>{
const options = {
...defaults,
...opts
};
const httpErrorHandlerMiddlewareOnError = async (request)=>{
if (request.response !== undefined) return;
if (typeof options.logger === 'function') {
options.logger(request.error);
}
if (request.error.statusCode && request.error.expose === undefined) {
request.error.expose = request.error.statusCode < 500;
}
if (options.fallbackMessage && (!request.error.statusCode || !request.error.expose)) {
request.error = {
statusCode: 500,
message: options.fallbackMessage,
expose: true
};
}
if (request.error.expose) {
normalizeHttpResponse(request);
const { statusCode , message } = request.error;
request.response = {
...request.response,
statusCode: statusCode,
body: message,
headers: {
...request.response.headers,
'Content-Type': typeof jsonSafeParse(message) === 'string' ? 'text/plain' : 'application/json'
}
};
}
};
return {
onError: httpErrorHandlerMiddlewareOnError
};
};
export default httpErrorHandlerMiddleware;
//# sourceMappingURL=index.js.map