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
JavaScript
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));
}