UNPKG

@applitools/utils

Version:
168 lines (167 loc) 7.25 kB
"use strict"; 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;