{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import punycode from 'punycode';\n\nexport const unicodeLength = (string?: string | unknown): number => {\n  if (!string || typeof string !== 'string') return 0;\n  return punycode.ucs2.decode(string).length;\n};\n\nexport const timeToInt = (time: string): number => parseInt(time.replace(':', ''), 10);\n","import { unicodeLength, timeToInt } from './utils';\n\nconst REGEX_EMAIL = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nconst REGEX_INT = /^\\d+$/;\nconst REGEX_FLOAT = /^\\d+(\\.\\d+)?$/;\nconst REGEX_PHONE = /^(?=.{2,50}$)[/\\-.()+\\s\\d–]*\\d{2,}[/\\-.()+\\s\\d–]*$/;\nconst REGEX_URL = /^(?:https?:\\/\\/)?((?:[^\\u0000-\\u007F]|[\\w-])+\\.(?:(?:[^\\u0000-\\u007F]|[\\w-]){2,}\\.)*(?:[^\\u0000-\\u007F]|[a-zA-Z])+)(?::\\d+)?(\\/(?:(?:[^\\u0000-\\u007F]|[\\w/.,'\"@+=!:;=%()-])+)?(?:\\.(?:[^\\u0000-\\u007F]|[\\w-])+)?)?((?:\\?|#)\\S+)?$/;\n\nconst REGEX_LOWERCASE = /[a-z]+/;\nconst REGEX_UPPERCASE = /[A-Z]+/;\nconst REGEX_NUMBERS = /\\d+/;\nconst REGEX_SPECIAL = /[^A-Za-z\\d]+/;\nconst REGEX_TIME = /^\\d{2}:\\d{2}$/;\n\nexport const isEmpty = (value?: unknown): boolean => typeof value === 'undefined' || value === null;\n\nexport const isRequired = (value?: unknown): boolean => {\n  if (isEmpty(value)) return false;\n  if (Array.isArray(value)) return value.length !== 0;\n\n  switch (typeof (value)) {\n    case 'string': return unicodeLength(value) !== 0;\n    case 'object': return JSON.stringify(value) !== '{}';\n    case 'boolean': return value;\n    case 'number': return true;\n    default: return Boolean(value);\n  }\n};\n\nexport const isLength = (value: unknown = '', min = 0, max = Infinity): boolean => {\n  if (isEmpty(value)) return false;\n  const length = Array.isArray(value) ? value.length : unicodeLength(value);\n  return (max >= length) && (length >= min);\n};\n\nexport const isRegex = (value: string, regex: RegExp): boolean => regex.test(value);\nexport const isEmail = (value: string): boolean => isRegex(value, REGEX_EMAIL);\nexport const isMostLikelyEmail = (value: string): boolean => Boolean(\n  value && value.includes('.') && value.includes('@') && isLength(value, 7),\n);\nexport const isPhone = (value: string): boolean => isRegex(value, REGEX_PHONE);\nexport const isUrl = (value: string): boolean => isRegex(value, REGEX_URL);\nexport const isInt = (value: string): boolean => isRegex(value, REGEX_INT);\nexport const isNumber = (value: string): boolean => isRegex(value, REGEX_FLOAT);\nexport const isEqual = (value: unknown, prop: unknown): boolean => (value === prop);\nexport const isOneOf = (\n  value: (string | number),\n  ...props: (string | number)[]\n): boolean => props.includes(value);\n\n// Common enough to be share-worthy\nexport const isShortText = (value: string): boolean => isLength(value, 2, 250);\nexport const isLongText = (value: string): boolean => isLength(value, 2, 5000);\n\nexport const hasPasswordLength = (value: string): boolean => isLength(value, 8);\nexport const hasLowerCase = (value: string): boolean => isRegex(value, REGEX_LOWERCASE);\nexport const hasUpperCase = (value: string): boolean => isRegex(value, REGEX_UPPERCASE);\nexport const hasNumbers = (value: string): boolean => isRegex(value, REGEX_NUMBERS);\nexport const hasSpecialCharacters = (value: string): boolean => isRegex(value, REGEX_SPECIAL);\nexport const isPassword = (value: string): boolean => (\n  [\n    hasPasswordLength,\n    hasLowerCase,\n    hasUpperCase,\n    hasNumbers,\n    hasSpecialCharacters,\n  ].every((fn) => fn(value))\n);\n\nexport const isTime = (value: string, min = '00:00', max = '23:59'): boolean => {\n  if (!isRegex(value, REGEX_TIME)) return false;\n\n  const valueInt = timeToInt(value);\n  return valueInt >= timeToInt(min) && valueInt <= timeToInt(max);\n};\n"],"names":[],"mappings":"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"}