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
TypeScript
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;
} | {};