UNPKG

@anpdgovbr/shared-types

Version:

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

292 lines 7.65 kB
/** * @fileoverview * Constantes e configurações padrão do sistema. * * @remarks * Este módulo centraliza valores constantes utilizados em todo o sistema, * incluindo limites de paginação, formatos de data, configurações de validação, etc. * * @module base/constants * @public */ /** * Constantes relacionadas à paginação de resultados. * * @remarks * Utilize estas constantes para garantir limites consistentes em todas as APIs. * * @example * ```typescript * const pageSize = Math.min(requestedSize, PAGINATION_LIMITS.MAX_PAGE_SIZE) * ``` */ export declare const PAGINATION_LIMITS: { /** * Tamanho mínimo de página permitido. */ readonly MIN_PAGE_SIZE: 1; /** * Tamanho máximo de página permitido (evita sobrecarga). */ readonly MAX_PAGE_SIZE: 100; /** * Tamanho padrão de página quando não especificado. */ readonly DEFAULT_PAGE_SIZE: 20; /** * Número mínimo de página permitido. */ readonly MIN_PAGE: 1; /** * Número máximo sugerido de páginas a serem buscadas de uma vez. */ readonly MAX_SAFE_PAGE: 10000; }; /** * Constantes relacionadas a ordenação de resultados. * * @example * ```typescript * const direction = SORT_ORDER.ASCENDING * ``` */ export declare const SORT_ORDER: { /** * Ordenação crescente (A-Z, 0-9, antigo→novo). */ readonly ASCENDING: "ASC"; /** * Ordenação decrescente (Z-A, 9-0, novo→antigo). */ readonly DESCENDING: "DESC"; }; /** * Tipo que representa as direções de ordenação válidas. */ export type SortOrderType = (typeof SORT_ORDER)[keyof typeof SORT_ORDER]; /** * Constantes relacionadas a validação de strings. * * @example * ```typescript * if (nome.length > STRING_LIMITS.MAX_NAME_LENGTH) { * throw new Error("Nome muito longo") * } * ``` */ export declare const STRING_LIMITS: { /** * Comprimento máximo padrão para campos de nome. */ readonly MAX_NAME_LENGTH: 255; /** * Comprimento máximo para descrições curtas. */ readonly MAX_SHORT_DESCRIPTION_LENGTH: 500; /** * Comprimento máximo para descrições longas/textos. */ readonly MAX_LONG_DESCRIPTION_LENGTH: 5000; /** * Comprimento máximo para campos de email. */ readonly MAX_EMAIL_LENGTH: 255; /** * Comprimento mínimo para senhas. */ readonly MIN_PASSWORD_LENGTH: 8; /** * Comprimento máximo para senhas. */ readonly MAX_PASSWORD_LENGTH: 128; /** * Comprimento mínimo para busca (search). */ readonly MIN_SEARCH_LENGTH: 2; }; /** * Formatos de data comuns utilizados no sistema. * * @remarks * Use estas constantes com bibliotecas de formatação como `date-fns` ou `dayjs`. * * @example * ```typescript * import { format } from "date-fns" * const dataFormatada = format(new Date(), DATE_FORMATS.ISO_DATE) * ``` */ export declare const DATE_FORMATS: { /** * Formato ISO 8601 completo com timezone (ex: 2024-01-15T14:30:00.000Z). */ readonly ISO_DATETIME: "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; /** * Formato ISO 8601 apenas data (ex: 2024-01-15). */ readonly ISO_DATE: "yyyy-MM-dd"; /** * Formato brasileiro de data (ex: 15/01/2024). */ readonly BR_DATE: "dd/MM/yyyy"; /** * Formato brasileiro de data e hora (ex: 15/01/2024 14:30). */ readonly BR_DATETIME: "dd/MM/yyyy HH:mm"; /** * Formato brasileiro de data e hora completa (ex: 15/01/2024 14:30:45). */ readonly BR_DATETIME_FULL: "dd/MM/yyyy HH:mm:ss"; /** * Formato apenas hora (ex: 14:30:45). */ readonly TIME: "HH:mm:ss"; /** * Formato hora curta (ex: 14:30). */ readonly TIME_SHORT: "HH:mm"; }; /** * Constantes relacionadas ao status HTTP comuns. * * @remarks * Embora frameworks forneçam constantes HTTP, manter uma lista aqui * garante consistência na documentação e facilita testes. * * @example * ```typescript * if (response.status === HTTP_STATUS.OK) { * // Processar resposta * } * ``` */ export declare const HTTP_STATUS: { readonly OK: 200; readonly CREATED: 201; readonly NO_CONTENT: 204; readonly BAD_REQUEST: 400; readonly UNAUTHORIZED: 401; readonly FORBIDDEN: 403; readonly NOT_FOUND: 404; readonly CONFLICT: 409; readonly UNPROCESSABLE_ENTITY: 422; readonly INTERNAL_SERVER_ERROR: 500; }; /** * Constantes relacionadas a auditoria e logs. * * @example * ```typescript * const retentionDays = AUDIT_CONFIG.DEFAULT_RETENTION_DAYS * ``` */ export declare const AUDIT_CONFIG: { /** * Período padrão de retenção de logs de auditoria (em dias). */ readonly DEFAULT_RETENTION_DAYS: 365; /** * Número máximo de entradas de log a serem retornadas por consulta. */ readonly MAX_LOG_ENTRIES: 1000; /** * Prefixo padrão para IDs de requisição. */ readonly REQUEST_ID_PREFIX: "req-"; /** * Prefixo padrão para IDs de trace. */ readonly TRACE_ID_PREFIX: "trace-"; }; /** * Constantes relacionadas a expressões regulares de validação. * * @example * ```typescript * if (REGEX_PATTERNS.EMAIL.test(email)) { * console.log("Email válido") * } * ``` */ export declare const REGEX_PATTERNS: { /** * Padrão para validação de email. */ readonly EMAIL: RegExp; /** * Padrão para validação de CPF (apenas números). */ readonly CPF: RegExp; /** * Padrão para validação de CNPJ (apenas números). */ readonly CNPJ: RegExp; /** * Padrão para validação de telefone brasileiro (com DDD). */ readonly TELEFONE_BR: RegExp; /** * Padrão para validação de CEP brasileiro. */ readonly CEP: RegExp; /** * Padrão para validação de UUID v4. */ readonly UUID_V4: RegExp; /** * Padrão para validação de URL. */ readonly URL: RegExp; }; /** * Mensagens de erro padrão do sistema. * * @remarks * Centralize mensagens de erro aqui para facilitar internacionalização futura. * * @example * ```typescript * throw new Error(ERROR_MESSAGES.NOT_FOUND) * ``` */ export declare const ERROR_MESSAGES: { readonly NOT_FOUND: "Recurso não encontrado"; readonly UNAUTHORIZED: "Não autorizado"; readonly FORBIDDEN: "Acesso negado"; readonly VALIDATION_ERROR: "Erro de validação"; readonly INTERNAL_ERROR: "Erro interno do servidor"; readonly INVALID_CREDENTIALS: "Credenciais inválidas"; readonly EXPIRED_TOKEN: "Token expirado"; readonly INVALID_TOKEN: "Token inválido"; readonly ENTITY_ALREADY_EXISTS: "Entidade já existe"; readonly ENTITY_IN_USE: "Entidade está em uso e não pode ser removida"; readonly INVALID_PAGE_SIZE: "Tamanho de página inválido"; readonly INVALID_PAGE_NUMBER: "Número de página inválido"; }; /** * Configurações relacionadas a cache. * * @example * ```typescript * const ttl = CACHE_CONFIG.DEFAULT_TTL_SECONDS * ``` */ export declare const CACHE_CONFIG: { /** * TTL padrão para cache (em segundos) - 5 minutos. */ readonly DEFAULT_TTL_SECONDS: 300; /** * TTL curto para cache (em segundos) - 1 minuto. */ readonly SHORT_TTL_SECONDS: 60; /** * TTL longo para cache (em segundos) - 1 hora. */ readonly LONG_TTL_SECONDS: 3600; /** * TTL muito longo para cache (em segundos) - 24 horas. */ readonly VERY_LONG_TTL_SECONDS: 86400; }; //# sourceMappingURL=constants.d.ts.map