import { server as activeServer } from './server.active'; import Cookie from './server.virtualCookie'; import { createInfo, ExtendedObject } from './info'; declare type Method = 'OPTIONS' | 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'TRACE' | 'CONNECT'; export interface VirtualRequest { domain: string; path: string; query: any; method: Method; isVirtualRequest: true; body: any; headers: { [key: string]: string | string[]; }; cookie?: Cookie | string; } export interface VirtualResponse { statusCode: number; headers: { [key: string]: string | string[]; }; cookies: Cookie; data?: any; transfer?: string; } export interface queryBaseOpt { [key: string]: string | number | (string | number)[]; } export declare type queryOpt = queryBaseOpt | string; export interface netRequest { url?: string; domain?: string; path?: string; method?: Method; header?: { [key: string]: string | string[]; }; headers?: { [key: string]: string | string[]; }; cookie?: Cookie | string | true; query?: queryOpt; body?: any; data?: any; form?: any; type?: any; onlyData?: boolean; responseType?: string; } interface request { (param: netRequest & { onlyData: true; }): Promise; (param: netRequest & { onlyData?: false; }): Promise; (param: string, data?: object): Promise; } export interface BaseRequest { /** 发起 HTTP 请求 */ request: request; } export interface MethodRequest { /** * 发起 GET 请求 * @param url 请求Url * @param query Url查询字符串 */ get(url: string, query?: Q): Promise; /** * 发起 GET 请求 * @param path 请求路径 * @param domain 请求域名 * @param query Url查询字符串 */ get(path: string, domain: string, query?: Q): Promise; /** * 发起 POST 请求 * @param url 请求Url * @param data 请求数据 * @param query Url查询字符串 */ post(url: string, body?: B, query?: Q): Promise; /** * 发起 POST 请求 * @param path 请求路径 * @param domain 请求域名 * @param data 请求数据 * @param query Url查询字符串 */ post(path: string, domain: string, body?: B, query?: Q): Promise; /** * 发起 PUT 请求 * @param url 请求Url * @param data 请求数据 * @param query Url查询字符串 */ put(url: string, body?: B, query?: Q): Promise; /** * 发起 PUT 请求 * @param path 请求路径 * @param domain 请求域名 * @param data 请求数据 * @param query Url查询字符串 */ put(path: string, domain: string, body?: B, query?: Q): Promise; /** * 发起 DELETE 请求 * @param url 请求Url * @param data 请求数据 * @param query Url查询字符串 */ delete(url: string, body?: B, query?: Q): Promise; /** * 发起 DELETE 请求 * @param path 请求路径 * @param domain 请求域名 * @param data 请求数据 * @param query Url查询字符串 */ delete(path: string, domain: string, body?: B, query?: Q): Promise; } export interface BindRequest extends BaseRequest, MethodRequest { /** 根据 用户ID 登陆某用户 */ login(uid: string): Promise; /** 退出已登录的用户 */ exit(): Promise; /** * 获取Cookie * @param {String} cname Cookie名称 * @return {String} Cookie值 */ getCookie(cname: string): Promise; /** * 设置Cookie * @param {String} cname Cookie名称 * @param {String} cookie Cookie值 * @param {Object} opt Cookie选项 */ setCookie(cname: string, cookie: string, opt?: object): Promise; /** * 清除Cookie * @param {String} cname Cookie名称 * @param {Object} opt Cookie选项 */ clearCookie(cname: string, opt?: object): Promise; /** * 清除所有 Cookie * @param {Object} opt Cookie选项 */ clearCookie(opt?: object): Promise; /** * 获取模块的Url * @param {String} id 模块Id * @return {String} 模块Id */ getUrl(id: string): Promise; /** 获取用户ID */ getUserId(): Promise; /** 获取用户权限 */ getPower(v?: string): Promise; /** * 判断用户是否有权限 * 特别的,如果用户有超级权限,则视为用户有任意权限 * @param {...String} powers 要判断的权限 * @return {Boolean} 用户是否有列出的权限之一 */ hasPower(...powers: (string | [string] | [string, (string | string[])])[]): Promise; } export interface bind { (param?: (netRequest & { key?: string; })): BindRequest; } /** 绑定请求参数 */ export declare function bind(request: request, getInfo: createInfo, param?: netRequest): BindRequest; export interface server extends BaseRequest, MethodRequest { bind(param?: (netRequest & { key?: string; })): BindRequest; } export default function create(activeServer: activeServer, getInfo: createInfo): server; export {};