UNPKG

reheat

Version:

A red hot Node.js ORM for RethinkDB.

420 lines (396 loc) 10.8 kB
/** * @doc function * @id support.error_types:UnhandledError * @name UnhandledError * @description Error that is thrown/returned when Reheat encounters an uncaught/unknown exception. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * // The database server is down, causing a failed connection error * post.save(function (err) { * err instanceof reheat.support.UnhandledError; // true * }); * ``` * * @param {Error} error The originally thrown error. * @returns {UnhandledError} A new instance of `UnhandledError`. */ function UnhandledError(error) { Error.call(this); Error.captureStackTrace(this, this.constructor); error = error || {}; /** * @doc property * @id support.error_types:UnhandledError.type * @name type * @propertyOf support.error_types:UnhandledError * @description Name of error type. Default: `"UnhandledError"`. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * // The database server is down, causing a failed connection error * post.save(function (err) { * err.type; // "UnhandledError" * }); * ``` */ this.type = this.constructor.name; /** * @doc property * @id support.error_types:UnhandledError.originalError * @name originalError * @propertyOf support.error_types:UnhandledError * @description A reference to the original error that was thrown. */ this.originalError = error; /** * @doc property * @id support.error_types:UnhandledError.message * @name message * @propertyOf support.error_types:UnhandledError * @description Message and stack trace. Same as `UnhandledError#stack`. */ this.message = 'UnhandledError: This is an uncaught exception. Please consider submitting an issue at https://github.com/jmdobry/reheat/issues.\n\n' + 'Original Uncaught Exception: '; if (error && error.constructor && error.constructor.name === 'RqlRuntimeError') { this.message = this.message + error.name + '\n' + error.message + '\n' + this.stack + '\n'; } else if (error instanceof Error) { this.message = this.message + 'Error' + '\n' + (error.stack ? error.stack.toString() : error.stack); } /** * @doc property * @id support.error_types:UnhandledError.stack * @name stack * @propertyOf support.error_types:UnhandledError * @description Message and stack trace. Same as `UnhandledError#message`. */ } UnhandledError.prototype = Object.create(Error.prototype); UnhandledError.prototype.constructor = UnhandledError; /** * @doc function * @id support.error_types:IllegalArgumentError * @name IllegalArgumentError * @description Error that is thrown/returned when a caller does not honor the pre-conditions of a method/function. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync(1234, 1234); * * post.validate(function (err) { * err instanceof reheat.support.IllegalArgumentError; // true * }); * ``` * * @param {string=} message Error message. Default: `"Illegal Argument!"`. * @param {object=} errors Object containing information about the error. * @returns {IllegalArgumentError} A new instance of `IllegalArgumentError`. */ function IllegalArgumentError(message, errors) { Error.call(this); Error.captureStackTrace(this, this.constructor); /** * @doc property * @id support.error_types:IllegalArgumentError.type * @name type * @propertyOf support.error_types:IllegalArgumentError * @description Name of error type. Default: `"IllegalArgumentError"`. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync(1234, 1234); * * post.validate(function (err) { * err.type; // "IllegalArgumentError" * }); * ``` */ this.type = this.constructor.name; /** * @doc property * @id support.error_types:IllegalArgumentError.errors * @name errors * @propertyOf support.error_types:IllegalArgumentError * @description Object containing information about the error. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync(1234, 1234); * * post.validate(function (err) { * err.errors; // { * // actual: 'number', * // expected: 'string|object' * // } * }); * ``` */ this.errors = errors || {}; /** * @doc property * @id support.error_types:IllegalArgumentError.message * @name message * @propertyOf support.error_types:IllegalArgumentError * @description Error message. Default: `"Illegal Argument!"`. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync(1234, 1234); * * post.validate(function (err) { * err.message; // "Post#set(key[, value][, options], cb): key: Must be a string or an object!" * }); * ``` */ this.message = message || 'Illegal Argument!'; } IllegalArgumentError.prototype = Object.create(Error.prototype); IllegalArgumentError.prototype.constructor = IllegalArgumentError; /** * @doc function * @id support.error_types:RuntimeError * @name RuntimeError * @description Error that is thrown/returned when a caller does not honor the pre-conditions of a method/function. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync(1234, 1234); * * post.validate(function (err) { * err instanceof reheat.support.RuntimeError; // true * }); * ``` * * @param {string=} message Error message. Default: `"Illegal Argument!"`. * @param {object=} errors Object containing information about the error. * @returns {RuntimeError} A new instance of `RuntimeError`. */ function RuntimeError(message, errors) { Error.call(this); Error.captureStackTrace(this, this.constructor); /** * @doc property * @id support.error_types:RuntimeError.type * @name type * @propertyOf support.error_types:RuntimeError * @description Name of error type. Default: `"RuntimeError"`. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync(1234, 1234); * * post.validate(function (err) { * err.type; // "RuntimeError" * }); * ``` */ this.type = this.constructor.name; /** * @doc property * @id support.error_types:RuntimeError.errors * @name errors * @propertyOf support.error_types:RuntimeError * @description Object containing information about the error. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync(1234, 1234); * * post.validate(function (err) { * err.errors; // { * // actual: 'number', * // expected: 'string|object' * // } * }); * ``` */ this.errors = errors || {}; /** * @doc property * @id support.error_types:RuntimeError.message * @name message * @propertyOf support.error_types:RuntimeError * @description Error message. Default: `"Illegal Argument!"`. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync(1234, 1234); * * post.validate(function (err) { * err.message; // "Post#set(key[, value][, options], cb): key: Must be a string or an object!" * }); * ``` */ this.message = message || 'Illegal Argument!'; } RuntimeError.prototype = Object.create(Error.prototype); RuntimeError.prototype.constructor = RuntimeError; /** * @doc function * @id support.error_types:ValidationError * @name ValidationError * @description Error that is thrown/returned when validation of a schema fails. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync('author', 1234); * * post.validate(function (err) { * err instanceof reheat.support.ValidationError; // true * }); * ``` * * @param {string=} message Error message. Default: `"Validation Error!"`. * @param {object=} errors Object containing information about the error. * @returns {ValidationError} A new instance of `ValidationError`. */ function ValidationError(message, errors) { Error.call(this); Error.captureStackTrace(this, this.constructor); /** * @doc property * @id support.error_types:ValidationError.type * @name type * @propertyOf support.error_types:ValidationError * @description Name of error type. Default: `"ValidationError"`. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync('author', 1234); * * post.validate(function (err) { * err.type; // "ValidationError" * }); * ``` */ this.type = this.constructor.name; /** * @doc property * @id support.error_types:ValidationError.errors * @name errors * @propertyOf support.error_types:ValidationError * @description Object containing information about the error. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync('author', 1234); * * post.validate(function (err) { * err.errors; // { * // author: { * // errors: [{ * // rule: 'type', * // actual: 'number', * // expected: 'string' * // }] * // } * // } * }); * ``` */ this.errors = errors || {}; /** * @doc property * @id support.error_types:ValidationError.message * @name message * @propertyOf support.error_types:ValidationError * @description Error message. Default: `"Validation Error!"`. * * Example: * * ```js * var reheat = require('reheat'); * * {...} * * post.setSync('author', 1234); * * post.validate(function (err) { * err.message; // "Post#validate(cb): Validation failed!" * }); * ``` */ this.message = message || 'Validation Error!'; } ValidationError.prototype = Object.create(Error.prototype); ValidationError.prototype.constructor = ValidationError; /** * @doc interface * @id support * @name Reheat support classes * @description * `reheat.support` gives access to `UnhandledError`, `IllegalArgumentError`, `RuntimeError` and `ValidationError`. */ module.exports = function () { return { UnhandledError: UnhandledError, IllegalArgumentError: IllegalArgumentError, RuntimeError: RuntimeError, ValidationError: ValidationError }; };