Saltar a contenido

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.