UNPKG

@casl/prisma

Version:

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

20 lines (19 loc) 823 B
import { ForcedSubject } from '@casl/ability'; export declare const prismaQuery: (query: { [x: string]: any; }, ...args: unknown[]) => { (...args: any[]): any; ast: import("@ucast/core").Condition; }; export type Model<T, TName extends string> = T & ForcedSubject<TName>; export type Subjects<T extends Partial<Record<string, Record<string, unknown>>>> = keyof T | { [K in keyof T]: Model<T[K], K & string>; }[keyof T]; /** * Extracts Prisma model name from given object and possible list of all subjects */ export type ExtractModelName<TObject, TModelName extends PropertyKey> = TObject extends { kind: TModelName; } ? TObject['kind'] : TObject extends ForcedSubject<TModelName> ? TObject['__caslSubjectType__'] : TObject extends { __typename: TModelName; } ? TObject['__typename'] : TModelName;