UNPKG

@megaorm/test

Version:

This package is designed to assist developers in type checking and validation for various JavaScript values. It provides a collection of type-checking functions, and utilities to validate your values.

631 lines (453 loc) 19.6 kB
# MegaORM Test This package is designed to assist developers in type checking and validation for various JavaScript values. It provides a collection of type-checking functions, and utilities to validate your values. ## Table of Contents 1. **[Type Functions](#type-functions)** 2. **[Pattern Functions](#pattern-functions)** 3. **[Content Functions](#content-functions)** ## Type Functions Type functions allow you to validate the type of a value. They return a boolean indicating whether the value matches the expected type. - **`isSet(value: any): boolean`** Checks if a value is an instance of `Set`. ```js console.log(isSet(new Set())); // true console.log(isSet([])); // false ``` - **`isMap(value: any): boolean`** Checks if a value is an instance of `Map`. ```js console.log(isMap(new Map())); // true console.log(isMap({})); // false ``` - **`isWeakSet(value: any): boolean`** Checks if a value is an instance of `WeakSet`. ```js console.log(isWeakSet(new WeakSet())); // true console.log(isWeakSet(new Set())); // false ``` - **`isWeakMap(value: any): boolean`** Checks if a value is an instance of `WeakMap`. ```js console.log(isWeakMap(new WeakMap())); // true console.log(isWeakMap(new Map())); // false ``` - **`isArr(value: any): boolean`** Checks if a value is an array. ```js console.log(isArr([])); // true console.log(isArr({})); // false ``` - **`isObj(value: any): boolean`** Checks if a value is a non-null object (excluding arrays). ```js console.log(isObj({})); // true console.log(isObj([])); // false console.log(isObj(null)); // false ``` - **`isNum(value: any): boolean`** Checks if a value is a number. ```js console.log(isNum(42)); // true console.log(isNum('42')); // false ``` - **`isTxt(value: any): boolean`** Checks if a value is a string. ```js console.log(isTxt('hello')); // true console.log(isTxt(42)); // false ``` - **`isStr(value: any): boolean`** Alias for `isTxt`. Checks if a value is a string. ```js console.log(isStr('hello')); // true console.log(isStr(42)); // false ``` - **`isBool(value: any): boolean`** Checks if a value is a boolean. ```js console.log(isBool(true)); // true console.log(isBool('true')); // false ``` - **`isFunc(value: any): boolean`** Checks if a value is a function. ```js console.log(isFunc(() => {})); // true console.log(isFunc({})); // false ``` - **`isSymbol(value: any): boolean`** Checks if a value is a symbol. ```js console.log(isSymbol(Symbol())); // true console.log(isSymbol('symbol')); // false ``` - **`isInt(value: any): boolean`** Checks if a value is an integer. ```js console.log(isInt(42)); // true console.log(isInt(42.42)); // false ``` - **`isFloat(value: any): boolean`** Checks if a value is a floating-point number. ```js console.log(isFloat(42.42)); // true console.log(isFloat(42)); // false ``` - **`isNan(value: any): boolean`** Checks if a value is NaN (Not a Number). ```js console.log(isNan(NaN)); // true console.log(isNan(42)); // false ``` - **`isNull(value: any): boolean`** Checks if a value is null. ```js console.log(isNull(null)); // true console.log(isNull(undefined)); // false ``` - **`isUndefined(value: any): boolean`** Checks if a value is undefined. ```js console.log(isUndefined(undefined)); // true console.log(isUndefined(null)); // false ``` - **`isDefined(value: any): boolean`** Checks if a value is defined (not undefined). ```js console.log(isDefined(42)); // true console.log(isDefined(undefined)); // false ``` - **`isDefinedStrict(value: any): boolean`** Strictly checks if a value is defined (not null, undefined, or NaN). ```js console.log(isDefinedStrict(42)); // true console.log(isDefinedStrict(null)); // false console.log(isDefinedStrict(NaN)); // false console.log(isDefinedStrict(undefined)); // false ``` - **`isInf(value: any): boolean`** Checks if a value is Infinity. ```js console.log(isInf(Infinity)); // true console.log(isInf(42)); // false ``` - **`isFinite(value: any): boolean`** Checks if a value is a finite number. ```js console.log(isFinite(42)); // true console.log(isFinite(Infinity)); // false ``` - **`isTruthy(value: any): boolean`** Checks if a value is truthy (not falsy). ```js console.log(isTruthy(1)); // true console.log(isTruthy(0)); // false ``` - **`isFalsy(value: any): boolean`** Checks if a value is falsy (false, 0, "", null, undefined, or NaN). ```js console.log(isFalsy(0)); // true console.log(isFalsy(1)); // false ``` - **`isFalse(value: any): boolean`** Checks if a value is strictly `false`. ```js console.log(isFalse(false)); // true console.log(isFalse(true)); // false ``` - **`isTrue(value: any): boolean`** Checks if a value is strictly `true`. ```js console.log(isTrue(true)); // true console.log(isTrue(false)); // false ``` - **`isIterable(value: any): boolean`** Checks if a value is iterable (has an `Symbol.iterator` property). ```js console.log(isIterable([1, 2, 3])); // true console.log(isIterable(42)); // false ``` - **`isEven(value: any): boolean`** Checks if a number is even. ```js console.log(isEven(42)); // true console.log(isEven(43)); // false ``` - **`isOdd(value: any): boolean`** Checks if a number is odd. ```js console.log(isOdd(43)); // true console.log(isOdd(42)); // false ``` - **`isError(value: any): boolean`** Checks if a value is an instance of the `Error` object. ```js console.log(isError(new Error())); // true console.log(isError('Error')); // false ``` - **`isChildOf(child: any, parent: any): boolean`** Checks if an object is a child of the given class (instanceof). ```js class Parent {} const child = new Parent(); console.log(isChildOf(child, Parent)); // true ``` - **`isClass(value: any): boolean`** Checks if a value is a class (constructor function). ```js console.log(isClass(class MyClass {})); // true console.log(isClass(function myFunc() {})); // false ``` - **`isSubclass(child: any, parent: any): boolean`** Checks if a class is a subclass of another class. ```js class Parent {} class Child extends Parent {} console.log(isSubclass(Child, Parent)); // true ``` - **`isDate(value: any): boolean`** Checks if a value is a valid `Date` object. ```js console.log(isDate(new Date())); // true console.log(isDate('2021-01-01')); // false ``` - **`isRegex(value: any): boolean`** Checks if a value is a valid `RegExp` (Regular Expression). ```js console.log(isRegex(/abc/)); // true console.log(isRegex('abc')); // false ``` - **`isPromise(value: any): boolean`** Checks if a value is a Promise. ```js console.log(isPromise(Promise.resolve())); // true console.log(isPromise(function () {})); // false ``` ## Pattern Functions Pattern functions allow you to validate whether a value follows a specific pattern. - **`isCamelCase(value: any): boolean`** Checks if a string is in camelCase format. ```js console.log(isCamelCase('camelCase')); // true console.log(isCamelCase('snake_case')); // false ``` - **`isPascalCase(value: any): boolean`** Checks if a string is in PascalCase format. ```js console.log(isPascalCase('PascalCase')); // true console.log(isPascalCase('pascalCase')); // false ``` - **`isSnakeCase(value: any): boolean`** Checks if a string is in snake_case format. ```js console.log(isSnakeCase('snake_case')); // true console.log(isSnakeCase('snakeCase')); // false ``` - **`iskababCase(value: any): boolean`** Checks if a string is in kebab-case format. ```js console.log(iskababCase('kebab-case')); // true console.log(iskababCase('kebabCase')); // false ``` - **`isIso(value: any): boolean`** Checks if a string is in ISO 8601 format (e.g., "2024-11-28T12:30:00.000Z"). ```js console.log(isIso('2024-11-28T12:30:00.000Z')); // true console.log(isIso('2024-11-28')); // false ``` - **`isDateTime(value: any): boolean`** Checks if a string is in the datetime format (e.g., "2024-11-28 12:30:00"). ```js console.log(isDateTime('2024-11-28 12:30:00')); // true console.log(isDateTime('2024-11-28')); // false ``` - **`isDateStr(date: any): boolean`** Checks if a string is in the date format (e.g., "2024-11-28"). ```js console.log(isDateStr('2024-11-28')); // true console.log(isDateStr('2024-11-28 12:30:00')); // false ``` - **`isTimeStr(date: any): boolean`** Checks if a string is in the time format (e.g., "12:30:00"). ```js console.log(isTimeStr('12:30:00')); // true console.log(isTimeStr('12:30')); // false ``` - **`isPropExp(value: any): boolean`** Checks if a string is a valid property name (e.g., a valid js variable name). ```js console.log(isPropExp('myVar')); // true console.log(isPropExp('123var')); // false ``` - **`isNumExp(value: any): boolean`** Checks if a string is a valid number (including integers and floats). ```js console.log(isNumExp('123')); // true console.log(isNumExp('123.45')); // true console.log(isNumExp('abc')); // false ``` - **`isIntExp(value: any): boolean`** Checks if a string is a valid integer. ```js console.log(isIntExp('123')); // true console.log(isIntExp('123.45')); // false ``` - **`isFloatExp(value: any): boolean`** Checks if a string is a valid float (decimal number). ```js console.log(isFloatExp('123.45')); // true console.log(isFloatExp('123')); // false ``` - **`isStrExp(value: any): boolean`** Checks if a string is a valid string literal (single or double-quoted). ```js console.log(isStrExp("'hello'")); // true console.log(isStrExp('"world"')); // true console.log(isStrExp('hello')); // false ``` - **`isDotExp(value: any): boolean`** Checks if a string is a valid dot notation expression for property access. ```js console.log(isDotExp('object.property')); // true console.log(isDotExp('object.123property')); // false ``` - **`isBracketExp(value: any): boolean`** Checks if a string is a valid bracket notation expression for property access. ```js console.log(isBracketExp('object["property"]')); // true console.log(isBracketExp('object["123"]')); // false ``` - **`isAnyExp(value: any): boolean`** Checks if a string is a valid combination of dot and bracket notations. ```js console.log(isAnyExp('object.property[0]')); // true console.log(isAnyExp('object.property["key"]')); // true console.log(isAnyExp('object.123property[0]')); // false ``` ## Content Functions Content functions help determine if the content of an object, array, or string matches the expected structure or value. - **`isFullObj(value: any): boolean`** Checks if an object is non-empty (has at least one property). ```js console.log(isFullObj({ key: 'value' })); // true console.log(isFullObj({})); // false ``` - **`isFullArr(value: any): boolean`** Checks if an array is non-empty (has at least one element). ```js console.log(isFullArr([1, 2, 3])); // true console.log(isFullArr([])); // false ``` - **`isFullStr(value: any): boolean`** Checks if a string is non-empty (contains at least one non-whitespace character). ```js console.log(isFullStr('Hello')); // true console.log(isFullStr(' ')); // false ``` - **`isEmptyObj(value: any): boolean`** Checks if an object is empty (has no properties). ```js console.log(isEmptyObj({})); // true console.log(isEmptyObj({ key: 'value' })); // false ``` - **`isEmptyArr(value: any): boolean`** Checks if an array is empty (contains no elements). ```js console.log(isEmptyArr([])); // true console.log(isEmptyArr([1])); // false ``` - **`isEmptyStr(value: any): boolean`** Checks if a string is empty (contains non-whitespace characters). ```js console.log(isEmptyStr('')); // true console.log(isEmptyStr(' ')); // true console.log(isEmptyStr('sss')); // true console.log(isEmptyStr('Hello')); // false ``` - **`isArrOfNum(value: any): boolean`** Checks if an array is non-empty and contains only numbers. ```js console.log(isArrOfNum([1, 2, 3.3])); // true console.log(isArrOfNum([1, 'two', 3.3])); // false ``` - **`isArrOfInt(value: any): boolean`** Checks if an array is non-empty and contains only integers. ```js console.log(isArrOfInt([1, 2, 3])); // true console.log(isArrOfInt([1, 2.5, 3])); // false ``` - **`isArrOfFloat(value: any): boolean`** Checks if an array is non-empty and contains only floating-point numbers. ```js console.log(isArrOfFloat([1.5, 2.7, 3.2])); // true console.log(isArrOfFloat([1, 2.5, '3'])); // false ``` - **`isArrOfStr(value: any): boolean`** Checks if an array is non-empty and contains only strings. ```js console.log(isArrOfStr(['hello', 'world'])); // true console.log(isArrOfStr(['hello', 123])); // false ``` - **`isArrOfArr(value: any): boolean`** Checks if an array is non-empty and contains only arrays. ```js console.log(isArrOfArr([[], []])); // true console.log(isArrOfArr([[], 'two'])); // false ``` - **`isArrOfObj(value: any): boolean`** Checks if an array is non-empty and contains only objects. ```js console.log(isArrOfObj([{}, {}])); // true console.log(isArrOfObj([{}, 1])); // false ``` - **`isArrOfFunc(value: any): boolean`** Checks if an array is non-empty and contains only functions. ```js console.log(isArrOfFunc([() => {}, () => {}])); // true console.log(isArrOfFunc([() => {}, 'string'])); // false ``` - **`isArrOfBool(value: any): boolean`** Checks if an array is non-empty and contains only booleans. ```js console.log(isArrOfBool([true, false, true])); // true console.log(isArrOfBool([true, 'false'])); // false ``` - **`isArrOfAny(value: any): boolean`** Checks if an array is non-empty and allows any type of value (no type restriction). ```js console.log(isArrOfAny([1, 'string', true])); // true console.log(isArrOfAny([])); // false ``` - **`isObjOfNum(value: any): boolean`** Checks if an object is non-empty and contains only numeric values. ```js console.log(isObjOfNum({ a: 1, b: 2.2 })); // true console.log(isObjOfNum({ a: 1, b: 'two' })); // false ``` - **`isObjOfInt(value: any): boolean`** Checks if an object is non-empty and contains only integer values. ```js console.log(isObjOfInt({ a: 1, b: 2 })); // true console.log(isObjOfInt({ a: 1, b: 2.5 })); // false ``` - **`isObjOfFloat(value: any): boolean`** Checks if an object is non-empty and contains only floating-point values. ```js console.log(isObjOfFloat({ a: 1.1, b: 2.5 })); // true console.log(isObjOfFloat({ a: 1, b: '2.5' })); // false ``` - **`isObjOfStr(value: any): boolean`** Checks if an object is non-empty and contains only string values. ```js console.log(isObjOfStr({ a: 'apple', b: 'banana' })); // true console.log(isObjOfStr({ a: 'apple', b: 123 })); // false ``` - **`isObjOfArr(value: any): boolean`** Checks if an object is non-empty and contains only arrays as values. ```js console.log(isObjOfArr({ a: [1, 2], b: [3, 4] })); // true console.log(isObjOfArr({ a: [1, 2], b: 'string' })); // false ``` - **`isObjOfObj(value: any): boolean`** Checks if an object is non-empty and contains only objects as values. ```js console.log(isObjOfObj({ a: { x: 1 }, b: { y: 2 } })); // true console.log(isObjOfObj({ a: { x: 1 }, b: 'string' })); // false ``` - **`isObjOfFunc(value: any): boolean`** Checks if an object is non-empty and contains only functions as values. ```js console.log(isObjOfFunc({ a: () => {}, b: () => {} })); // true console.log(isObjOfFunc({ a: () => {}, b: 'string' })); // false ``` - **`isObjOfBool(value: any): boolean`** Checks if an object is non-empty and contains only boolean values. ```js console.log(isObjOfBool({ a: true, b: false })); // true console.log(isObjOfBool({ a: true, b: 'false' })); // false ``` - **`isObjOfAny(value: any): boolean`** Checks if an object is non-empty and allows any type of value (no type restriction). ```js console.log(isObjOfAny({ a: 1, b: 'string' })); // true console.log(isObjOfAny({})); // false ``` - **`hasProp(object: any, property: any): boolean`** Checks if an object has a specific property. ```js console.log(hasProp({ a: 1, b: 2 }, 'a')); // true console.log(hasProp({ a: 1, b: 2 }, 'c')); // false ``` - **`hasProps(object: any, ...properties: Array<any>): boolean`** Checks if an object has all specified properties. ```js console.log(hasProps({ a: 1, b: 2 }, 'a', 'b')); // true console.log(hasProps({ a: 1, b: 2 }, 'a', 'c')); // false ``` - **`hasIndex(target: any, index: any): boolean`** Checks if an index is within the range of a target (array, string, or object). ```js console.log(hasIndex([1, 2, 3], 1)); // true console.log(hasIndex([1, 2, 3], 3)); // false console.log(hasIndex('hello', 1)); // true console.log(hasIndex('hello', 5)); // false ``` - **`hasLength(target: any, length: any): boolean`** Checks if the length of a target (array, string, or object) matches a specified length. ```js console.log(hasLength([1, 2, 3], 3)); // true console.log(hasLength([1, 2, 3], 2)); // false console.log(hasLength('hello', 5)); // true console.log(hasLength('hello', 4)); // false console.log(hasLength({ a: 1, b: 2 }, 2)); // true console.log(hasLength({ a: 1, b: 2 }, 1)); // false ``` - **`hasFlag(regex: any, flag: any): boolean`** Checks if a regex has a specific flag. ```js console.log(hasFlag(/abc/i, 'i')); // true console.log(hasFlag(/abc/i, 'g')); // false ``` - **`hasKey(object: any, key: any): boolean`** Checks if an object has a specific key (property name). ```js console.log(hasKey({ a: 1, b: 2 }, 'a')); // true console.log(hasKey({ a: 1, b: 2 }, 'c')); // false ``` - **`hasKeys(object: any, ...keys: Array<any>): boolean`** Checks if an object contains all of the specified keys (property names). ```js console.log(hasKeys({ a: 1, b: 2 }, 'a', 'b')); // true console.log(hasKeys({ a: 1, b: 2 }, 'a', 'c')); // false console.log(hasKeys({ a: 1, b: 2, c: 3 }, 'a', 'b')); // true ``` - **`hasValue(target: any, value: any): boolean`** Checks if an (object|array|string) has a specific value. ```js console.log(hasValue({ a: 1, b: 2 }, 2)); // true console.log(hasValue([1, 2, 3], 2)); // true console.log(hasValue('hello world', 'world')); // true console.log(hasValue({ a: 1, b: 2 }, 3)); // false ``` - **`hasValues(target: any, ...values: Array<any>): boolean`** Checks if an (object|array|string) contains all of the specified values. ```js console.log(hasValues({ a: 1, b: 2 }, 1, 2)); // true console.log(hasValues([1, 2, 3], 1, 3)); // true console.log(hasValues('hello world', 'hello', 'world')); // true console.log(hasValues(['hello', 'foo'], 'hello', 'bar')); // false ```