UNPKG

typezen

Version:

A collection of TypeScript utilities for safe type checking and inference.

648 lines (639 loc) 20.6 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { TypeValidationError: () => TypeValidationError, is7zFile: () => is7zFile, isArmstrong: () => isArmstrong, isArray: () => isArray, isArrayBuffer: () => isArrayBuffer, isArrayOfSting: () => isArrayOfSting, isAsyncFunction: () => isAsyncFunction, isAsyncIterable: () => isAsyncIterable, isBMP: () => isBMP, isBase64URL: () => isBase64URL, isBetween: () => isBetween, isBinary: () => isBinary, isBoolean: () => isBoolean, isBrowser: () => isBrowser, isBuffer: () => isBuffer, isBz2File: () => isBz2File, isCSSFile: () => isCSSFile, isCSV: () => isCSV, isClass: () => isClass, isCreditCard: () => isCreditCard, isDOC: () => isDOC, isDOCX: () => isDOCX, isDataView: () => isDataView, isDate: () => isDate, isDeepEqual: () => isDeepEqual, isDesktop: () => isDesktop, isDomain: () => isDomain, isEmail: () => isEmail, isEmpty: () => isEmpty, isEmptyArray: () => isEmptyArray, isEmptyObject: () => isEmptyObject, isEmptyString: () => isEmptyString, isError: () => isError, isEven: () => isEven, isEventEmitter: () => isEventEmitter, isExecutableFile: () => isExecutableFile, isFactorial: () => isFactorial, isFibonacci: () => isFibonacci, isFloat: () => isFloat, isFunction: () => isFunction, isFutureDate: () => isFutureDate, isGIF: () => isGIF, isGzFile: () => isGzFile, isHTMLFile: () => isHTMLFile, isHTTPS: () => isHTTPS, isHexColor: () => isHexColor, isICO: () => isICO, isIPAddress: () => isIPAddress, isISBN: () => isISBN, isImageFile: () => isImageFile, isInfinity: () => isInfinity, isInteger: () => isInteger, isIterable: () => isIterable, isJPEG: () => isJPEG, isJPG: () => isJPG, isJSON: () => isJSON, isJWT: () => isJWT, isJavaScriptFile: () => isJavaScriptFile, isLeapYear: () => isLeapYear, isMACAddress: () => isMACAddress, isMap: () => isMap, isMapIterator: () => isMapIterator, isMarkdownFile: () => isMarkdownFile, isMimeType: () => isMimeType, isMobile: () => isMobile, isMp3: () => isMp3, isMp4: () => isMp4, isNaNValue: () => isNaNValue, isNegative: () => isNegative, isNegativeZero: () => isNegativeZero, isNodeJS: () => isNodeJS, isNull: () => isNull, isNullOrUndefined: () => isNullOrUndefined, isNumber: () => isNumber, isObject: () => isObject, isOdd: () => isOdd, isPDF: () => isPDF, isPNG: () => isPNG, isPPT: () => isPPT, isPPTX: () => isPPTX, isPalindrome: () => isPalindrome, isPastDate: () => isPastDate, isPerfect: () => isPerfect, isPerfectSquare: () => isPerfectSquare, isPlainObject: () => isPlainObject, isPlainTextFile: () => isPlainTextFile, isPositive: () => isPositive, isPrime: () => isPrime, isPrimitive: () => isPrimitive, isPromise: () => isPromise, isRarFile: () => isRarFile, isSVG: () => isSVG, isSafeInteger: () => isSafeInteger, isSemVer: () => isSemVer, isSet: () => isSet, isSetIterator: () => isSetIterator, isSharedArrayBuffer: () => isSharedArrayBuffer, isString: () => isString, isTIFF: () => isTIFF, isTXT: () => isTXT, isTarFile: () => isTarFile, isTgzFile: () => isTgzFile, isThenable: () => isThenable, isToday: () => isToday, isTomorrow: () => isTomorrow, isTypeScriptFile: () => isTypeScriptFile, isTypedArray: () => isTypedArray, isURL: () => isURL, isUUID: () => isUUID, isUndefined: () => isUndefined, isValidRegExp: () => isValidRegExp, isWEBP: () => isWEBP, isWeakMap: () => isWeakMap, isWeakSet: () => isWeakSet, isWeekday: () => isWeekday, isWeekend: () => isWeekend, isXLS: () => isXLS, isXLSX: () => isXLSX, isXML: () => isXML, isXzFile: () => isXzFile, isYAML: () => isYAML, isYesterday: () => isYesterday, isZipFile: () => isZipFile }); module.exports = __toCommonJS(index_exports); // src/functions/data-format-checks.ts var isNumber = (value) => typeof value === "number" && !Number.isNaN(value); var isInteger = (value) => Number.isInteger(value); var isFloat = (value) => isNumber(value) && !Number.isInteger(value); var isNaNValue = (value) => Number.isNaN(value); var isBetween = (value, min, max) => value >= min && value <= max; var isPositive = (value) => value > 0; var isNegative = (value) => value < 0; var isBoolean = (value) => typeof value === "boolean"; var isObject = (value) => value !== null && typeof value === "object" && !Array.isArray(value); var isArray = (value) => Array.isArray(value); var isString = (value) => typeof value === "string"; var isArrayOfSting = (value) => isArray(value) && value.every((item) => isString(item)); var isPromise = (value) => value instanceof Promise; var isError = (value) => value instanceof Error; var isMap = (value) => value instanceof Map; var isSet = (value) => value instanceof Set; var isFunction = (value) => typeof value === "function"; var isAsyncFunction = (value) => isFunction(value) && value.constructor.name === "AsyncFunction"; var isPrimitive = (value) => value === null || typeof value !== "object" && typeof value !== "function"; var isHexColor = (value) => /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(value); var isEmail = (value) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value); var isUUID = (value) => /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test( value ); var isBase64URL = (value) => { try { return Buffer.from(value, "base64").toString("base64") === value; } catch (e) { return false; } }; var isBinary = (value) => typeof value === "string" || value instanceof Buffer; var isURL = (value) => { try { const urlRegex = new RegExp( "^(https?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})([/\\w .-]*)*\\/?$", "i" ); return urlRegex.test(value); } catch (e) { return false; } }; var isJWT = (value) => { try { const [header, payload, signature] = value.split("."); return [header, payload, signature].every(isBase64URL); } catch (e) { return false; } }; var isCreditCard = (value) => /^\d{4}-\d{4}-\d{4}-\d{4}$/.test(value); var isISBN = (value) => /^(?=(?:\D*\d){10}(?:(?:\D*\d){3})?$)[\d-]+$/.test(value); var isMACAddress = (value) => /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/.test(value); var isIPAddress = (value) => /^([0-9]{1,3}\.){3}[0-9]{1,3}$/.test(value) || /^([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4})$/.test(value); var isDate = (value) => !isNaN(Date.parse(value)); var isDeepEqual = (a, b) => { if (a === b) return true; if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) return false; const keysA = Object.keys(a), keysB = Object.keys(b); if (keysA.length !== keysB.length) return false; return keysA.every((key) => isDeepEqual(a[key], b[key])); }; // src/functions/data-structure.ts var isWeakMap = (value) => value instanceof WeakMap; var isWeakSet = (value) => value instanceof WeakSet; var isIterable = (value) => typeof value === "object" && value !== null && Symbol.iterator in value; var isAsyncIterable = (value) => typeof value === "object" && value !== null && Symbol.asyncIterator in value; var isTypedArray = (value) => ArrayBuffer.isView(value); var isArrayBuffer = (value) => value instanceof ArrayBuffer; var isDataView = (value) => value instanceof DataView; var isSharedArrayBuffer = (value) => value instanceof SharedArrayBuffer; var isBuffer = (value) => value instanceof Buffer; function isUndefined(value) { return value === void 0; } function isNull(value) { return value === null; } function isNullOrUndefined(value) { return value == null; } function isPlainObject(value) { return Object.prototype.toString.call(value) === "[object Object]"; } var isEmpty = (value) => value == null || value === "" || value !== value; function isEmptyArray(value) { return Array.isArray(value) && value.length === 0; } function isEmptyString(value) { return typeof value === "string" && value.trim().length === 0; } function isNegativeZero(value) { return value === 0 && 1 / value === -Infinity; } function isInfinity(value) { return value === Infinity || value === -Infinity; } function isThenable(value) { return Boolean(value && typeof value.then === "function"); } function isDomain(value) { return /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,6}$/i.test(value); } function isSemVer(value) { return /^\d+\.\d+\.\d+(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?(\+[0-9A-Za-z-]+)?$/.test( value ); } function isEmptyObject(value) { return isPlainObject(value) && Object.keys(value).length === 0; } function isClass(value) { return typeof value === "function" && /^class\s/.test(Function.prototype.toString.call(value)); } function isEventEmitter(value) { return Boolean( value && typeof value.on === "function" && typeof value.emit === "function" ); } function isMimeType(value) { return /^(?:application|audio|font|example|image|message|model|multipart|text|video)\/[a-z0-9-+]+$/i.test( value ); } function isHTTPS(value) { return value.startsWith("https://"); } function isMapIterator(value) { return Object.prototype.toString.call(value) === "[object Map Iterator]"; } function isSetIterator(value) { return Object.prototype.toString.call(value) === "[object Set Iterator]"; } function isSafeInteger(value) { return Number.isSafeInteger(value); } // src/functions/env-checks.ts var isNodeJS = () => typeof process === "object"; var isBrowser = () => typeof window === "object"; var isMobile = () => { if (typeof navigator === "undefined") return false; return /Mobi|Android|iPhone|iPad|Windows Phone/i.test(navigator.userAgent); }; var isDesktop = () => { if (typeof navigator === "undefined") return false; return !isMobile(); }; // src/utils/index.ts var ImageFileExtension = /* @__PURE__ */ ((ImageFileExtension2) => { ImageFileExtension2["JPG"] = "jpg"; ImageFileExtension2["JPEG"] = "jpeg"; ImageFileExtension2["PNG"] = "png"; ImageFileExtension2["GIF"] = "gif"; ImageFileExtension2["BMP"] = "bmp"; ImageFileExtension2["TIFF"] = "tiff"; ImageFileExtension2["TIF"] = "tif"; ImageFileExtension2["WEBP"] = "webp"; ImageFileExtension2["SVG"] = "svg"; ImageFileExtension2["ICO"] = "ico"; ImageFileExtension2["HEIC"] = "heic"; ImageFileExtension2["HEIF"] = "heif"; ImageFileExtension2["AVIF"] = "avif"; ImageFileExtension2["APNG"] = "apng"; ImageFileExtension2["JXR"] = "jxr"; ImageFileExtension2["HDP"] = "hdp"; ImageFileExtension2["WDP"] = "wdp"; ImageFileExtension2["PSD"] = "psd"; ImageFileExtension2["PSB"] = "psb"; ImageFileExtension2["AI"] = "ai"; ImageFileExtension2["EPS"] = "eps"; ImageFileExtension2["CPT"] = "cpt"; ImageFileExtension2["SGI"] = "sgi"; ImageFileExtension2["RGB"] = "rgb"; ImageFileExtension2["RGBA"] = "rgba"; ImageFileExtension2["BW"] = "bw"; ImageFileExtension2["PBM"] = "pbm"; ImageFileExtension2["PGM"] = "pgm"; ImageFileExtension2["PPM"] = "ppm"; ImageFileExtension2["PNM"] = "pnm"; ImageFileExtension2["PXM"] = "pxm"; ImageFileExtension2["DPX"] = "dpx"; ImageFileExtension2["CIN"] = "cin"; ImageFileExtension2["VDA"] = "vda"; ImageFileExtension2["X3F"] = "x3f"; ImageFileExtension2["ERF"] = "erf"; ImageFileExtension2["THREE_FR"] = "3fr"; ImageFileExtension2["IIQ"] = "iiq"; ImageFileExtension2["FFF"] = "fff"; ImageFileExtension2["MOS"] = "mos"; ImageFileExtension2["MEF"] = "mef"; ImageFileExtension2["J2K"] = "j2k"; ImageFileExtension2["JP2"] = "jp2"; ImageFileExtension2["JPF"] = "jpf"; ImageFileExtension2["JPX"] = "jpx"; ImageFileExtension2["JPM"] = "jpm"; ImageFileExtension2["MJ2"] = "mj2"; ImageFileExtension2["ICNS"] = "icns"; ImageFileExtension2["DDS"] = "dds"; ImageFileExtension2["TGA"] = "tga"; ImageFileExtension2["ICB"] = "icb"; ImageFileExtension2["VST"] = "vst"; ImageFileExtension2["IMG"] = "img"; ImageFileExtension2["CE1"] = "ce1"; ImageFileExtension2["PCX"] = "pcx"; ImageFileExtension2["RLE"] = "rle"; ImageFileExtension2["DCR"] = "dcr"; ImageFileExtension2["DC2"] = "dc2"; ImageFileExtension2["PCD"] = "pcd"; ImageFileExtension2["XPM"] = "xpm"; ImageFileExtension2["XWD"] = "xwd"; ImageFileExtension2["CUR"] = "cur"; ImageFileExtension2["ANI"] = "ani"; ImageFileExtension2["WMF"] = "wmf"; ImageFileExtension2["EMF"] = "emf"; ImageFileExtension2["AFPHOTO"] = "afphoto"; ImageFileExtension2["AFDESIGN"] = "afdesign"; ImageFileExtension2["SAI"] = "sai"; ImageFileExtension2["ORA"] = "ora"; ImageFileExtension2["SPR"] = "spr"; ImageFileExtension2["KDC"] = "kdc"; return ImageFileExtension2; })(ImageFileExtension || {}); // src/functions/file-data-checks.ts var isFileType = (filePath, format) => { if (!filePath) return false; const ext = filePath.toLowerCase().slice(filePath.lastIndexOf(".") + 1); return ext === format.toLowerCase(); }; var isImageFile = (file) => { if (!file) throw new Error("File is required"); if (!(file instanceof File)) throw new Error("Invalid file type"); const validExtensions = Object.values( ImageFileExtension ).map((ext2) => ext2.toString()); const ext = file.name.split(".").pop(); if (!ext) return false; return validExtensions.includes(ext.toLowerCase()); }; var isZipFile = (filePath) => isFileType(filePath, "zip"); var isTarFile = (filePath) => isFileType(filePath, "tar"); var isGzFile = (filePath) => isFileType(filePath, "gz"); var isRarFile = (filePath) => isFileType(filePath, "rar"); var is7zFile = (filePath) => isFileType(filePath, "7z"); var isTgzFile = (filePath) => isFileType(filePath, "tgz"); var isBz2File = (filePath) => isFileType(filePath, "bz2"); var isXzFile = (filePath) => isFileType(filePath, "xz"); var isExecutableFile = (filePath) => isFileType(filePath, "exe") || isFileType(filePath, "sh") || isFileType(filePath, "bat") || isFileType(filePath, "cmd") || isFileType(filePath, "msi") || isFileType(filePath, "app") || isFileType(filePath, "deb") || isFileType(filePath, "rpm") || isFileType(filePath, "apk") || isFileType(filePath, "jar") || isFileType(filePath, "bin") || isFileType(filePath, "dmg") || isFileType(filePath, "pkg") || isFileType(filePath, "run"); var isPlainTextFile = (filePath) => isFileType(filePath, "txt"); var isMarkdownFile = (filePath) => isFileType(filePath, "md"); var isHTMLFile = (filePath) => isFileType(filePath, "html") || isFileType(filePath, "htm"); var isCSSFile = (filePath) => isFileType(filePath, "css"); var isJavaScriptFile = (filePath) => isFileType(filePath, "js"); var isTypeScriptFile = (filePath) => isFileType(filePath, "ts"); var isSVG = (filePath) => isFileType(filePath, "svg"); var isPNG = (filePath) => isFileType(filePath, "png"); var isJPG = (filePath) => isFileType(filePath, "jpg"); var isJPEG = (filePath) => isFileType(filePath, "jpeg") || isFileType(filePath, "jpg"); var isGIF = (filePath) => isFileType(filePath, "gif"); var isWEBP = (filePath) => isFileType(filePath, "webp"); var isICO = (filePath) => isFileType(filePath, "ico"); var isBMP = (filePath) => isFileType(filePath, "bmp"); var isTIFF = (filePath) => isFileType(filePath, "tiff"); var isPDF = (filePath) => isFileType(filePath, "pdf"); var isDOC = (filePath) => isFileType(filePath, "doc"); var isDOCX = (filePath) => isFileType(filePath, "docx"); var isXLS = (filePath) => isFileType(filePath, "xls"); var isXLSX = (filePath) => isFileType(filePath, "xlsx"); var isPPT = (filePath) => isFileType(filePath, "ppt"); var isPPTX = (filePath) => isFileType(filePath, "pptx"); var isTXT = (filePath) => isFileType(filePath, "txt"); var isCSV = (filePath) => isFileType(filePath, "csv"); var isJSON = (filePath) => isFileType(filePath, "json"); var isYAML = (filePath) => isFileType(filePath, "yaml"); var isXML = (filePath) => isFileType(filePath, "xml"); var isMp3 = (filePath) => isFileType(filePath, "mp3"); var isMp4 = (filePath) => isFileType(filePath, "mp4"); // src/functions/miscellaneous-checks.ts var isEven = (value) => value % 2 === 0; var isOdd = (value) => value % 2 !== 0; var isPrime = (value) => { if (value < 2) { return false; } for (let i = 2; i < value; i++) { if (value % i === 0) { return false; } } return true; }; var isPerfect = (value) => { let sum = 0; for (let i = 1; i < value; i++) { if (value % i === 0) { sum += i; } } return sum === value; }; var isPalindrome = (value) => { return value === Number(value.toString().split("").reverse().join("")); }; var isArmstrong = (value) => { const digits = value.toString().split(""); const n = digits.length; let sum = 0; for (let i = 0; i < n; i++) { sum += Number(digits[i]) ** n; } return sum === value; }; var isPerfectSquare = (value) => { return Math.sqrt(value) % 1 === 0; }; var isFibonacci = (value) => { return isPerfectSquare(5 * value ** 2 + 4) || isPerfectSquare(5 * value ** 2 - 4); }; var isFactorial = (value) => { let i = 1; let factorial = 1; while (factorial < value) { i++; factorial *= i; } return factorial === value; }; var isLeapYear = (value) => { return value % 4 === 0 && (value % 100 !== 0 || value % 400 === 0); }; var isWeekend = (value) => { return value.getDay() === 0 || value.getDay() === 6; }; var isWeekday = (value) => { return !isWeekend(value); }; var isFutureDate = (value) => { return value > /* @__PURE__ */ new Date(); }; var isPastDate = (value) => { return value < /* @__PURE__ */ new Date(); }; var isToday = (value) => { return value.toDateString() === (/* @__PURE__ */ new Date()).toDateString(); }; var isYesterday = (value) => { const yesterday = /* @__PURE__ */ new Date(); yesterday.setDate(yesterday.getDate() - 1); return value.toDateString() === yesterday.toDateString(); }; var isTomorrow = (value) => { const tomorrow = /* @__PURE__ */ new Date(); tomorrow.setDate(tomorrow.getDate() + 1); return value.toDateString() === tomorrow.toDateString(); }; var isValidRegExp = (regex) => { return regex instanceof RegExp; }; // src/types/index.ts var TypeValidationError = class extends Error { constructor(message) { super(message); this.name = "TypeValidationError"; } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { TypeValidationError, is7zFile, isArmstrong, isArray, isArrayBuffer, isArrayOfSting, isAsyncFunction, isAsyncIterable, isBMP, isBase64URL, isBetween, isBinary, isBoolean, isBrowser, isBuffer, isBz2File, isCSSFile, isCSV, isClass, isCreditCard, isDOC, isDOCX, isDataView, isDate, isDeepEqual, isDesktop, isDomain, isEmail, isEmpty, isEmptyArray, isEmptyObject, isEmptyString, isError, isEven, isEventEmitter, isExecutableFile, isFactorial, isFibonacci, isFloat, isFunction, isFutureDate, isGIF, isGzFile, isHTMLFile, isHTTPS, isHexColor, isICO, isIPAddress, isISBN, isImageFile, isInfinity, isInteger, isIterable, isJPEG, isJPG, isJSON, isJWT, isJavaScriptFile, isLeapYear, isMACAddress, isMap, isMapIterator, isMarkdownFile, isMimeType, isMobile, isMp3, isMp4, isNaNValue, isNegative, isNegativeZero, isNodeJS, isNull, isNullOrUndefined, isNumber, isObject, isOdd, isPDF, isPNG, isPPT, isPPTX, isPalindrome, isPastDate, isPerfect, isPerfectSquare, isPlainObject, isPlainTextFile, isPositive, isPrime, isPrimitive, isPromise, isRarFile, isSVG, isSafeInteger, isSemVer, isSet, isSetIterator, isSharedArrayBuffer, isString, isTIFF, isTXT, isTarFile, isTgzFile, isThenable, isToday, isTomorrow, isTypeScriptFile, isTypedArray, isURL, isUUID, isUndefined, isValidRegExp, isWEBP, isWeakMap, isWeakSet, isWeekday, isWeekend, isXLS, isXLSX, isXML, isXzFile, isYAML, isYesterday, isZipFile });