@anpdgovbr/shared-types
Version:
Biblioteca central de tipos TypeScript compartilhados para os projetos da ANPD (BETA)
125 lines • 4.73 kB
TypeScript
/**
* @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
*/
/**
* Define as ações possíveis que podem ser atribuídas a uma permissão de recurso no sistema.
*
* @remarks
* Cada valor representa uma operação que pode ser realizada sobre um recurso, como exibir, editar, criar, acessar módulos ou registrar auditorias.
*
* @see {@link RecursoPermissao}
* @example
* ```ts
* const acao: AcaoPermissao = "Editar"
* ```
*/
export type AcaoPermissao = "Exibir" | "VerHistorico" | "EditarProprio" | "EditarGeral" | "Alterar" | "Cadastrar" | "Editar" | "Desabilitar" | "Criar" | "Acessar" | "Registrar";
/** 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
*/
export declare const ACOES_PERMISSAO_VALUES: readonly ["Exibir", "VerHistorico", "EditarProprio", "EditarGeral", "Alterar", "Cadastrar", "Editar", "Desabilitar", "Criar", "Acessar", "Registrar"];
/**
* Lista os recursos do sistema que podem ter permissões atribuídas.
*
* @remarks
* Cada valor representa uma entidade ou módulo do sistema protegido por RBAC, incluindo módulos semânticos como Admin e Auditoria.
*
* @see {@link AcaoPermissao}
* @example
* ```ts
* const recurso: RecursoPermissao = "Usuario"
* ```
*/
export type RecursoPermissao = "Processo" | "Responsavel" | "Metadados" | "Relatorios" | "Permissoes" | "Usuario" | "Admin" | "Auditoria";
/** Lista imutável com os recursos de permissão.
*
* @remarks
* Valores representando entidades/módulos do sistema que podem receber permissões.
*
* @readonly
* @public
*/
export declare const RECURSOS_PERMISSAO_VALUES: readonly ["Processo", "Responsavel", "Metadados", "Relatorios", "Permissoes", "Usuario", "Admin", "Auditoria"];
/**
* Representa uma permissão concedida efetiva no formato `Acao_Recurso`.
*
* @remarks
* Este tipo utiliza template literal para combinar uma ação e um recurso, formando uma permissão específica.
*
* @example
* ```typescript
* const permissao: PermissaoConcedida = "EditarGeral_Processo";
* ```
*
* @public
*/
export type PermissaoConcedida = `${AcaoPermissao}_${RecursoPermissao}`;
/**
* 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`.
*/
export declare function isAcaoPermissao(x: unknown): x is AcaoPermissao;
/**
* 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`.
*/
export declare function isRecursoPermissao(x: unknown): x is RecursoPermissao;
/**
* 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`.
*/
export declare function assertAcaoPermissao(x: unknown): asserts x is AcaoPermissao;
/**
* 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`.
*/
export declare function assertRecursoPermissao(x: unknown): asserts x is RecursoPermissao;
/**
* 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`.
*/
export declare function coerceAcaoPermissao(x: unknown, fallback?: AcaoPermissao): AcaoPermissao;
/**
* 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`.
*/
export declare function coerceRecursoPermissao(x: unknown, fallback?: RecursoPermissao): RecursoPermissao;
//# sourceMappingURL=permissao.enum.d.ts.map