nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
74 lines (73 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isEmail = isEmail;
exports.isEmailArray = isEmailArray;
exports.isDateString = isDateString;
exports.isUUID = isUUID;
exports.isBrowser = isBrowser;
exports.isNode = isNode;
exports.isURL = isURL;
exports.isBase64 = isBase64;
exports.isHexString = isHexString;
exports.isBinaryString = isBinaryString;
exports.isPhoneNumber = isPhoneNumber;
exports.isIPAddress = isIPAddress;
exports.isEnvironment = isEnvironment;
exports.isNumericString = isNumericString;
const non_primitives_1 = require("./non-primitives");
const primitives_1 = require("./primitives");
function isEmail(value) {
return (0, primitives_1.isString)(value) && /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(value);
}
function isEmailArray(value) {
return (0, non_primitives_1.isArray)(value) && value?.every(isEmail);
}
function isDateString(value) {
return (0, primitives_1.isString)(value) && !Number.isNaN(Date.parse(value));
}
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 (0, primitives_1.isString)(value) && expr.test(value);
}
function isBrowser() {
return typeof window !== 'undefined' && typeof document !== 'undefined';
}
function isNode() {
return (typeof process !== 'undefined' &&
process.versions != null &&
process.versions.node != null);
}
function isURL(value) {
try {
new URL((0, primitives_1.isString)(value) ? value : '');
return true;
}
catch {
return false;
}
}
function isBase64(value) {
return ((0, primitives_1.isString)(value) &&
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value));
}
function isHexString(value) {
return ((0, primitives_1.isString)(value) &&
/^[\da-fA-F\s]+$/.test(value) &&
value.replace(/\s+/g, '').length % 2 === 0);
}
function isBinaryString(value) {
return ((0, primitives_1.isString)(value) && /^[01\s]+$/.test(value) && value.replace(/\s+/g, '').length % 8 === 0);
}
function isPhoneNumber(value) {
return (0, primitives_1.isString)(value) && /^\+?[1-9]\d{1,14}$/.test(value);
}
function isIPAddress(value) {
return ((0, primitives_1.isString)(value) && /^(?:\d{1,3}\.){3}\d{1,3}$|^([a-f0-9:]+:+)+[a-f0-9]+$/i.test(value));
}
function isEnvironment(env) {
return process.env.NODE_ENV === env;
}
function isNumericString(value) {
return (0, primitives_1.isString)(value) && value?.trim() !== '' && Number.isFinite(Number(value));
}