adicionado uuid
This commit is contained in:
parent
e3c5642027
commit
c19d8bc40f
5 changed files with 81 additions and 23 deletions
60
src/uuid.ts
60
src/uuid.ts
|
|
@ -1,15 +1,51 @@
|
|||
//Gerar uma uuid V4
|
||||
const letras = "0123456789abcdef".split("")
|
||||
export const uuid = () => {
|
||||
letras.sort(() => Math.random() - 0.5)
|
||||
const modelo = "xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx".split("")
|
||||
const retorno = modelo
|
||||
.map((letra) =>
|
||||
letra === "x"
|
||||
? letras[((1000 * Math.random()) | 0) % letras.length]
|
||||
: letra,
|
||||
)
|
||||
.join("")
|
||||
import { NIL, v3, v4 } from "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.
|
||||
*/
|
||||
export const erUuid =
|
||||
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i
|
||||
|
||||
export const validarUuid = (uuid: string | number | undefined | null) => {
|
||||
const retorno = erUuid.test(String(uuid || ""))
|
||||
return retorno
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
*/
|
||||
export const uuidV3 = (chave: any, grupo?: string | number): string => {
|
||||
return 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
|
||||
? typeof grupo == "string" && validarUuid(grupo)
|
||||
? grupo
|
||||
: uuidV3(grupo)
|
||||
: NIL,
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gera um UUID v4 (aleatório, não determinístico).
|
||||
*
|
||||
* - Usado quando unicidade é necessária, mas não se exige que seja previsível.
|
||||
*/
|
||||
export const uuidV4 = v4
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue