UNPKG

nhb-toolbox

Version:

A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.

58 lines (57 loc) 1.95 kB
import { isArray } from './non-primitives.js'; import { isString } from './primitives.js'; export function isEmail(value) { return isString(value) && /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(value); } export function isEmailArray(value) { return isArray(value) && value?.every(isEmail); } export function isDateString(value) { return isString(value) && !Number.isNaN(Date.parse(value)); } export function isUUID(value) { const h = '[0-9a-f]'; const expr = new RegExp(`^${h}{8}-${h}{4}-[1-8]${h}{3}-[89ab]${h}{3}-${h}{12}$`, 'i'); return isString(value) && expr.test(value); } export function isBrowser() { return typeof window !== 'undefined' && typeof document !== 'undefined'; } export function isNode() { return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null); } export function isURL(value) { try { new URL(isString(value) ? value : ''); return true; } catch { return false; } } export function isBase64(value) { return (isString(value) && /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value)); } export function isHexString(value) { return (isString(value) && /^[\da-fA-F\s]+$/.test(value) && value.replace(/\s+/g, '').length % 2 === 0); } export function isBinaryString(value) { return (isString(value) && /^[01\s]+$/.test(value) && value.replace(/\s+/g, '').length % 8 === 0); } export function isPhoneNumber(value) { return isString(value) && /^\+?[1-9]\d{1,14}$/.test(value); } export function isIPAddress(value) { return (isString(value) && /^(?:\d{1,3}\.){3}\d{1,3}$|^([a-f0-9:]+:+)+[a-f0-9]+$/i.test(value)); } export function isEnvironment(env) { return process.env.NODE_ENV === env; } export function isNumericString(value) { return isString(value) && value?.trim() !== '' && Number.isFinite(Number(value)); }