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
JavaScript
/**
* 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;