uuid: Ligações FFI do LuaJIT para libuuid, uma biblioteca de Identificador Único Universal compatível com DCE
Instalação
Se você ainda não configurou a assinatura do repositório RPM, inscreva-se. Em seguida, você pode prosseguir com os seguintes passos.
CentOS/RHEL 7 ou Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-uuid
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-uuid
Para usar esta biblioteca Lua com NGINX, certifique-se de que o nginx-module-lua está instalado.
Este documento descreve lua-resty-uuid v1.2.0 lançado em 07 de maio de 2026.
Ligaões FFI do LuaJIT para libuuid — uma biblioteca de Identificador Único Universal (UUID/GUID) compatível com DCE. Gera UUIDs v1 (tempo), v4 (aleatório), v6 (tempo reordenado) e v7 (Unix-epoch), além de analisar e inspecionar strings UUID existentes.
Início rápido
local uuid = require "resty.uuid"
uuid.generate() --> "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
uuid.generate_random() --> "550e8400-e29b-41d4-a716-446655440000" (v4)
uuid.generate_time() --> "..." (v1)
uuid.generate_time_v6() --> "..." (v6)
uuid.generate_time_v7() --> "..." (v7)
uuid() --> atalho para uuid.generate()
uuid.is_valid("not-a-uuid") --> false
uuid.type(some_v4_id) --> 4
uuid.variant(some_id) --> 1 (DCE)
uuid.time(some_v1_id) --> 1714867200, 123456
API
O módulo é uma tabela que também é chamável. Chamar uuid() é um atalho para uuid.generate().
Geradores
| Função | Retorna | Descrição |
|---|---|---|
uuid.generate() |
string |
Melhor gerador disponível no host (aleatório quando possível, caso contrário baseado em tempo). |
uuid.generate_random() |
string |
UUID versão 4 (aleatório). |
uuid.generate_time() |
string |
UUID versão 1 (timestamp + id do nó). |
uuid.generate_time_safe() |
string, boolean |
UUID versão 1 e um sinalizador indicando se a geração foi sincronizada para unicidade. |
uuid.generate_time_v6() |
string |
UUID versão 6 — campos v1 reordenados para ordenação lexical. |
uuid.generate_time_v7() |
string |
UUID versão 7 — timestamp Unix em milissegundos + cauda aleatória. |
Todos os geradores retornam a forma hexadecimal canônica de 36 caracteres 8-4-4-4-12, por exemplo, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6".
Inspeção
| Função | Retorna | Descrição |
|---|---|---|
uuid.is_valid(id) |
boolean |
Se id é analisável como um UUID. |
uuid.type(id) |
int ou nil |
Versão do UUID (UUID_TYPE_* constante), ou nil se inválido. |
uuid.variant(id) |
int ou nil |
Variante do UUID (UUID_VARIANT_* constante), ou nil se inválido. |
uuid.time(id) |
number, number ou nil |
Segundos desde o epoch Unix e microssegundos dentro desse segundo; nil se id não é um UUID válido. Significativo apenas para v1, v6 e v7. |
Referência de constantes
uuid.type retorna um dos:
| Valor | Constante | Significado |
|---|---|---|
1 |
UUID_TYPE_DCE_TIME |
Baseado em tempo (v1) |
2 |
UUID_TYPE_DCE_SECURITY |
Segurança DCE (v2) |
3 |
UUID_TYPE_DCE_MD5 |
Nome baseado em MD5 (v3) |
4 |
UUID_TYPE_DCE_RANDOM |
Aleatório (v4) |
5 |
UUID_TYPE_DCE_SHA1 |
Nome baseado em SHA-1 (v5) |
6 |
UUID_TYPE_DCE_TIME_V6 |
Tempo reordenado (v6) |
7 |
UUID_TYPE_DCE_TIME_V7 |
Tempo Unix-epoch (v7) |
uuid.variant retorna um dos:
| Valor | Constante | Significado |
|---|---|---|
0 |
UUID_VARIANT_NCS |
Legado NCS / Apollo |
1 |
UUID_VARIANT_DCE |
DCE 1.1 / RFC 4122 |
2 |
UUID_VARIANT_MICROSOFT |
GUID Microsoft |
3 |
UUID_VARIANT_OTHER |
Reservado |
Testes
make test # pipeline completo: instalar rock, executar busted, cobertura, lint
make unit # apenas busted
make coverage # busted + relatório luacov
make lint # luacheck
Os testes estão em spec/ e exercitam todas as funções públicas, além do metamétodo __call.
Documentação
A referência da API é construída com LDoc e está localizada em docs/:
make docs
GitHub
Você pode encontrar dicas de configuração adicionais e documentação para este módulo no repositório do GitHub para nginx-module-uuid.