@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
74 lines (73 loc) • 1.9 kB
JavaScript
;
/**
* @file uuid.type.ts
* @module base/uuid
*
* @description
* Define o tipo UUID usado em toda a aplicação para identificadores únicos.
*
* @remarks
* UUID v4 (RFC 4122) é o padrão adotado pela API Quarkus de Controladores.
* O formato esperado segue o padrão: `xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`
* onde x é qualquer dígito hexadecimal e y é 8, 9, A ou B.
*
* @example
* ```typescript
* import { UUID } from "@anpdgovbr/shared-types"
*
* const id: UUID = "550e8400-e29b-41d4-a716-446655440000"
* ```
*
* @public
* @since 0.2.0
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.UUID_V4_PATTERN = void 0;
exports.isUUID = isUUID;
exports.assertUUID = assertUUID;
/**
* Regex pattern para validação de UUID v4.
*
* @remarks
* Valida o formato exato de um UUID versão 4 conforme RFC 4122.
*
* @public
*/
exports.UUID_V4_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
/**
* Type guard para verificar se uma string é um UUID v4 válido.
*
* @param value - Valor a ser verificado
* @returns `true` se o valor for um UUID v4 válido, caso contrário `false`
*
* @example
* ```typescript
* const id = "550e8400-e29b-41d4-a716-446655440000"
* if (isUUID(id)) {
* console.log("UUID válido")
* }
* ```
*
* @public
*/
function isUUID(value) {
return typeof value === "string" && exports.UUID_V4_PATTERN.test(value);
}
/**
* Valida se uma string é um UUID v4 válido e lança erro caso não seja.
*
* @param value - Valor a ser validado
* @throws {Error} Se o valor não for um UUID v4 válido
*
* @example
* ```typescript
* assertUUID("550e8400-e29b-41d4-a716-446655440000")
* ```
*
* @public
*/
function assertUUID(value) {
if (!isUUID(value)) {
throw new Error(`UUID inválido: esperado formato UUID v4, recebido: ${String(value)}`);
}
}