uuid: vinculaciones FFI de LuaJIT para libuuid, una biblioteca de Identificadores Únicos Universales compatible con DCE
Instalación
Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.
CentOS/RHEL 7 o 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 con NGINX, asegúrate de que nginx-module-lua esté instalado.
Este documento describe lua-resty-uuid v1.2.0 lanzado el 07 de mayo de 2026.
Vinculaciones FFI de LuaJIT para libuuid — una biblioteca de Identificadores Únicos Universales (UUID/GUID) compatible con DCE. Genera UUIDs v1 (tiempo), v4 (aleatorio), v6 (tiempo reordenado) y v7 (época Unix), además de analizar e inspeccionar cadenas UUID existentes.
Inicio 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() --> acceso directo 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
El módulo es una tabla que también se puede llamar. Llamar a uuid() es un acceso directo para uuid.generate().
Generadores
| Función | Retorna | Descripción |
|---|---|---|
uuid.generate() |
string |
Mejor generador disponible en el host (aleatorio cuando es posible, de lo contrario basado en tiempo). |
uuid.generate_random() |
string |
UUID versión 4 (aleatorio). |
uuid.generate_time() |
string |
UUID versión 1 (timestamp + id de nodo). |
uuid.generate_time_safe() |
string, boolean |
UUID versión 1 y una bandera que indica si la generación fue sincronizada para unicidad. |
uuid.generate_time_v6() |
string |
UUID versión 6 — campos v1 reordenados para orden lexicográfico. |
uuid.generate_time_v7() |
string |
UUID versión 7 — timestamp Unix en milisegundos + cola aleatoria. |
Todos los generadores devuelven la forma hexadecimal canónica de 36 caracteres 8-4-4-4-12, por ejemplo, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6".
Inspección
| Función | Retorna | Descripción |
|---|---|---|
uuid.is_valid(id) |
boolean |
Si id se analiza como un UUID. |
uuid.type(id) |
int o nil |
Versión del UUID (UUID_TYPE_* constante), o nil si es inválido. |
uuid.variant(id) |
int o nil |
Variante del UUID (UUID_VARIANT_* constante), o nil si es inválido. |
uuid.time(id) |
number, number o nil |
Segundos desde la época Unix y microsegundos dentro de ese segundo; nil si id no es un UUID válido. Significativo solo para v1, v6 y v7. |
Referencia de constantes
uuid.type devuelve uno de:
| Valor | Constante | Significado |
|---|---|---|
1 |
UUID_TYPE_DCE_TIME |
Basado en tiempo (v1) |
2 |
UUID_TYPE_DCE_SECURITY |
Seguridad DCE (v2) |
3 |
UUID_TYPE_DCE_MD5 |
Basado en nombre MD5 (v3) |
4 |
UUID_TYPE_DCE_RANDOM |
Aleatorio (v4) |
5 |
UUID_TYPE_DCE_SHA1 |
Basado en nombre SHA-1 (v5) |
6 |
UUID_TYPE_DCE_TIME_V6 |
Tiempo reordenado (v6) |
7 |
UUID_TYPE_DCE_TIME_V7 |
Tiempo de época Unix (v7) |
uuid.variant devuelve uno de:
| Valor | Constante | Significado |
|---|---|---|
0 |
UUID_VARIANT_NCS |
NCS / legado de Apollo |
1 |
UUID_VARIANT_DCE |
DCE 1.1 / RFC 4122 |
2 |
UUID_VARIANT_MICROSOFT |
GUID de Microsoft |
3 |
UUID_VARIANT_OTHER |
Reservado |
Pruebas
make test # pipeline completo: instalar rock, ejecutar busted, cobertura, lint
make unit # solo busted
make coverage # reporte de busted + luacov
make lint # luacheck
Las pruebas se encuentran en spec/ y ejercitan cada función pública más el metamétodo __call.
Documentación
La referencia de la API se construye con LDoc y se encuentra en docs/:
make docs
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-uuid.