This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously. closes #1282
36 lines
879 B
TypeScript
36 lines
879 B
TypeScript
declare module "cancan" {
|
|
namespace CanCan {
|
|
interface Option {
|
|
instanceOf?: ((instance: any, model: any) => boolean) | undefined;
|
|
createError?: (() => any) | undefined;
|
|
}
|
|
}
|
|
|
|
class CanCan {
|
|
constructor(options?: CanCan.Option);
|
|
|
|
allow<T>(
|
|
model: any,
|
|
actions: string | ReadonlyArray<string>,
|
|
targets: T | ReadonlyArray<T> | string | ReadonlyArray<string>,
|
|
condition?:
|
|
| object
|
|
| ((performer: any, target: any, options?: any) => boolean)
|
|
): void;
|
|
|
|
can(performer: any, action: string, target: any, options?: any): boolean;
|
|
|
|
cannot(performer: any, action: string, target: any, options?: any): boolean;
|
|
|
|
authorize(performer: any, action: string, target: any, options?: any): void;
|
|
|
|
abilities: {
|
|
model: any;
|
|
action: string;
|
|
target: any;
|
|
}[];
|
|
}
|
|
|
|
export = CanCan;
|
|
}
|