UNPKG

@lanaqi/rsr

Version:
95 lines (94 loc) 2.37 kB
import type { AccessPath } from './common'; import type { AccessContext } from './context'; import type { AccessResource } from './resource'; /** * 阻断处理器 * @param context 上下文 * @param currentPath 当前路径 * @param currentResource 当前资源 */ export type BlockHandler = (context: AccessContext, currentPath: AccessPath, currentResource: AccessResource | null) => boolean; /** * 访问阻断器 */ export interface AccessBlocker { /** * 进行阻断 * @param context 上下文 * @param currentPath 当前路径 * @param currentResource 当前资源 */ block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource | null): boolean; /** * 注册处理器 * @param handler 处理器 */ register(handler: BlockHandler): void; /** * 注销处理器 * @param handler 处理器 */ unregister(handler: BlockHandler): void; } /** * 单一阻断器 */ export declare class SingleBlocker implements AccessBlocker { /** * 处理器 * @private */ private handler?; /** * 进行阻断 * @param context 上下文 * @param currentPath 当前路径 * @param currentResource 当前资源 */ block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource): boolean; /** * 注册处理器 * @param handler 处理器 */ register(handler: BlockHandler): void; /** * 注销处理器 * @param handler 处理器 */ unregister(handler: BlockHandler): void; } /** * 多个阻断器 */ export declare class MultiBlocker implements AccessBlocker { /** * 处理器集合 * @private */ private readonly handlers; /** * 构造函数 */ constructor(); /** * 进行阻断 * @param context 上下文 * @param currentPath 当前路径 * @param currentResource 当前资源 */ block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource): boolean; /** * 注册处理器 * @param handler 处理器 */ register(handler: BlockHandler): void; /** * 注销处理器 * @param handler 处理器 */ unregister(handler: BlockHandler): void; /** * 清理处理器集合 */ clear(): void; }