UNPKG

mongoose-restapi-ui

Version:

Rest api library for your mongoose apps, with react ui: mongoose-restapi-ui-component react library

89 lines (88 loc) 2.94 kB
import { Request } from 'express'; import { Document, Model } from 'mongoose'; import { IPermission } from '../models/permissionSchema'; import { IRole } from '../models/roleSchema'; import { IUser } from '../models/userSchema'; declare type RequiredAttrsPath = { name: string; required: boolean; }; export declare type ObjectPath = RequiredAttrsPath & { complex: true; name: string; type: 'Object'; children: Path[]; }; declare type ArrayPath = RequiredAttrsPath & { complex: true; type: 'Array'; label: string; children: Path[]; }; declare type FieldPath = RequiredAttrsPath & { type: 'Number' | 'String' | 'Boolean' | 'ObjectId'; }; export declare type Path = FieldPath | ObjectPath | ArrayPath; export declare type UserRequest = Request & { user: IUser; }; export declare type EditRequest<T extends Document> = UserRequest & { doc: T; }; export declare type EditPermRequest<T extends Document> = EditRequest<T> & { doc_perm: IPermission; }; export declare type RolePermRequest = UserRequest & { role: IRole; }; export declare type PermissionRequest<T extends Document> = EditRequest<T> & { perm: IPermission; permission: PermissionEnum; role: PermissionEnum; }; declare type RequestFilterQuery = (req: UserRequest, callback: (error: Error | null, query: { [key: string]: any; }) => void) => void; declare type EditPermision = (req: UserRequest, doc: Document, callback: HasPermissionCallback) => void; declare type AddPermision = (req: UserRequest, callback: HasPermissionCallback) => void; declare type GlobalPermision = (req: UserRequest, callback: (error: Error | null, permission: PermissionEnum) => void) => void; declare type GetMaxPermission = { getMaxPermission: GlobalPermision; }; declare type PermissionCallbacks = { getFilterByPermissions?: RequestFilterQuery; hasAdminPermission: EditPermision; hasEditPermission: EditPermision; hasAddPermission: AddPermision; hasUpdatePermission: EditPermision; hasDeletePermission: EditPermision; }; export declare type PermissionChecks = PermissionCallbacks & GetMaxPermission; export declare type ServeOptions = { MAX_RESULTS?: number; name?: string; } & Partial<PermissionCallbacks>; export declare type HasPermissionCallback = (error: Error | null, hasPermission: boolean, reason?: string) => void; export declare type InfoModel = { name: string; label: string; route: string; paths: Path[]; model: Model<any>; }; export declare enum PermissionEnum { ADMIN = 5, DELETE = 4, UPDATE = 3, READ = 2, ADD = 1 } declare const PERMISSION_MODEL = "Permission"; declare const ROLE_MODEL = "Role"; export { PERMISSION_MODEL, ROLE_MODEL }; export declare type FullPathTypes = { type: string; } | { type: 'Ref' | 'ArrayRef'; to: string; } | {};