UNPKG

jet-validators

Version:

Fast, zero-dependency TypeScript validators and utilities for runtime checks, parsing, and lightweight object schema validation.

1,469 lines (1,468 loc) 37.7 kB
import { parseBoolean } from './utils/index.js'; export function isUndef(arg) { return arg === undefined; } export function isNull(arg) { return arg === null; } export function isNullish(arg) { return arg === null || arg === undefined; } export function isBoolean(arg) { return typeof arg === 'boolean'; } export function isOptionalBoolean(arg) { return arg === undefined || typeof arg === 'boolean'; } export function isNullableBoolean(arg) { return arg === null || typeof arg === 'boolean'; } export function isNullishBoolean(arg) { return arg === null || arg === undefined || typeof arg === 'boolean'; } export function isBooleanArray(arg) { if (!Array.isArray(arg)) { return false; } const length = arg.length; for (let i = 0; i < length; i += 1) { if (typeof arg[i] !== 'boolean') { return false; } } return true; } export function isOptionalBooleanArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } const length = arg.length; for (let i = 0; i < length; i += 1) { if (typeof arg[i] !== 'boolean') { return false; } } return true; } export function isNullableBooleanArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } const length = arg.length; for (let i = 0; i < length; i += 1) { if (typeof arg[i] !== 'boolean') { return false; } } return true; } export function isNullishBooleanArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } const length = arg.length; for (let i = 0; i < length; i += 1) { if (typeof arg[i] !== 'boolean') { return false; } } return true; } export function isValidBoolean(arg) { try { parseBoolean(arg); return true; } catch { return false; } } export function isOptionalValidBoolean(arg) { if (arg === undefined) { return true; } try { parseBoolean(arg); return true; } catch { return false; } } export function isNullableValidBoolean(arg) { if (arg === null) { return true; } try { parseBoolean(arg); return true; } catch { return false; } } export function isNullishValidBoolean(arg) { if (arg === null || arg === undefined) { return true; } try { parseBoolean(arg); return true; } catch { return false; } } export function isValidBooleanArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; try { parseBoolean(value); } catch { return false; } } return true; } export function isOptionalValidBooleanArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; try { parseBoolean(value); } catch { return false; } } return true; } export function isNullableValidBooleanArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; try { parseBoolean(value); } catch { return false; } } return true; } export function isNullishValidBooleanArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; try { parseBoolean(value); } catch { return false; } } return true; } export function isNumber(arg) { return typeof arg === 'number' && !isNaN(arg); } export function isOptionalNumber(arg) { return arg === undefined || (typeof arg === 'number' && !isNaN(arg)); } export function isNullableNumber(arg) { return arg === null || (typeof arg === 'number' && !isNaN(arg)); } export function isNullishNumber(arg) { return (arg === null || arg === undefined || (typeof arg === 'number' && !isNaN(arg))); } export function isNumberArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value)) { return false; } } return true; } export function isOptionalNumberArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value)) { return false; } } return true; } export function isNullableNumberArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value)) { return false; } } return true; } export function isNullishNumberArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value)) { return false; } } return true; } export function isPositiveNumber(arg) { return typeof arg === 'number' && !isNaN(arg) && arg > 0; } export function isOptionalPositiveNumber(arg) { return (arg === undefined || (typeof arg === 'number' && !isNaN(arg) && arg > 0)); } export function isNullablePositiveNumber(arg) { return arg === null || (typeof arg === 'number' && !isNaN(arg) && arg > 0); } export function isNullishPositiveNumber(arg) { return (arg === null || arg === undefined || (typeof arg === 'number' && !isNaN(arg) && arg > 0)); } export function isPositiveNumberArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value <= 0) { return false; } } return true; } export function isOptionalPositiveNumberArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value <= 0) { return false; } } return true; } export function isNullablePositiveNumberArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value <= 0) { return false; } } return true; } export function isNullishPositiveNumberArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value <= 0) { return false; } } return true; } export function isNegativeNumber(arg) { return typeof arg === 'number' && !isNaN(arg) && arg < 0; } export function isOptionalNegativeNumber(arg) { return (arg === undefined || (typeof arg === 'number' && !isNaN(arg) && arg < 0)); } export function isNullableNegativeNumber(arg) { return arg === null || (typeof arg === 'number' && !isNaN(arg) && arg < 0); } export function isNullishNegativeNumber(arg) { return (arg === null || arg === undefined || (typeof arg === 'number' && !isNaN(arg) && arg < 0)); } export function isNegativeNumberArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value >= 0) { return false; } } return true; } export function isOptionalNegativeNumberArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value >= 0) { return false; } } return true; } export function isNullableNegativeNumberArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value >= 0) { return false; } } return true; } export function isNullishNegativeNumberArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value >= 0) { return false; } } return true; } export function isUnsignedNumber(arg) { return typeof arg === 'number' && !isNaN(arg) && arg >= 0; } export function isOptionalUnsignedNumber(arg) { return (arg === undefined || (typeof arg === 'number' && !isNaN(arg) && arg >= 0)); } export function isNullableUnsignedNumber(arg) { return arg === null || (typeof arg === 'number' && !isNaN(arg) && arg >= 0); } export function isNullishUnsignedNumber(arg) { return (arg === null || arg === undefined || (typeof arg === 'number' && !isNaN(arg) && arg >= 0)); } export function isUnsignedNumberArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value < 0) { return false; } } return true; } export function isOptionalUnsignedNumberArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value < 0) { return false; } } return true; } export function isNullableUnsignedNumberArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value < 0) { return false; } } return true; } export function isNullishUnsignedNumberArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'number' || isNaN(value) || value < 0) { return false; } } return true; } export function isInteger(arg) { return Number.isInteger(arg); } export function isOptionalInteger(arg) { return arg === undefined || Number.isInteger(arg); } export function isNullableInteger(arg) { return arg === null || Number.isInteger(arg); } export function isNullishInteger(arg) { return arg === null || arg === undefined || Number.isInteger(arg); } export function isIntegerArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value)) { return false; } } return true; } export function isOptionalIntegerArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value)) { return false; } } return true; } export function isNullableIntegerArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value)) { return false; } } return true; } export function isNullishIntegerArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value)) { return false; } } return true; } export function isPositiveInteger(arg) { return Number.isInteger(arg) && arg > 0; } export function isOptionalPositiveInteger(arg) { return arg === undefined || (Number.isInteger(arg) && arg > 0); } export function isNullablePositiveInteger(arg) { return arg === null || (Number.isInteger(arg) && arg > 0); } export function isNullishPositiveInteger(arg) { return (arg === null || arg === undefined || (Number.isInteger(arg) && arg > 0)); } export function isPositiveIntegerArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value <= 0) { return false; } } return true; } export function isOptionalPositiveIntegerArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value <= 0) { return false; } } return true; } export function isNullablePositiveIntegerArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value <= 0) { return false; } } return true; } export function isNullishPositiveIntegerArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value <= 0) { return false; } } return true; } export function isNegativeInteger(arg) { return Number.isInteger(arg) && arg < 0; } export function isOptionalNegativeInteger(arg) { return arg === undefined || (Number.isInteger(arg) && arg < 0); } export function isNullableNegativeInteger(arg) { return arg === null || (Number.isInteger(arg) && arg < 0); } export function isNullishNegativeInteger(arg) { return (arg === null || arg === undefined || (Number.isInteger(arg) && arg < 0)); } export function isNegativeIntegerArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value >= 0) { return false; } } return true; } export function isOptionalNegativeIntegerArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value >= 0) { return false; } } return true; } export function isNullableNegativeIntegerArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value >= 0) { return false; } } return true; } export function isNullishNegativeIntegerArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value >= 0) { return false; } } return true; } export function isUnsignedInteger(arg) { return Number.isInteger(arg) && arg >= 0; } export function isOptionalUnsignedInteger(arg) { return arg === undefined || (Number.isInteger(arg) && arg >= 0); } export function isNullableUnsignedInteger(arg) { return arg === null || (Number.isInteger(arg) && arg >= 0); } export function isNullishUnsignedInteger(arg) { return (arg === null || arg === undefined || (Number.isInteger(arg) && arg >= 0)); } export function isUnsignedIntegerArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value < 0) { return false; } } return true; } export function isOptionalUnsignedIntegerArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value < 0) { return false; } } return true; } export function isNullableUnsignedIntegerArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value < 0) { return false; } } return true; } export function isNullishUnsignedIntegerArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!Number.isInteger(value) || value < 0) { return false; } } return true; } export function isBigInt(arg) { return typeof arg === 'bigint'; } export function isOptionalBigInt(arg) { return arg === undefined || typeof arg === 'bigint'; } export function isNullableBigInt(arg) { return arg === null || typeof arg === 'bigint'; } export function isNullishBigInt(arg) { return arg === null || arg === undefined || typeof arg === 'bigint'; } export function isBigIntArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'bigint') { return false; } } return true; } export function isOptionalBigIntArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'bigint') { return false; } } return true; } export function isNullableBigIntArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'bigint') { return false; } } return true; } export function isNullishBigIntArr(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'bigint') { return false; } } return true; } export function isValidNumber(arg) { const casted = Number(arg); return !isNaN(casted); } export function isOptionalValidNumber(arg) { if (arg === undefined) { return true; } const casted = Number(arg); return !isNaN(casted); } export function isNullableValidNumber(arg) { if (arg === null) { return true; } const casted = Number(arg); return !isNaN(casted); } export function isNullishValidNumber(arg) { if (arg === null || arg === undefined) { return true; } const casted = Number(arg); return !isNaN(casted); } export function isValidNumberArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; const casted = Number(value); if (isNaN(casted)) { return false; } } return true; } export function isOptionalValidNumberArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; const casted = Number(value); if (isNaN(casted)) { return false; } } return true; } export function isNullableValidNumberArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; const casted = Number(value); if (isNaN(casted)) { return false; } } return true; } export function isNishValidNumArr(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; const casted = Number(value); if (isNaN(casted)) { return false; } } return true; } export function isString(arg) { return typeof arg === 'string'; } export function isOptionalString(arg) { return arg === undefined || typeof arg === 'string'; } export function isNullableString(arg) { return arg === null || typeof arg === 'string'; } export function isNullishString(arg) { return arg === null || arg === undefined || typeof arg === 'string'; } export function isStringArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'string') { return false; } } return true; } export function isOptionalStringArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'string') { return false; } } return true; } export function isNullableStringArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'string') { return false; } } return true; } export function isNullishStringArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'string') { return false; } } return true; } export function isNonEmptyString(arg) { return typeof arg === 'string' && arg.length > 0; } export function isOptionalNonEmptyString(arg) { return arg === undefined || (typeof arg === 'string' && arg.length > 0); } export function isNullableNonEmptyString(arg) { return arg === null || (typeof arg === 'string' && arg.length > 0); } export function isNullishNonEmptyString(arg) { return (arg === null || arg === undefined || (typeof arg === 'string' && arg.length > 0)); } export function isNonEmptyStringArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'string' || value.length === 0) { return false; } } return true; } export function isOptionalNonEmptyStringArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'string' || value.length === 0) { return false; } } return true; } export function isNullableNonEmptyStringArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'string' || value.length === 0) { return false; } } return true; } export function isNullishNonEmptyStringArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'string' || value.length === 0) { return false; } } return true; } export function isSymbol(arg) { return typeof arg === 'symbol'; } export function isOptionalSymbol(arg) { return arg === undefined || typeof arg === 'symbol'; } export function isNullableSymbol(arg) { return arg === null || typeof arg === 'symbol'; } export function isNullishSymbol(arg) { return arg === null || arg === undefined || typeof arg === 'symbol'; } export function isSymbolArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'symbol') { return false; } } return true; } export function isOptionalSymbolArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'symbol') { return false; } } return true; } export function isNullableSymbolArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'symbol') { return false; } } return true; } export function isNullishSymbolArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'symbol') { return false; } } return true; } export function isDate(arg) { return arg instanceof Date && !isNaN(arg.getTime()); } export function isOptionalDate(arg) { return arg === undefined || (arg instanceof Date && !isNaN(arg.getTime())); } export function isNullableDate(arg) { return arg === null || (arg instanceof Date && !isNaN(arg.getTime())); } export function isNullishDate(arg) { return (arg === null || arg === undefined || (arg instanceof Date && !isNaN(arg.getTime()))); } export function isDateArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!(value instanceof Date) || isNaN(value.getTime())) { return false; } } return true; } export function isOptionalDateArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!(value instanceof Date) || isNaN(value.getTime())) { return false; } } return true; } export function isNullableDateArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!(value instanceof Date) || isNaN(value.getTime())) { return false; } } return true; } export function isNullishDateArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (!(value instanceof Date) || isNaN(value.getTime())) { return false; } } return true; } export function isValidDate(arg) { const isStringType = typeof arg === 'string'; const isNumberType = typeof arg === 'number' && !isNaN(arg); const isDateType = arg instanceof Date; if (!isStringType && !isNumberType && !isDateType) { return false; } const value = new Date(arg); return !isNaN(value.getTime()); } export function isOptionalValidDate(arg) { if (arg === undefined) { return true; } const isStringType = typeof arg === 'string'; const isNumberType = typeof arg === 'number' && !isNaN(arg); const isDateType = arg instanceof Date; if (!isStringType && !isNumberType && !isDateType) { return false; } const value = new Date(arg); return !isNaN(value.getTime()); } export function isNullableValidDate(arg) { if (arg === null) { return true; } const isStringType = typeof arg === 'string'; const isNumberType = typeof arg === 'number' && !isNaN(arg); const isDateType = arg instanceof Date; if (!isStringType && !isNumberType && !isDateType) { return false; } const value = new Date(arg); return !isNaN(value.getTime()); } export function isNullishValidDate(arg) { if (arg === null || arg === undefined) { return true; } const isStringType = typeof arg === 'string'; const isNumberType = typeof arg === 'number' && !isNaN(arg); const isDateType = arg instanceof Date; if (!isStringType && !isNumberType && !isDateType) { return false; } const value = new Date(arg); return !isNaN(value.getTime()); } export function isValidDateArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; const isStringType = typeof value === 'string'; const isNumberType = typeof value === 'number' && !isNaN(value); const isDateType = value instanceof Date; if (!isStringType && !isNumberType && !isDateType) { return false; } const parsed = new Date(value); if (isNaN(parsed.getTime())) { return false; } } return true; } export function isOptionalValidDateArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; const isStringType = typeof value === 'string'; const isNumberType = typeof value === 'number' && !isNaN(value); const isDateType = value instanceof Date; if (!isStringType && !isNumberType && !isDateType) { return false; } const parsed = new Date(value); if (isNaN(parsed.getTime())) { return false; } } return true; } export function isNullableValidDateArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; const isStringType = typeof value === 'string'; const isNumberType = typeof value === 'number' && !isNaN(value); const isDateType = value instanceof Date; if (!isStringType && !isNumberType && !isDateType) { return false; } const parsed = new Date(value); if (isNaN(parsed.getTime())) { return false; } } return true; } export function isNullishValidDateArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; const isStringType = typeof value === 'string'; const isNumberType = typeof value === 'number' && !isNaN(value); const isDateType = value instanceof Date; if (!isStringType && !isNumberType && !isDateType) { return false; } const parsed = new Date(value); if (isNaN(parsed.getTime())) { return false; } } return true; } export function isObject(arg) { return arg !== null && typeof arg === 'object'; } export function isOptionalObject(arg) { return arg === undefined || (arg !== null && typeof arg === 'object'); } export function isNullableObject(arg) { return arg === null || (arg !== null && typeof arg === 'object'); } export function isNullishObject(arg) { return (arg === null || arg === undefined || (arg !== null && typeof arg === 'object')); } export function isObjectArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (value === null || typeof value !== 'object') { return false; } } return true; } export function isOptionalObjectArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (value === null || typeof value !== 'object') { return false; } } return true; } export function isNullableObjectArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (value === null || typeof value !== 'object') { return false; } } return true; } export function isNullishObjectArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (value === null || typeof value !== 'object') { return false; } } return true; } export function isFunction(arg) { return typeof arg === 'function'; } export function isOptionalFunction(arg) { return arg === undefined || typeof arg === 'function'; } export function isNullableFunction(arg) { return arg === null || typeof arg === 'function'; } export function isNullishFunction(arg) { return arg === null || arg === undefined || typeof arg === 'function'; } export function isFunctionArray(arg) { if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'function') { return false; } } return true; } export function isOptionalFunctionArray(arg) { if (arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'function') { return false; } } return true; } export function isNullableFunctionArray(arg) { if (arg === null) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'function') { return false; } } return true; } export function isNullishFunctionArray(arg) { if (arg === null || arg === undefined) { return true; } if (!Array.isArray(arg)) { return false; } for (let i = 0; i < arg.length; i += 1) { const value = arg[i]; if (typeof value !== 'function') { return false; } } return true; }