@casl/prisma
Version:
Allows to query accessible records using Prisma client based on CASL rules
13 lines (12 loc) • 1.03 kB
TypeScript
import { Ability, Generics, Normalize, ExtractSubjectType } from '@casl/ability';
import { BasePrismaQuery, InferPrismaTypes } from './types';
type ModelName<TAbility extends Ability<any, BasePrismaQuery>> = Extract<keyof InferPrismaTypes<Generics<TAbility>['conditions']>['WhereInput'], string>;
type SubjectType<TAbility extends Ability<any, BasePrismaQuery>> = Extract<ExtractSubjectType<Normalize<Generics<TAbility>['abilities']>[1]>, ModelName<TAbility>>;
export declare class AccessibleRecords<TAbility extends Ability<any, BasePrismaQuery>> {
private readonly _ability;
private readonly _action;
constructor(_ability: TAbility, _action: string);
ofType<TSubjectType extends SubjectType<TAbility>>(subjectType: TSubjectType): InferPrismaTypes<Generics<TAbility>['conditions']>['WhereInput'][TSubjectType];
}
export declare function accessibleBy<TAbility extends Ability<any, BasePrismaQuery>>(ability: TAbility, action?: TAbility["rules"][number]["action"] & string): AccessibleRecords<TAbility>;
export {};