UNPKG

alluuid

Version:

AllUUID is a versatile JavaScript library for generating universally unique identifiers (UUIDs) and GUIDs. It supports multiple versions of UUIDs, including version 1 (time-based), version 4 (random), and version 7 (timestamp-based). This tool is ideal fo

60 lines (48 loc) 1.4 kB
/** * alluuid - UUID validation utility * Supports UUID v1, v3, v4, v5, v6, v7 and NIL UUID */ const NIL_UUID = "00000000-0000-0000-0000-000000000000"; // RFC 4122 compliant UUID regex (v1–v7) const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; /** * Extract UUID version * @param {string} uuid * @returns {number} */ function getUUIDVersion(uuid) { return parseInt(uuid[14], 10); } /** * Validate UUID * @param {string} uuid * @param {Object} [options] * @param {number} [options.version] Validate specific version * @param {number[]} [options.versions] Validate against multiple versions * @returns {boolean} */ function validate(uuid, options = {}) { if (typeof uuid !== "string") return false; // NIL UUID handling if (uuid === NIL_UUID) { if (options.version || options.versions) return false; return true; } // Basic RFC format check if (!UUID_REGEX.test(uuid)) return false; const version = getUUIDVersion(uuid); // Single version validation if (typeof options.version === "number") { return version === options.version; } // Multiple versions validation if (Array.isArray(options.versions)) { return options.versions.includes(version); } return true; } /** * Export for alluuid */ module.exports = validate;