UNPKG

@casl/mongoose

Version:

Allows to query accessible records from MongoDB based on CASL rules

26 lines (25 loc) 1.3 kB
import { AnyMongoAbility, Generics, Normalize } from '@casl/ability'; import type { Document, Model, Schema } from 'mongoose'; export type AccessibleFieldsOptions = { getFields(schema: Schema<Document>): string[]; } & ({ only: string | string[]; } | { except: string | string[]; }); export declare const getSchemaPaths: AccessibleFieldsOptions['getFields']; type GetAccessibleFields<T> = <U extends AnyMongoAbility>(this: Model<T> | T, ability: U, action?: Normalize<Generics<U>['abilities']>[0]) => string[]; export interface AccessibleFieldsModel<T, TQueryHelpers = {}, TMethods = {}, TVirtuals = {}> extends Model<T, TQueryHelpers, TMethods & AccessibleFieldDocumentMethods<T>, TVirtuals> { accessibleFieldsBy: GetAccessibleFields<T>; } export interface AccessibleFieldDocumentMethods<T = Document> { accessibleFieldsBy: GetAccessibleFields<T>; } /** * @deprecated Mongoose recommends against `extends Document`, prefer to use `AccessibleFieldsModel` instead. * See here: https://mongoosejs.com/docs/typescript.html#using-extends-document */ export interface AccessibleFieldsDocument extends Document, AccessibleFieldDocumentMethods { } export declare function accessibleFieldsPlugin(schema: Schema<any>, rawOptions?: Partial<AccessibleFieldsOptions>): void; export {};