@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
206 lines (205 loc) • 6.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ACAO_AUDITORIA_VALUES = exports.AcaoAuditoria = void 0;
exports.isAcaoAuditoria = isAcaoAuditoria;
exports.assertAcaoAuditoria = assertAcaoAuditoria;
exports.coerceAcaoAuditoria = coerceAcaoAuditoria;
/**
* Enumeração que representa as possíveis ações de auditoria realizadas no sistema.
*
* @remarks
* Utilizado para identificar operações executadas em entidades, incluindo operações básicas de CRUD,
* autenticação, operações em massa, gerenciamento de arquivos, fluxos de aprovação e consultas específicas.
* Essencial para conformidade com LGPD e auditoria de sistemas de proteção de dados.
*
* @enum {string}
* @readonly
* @public
*/
var AcaoAuditoria;
(function (AcaoAuditoria) {
/**
* Representa a ação de criação de um novo registro.
*/
AcaoAuditoria["CREATE"] = "CREATE";
/**
* Representa a ação de atualização completa de um registro existente.
*/
AcaoAuditoria["UPDATE"] = "UPDATE";
/**
* Representa a ação de exclusão de um registro.
*/
AcaoAuditoria["DELETE"] = "DELETE";
/**
* Representa a ação de modificação parcial (PATCH) de um registro.
*/
AcaoAuditoria["PATCH"] = "PATCH";
/**
* Representa a ação de consulta (GET) de um registro ou recurso.
*/
AcaoAuditoria["GET"] = "GET";
/**
* Representa a ação de criação em massa de múltiplos registros.
*/
AcaoAuditoria["BULK_CREATE"] = "BULK_CREATE";
/**
* Representa a ação de atualização em massa de múltiplos registros.
*/
AcaoAuditoria["BULK_UPDATE"] = "BULK_UPDATE";
/**
* Representa a ação de exclusão em massa de múltiplos registros.
*/
AcaoAuditoria["BULK_DELETE"] = "BULK_DELETE";
/**
* Representa a ação de restauração de um registro previamente excluído (soft delete).
*/
AcaoAuditoria["RESTORE"] = "RESTORE";
/**
* Representa a ação de exportação de dados do sistema.
*/
AcaoAuditoria["EXPORT"] = "EXPORT";
/**
* Representa a ação de importação de dados para o sistema.
*/
AcaoAuditoria["IMPORT"] = "IMPORT";
/**
* Representa a ação de upload de arquivos para o sistema.
*/
AcaoAuditoria["UPLOAD"] = "UPLOAD";
/**
* Representa a ação de download de arquivos do sistema.
*/
AcaoAuditoria["DOWNLOAD"] = "DOWNLOAD";
/**
* Representa a ação de compartilhamento de dados ou arquivos.
*/
AcaoAuditoria["SHARE"] = "SHARE";
/**
* Representa a ação de busca ou pesquisa de registros.
*/
AcaoAuditoria["SEARCH"] = "SEARCH";
/**
* Representa a ação de impressão de relatórios ou documentos.
*/
AcaoAuditoria["PRINT"] = "PRINT";
/**
* Representa a ação de login no sistema.
*/
AcaoAuditoria["LOGIN"] = "LOGIN";
/**
* Representa a ação de logout do sistema.
*/
AcaoAuditoria["LOGOUT"] = "LOGOUT";
/**
* Representa a ação de alteração de senha do usuário.
*/
AcaoAuditoria["CHANGE_PASSWORD"] = "CHANGE_PASSWORD";
/**
* Representa a ação de aprovação em um fluxo de trabalho.
*/
AcaoAuditoria["APPROVE"] = "APPROVE";
/**
* Representa a ação de rejeição em um fluxo de trabalho.
*/
AcaoAuditoria["REJECT"] = "REJECT";
/**
* Representa a ação de arquivamento de registros.
*/
AcaoAuditoria["ARCHIVE"] = "ARCHIVE";
/**
* Representa a ação de desarquivamento de registros.
*/
AcaoAuditoria["UNARCHIVE"] = "UNARCHIVE";
})(AcaoAuditoria || (exports.AcaoAuditoria = AcaoAuditoria = {}));
/** Lista imutável com os valores de AcaoAuditoria. */
exports.ACAO_AUDITORIA_VALUES = [
AcaoAuditoria.CREATE,
AcaoAuditoria.UPDATE,
AcaoAuditoria.DELETE,
AcaoAuditoria.PATCH,
AcaoAuditoria.GET,
AcaoAuditoria.BULK_CREATE,
AcaoAuditoria.BULK_UPDATE,
AcaoAuditoria.BULK_DELETE,
AcaoAuditoria.RESTORE,
AcaoAuditoria.EXPORT,
AcaoAuditoria.IMPORT,
AcaoAuditoria.UPLOAD,
AcaoAuditoria.DOWNLOAD,
AcaoAuditoria.SHARE,
AcaoAuditoria.SEARCH,
AcaoAuditoria.PRINT,
AcaoAuditoria.LOGIN,
AcaoAuditoria.LOGOUT,
AcaoAuditoria.CHANGE_PASSWORD,
AcaoAuditoria.APPROVE,
AcaoAuditoria.REJECT,
AcaoAuditoria.ARCHIVE,
AcaoAuditoria.UNARCHIVE,
];
/**
* Conjunto (Set) interno usado para validações em tempo de execução.
*
* @internal
* @remarks
* Usado pelas funções auxiliares para verificar se uma string corresponde a um valor
* válido de AcaoAuditoria. Não expor diretamente em documentação de API pública.
*/
const ACAO_AUDITORIA_SET = new Set(exports.ACAO_AUDITORIA_VALUES);
/**
* Type guard para AcaoAuditoria.
*
* @param value - Valor a ser verificado em tempo de execução.
* @returns true se o valor for uma string igual a um dos valores de AcaoAuditoria; caso contrário false.
* @public
*
* @example
* ```ts
* if (isAcaoAuditoria(maybe)) {
* // aqui `maybe` tem o tipo AcaoAuditoriaLiteral
* }
* ```
*/
function isAcaoAuditoria(value) {
return (typeof value === "string" &&
ACAO_AUDITORIA_SET.has(value));
}
/**
* Asserção de tipo para AcaoAuditoria.
*
* Lança um erro quando o valor de entrada não é um valor válido do enum AcaoAuditoria.
* Útil para garantir invariantes em tempo de execução quando se deseja
* abortar cedo caso o valor seja inválido.
*
* @param value - Valor a ser validado
* @throws {Error} Quando `value` não for um AcaoAuditoriaLiteral
* @public
*
* @example
* ```ts
* assertAcaoAuditoria(valorRecebido)
* // a partir daqui, `valorRecebido` é considerado AcaoAuditoriaLiteral
* ```
*/
function assertAcaoAuditoria(value) {
if (!isAcaoAuditoria(value))
throw new Error(`AcaoAuditoria inválida: ${String(value)}`);
}
/**
* Coerção para AcaoAuditoria com fallback.
*
* Retorna o valor se for um AcaoAuditoria válido; caso contrário retorna o `fallback`.
*
* @param value - Valor a ser convertido/avaliado em tempo de execução.
* @param fallback - Valor a ser usado quando `value` não for válido. Padrão: AcaoAuditoria.GET.
* @returns O valor coerido como AcaoAuditoriaLiteral (ou o fallback quando inválido).
* @public
*
* @example
* ```ts
* const acao = coerceAcaoAuditoria(maybeString, AcaoAuditoria.GET)
* ```
*/
function coerceAcaoAuditoria(value, fallback = AcaoAuditoria.GET) {
return isAcaoAuditoria(value) ? value : fallback;
}