UNPKG

@casl/prisma

Version:

Allows to query accessible records using Prisma client based on CASL rules

13 lines (12 loc) 1.03 kB
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 {};