Pular para conteúdo

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.