50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.uuid = exports.uuidV4 = exports.uuidV3 = exports.validarUuid = exports.erUuid = void 0;
|
|
const uuid_1 = require("uuid");
|
|
/**
|
|
* Valida se uma string é um UUID válido (qualquer versão).
|
|
*
|
|
* @param valor - A string que será validada.
|
|
* @returns booleano indicando se é um UUID válido.
|
|
*/
|
|
exports.erUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
const validarUuid = (uuid) => {
|
|
const retorno = exports.erUuid.test(String(uuid || ""));
|
|
return retorno;
|
|
};
|
|
exports.validarUuid = validarUuid;
|
|
/**
|
|
* Gera um UUID determinístico (versão 3) com base em uma chave e um grupo (namespace).
|
|
*
|
|
* - Usa o algoritmo MD5 (RFC 4122).
|
|
* - Sempre retorna o mesmo UUID para a mesma combinação chave + grupo.
|
|
* - Caso o grupo não seja informado, usa o UUID "nil" como namespace.
|
|
*
|
|
* @param chave - Qualquer valor que será convertido em string para gerar o UUID (ex: número, string ou objeto).
|
|
* @param grupo - Opcional. Namespace para separar domínios diferentes de UUIDs.
|
|
* @returns UUID v3 (determinístico)
|
|
*/
|
|
const uuidV3 = (chave, grupo) => {
|
|
return (0, uuid_1.v3)(
|
|
// Converte a chave para string (de forma segura)
|
|
typeof chave === "string"
|
|
? chave
|
|
: typeof chave === "number"
|
|
? String(chave)
|
|
: JSON.stringify(chave),
|
|
// Se um grupo foi fornecido, gera um UUID v3 recursivamente com base nele, senão usa NIL
|
|
grupo ? (0, exports.uuidV3)(grupo) : uuid_1.NIL);
|
|
};
|
|
exports.uuidV3 = uuidV3;
|
|
/**
|
|
* Gera um UUID v4 (aleatório, não determinístico).
|
|
*
|
|
* - Usado quando unicidade é necessária, mas não se exige que seja previsível.
|
|
*/
|
|
exports.uuidV4 = uuid_1.v4;
|
|
/**
|
|
* @deprecated Esta variável será descontinuada em versões futuras.
|
|
* Use a função `uuidV4()` diretamente.
|
|
*/
|
|
exports.uuid = exports.uuidV4;
|