@digicms/cms
Version:
An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite
88 lines (78 loc) • 1.59 kB
JavaScript
;
const createError = require('http-errors');
const {
NotFoundError,
UnauthorizedError,
ForbiddenError,
PayloadTooLargeError,
RateLimitError,
NotImplementedError,
} = require('@strapi/utils').errors;
const mapErrorsAndStatus = [
{
classError: UnauthorizedError,
status: 401,
},
{
classError: ForbiddenError,
status: 403,
},
{
classError: NotFoundError,
status: 404,
},
{
classError: PayloadTooLargeError,
status: 413,
},
{
classError: RateLimitError,
status: 429,
},
{
classError: NotImplementedError,
status: 501,
},
];
const formatApplicationError = (error) => {
const errorAndStatus = mapErrorsAndStatus.find((pair) => error instanceof pair.classError);
const status = errorAndStatus ? errorAndStatus.status : 400;
return {
status,
body: {
data: null,
error: {
status,
name: error.name,
message: error.message,
details: error.details,
},
},
};
};
const formatHttpError = (error) => {
return {
status: error.status,
body: {
data: null,
error: {
status: error.status,
name: error.name,
message: error.message,
details: error.details,
},
},
};
};
const formatInternalError = (error) => {
const httpError = createError(error);
if (httpError.expose) {
return formatHttpError(httpError);
}
return formatHttpError(createError(httpError.status || 500));
};
module.exports = {
formatApplicationError,
formatHttpError,
formatInternalError,
};