UNPKG

@anpdgovbr/shared-types

Version:

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

125 lines 4.73 kB
/** * @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