import {AdviceTargetType, AdviceType, ComponentScopes, ComponentType, HttpMethodType, TransactionIsolationType, TransactionPropagationType} from "../enum" import {ConstructorType, PojoType} from "./type" export interface IComponent{ packageName: string, name: string, cost: ConstructorType, type: ComponentType, props: Array, inited: boolean, isAop: boolean, scope: ComponentScopes, addProperty: (property: PojoType) => void } export interface IFile{ packageName: string, cost: ConstructorType } export interface IController extends IComponent{ route: string } export interface IService extends IComponent{} export interface IDao extends IComponent{ getConnection: (...params: any) => any, setAlive?: () => void, query?: (...params: any) => Promise>, execute?: (...params: any) => Promise } export interface IResource{ mappingName: string, propName: string, caller: any } export interface IAspect{ cost: ConstructorType, pointcuts: Array setPointcuts: (pointcuts: Array, advices: Array) => void } export interface IPointcut{ cost: ConstructorType, name: string, execution: RegExp, advices: Array, setAdvices: (advices: Array) => void } export interface IAdvice{ cost: ConstructorType, pointcutName: string, type: AdviceType, value: any } export interface IHttpSend{ route: string, type: HttpMethodType, cost: ConstructorType, methodName: string } export interface IStream{ cost: ConstructorType, methodName: string, mineType: string } export interface IUpload{ cost: ConstructorType, methodName: string } export interface ITransaction{ isolation: TransactionIsolationType, propagation: TransactionPropagationType, cost: ConstructorType, methodName: string, method: Function } export interface IReturnModel{ status: number, data: any, message: string } export interface IControllerParam{ cost: ConstructorType, propName: string, index: number, requestName: string, require: boolean }