UNPKG

@anpdgovbr/shared-types

Version:

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

131 lines (130 loc) 3.96 kB
"use strict"; /** * @packageDocumentation * * Tipagens auxiliares para permissões do sistema. * * Este módulo define as ações e recursos que compõem o modelo de permissão, * helpers de validação/coerção e um tipo que representa permissões concedidas * na forma `${Acao}_${Recurso}`. * * @remarks * Os valores imutáveis expostos permitem iteração/validação em tempo de execução. * * @public */ Object.defineProperty(exports, "__esModule", { value: true }); exports.RECURSOS_PERMISSAO_VALUES = exports.ACOES_PERMISSAO_VALUES = void 0; exports.isAcaoPermissao = isAcaoPermissao; exports.isRecursoPermissao = isRecursoPermissao; exports.assertAcaoPermissao = assertAcaoPermissao; exports.assertRecursoPermissao = assertRecursoPermissao; exports.coerceAcaoPermissao = coerceAcaoPermissao; exports.coerceRecursoPermissao = coerceRecursoPermissao; /** Lista imutável com as ações de permissão. * * @remarks * Utilizada para validação em tempo de execução e construção de tipos literais. * * @readonly * @public */ exports.ACOES_PERMISSAO_VALUES = [ "Exibir", "VerHistorico", "EditarProprio", "EditarGeral", "Alterar", "Cadastrar", "Editar", "Desabilitar", "Criar", "Acessar", "Registrar", ]; /** Lista imutável com os recursos de permissão. * * @remarks * Valores representando entidades/módulos do sistema que podem receber permissões. * * @readonly * @public */ exports.RECURSOS_PERMISSAO_VALUES = [ "Processo", "Responsavel", "Metadados", "Relatorios", "Permissoes", "Usuario", "Admin", "Auditoria", ]; /** * Verifica se um valor corresponde a uma ação de permissão válida. * * @param x - Valor a ser verificado em tempo de execução. * @returns true se `x` for um dos valores definidos em `ACOES_PERMISSAO_VALUES`. */ function isAcaoPermissao(x) { return (typeof x === "string" && exports.ACOES_PERMISSAO_VALUES.includes(x)); } /** * Verifica se um valor corresponde a um recurso de permissão válida. * * @param x - Valor a ser verificado em tempo de execução. * @returns true se `x` for um dos valores definidos em `RECURSOS_PERMISSAO_VALUES`. */ function isRecursoPermissao(x) { return (typeof x === "string" && exports.RECURSOS_PERMISSAO_VALUES.includes(x)); } /** * Asserção de tipo para `AcaoPermissao`. * * Lança um erro se o valor fornecido não for uma ação de permissão válida. * * @param x - Valor a ser validado. * @throws {Error} Se `x` não for um `AcaoPermissao`. */ function assertAcaoPermissao(x) { if (!isAcaoPermissao(x)) throw new Error(`AcaoPermissao inválida: ${String(x)}`); } /** * Asserção de tipo para `RecursoPermissao`. * * Lança um erro se o valor fornecido não for um recurso de permissão válido. * * @param x - Valor a ser validado. * @throws {Error} Se `x` não for um `RecursoPermissao`. */ function assertRecursoPermissao(x) { if (!isRecursoPermissao(x)) throw new Error(`RecursoPermissao inválido: ${String(x)}`); } /** * Coerção de valor para `AcaoPermissao`. * * Retorna o valor se for uma ação válida, caso contrário retorna o `fallback`. * * @param x - Valor a ser coerido. * @param fallback - Valor padrão retornado quando `x` não é válido (padrão: "Exibir"). * @returns Um valor garantidamente do tipo `AcaoPermissao`. */ function coerceAcaoPermissao(x, fallback = "Exibir") { return isAcaoPermissao(x) ? x : fallback; } /** * Coerção de valor para `RecursoPermissao`. * * Retorna o valor se for um recurso válido, caso contrário retorna o `fallback`. * * @param x - Valor a ser coerido. * @param fallback - Valor padrão retornado quando `x` não é válido (padrão: "Processo"). * @returns Um valor garantidamente do tipo `RecursoPermissao`. */ function coerceRecursoPermissao(x, fallback = "Processo") { return isRecursoPermissao(x) ? x : fallback; }