UNPKG

@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
'use strict'; 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, };