UNPKG

@anpdgovbr/shared-types

Version:

Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)

74 lines (73 loc) 1.9 kB
"use strict"; /** * @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)}`); } }