trpc-shield
Version:
tRPC permissions as another layer of abstraction!
116 lines (115 loc) • 4.37 kB
TypeScript
import { ILogicRule, IOptions, IRule, IRuleConstructorOptions, IRuleFunction, IRuleResult, ShieldRule } from './types';
export declare class Rule<TContext extends Record<string, any>> implements IRule<TContext> {
readonly name: string;
private func;
constructor(name: string, func: IRuleFunction<TContext>, _constructorOptions: IRuleConstructorOptions);
resolve(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult<TContext>>;
/**
*
* Compares a given rule with the current one
* and checks whether their functions are equal.
*
*/
equals(rule: Rule<TContext>): boolean;
private executeRule;
}
export declare class LogicRule<TContext extends Record<string, any>> implements ILogicRule<TContext> {
private rules;
constructor(rules: ShieldRule<TContext>[]);
/**
* By default logic rule resolves to false.
*/
resolve(_ctx: TContext, _type: string, _path: string, _input: {
[name: string]: any;
}, _rawInput: unknown, _options: IOptions<TContext>): Promise<IRuleResult<TContext>>;
/**
* Evaluates all the rules.
*/
evaluate(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult<TContext>[]>;
/**
* Returns rules in a logic rule.
*/
getRules(): ShieldRule<TContext>[];
}
export declare class RuleOr<TContext extends Record<string, any>> extends LogicRule<TContext> {
constructor(rules: ShieldRule<TContext>[]);
/**
* Makes sure that at least one of them has evaluated to true.
*/
resolve(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult<TContext>>;
}
export declare class RuleAnd<TContext extends Record<string, any>> extends LogicRule<TContext> {
constructor(rules: ShieldRule<TContext>[]);
/**
* Makes sure that all of them have resolved to true.
*/
resolve(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult<TContext>>;
}
export declare class RuleChain<TContext extends Record<string, any>> extends LogicRule<TContext> {
constructor(rules: ShieldRule<TContext>[]);
/**
* Makes sure that all of them have resolved to true.
*/
resolve(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult>;
/**
* Evaluates all the rules.
*/
evaluate(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult[]>;
}
export declare class RuleRace<TContext extends Record<string, any>> extends LogicRule<TContext> {
constructor(rules: ShieldRule<TContext>[]);
/**
* Makes sure that at least one of them resolved to true.
*/
resolve(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult>;
/**
* Evaluates all the rules.
*/
evaluate(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult[]>;
}
export declare class RuleNot<TContext extends Record<string, any>> extends LogicRule<TContext> {
error?: Error;
constructor(rule: ShieldRule<TContext>, error?: Error);
/**
*
* Negates the result.
*
*/
resolve(ctx: TContext, type: string, path: string, input: {
[name: string]: any;
}, rawInput: unknown, options: IOptions<TContext>): Promise<IRuleResult>;
}
export declare class RuleTrue<TContext extends Record<string, any>> extends LogicRule<TContext> {
constructor();
/**
*
* Always true.
*
*/
resolve(): Promise<IRuleResult>;
}
export declare class RuleFalse<TContext extends Record<string, any>> extends LogicRule<TContext> {
constructor();
/**
*
* Always false.
*
*/
resolve(): Promise<IRuleResult>;
}