validme
Version:
A comprehensive validation library for various data types.
1 lines • 10.3 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["// Basic Validations\ntype ValidationFn<T = any> = (value: T, ...args: any[]) => boolean;\n\nexport const isRequired: ValidationFn<string | number | any> = (value) => value !== undefined && value !== null && value !== '';\nexport const minLength: ValidationFn<string> = (value, min: number) => value?.length >= min;\nexport const maxLength: ValidationFn<string> = (value, max: number) => value?.length <= max;\nexport const exactLength: ValidationFn<string> = (value, length: number) => value?.length === length;\nexport const pattern: ValidationFn<string> = (value, regex: RegExp) => regex.test(value);\n\n// String Validations\nexport const isEmail: ValidationFn<string> = (value) => pattern(value, /^[\\w-\\.]+@[\\w-]+\\.[a-z]{2,}$/i);\nexport const isURL: ValidationFn<string> = (value) => pattern(value, /^(https?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w\\-._~:/?#[\\]@!$&'()*+,;=.]+$/);\nexport const isAlpha: ValidationFn<string> = (value) => pattern(value, /^[a-zA-Z]+$/);\nexport const isAlphaNumeric: ValidationFn<string> = (value) => pattern(value, /^[a-zA-Z0-9]+$/);\nexport const isSlug: ValidationFn<string> = (value) => pattern(value, /^[a-z0-9]+(?:-[a-z0-9]+)*$/);\nexport const isLowercase: ValidationFn<string> = (value) => value === value?.toLowerCase();\nexport const isUppercase: ValidationFn<string> = (value) => value === value?.toUpperCase();\nexport const isMixedCase: ValidationFn<string> = (value) => value !== value?.toLowerCase() && value !== value?.toUpperCase();\nexport const isStrongPassword: ValidationFn<string> = (value) => pattern(value, /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$/);\nexport const isMediumPassword: ValidationFn<string> = (value) => pattern(value, /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[A-Za-z\\d]{8,}$/);\n\n// Number Validations\nexport const isNumeric: ValidationFn<string | number> = (value) => !isNaN(Number(value));\nexport const isInteger: ValidationFn<number> = (value) => Number.isInteger(value);\nexport const isFloat: ValidationFn<number> = (value) => Number(value) === value && !Number.isInteger(value);\nexport const isPositive: ValidationFn<number> = (value) => value > 0;\nexport const isNegative: ValidationFn<number> = (value) => value < 0;\nexport const minValue: ValidationFn<number> = (value, min: number) => value >= min;\nexport const maxValue: ValidationFn<number> = (value, max: number) => value <= max;\nexport const inRange: ValidationFn<number> = (value, min: number, max: number) => value >= min && value <= max;\n\n// Date/Time Validations\nexport const isValidDate: ValidationFn<string | Date> = (value) => !isNaN(new Date(value).getTime());\nexport const minDate: ValidationFn<string | Date> = (value, min: string | Date) => new Date(value) >= new Date(min);\nexport const maxDate: ValidationFn<string | Date> = (value, max: string | Date) => new Date(value) <= new Date(max);\nexport const beforeDate: ValidationFn<string | Date> = (value, date: string | Date) => new Date(value) < new Date(date);\nexport const afterDate: ValidationFn<string | Date> = (value, date: string | Date) => new Date(value) > new Date(date);\nexport const isTime: ValidationFn<string> = (value) => pattern(value, /^([01]\\d|2[0-3]):([0-5]\\d)(:[0-5]\\d)?$/);\nexport const isDateTime: ValidationFn<string> = (value) => {\n const [datePart, timePart] = value.split('T');\n return isValidDate(datePart) && isTime(timePart);\n};\n\n// Boolean Validations\nexport const isBoolean: ValidationFn<any> = (value) => typeof value === 'boolean';\n\n// Array Validations\nexport const minItems: ValidationFn<any[]> = (value, min: number) => Array.isArray(value) && value.length >= min;\nexport const maxItems: ValidationFn<any[]> = (value, max: number) => Array.isArray(value) && value.length <= max;\nexport const uniqueItems: ValidationFn<any[]> = (value) => Array.isArray(value) && new Set(value).size === value.length;\nexport const itemType: ValidationFn<any[]> = (value, typeCheckFn: ValidationFn) => Array.isArray(value) && value.every(typeCheckFn);\n\n// Object Validations\nexport const hasRequiredKeys: ValidationFn<object> = (obj, keys: string[]) => keys.every((key) => obj.hasOwnProperty(key));\nexport const keyType: ValidationFn<object> = (obj, key: string, typeCheckFn: ValidationFn) => (obj as any)[key] && typeCheckFn((obj as any)[key]);\nexport const hasExactKeys: ValidationFn<object> = (obj, keys: string[]) => Object.keys(obj).length === keys.length && hasRequiredKeys(obj, keys);\nexport const isEmptyObject: ValidationFn<object> = (obj) => Object.keys(obj).length === 0;\n\n// File Validations\nexport const isFileType: ValidationFn<string> = (fileName, extensions: string[]) => extensions.some((ext) => fileName.endsWith(ext));\nexport const maxFileSize: ValidationFn<number> = (fileSize, max: number) => fileSize <= max;\nexport const minFileSize: ValidationFn<number> = (fileSize, min: number) => fileSize >= min;\n\n// Advanced Validations\nexport const isCreditCard: ValidationFn<string> = (value) => pattern(value, /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|6(?:011|5[0-9]{2})[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/);\nexport const isUUID: ValidationFn<string> = (value) => pattern(value, /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);\nexport const isIPAddress: ValidationFn<string> = (value) => pattern(value, /^(\\d{1,3}\\.){3}\\d{1,3}$/);\nexport const isMACAddress: ValidationFn<string> = (value) => pattern(value, /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/);\nexport const isJSON: ValidationFn<string> = (value) => {\n try {\n JSON.parse(value);\n return true;\n } catch {\n return false;\n }\n};\nexport const isHexadecimal: ValidationFn<string> = (value) => pattern(value, /^[0-9a-fA-F]+$/);\nexport const isBase64: ValidationFn<string> = (value) => pattern(value, /^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/);"],"names":[],"mappings":"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"}