///
import { Router, Rule } from './router';
import { Notification, EventNoticer, Event } from './event';
import * as http from 'http';
import * as _conv from './ws/_conv';
import { Service } from './service';
export interface Options {
host?: string;
printLog?: boolean;
autoIndex?: boolean;
mimeTypes?: Dict;
errorStatus?: Dict;
agzip?: boolean;
origins?: string[];
allowOrigin?: string;
port?: number;
fileCacheTime?: number;
expires?: number;
noCache?: RegExp | string | string[];
timeout?: number;
session?: number;
maxFileSize?: number;
maxFormDataSize?: number;
maxUploadFileSize?: number;
textEncoding?: string;
defaults?: string[];
formHash?: string;
disable?: RegExp | string | string[];
root?: string | string[];
temp?: string;
virtual?: string;
gzip?: RegExp | string | false;
staticService?: string;
router?: Rule[];
tryFiles?: string;
trySuffixs?: string;
}
/**
* @class Server
*/
export declare abstract class Server extends Notification {
protected _isRun: boolean;
protected _wsConversations: Map;
private _server;
private _host;
private _port;
private _serviceCls;
get host(): string;
get port(): number;
/**
* 获取所有的服务名称列表
*/
get services(): string[];
/**
* 打印log
*/
readonly printLog: boolean;
/**
* session timeout default 15 minutes
* @type {Number}
*/
readonly session: number;
/**
* @type {String}
*/
readonly formHash: string;
/**
* 站点根目录
* @type {String}
*/
readonly root: string[];
/**
* 临时目录
* @type {String}
*/
readonly temp: string;
/**
* 站点虚拟目录
* @type {String}
*/
readonly virtual: string;
/**
* web socket conversation verify origins
* @type {String[]}
*/
readonly origins: string[];
/**
* @type {String}
*/
readonly allowOrigin: string;
/**
* 是否浏览静态文件目录
* @type {Boolean}
*/
readonly autoIndex: boolean;
/**
* 静态缓存文件过期时间,以分钟为单位,为默认为30天
* @type {Number}
*/
readonly expires: number;
/**
* no cache RegExp match
* @type {RegExp}
*/
readonly noCache?: RegExp;
/**
* 静态文件缓存,该值可减低硬盘静态文件读取次数,但需要消耗内存,单位(秒)
* @type {Number}
*/
readonly fileCacheTime: number;
/**
* Download file size limit
* @type {Number}
*/
readonly maxFileSize: number;
/**
* Max form data size limit
*/
readonly maxFormDataSize: number;
/**
* Upload file size limit
* @type {Number}
*/
readonly maxUploadFileSize: number;
/**
* 文本文件编码,默认为utf-8
*/
readonly textEncoding: string;
/**
* 错误文件指向
*/
readonly tryFiles = "";
/**
* 错误文件指向后缀
*/
readonly trySuffixs = "";
/**
* 请求超时时间(毫秒)
* @type {Number}
*/
get timeout(): number;
/**
* 静态gzip文件格式
* defaults javascript|text|json|xml
* @type {Regexp}
*/
readonly gzip: RegExp | boolean;
/**
* 是否动态数据内容压缩
* @type {Boolean}
*/
readonly agzip: boolean;
/**
* 默认页
* @type {String[]}
*/
readonly defaults: string[];
/**
* 设置禁止访问的目录
* @type {RegExp}
*/
readonly disable?: RegExp;
/**
* 错误状态页
* @type {Object}
*/
readonly errorStatus: Dict;
/**
* 配置的文件mime
* mime types
* @type {Object}
*/
readonly mimeTypes: Dict;
/**
* http请求路由器
* @type {Router}
*/
readonly router: Router;
/**
* @get impl
*/
get impl(): http.Server;
readonly onWSConversationOpen: EventNoticer>;
readonly onWSConversationClose: EventNoticer>;
/**
* 构造函数
* @constructor
* @param {Object} opt (Optional) 配置项
*/
constructor(config?: Options);
protected abstract initialize(server: http.Server): void;
/**
* Get wsConversations conversation
*/
get wsConversations(): IterableIterator<_conv.ConversationBasic>;
set timeout(timeout: number);
/**
* @func interceptRequest(req, res)
*/
interceptRequest(req: http.IncomingMessage, res: http.ServerResponse): boolean;
/**
* MIME 获取类型
* @param {String} ename 扩展名或文件名称
* @return {String}
*/
getMime(name: string): any;
/**
* 是否正在运行
*/
get isRun(): boolean;
/**
* 启动服务
*/
start(): Promise;
/**
* @func stop() sopt service
*/
stop(): void;
/**
* @func restart() restart service
*/
restart(): void;
/**
* 通过名称获取服务class
*/
getService(name: string): typeof Service;
/**
* @func setService() Registration Service
*/
setService(name: string, cls: any): void;
/**
* @func removeService() remove service
*/
removeService(name: string): void;
}
declare const _default: {
/**
* @func setShared
*/
setShared: (server: Server) => void;
/**
* @get shared # default web server
*/
readonly shared: Server | null;
};
export default _default;