UNPKG

@kitmi/types

Version:

JavaScript semantic data types

116 lines (102 loc) 2.77 kB
import HttpCode from './HttpCode'; /** * App errors. * @module AppErrors */ /** * General errors with error info, http status and error code. * @class * @extends Error */ export class GeneralError extends Error { constructor(message, info, status, code) { super(message); this.name = this.constructor.name; let typeOfInfo = typeof info; let typeOfStatus = typeof status; let typeOfCode = typeof code; if (typeOfCode === 'undefined') { if (typeOfStatus === 'string') { code = status; status = undefined; typeOfStatus = 'undefined'; } } if (typeOfStatus === 'undefined') { if (typeOfInfo === 'number') { status = info; info = undefined; } if (typeOfCode === 'undefined' && typeOfInfo === 'string') { code = info; info = undefined; } } /** * Error information * @member {object} */ this.info = info; /** * Http status * @member {number} */ this.status = status; /** * Error code * @member {string} */ this.code = code; } } /** * Application errors mostly caused wrong coding or usage of functions. * @class * @extends GeneralError */ export class ApplicationError extends GeneralError { /** * @param {string} message - Error message * @param {*} info * @param {*} code */ constructor(message, info, code) { super(message, info, HttpCode.INTERNAL_SERVER_ERROR, code || 'E_APP'); } } /** * Error caused by invalid configuration. * @class * @extends ApplicationError */ export class InvalidConfiguration extends ApplicationError { /** * @param {string} message - Error message * @param {App} [app] - The related app module * @param {string} [item] - The related config item */ constructor(message, app, item) { super(message, { app: app.name, item }, 'E_INVALID_CONF'); } } /** * Error caused by invalid function argument. Not suitable for http request, which should use BadRequest * @class * @extends InvalidArgument */ export class InvalidArgument extends ApplicationError { /** * @param {string} message - Error message * @param {*} [info] - Extra info * @param {string} [item] - The related config item */ constructor(message, info) { super(message, info, 'E_INVALID_ARG'); } } /** * Error which will expose the detailed error message to end-users. */ export class ExposableError extends GeneralError { expose = true; }