@fastify/sensible
Version:
Defaults for Fastify that everyone can agree on
193 lines (146 loc) • 5.55 kB
JavaScript
const createError = require('http-errors')
const statusCodes = require('node:http').STATUS_CODES
const statusCodesMap = Object.assign({}, statusCodes)
Object.keys(statusCodesMap).forEach(code => {
statusCodesMap[code] = normalize(code, statusCodesMap[code])
})
function normalize (code, msg) {
if (code === '414') return 'uriTooLong'
if (code === '505') return 'httpVersionNotSupported'
msg = msg.split(' ').join('').replace(/'/g, '')
msg = msg[0].toLowerCase() + msg.slice(1)
return msg
}
const httpErrors = {
badRequest: function badRequest (message) {
return new createError.BadRequest(message)
},
unauthorized: function unauthorized (message) {
return new createError.Unauthorized(message)
},
paymentRequired: function paymentRequired (message) {
return new createError.PaymentRequired(message)
},
forbidden: function forbidden (message) {
return new createError.Forbidden(message)
},
notFound: function notFound (message) {
return new createError.NotFound(message)
},
methodNotAllowed: function methodNotAllowed (message) {
return new createError.MethodNotAllowed(message)
},
notAcceptable: function notAcceptable (message) {
return new createError.NotAcceptable(message)
},
proxyAuthenticationRequired: function proxyAuthenticationRequired (message) {
return new createError.ProxyAuthenticationRequired(message)
},
requestTimeout: function requestTimeout (message) {
return new createError.RequestTimeout(message)
},
conflict: function conflict (message) {
return new createError.Conflict(message)
},
gone: function gone (message) {
return new createError.Gone(message)
},
lengthRequired: function lengthRequired (message) {
return new createError.LengthRequired(message)
},
preconditionFailed: function preconditionFailed (message) {
return new createError.PreconditionFailed(message)
},
payloadTooLarge: function payloadTooLarge (message) {
return new createError.PayloadTooLarge(message)
},
uriTooLong: function uriTooLong (message) {
return new createError.URITooLong(message)
},
unsupportedMediaType: function unsupportedMediaType (message) {
return new createError.UnsupportedMediaType(message)
},
rangeNotSatisfiable: function rangeNotSatisfiable (message) {
return new createError.RangeNotSatisfiable(message)
},
expectationFailed: function expectationFailed (message) {
return new createError.ExpectationFailed(message)
},
imateapot: function imateapot (message) {
return new createError.ImATeapot(message)
},
misdirectedRequest: function misdirectedRequest (message) {
return new createError.MisdirectedRequest(message)
},
unprocessableEntity: function unprocessableEntity (message) {
return new createError.UnprocessableEntity(message)
},
locked: function locked (message) {
return new createError.Locked(message)
},
failedDependency: function failedDependency (message) {
return new createError.FailedDependency(message)
},
tooEarly: function tooEarly (message) {
return new createError.TooEarly(message)
},
upgradeRequired: function upgradeRequired (message) {
return new createError.UpgradeRequired(message)
},
preconditionRequired: function preconditionRequired (message) {
return new createError.PreconditionRequired(message)
},
tooManyRequests: function tooManyRequests (message) {
return new createError.TooManyRequests(message)
},
requestHeaderFieldsTooLarge: function requestHeaderFieldsTooLarge (message) {
return new createError.RequestHeaderFieldsTooLarge(message)
},
unavailableForLegalReasons: function unavailableForLegalReasons (message) {
return new createError.UnavailableForLegalReasons(message)
},
internalServerError: function internalServerError (message) {
return new createError.InternalServerError(message)
},
notImplemented: function notImplemented (message) {
return new createError.NotImplemented(message)
},
badGateway: function badGateway (message) {
return new createError.BadGateway(message)
},
serviceUnavailable: function serviceUnavailable (message) {
return new createError.ServiceUnavailable(message)
},
gatewayTimeout: function gatewayTimeout (message) {
return new createError.GatewayTimeout(message)
},
httpVersionNotSupported: function httpVersionNotSupported (message) {
return new createError.HTTPVersionNotSupported(message)
},
variantAlsoNegotiates: function variantAlsoNegotiates (message) {
return new createError.VariantAlsoNegotiates(message)
},
insufficientStorage: function insufficientStorage (message) {
return new createError.InsufficientStorage(message)
},
loopDetected: function loopDetected (message) {
return new createError.LoopDetected(message)
},
bandwidthLimitExceeded: function bandwidthLimitExceeded (message) {
return new createError.BandwidthLimitExceeded(message)
},
notExtended: function notExtended (message) {
return new createError.NotExtended(message)
},
networkAuthenticationRequired: function networkAuthenticationRequired (message) {
return new createError.NetworkAuthenticationRequired(message)
}
}
function getHttpError (code, message) {
return httpErrors[statusCodesMap[code + '']](message)
}
module.exports = httpErrors
module.exports.getHttpError = getHttpError
module.exports.HttpError = createError.HttpError
module.exports.createError = createError