From 289feaa27dedaeeffbe166a63d1ed5a87de68635 Mon Sep 17 00:00:00 2001 From: Michel Blancard Date: Fri, 10 Jun 2022 14:10:45 +0200 Subject: [PATCH] Document 1st arg can be an Error --- lib/index.d.ts | 130 ++++++++++++++++++++++++------------------------- lib/index.js | 114 +++++++++++++++++++++---------------------- 2 files changed, 122 insertions(+), 122 deletions(-) diff --git a/lib/index.d.ts b/lib/index.d.ts index 108755d..34132bb 100755 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -4,7 +4,7 @@ export class Boom extends Error { /** - * Creates a new Boom object using the provided message + * Creates a new Boom object using the provided message or Error */ constructor(message?: string | Error, options?: Options); @@ -158,22 +158,22 @@ export function boomify(err: Error, options?: Options & /** * Returns a 400 Bad Request error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 400 bad request error */ -export function badRequest(message?: string, data?: Data): Boom; +export function badRequest(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 401 Unauthorized error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * * @returns A 401 Unauthorized error */ -export function unauthorized(message?: string | null): Boom; +export function unauthorized(messageOrError?: string | Error | null): Boom; /** @@ -219,265 +219,265 @@ export function unauthorized(message: string | null, wwwAuthenticate: stri /** * Returns a 402 Payment Required error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 402 Payment Required error */ -export function paymentRequired(message?: string, data?: Data): Boom; +export function paymentRequired(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 403 Forbidden error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 403 Forbidden error */ -export function forbidden(message?: string, data?: Data): Boom; +export function forbidden(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 404 Not Found error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 404 Not Found error */ -export function notFound(message?: string, data?: Data): Boom; +export function notFound(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 405 Method Not Allowed error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @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; +export function methodNotAllowed(messageOrError?: string | Error, data?: Data, allow?: string | string[]): Boom; /** * Returns a 406 Not Acceptable error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 406 Not Acceptable error */ -export function notAcceptable(message?: string, data?: Data): Boom; +export function notAcceptable(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 407 Proxy Authentication error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 407 Proxy Authentication error */ -export function proxyAuthRequired(message?: string, data?: Data): Boom; +export function proxyAuthRequired(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 408 Request Time-out error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 408 Request Time-out error */ -export function clientTimeout(message?: string, data?: Data): Boom; +export function clientTimeout(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 409 Conflict error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 409 Conflict error */ -export function conflict(message?: string, data?: Data): Boom; +export function conflict(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 410 Gone error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 410 gone error */ -export function resourceGone(message?: string, data?: Data): Boom; +export function resourceGone(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 411 Length Required error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 411 Length Required error */ -export function lengthRequired(message?: string, data?: Data): Boom; +export function lengthRequired(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 412 Precondition Failed error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 412 Precondition Failed error */ -export function preconditionFailed(message?: string, data?: Data): Boom; +export function preconditionFailed(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 413 Request Entity Too Large error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 413 Request Entity Too Large error */ -export function entityTooLarge(message?: string, data?: Data): Boom; +export function entityTooLarge(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 414 Request-URI Too Large error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 414 Request-URI Too Large error */ -export function uriTooLong(message?: string, data?: Data): Boom; +export function uriTooLong(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 415 Unsupported Media Type error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 415 Unsupported Media Type error */ -export function unsupportedMediaType(message?: string, data?: Data): Boom; +export function unsupportedMediaType(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 416 Request Range Not Satisfiable error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 416 Request Range Not Satisfiable error */ -export function rangeNotSatisfiable(message?: string, data?: Data): Boom; +export function rangeNotSatisfiable(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 417 Expectation Failed error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 417 Expectation Failed error */ -export function expectationFailed(message?: string, data?: Data): Boom; +export function expectationFailed(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 418 I'm a Teapot error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 418 I'm a Teapot error */ -export function teapot(message?: string, data?: Data): Boom; +export function teapot(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 422 Unprocessable Entity error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 422 Unprocessable Entity error */ -export function badData(message?: string, data?: Data): Boom; +export function badData(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 423 Locked error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 423 Locked error */ -export function locked(message?: string, data?: Data): Boom; +export function locked(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 424 Failed Dependency error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 424 Failed Dependency error */ -export function failedDependency(message?: string, data?: Data): Boom; +export function failedDependency(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 425 Too Early error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 425 Too Early error */ -export function tooEarly(message?: string, data?: Data): Boom; +export function tooEarly(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 428 Precondition Required error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 428 Precondition Required error */ -export function preconditionRequired(message?: string, data?: Data): Boom; +export function preconditionRequired(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 429 Too Many Requests error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 429 Too Many Requests error */ -export function tooManyRequests(message?: string, data?: Data): Boom; +export function tooManyRequests(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 451 Unavailable For Legal Reasons error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 451 Unavailable for Legal Reasons error */ -export function illegal(message?: string, data?: Data): Boom; +export function illegal(messageOrError?: string | Error, data?: Data): Boom; // 5xx Errors @@ -485,65 +485,65 @@ export function illegal(message?: string, data?: Data): Boom; /** * Returns a internal error (defaults to 500) * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @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; +export function internal(messageOrError?: string | Error, data?: Data, statusCode?: number): Boom; /** * Returns a 500 Internal Server Error error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 500 Internal Server error */ -export function badImplementation(message?: string, data?: Data): Boom; +export function badImplementation(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 501 Not Implemented error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 501 Not Implemented error */ -export function notImplemented(message?: string, data?: Data): Boom; +export function notImplemented(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 502 Bad Gateway error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 502 Bad Gateway error */ -export function badGateway(message?: string, data?: Data): Boom; +export function badGateway(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 503 Service Unavailable error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 503 Service Unavailable error */ -export function serverUnavailable(message?: string, data?: Data): Boom; +export function serverUnavailable(messageOrError?: string | Error, data?: Data): Boom; /** * Returns a 504 Gateway Time-out error * -* @param message - Optional message +* @param messageOrError - Optional message or Error * @param data - Optional additional error data * * @returns A 504 Gateway Time-out error */ -export function gatewayTimeout(message?: string, data?: Data): Boom; +export function gatewayTimeout(messageOrError?: string | Error, data?: Data): Boom; diff --git a/lib/index.js b/lib/index.js index 0bdcfac..709b754 100755 --- a/lib/index.js +++ b/lib/index.js @@ -68,14 +68,14 @@ const internals = { exports.Boom = class extends Error { - constructor(message, options = {}) { + constructor(messageOrError, options = {}) { - if (message instanceof Error) { - return exports.boomify(Hoek.clone(message), options); + if (messageOrError instanceof Error) { + return exports.boomify(Hoek.clone(messageOrError), options); } const { statusCode = 500, data = null, ctor = exports.Boom } = options; - const error = new Error(message ? message : undefined); // Avoids settings null message + const error = new Error(messageOrError ? messageOrError : undefined); // Avoids settings null message Error.captureStackTrace(error, ctor); // Filter the stack to our external API error.data = data; const boom = internals.initialize(error, statusCode); @@ -138,9 +138,9 @@ exports.boomify = function (err, options) { // 4xx Client Errors -exports.badRequest = function (message, data) { +exports.badRequest = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 400, data, ctor: exports.badRequest }); + return new exports.Boom(messageOrError, { statusCode: 400, data, ctor: exports.badRequest }); }; @@ -205,27 +205,27 @@ exports.unauthorized = function (message, scheme, attributes) { // Or ( }; -exports.paymentRequired = function (message, data) { +exports.paymentRequired = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 402, data, ctor: exports.paymentRequired }); + return new exports.Boom(messageOrError, { statusCode: 402, data, ctor: exports.paymentRequired }); }; -exports.forbidden = function (message, data) { +exports.forbidden = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 403, data, ctor: exports.forbidden }); + return new exports.Boom(messageOrError, { statusCode: 403, data, ctor: exports.forbidden }); }; -exports.notFound = function (message, data) { +exports.notFound = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 404, data, ctor: exports.notFound }); + return new exports.Boom(messageOrError, { statusCode: 404, data, ctor: exports.notFound }); }; -exports.methodNotAllowed = function (message, data, allow) { +exports.methodNotAllowed = function (messageOrError, data, allow) { - const err = new exports.Boom(message, { statusCode: 405, data, ctor: exports.methodNotAllowed }); + const err = new exports.Boom(messageOrError, { statusCode: 405, data, ctor: exports.methodNotAllowed }); if (typeof allow === 'string') { allow = [allow]; @@ -239,122 +239,122 @@ exports.methodNotAllowed = function (message, data, allow) { }; -exports.notAcceptable = function (message, data) { +exports.notAcceptable = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 406, data, ctor: exports.notAcceptable }); + return new exports.Boom(messageOrError, { statusCode: 406, data, ctor: exports.notAcceptable }); }; -exports.proxyAuthRequired = function (message, data) { +exports.proxyAuthRequired = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 407, data, ctor: exports.proxyAuthRequired }); + return new exports.Boom(messageOrError, { statusCode: 407, data, ctor: exports.proxyAuthRequired }); }; -exports.clientTimeout = function (message, data) { +exports.clientTimeout = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 408, data, ctor: exports.clientTimeout }); + return new exports.Boom(messageOrError, { statusCode: 408, data, ctor: exports.clientTimeout }); }; -exports.conflict = function (message, data) { +exports.conflict = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 409, data, ctor: exports.conflict }); + return new exports.Boom(messageOrError, { statusCode: 409, data, ctor: exports.conflict }); }; -exports.resourceGone = function (message, data) { +exports.resourceGone = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 410, data, ctor: exports.resourceGone }); + return new exports.Boom(messageOrError, { statusCode: 410, data, ctor: exports.resourceGone }); }; -exports.lengthRequired = function (message, data) { +exports.lengthRequired = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 411, data, ctor: exports.lengthRequired }); + return new exports.Boom(messageOrError, { statusCode: 411, data, ctor: exports.lengthRequired }); }; -exports.preconditionFailed = function (message, data) { +exports.preconditionFailed = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 412, data, ctor: exports.preconditionFailed }); + return new exports.Boom(messageOrError, { statusCode: 412, data, ctor: exports.preconditionFailed }); }; -exports.entityTooLarge = function (message, data) { +exports.entityTooLarge = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 413, data, ctor: exports.entityTooLarge }); + return new exports.Boom(messageOrError, { statusCode: 413, data, ctor: exports.entityTooLarge }); }; -exports.uriTooLong = function (message, data) { +exports.uriTooLong = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 414, data, ctor: exports.uriTooLong }); + return new exports.Boom(messageOrError, { statusCode: 414, data, ctor: exports.uriTooLong }); }; -exports.unsupportedMediaType = function (message, data) { +exports.unsupportedMediaType = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 415, data, ctor: exports.unsupportedMediaType }); + return new exports.Boom(messageOrError, { statusCode: 415, data, ctor: exports.unsupportedMediaType }); }; -exports.rangeNotSatisfiable = function (message, data) { +exports.rangeNotSatisfiable = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 416, data, ctor: exports.rangeNotSatisfiable }); + return new exports.Boom(messageOrError, { statusCode: 416, data, ctor: exports.rangeNotSatisfiable }); }; -exports.expectationFailed = function (message, data) { +exports.expectationFailed = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 417, data, ctor: exports.expectationFailed }); + return new exports.Boom(messageOrError, { statusCode: 417, data, ctor: exports.expectationFailed }); }; -exports.teapot = function (message, data) { +exports.teapot = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 418, data, ctor: exports.teapot }); + return new exports.Boom(messageOrError, { statusCode: 418, data, ctor: exports.teapot }); }; -exports.badData = function (message, data) { +exports.badData = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 422, data, ctor: exports.badData }); + return new exports.Boom(messageOrError, { statusCode: 422, data, ctor: exports.badData }); }; -exports.locked = function (message, data) { +exports.locked = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 423, data, ctor: exports.locked }); + return new exports.Boom(messageOrError, { statusCode: 423, data, ctor: exports.locked }); }; -exports.failedDependency = function (message, data) { +exports.failedDependency = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 424, data, ctor: exports.failedDependency }); + return new exports.Boom(messageOrError, { statusCode: 424, data, ctor: exports.failedDependency }); }; -exports.tooEarly = function (message, data) { +exports.tooEarly = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 425, data, ctor: exports.tooEarly }); + return new exports.Boom(messageOrError, { statusCode: 425, data, ctor: exports.tooEarly }); }; -exports.preconditionRequired = function (message, data) { +exports.preconditionRequired = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 428, data, ctor: exports.preconditionRequired }); + return new exports.Boom(messageOrError, { statusCode: 428, data, ctor: exports.preconditionRequired }); }; -exports.tooManyRequests = function (message, data) { +exports.tooManyRequests = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 429, data, ctor: exports.tooManyRequests }); + return new exports.Boom(messageOrError, { statusCode: 429, data, ctor: exports.tooManyRequests }); }; -exports.illegal = function (message, data) { +exports.illegal = function (messageOrError, data) { - return new exports.Boom(message, { statusCode: 451, data, ctor: exports.illegal }); + return new exports.Boom(messageOrError, { statusCode: 451, data, ctor: exports.illegal }); }; @@ -452,13 +452,13 @@ internals.reformat = function (debug = false) { }; -internals.serverError = function (message, data, statusCode, ctor) { +internals.serverError = function (messageOrError, data, statusCode, ctor) { if (data instanceof Error && !data.isBoom) { - return exports.boomify(data, { statusCode, message }); + return exports.boomify(data, { statusCode, message: messageOrError }); } - return new exports.Boom(message, { statusCode, data, ctor }); + return new exports.Boom(messageOrError, { statusCode, data, ctor }); };