@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
292 lines • 7.65 kB
TypeScript
/**
* @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