@casl/vue
Version:
Vue plugin for CASL which makes it easy to add permissions in any Vue application
29 lines (28 loc) • 1.11 kB
TypeScript
import { Abilities, AbilityTuple, AnyAbility, Generics, IfString, MongoAbility, SubjectType } from '@casl/ability';
export type CanProps<T extends AnyAbility> = AbilityCanProps<Generics<T>['abilities']> & {
not?: boolean;
passThrough?: boolean;
};
export declare const Can: import("vue").DefineComponent<CanProps<MongoAbility<AbilityTuple, import("@casl/ability").MongoQuery>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CanProps<MongoAbility<AbilityTuple, import("@casl/ability").MongoQuery>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
type AbilityCanProps<T extends Abilities, Else = IfString<T, {
do: T;
} | {
I: T;
}>> = T extends AbilityTuple ? {
do: T[0];
on: T[1];
field?: string;
} | {
I: T[0];
a: Extract<T[1], SubjectType>;
field?: string;
} | {
I: T[0];
an: Extract<T[1], SubjectType>;
field?: string;
} | {
I: T[0];
this: Exclude<T[1], SubjectType>;
field?: string;
} : Else;
export {};