@applitools/utils
Version:
168 lines (167 loc) • 7.25 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.custom = exports.instanceOf = exports.isOneOf = exports.isEnumValue = exports.isObject = exports.isArray = exports.isNumeric = exports.isAlpha = exports.isAlphanumeric = exports.isString = exports.isGreaterThenOrEqual = exports.isGreaterThen = exports.isLessThenOrEqual = exports.isLessThen = exports.isFunction = exports.isInteger = exports.isNumber = exports.isBoolean = exports.notNull = void 0;
const types = __importStar(require("./types"));
function notNull(value, { name }) {
if (types.isNull(value)) {
throw new Error(`IllegalArgument: ${name} is not allowed to be null or undefined`);
}
}
exports.notNull = notNull;
function isBoolean(value, { name, strict = true }) {
if ((strict || !types.isNull(value)) && !types.isBoolean(value)) {
throw new Error(`IllegalType: ${name} must be of type boolean. Received ${value}`);
}
}
exports.isBoolean = isBoolean;
function isNumber(value, { name, strict = true, lt, lte, gt, gte }) {
if ((strict || !types.isNull(value)) && !types.isNumber(value)) {
throw new Error(`IllegalArgument: ${name} must be of type number. Received ${value}`);
}
if (!types.isNull(lt))
isLessThen(value, lt, { name });
else if (!types.isNull(lte))
isLessThenOrEqual(value, lte, { name });
else if (!types.isNull(gt))
isGreaterThen(value, gt, { name });
else if (!types.isNull(gte))
isGreaterThenOrEqual(value, gte, { name });
}
exports.isNumber = isNumber;
function isInteger(value, { name, strict = true, lt, lte, gt, gte }) {
if ((strict || !types.isNull(value)) && !types.isInteger(value)) {
throw new Error(`IllegalArgument: ${name} must be an integer of type number. Received ${value}`);
}
if (!types.isNull(lt))
isLessThen(value, lt, { name });
else if (!types.isNull(lte))
isLessThenOrEqual(value, lte, { name });
else if (!types.isNull(gt))
isGreaterThen(value, gt, { name });
else if (!types.isNull(gte))
isGreaterThenOrEqual(value, gte, { name });
}
exports.isInteger = isInteger;
// eslint-disable-next-line @typescript-eslint/ban-types
function isFunction(value, { name, strict = true }) {
if ((strict || !types.isNull(value)) && !types.isFunction(value)) {
throw new Error(`IllegalArgument: ${name} must be of type function. Received ${value}`);
}
}
exports.isFunction = isFunction;
function isLessThen(value, limit, { name }) {
if (!(value < limit)) {
throw new Error(`IllegalArgument: ${name} must be < ${limit}. Received ${value}`);
}
}
exports.isLessThen = isLessThen;
function isLessThenOrEqual(value, limit, { name }) {
if (!(value <= limit)) {
throw new Error(`IllegalArgument: ${name} must be <= ${limit}. Received ${value}`);
}
}
exports.isLessThenOrEqual = isLessThenOrEqual;
function isGreaterThen(value, limit, { name }) {
if (!(value > limit)) {
throw new Error(`IllegalArgument: ${name} must be > ${limit}. Received ${value}`);
}
}
exports.isGreaterThen = isGreaterThen;
function isGreaterThenOrEqual(value, limit, { name }) {
if (!(value >= limit)) {
throw new Error(`IllegalArgument: ${name} must be >= ${limit}. Received ${value}`);
}
}
exports.isGreaterThenOrEqual = isGreaterThenOrEqual;
function isString(value, { name, strict = true, alpha, numeric }) {
if ((strict || !types.isNull(value)) && !types.isString(value)) {
throw new Error(`IllegalArgument: ${name} must be of type string. Received ${value}`);
}
if (alpha && numeric)
isAlphanumeric(value, { name });
else if (alpha)
isAlpha(value, { name });
else if (numeric)
isNumeric(value, { name });
}
exports.isString = isString;
function isAlphanumeric(value, { name }) {
if (!/^[a-z0-9]+$/i.test(value)) {
throw new Error(`IllegalArgument: ${name} must be an alphanumeric string. Received ${value}`);
}
}
exports.isAlphanumeric = isAlphanumeric;
function isAlpha(value, { name }) {
if (!/^[a-z]+$/i.test(value)) {
throw new Error(`IllegalArgument: ${name} must be an alphabetic string. Received ${value}`);
}
}
exports.isAlpha = isAlpha;
function isNumeric(value, { name }) {
if (!/^[0-9]+$/.test(value)) {
throw new Error(`IllegalArgument: ${name} must be a numeric sring. Received ${value}`);
}
}
exports.isNumeric = isNumeric;
function isArray(value, { name, strict = true }) {
if ((strict || !types.isNull(value)) && !types.isArray(value)) {
throw new Error(`IllegalArgument: ${name} must be of type array. Received ${value}`);
}
}
exports.isArray = isArray;
function isObject(value, { name, strict = true }) {
if ((strict || !types.isNull(value)) && !types.isObject(value)) {
throw new Error(`IllegalArgument: ${name} must be of type object. Received ${value}`);
}
}
exports.isObject = isObject;
function isEnumValue(value, enumeration, { name, strict = true }) {
const values = new Set(Object.values(enumeration));
if ((strict || !types.isNull(value)) && !values.has(value)) {
const list = Array.from(values, value => JSON.stringify(value)).join(', ');
throw new Error(`IllegalArgument: ${name} must be one of [${list}]. Received ${value}`);
}
}
exports.isEnumValue = isEnumValue;
function isOneOf(value, values, { name, strict = true }) {
if ((strict || !types.isNull(value)) && !values.includes(value)) {
const list = values.map(value => JSON.stringify(value)).join(', ');
throw new Error(`IllegalArgument: ${name} must be one of [${list}]. Received ${value}`);
}
}
exports.isOneOf = isOneOf;
function instanceOf(value, ctor, { name, strict = true }) {
if ((strict || !types.isNull(value)) && !types.instanceOf(value, ctor)) {
throw new Error(`IllegalType: ${name} must be an instance of ${ctor.name}`);
}
}
exports.instanceOf = instanceOf;
function custom(value, check, { name, strict = true, message }) {
if ((strict || !types.isNull(value)) && !check(value)) {
throw new Error(`IllegalType: ${name} ${message || 'is wrong type'}`);
}
}
exports.custom = custom;
;