occaecatidicta
Version:
65 lines (55 loc) • 1.67 kB
text/typescript
import {default as AppEvents} from '../util/events';
import { ServerInfo } from '../util/constants';
import { ObjectType } from './define';
import { ILifeCycle } from './ILifeCycle';
import { IComponent } from './IComponent';
import { Cron } from '../server/server';
import { Session } from '../index';
import { Application } from '../application';
export interface ComponentContructor {
new(app: Application, opts ?: any): IComponent;
}
export interface IApplicationEvent {
add_servers ?: (servers: ServerInfo[]) => void;
remove_servers ?: (servers: ServerInfo[]) => void;
replace_servers ?: (servers: ServerInfo[]) => void;
bind_session ?: (session: Session) => void;
unbind_session ?: (session: Session) => void;
close_session ?: (session: Session) => void;
add_crons ?: (crons: Cron[]) => void;
remove_crons ?: (crons: Cron[]) => void;
start_server ?: (serverId: string) => void;
start_all ?: () => void;
}
export interface ApplicationEventContructor {
new(opts ?: any): IApplicationEvent;
}
/**
* 一个pinus插件
*/
export interface IPlugin extends ILifeCycle {
/**
* 插件的名称
*/
name: string;
/**
* 启动插件时需要自动加载的组件
*/
components ?: ComponentContructor[];
/**
* 启动插件时需要侦听的应用程序事件
*/
events ?: ApplicationEventContructor[];
/**
* 插件暴漏的handler所在的路径
*/
handlerPath ?: string;
/**
* 插件暴漏的remoters所在的路径
*/
remoterPath?: string;
/**
* 插件暴漏的crons所在的路径
*/
cronPath ?: string;
}