/** * An Error object used to return an HTTP response error (4xx, 5xx) */ export class Boom extends Error { /** * Creates a new Boom object using the provided message */ constructor(message?: string | Error, options?: Options); /** * Custom error data with additional information specific to the error type */ data?: Data; /** * isBoom - if true, indicates this is a Boom object instance. */ isBoom: boolean; /** * Convenience boolean indicating status code >= 500 */ isServer: boolean; /** * The error message */ message: string; /** * The formatted response */ output: Output; /** * The constructor used to create the error */ typeof: Function; /** * Specifies if an error object is a valid boom object * * @param debug - A boolean that, when true, does not hide the original 500 error message. Defaults to false. */ reformat(debug?: boolean): string; } export interface Options { /** * The HTTP status code * * @default 500 */ statusCode?: number; /** * Additional error information */ data?: Data; /** * Constructor reference used to crop the exception call stack output */ ctor?: Function; /** * Error message string * * @default none */ message?: string; /** * If false, the err provided is a Boom object, and a statusCode or message are provided, the values are ignored * * @default true */ override?: boolean; } export interface Decorate { /** * An option with extra properties to set on the error object */ decorate?: Decoration; } export interface Payload { /** * The HTTP status code derived from error.output.statusCode */ statusCode: number; /** * The HTTP status message derived from statusCode */ error: string; /** The error message derived from error.message */ message: string; } export interface Output { /** * The HTTP status code */ statusCode: number; /** * An object containing any HTTP headers where each key is a header name and value is the header content */ headers: object; /** * The formatted object used as the response payload (stringified) */ payload: Payload; } /** * Specifies if an error object is a valid boom object * * @param err - The error object * * @returns Returns a boolean stating if the error object is a valid boom object */ export function isBoom(err: Error): err is Boom; /** * Specifies if an error object is a valid boom object * * @param err - The error object to decorate * @param options - Options object * * @returns A decorated boom object */ export function boomify(err: Error, options?: Options & Decorate): Boom & Decoration; // 4xx Errors /** * Returns a 400 Bad Request error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 400 bad request error */ export function badRequest(message?: string, data?: Data): Boom; /** * Returns a 401 Unauthorized error * * @param message - Optional message * * @returns A 401 Unauthorized error */ export function unauthorized(message?: string | null): Boom; /** * Returns a 401 Unauthorized error * * @param message - Optional message * @param scheme - the authentication scheme name * @param attributes - an object of values used to construct the 'WWW-Authenticate' header * * @returns A 401 Unauthorized error */ export function unauthorized(message: '' | null, scheme: string, attributes?: string | unauthorized.Attributes): Boom & unauthorized.MissingAuth; export function unauthorized(message: string | null, scheme: string, attributes?: string | unauthorized.Attributes): Boom; export namespace unauthorized { interface Attributes { [index: string]: number | string | null | undefined; } interface MissingAuth { /** * Indicate whether the 401 unauthorized error is due to missing credentials (vs. invalid) */ isMissing: boolean; } } /** * Returns a 401 Unauthorized error * * @param message - Optional message * @param wwwAuthenticate - array of string values used to construct the wwwAuthenticate header * * @returns A 401 Unauthorized error */ export function unauthorized(message: string | null, wwwAuthenticate: string[]): Boom; /** * Returns a 402 Payment Required error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 402 Payment Required error */ export function paymentRequired(message?: string, data?: Data): Boom; /** * Returns a 403 Forbidden error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 403 Forbidden error */ export function forbidden(message?: string, data?: Data): Boom; /** * Returns a 404 Not Found error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 404 Not Found error */ export function notFound(message?: string, data?: Data): Boom; /** * Returns a 405 Method Not Allowed error * * @param message - Optional message * @param data - Optional additional error data * @param allow - Optional string or array of strings which is used to set the 'Allow' header * * @returns A 405 Method Not Allowed error */ export function methodNotAllowed(message?: string, data?: Data, allow?: string | string[]): Boom; /** * Returns a 406 Not Acceptable error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 406 Not Acceptable error */ export function notAcceptable(message?: string, data?: Data): Boom; /** * Returns a 407 Proxy Authentication error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 407 Proxy Authentication error */ export function proxyAuthRequired(message?: string, data?: Data): Boom; /** * Returns a 408 Request Time-out error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 408 Request Time-out error */ export function clientTimeout(message?: string, data?: Data): Boom; /** * Returns a 409 Conflict error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 409 Conflict error */ export function conflict(message?: string, data?: Data): Boom; /** * Returns a 410 Gone error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 410 gone error */ export function resourceGone(message?: string, data?: Data): Boom; /** * Returns a 411 Length Required error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 411 Length Required error */ export function lengthRequired(message?: string, data?: Data): Boom; /** * Returns a 412 Precondition Failed error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 412 Precondition Failed error */ export function preconditionFailed(message?: string, data?: Data): Boom; /** * Returns a 413 Request Entity Too Large error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 413 Request Entity Too Large error */ export function entityTooLarge(message?: string, data?: Data): Boom; /** * Returns a 414 Request-URI Too Large error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 414 Request-URI Too Large error */ export function uriTooLong(message?: string, data?: Data): Boom; /** * Returns a 415 Unsupported Media Type error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 415 Unsupported Media Type error */ export function unsupportedMediaType(message?: string, data?: Data): Boom; /** * Returns a 416 Request Range Not Satisfiable error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 416 Request Range Not Satisfiable error */ export function rangeNotSatisfiable(message?: string, data?: Data): Boom; /** * Returns a 417 Expectation Failed error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 417 Expectation Failed error */ export function expectationFailed(message?: string, data?: Data): Boom; /** * Returns a 418 I'm a Teapot error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 418 I'm a Teapot error */ export function teapot(message?: string, data?: Data): Boom; /** * Returns a 422 Unprocessable Entity error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 422 Unprocessable Entity error */ export function badData(message?: string, data?: Data): Boom; /** * Returns a 423 Locked error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 423 Locked error */ export function locked(message?: string, data?: Data): Boom; /** * Returns a 424 Failed Dependency error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 424 Failed Dependency error */ export function failedDependency(message?: string, data?: Data): Boom; /** * Returns a 425 Too Early error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 425 Too Early error */ export function tooEarly(message?: string, data?: Data): Boom; /** * Returns a 428 Precondition Required error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 428 Precondition Required error */ export function preconditionRequired(message?: string, data?: Data): Boom; /** * Returns a 429 Too Many Requests error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 429 Too Many Requests error */ export function tooManyRequests(message?: string, data?: Data): Boom; /** * Returns a 451 Unavailable For Legal Reasons error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 451 Unavailable for Legal Reasons error */ export function illegal(message?: string, data?: Data): Boom; // 5xx Errors /** * Returns a internal error (defaults to 500) * * @param message - Optional message * @param data - Optional additional error data * @param statusCode - Optional status code override. Defaults to 500. * * @returns A 500 Internal Server error */ export function internal(message?: string, data?: Data, statusCode?: number): Boom; /** * Returns a 500 Internal Server Error error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 500 Internal Server error */ export function badImplementation(message?: string, data?: Data): Boom; /** * Returns a 501 Not Implemented error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 501 Not Implemented error */ export function notImplemented(message?: string, data?: Data): Boom; /** * Returns a 502 Bad Gateway error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 502 Bad Gateway error */ export function badGateway(message?: string, data?: Data): Boom; /** * Returns a 503 Service Unavailable error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 503 Service Unavailable error */ export function serverUnavailable(message?: string, data?: Data): Boom; /** * Returns a 504 Gateway Time-out error * * @param message - Optional message * @param data - Optional additional error data * * @returns A 504 Gateway Time-out error */ export function gatewayTimeout(message?: string, data?: Data): Boom;