throw-expression
Version:
Allows you, through a simple function, to throw an error inside an expression
61 lines (60 loc) • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.throwIfNullish = exports.throwIfNotANumber = exports.throwIfFalsy = exports.throwIfUndefined = exports.throwIfNull = exports.Throw = void 0;
/**
* Throws an error when called
* @param error either error object or a string
*/
exports.Throw = function (error) {
var errorObject = typeof error === "string" ? new Error(error) : error;
// Big thanks to https://github.com/Yona-Appletree for creating this issue! This was all their idea: https://github.com/jindra12/throw-expression/issues/2
// This prevents this function from appearing in the stack trace, making
// it look the same as if a normal throw statement had been used
Error.captureStackTrace(errorObject, exports.Throw);
throw errorObject;
};
/**
* Throw exception if value is null
* @param value value to be checked for null
* @param error either error object or a string
*/
exports.throwIfNull = function (value, error) {
if (error === void 0) { error = 'value is null'; }
return value === null ? exports.Throw(error) : value;
};
/**
* Throw exception if value is undefined
* @param value value to be checked for undefined
* @param error either error object or a string
*/
exports.throwIfUndefined = function (value, error) {
if (error === void 0) { error = 'value is undefined'; }
return value === undefined ? exports.Throw(error) : value;
};
/**
* Throw exception if value is falsy: empty string, zero, false, NaN, undefined or null
* @param value value to be checked for falsy: empty string, zero, false, NaN, undefined or null
* @param error either error object or a string
*/
exports.throwIfFalsy = function (value, error) {
if (error === void 0) { error = 'value is falsy'; }
return !value ? exports.Throw(error) : value;
};
/**
* Throw exception if value is NaN, or not a number at all
* @param value value to be checked for NaN or not a number at all
* @param error either error object or a string
*/
exports.throwIfNotANumber = function (value, error) {
if (error === void 0) { error = 'value is not a number'; }
return typeof value !== "number" || isNaN(value) ? exports.Throw(error) : value;
};
/**
* Throw expression if value is null or undefined
* @param value to be checked for null or undefined
* @param error either error object or a string
*/
exports.throwIfNullish = function (value, error) {
if (error === void 0) { error = 'value is nullish'; }
return (value === undefined || value === null) ? exports.Throw(error) : value;
};