// Type definitions for ThinkJS // Project: https://github.com/75team/thinkjs // Definitions by: Welefen Lee // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /** * empty object */ interface EmptyObject {} /** * error instance */ interface ErrorObject { /** * error name * @type {string} */ name: string; /** * error message * @type {string} */ message: string; /** * error stack * @type {string} */ stack: string; } declare module think { /** * defer object */ interface DeferObject { /** * resove * @param {any} data [] */ resolve(data: any): void; /** * reject * @param {any} err [] */ reject(err: any): void; /** * promise * @type {Promise} */ promise: Promise; } /** * Promise */ interface Promise { /** * then * @param {Function} fn [] * @return {Promise} [] */ then(fn: Function): Promise; /** * catch * @param {Function} fn [] * @return {Promise} [] */ catch(fn: Function): Promise; } /** * prevent Promise */ interface PreventPromise extends Promise { } interface StringArray { [index: number]: string; } interface MixedArray { [index: number]: any; } /** * db config */ interface DbConfObject{ host: string; type: string } /** * http object */ interface HttpObject { /** * request * @type {EmptyObject} */ req: EmptyObject; /** * response * @type {EmptyObject} */ res: EmptyObject; /** * error * @type {EmptyObject} */ error: ErrorObject; /** * request start time * @type {number} */ startTime: number; /** * request url * @type {string} */ url: string; /** * http version * @type {string} */ version: string; /** * http method * @type {string} */ method: string; /** * request headers * @type {EmptyObject} */ headers: EmptyObject; /** * host * @type {string} */ host: string; /** * hostname * @type {string} */ hostname: string; /** * request pathname * @type {string} */ pathname: string; /** * query data * @type {EmptyObject} */ query: EmptyObject; /** * file * @type {EmptyObject} */ _file: EmptyObject; /** * post * @type {EmptyObject} */ _post: EmptyObject; /** * cookie * @type {EmptyObject} */ _cookie: EmptyObject; /** * cookie will be send to client * @type {EmptyObject} */ _sendCookie: EmptyObject; /** * get * @type {EmptyObject} */ _get: EmptyObject; /** * content type is sended * @type {boolean} */ _contentTypeIsSend: boolean; /** * is resource request * @type {boolean} */ _isResource: boolean; /** * request is end * @type {boolean} */ _isEnd: boolean; /** * output content promise * @type {MixedArray} */ _outputContentPromise: MixedArray; /** * view instance * @type {EmptyObject} */ _view: EmptyObject; /** * session instance * @type {EmptyObject} */ _session: EmptyObject; /** * request language * @type {string} */ _lang: string; /** * set language to view path * @type {boolean} */ _langAsViewPath: boolean; /** * config * @type {EmptyObject} */ _config: EmptyObject; /** * error object * @type {EmptyObject} */ _error: EmptyObject; /** * theme * @type {string} */ _theme: string; /** * module * @type {string} */ module: string; /** * controller * @type {string} */ controller: string; /** * action * @type {string} */ action: string; /** * post payload * @type {string} */ payload: string; /** * run * @return {Promise} [] */ run(): Promise; /** * check request has payload data * @return {boolean} [] */ hasPayload(): boolean; /** * get payload data * @return {Promise} [] */ getPayload(): Promise; /** * parse payload data */ parsePayload(): void; /** * parse pathname * @param {string} pathname [] * @return {string} [] */ normalizePathname(pathname: string): string; /** * get or set config * @param {string} name [] * @param {any} value [] * @return {any} [] */ config(name?:string, value?:any): any; /** * get or set content-type * @param {string} contentType [] * @param {string} encoding [] * @return {any} [] */ type(contentType?:string, encoding?:string): any; /** * get userAgent * @return {string} [] */ userAgent(): string; /** * get referrer * @param {boolean} host [] * @return {string} [] */ referrer(host?:boolean): string; /** * is get request * @return {boolean} [] */ isGet(): boolean; /** * is post request * @return {boolean} [] */ isPost(): boolean; /** * is ajax request * @param {string} method [] * @return {boolean} [] */ isAjax(method?:string): boolean; /** * is jsonp request * @param {string} name [] * @return {boolean} [] */ isJsonp(name?:string): boolean; /** * get or set get value * @param {string} name [] * @param {any} value [] * @return {any} [] */ get(name?:string, value?:any): any; /** * set or set post value * @param {string} name [] * @param {any} value [] * @return {any} [] */ post(name?:string, value?: any): any; /** * get parameters * @param {string} name [] * @return {any} [] */ param(name?:string): any; /** * get or set file * @param {string} name [] * @param {EmptyObject} value [] * @return {any} [] */ file(name?:string, value?: EmptyObject): any; /** * get or set header * @param {string} name [] * @param {string} value [] * @return {any} [] */ header(name?:string, value?:string): any; /** * set status * @param {number} status [] * @return {any} [] */ status(status?:number): HttpObject; /** * get user ip * @param {boolean} forward [] * @return {string} [] */ ip(forward?:boolean): string; /** * get language * @param {[type]} lang [] * @param {[type]} asViewPath [] * @return {any} [] */ lang(): string; /** * set language * @param {string} lang [] * @param {boolean} asViewPath [] */ lang(lang: string, asViewPath?: boolean): void; /** * get theme * @return {string} [] */ theme(): string; /** * set theme * @param {string} theme [] */ theme(theme:string): void; /** * get or set cookie * @param {string} name [] * @param {string} value [] * @param {EmptyObject} options [] * @return {any} [] */ cookie(name?:string, value?:string, options?:EmptyObject): any; /** * redirect * @param {string} url [] * @param {number} code [] */ redirect(url?:string, code?:number):void; /** * send time * @param {string} name [] */ sendTime(name?:string):void; /** * send success data * @param {any} data [] * @param {any} message [] */ success(data?:any, message?: any): void; /** * send fail data * @param {string | number} errno [] * @param {string} errmsg [] * @param {any} data [] */ fail(errno?:string | number, errmsg?:string, data?:any): void; /** * send jsonp data * @param {any} data [] */ jsonp(data?:any):void; /** * send json data * @param {any} data [] */ json(data?:any):void; /** * get view instance * @return {EmptyObject} [] */ view(): EmptyObject; /** * set expires time * @param {number} time [] */ expires(time:number): void; /** * locale * @param {MixedArray[]} ...args [] * @return {any} [] */ locale(...args: MixedArray[]): any; /** * get or set session * @param {string} name [] * @param {any} value [] * @return {Promise} [] */ session(name?:string, value?:any): Promise; /** * write content * @param {any} obj [] * @param {string} encoding [] */ write(obj?:any, encoding?:string): void; /** * end */ _end():void; /** * after end */ _afterEnd():void; /** * end * @param {any} obj [] * @param {string} encoding [] */ end(obj?:any, encoding?:string):void; } /** * to fast properties * @param {EmptyObject} obj [] */ export function toFastProperties(obj: EmptyObject): void; /** * promisify * @param {any[]) => any} fn [] * @param {EmptyObject} recevier [] * @return {any} [] */ export function promisify(fn: Function, recevier: any): any; /** * path seperator * @type {string} */ export var sep: string; /** * is master * @type {boolean} */ export var isMaster: boolean; /** * camel case * @param {string} str [] * @return {string} [] */ export function camelCase(str: string): string; /** * defer * @return {deferObject} [] */ export function defer(): DeferObject; export function Class(superCtor: Function, props: EmptyObject): Function; export function extend(target: any, ...source: any[]): EmptyObject; export function isClass(obj: any): boolean; export function isBoolean(obj: any): boolean; export function isNumber(obj: any): boolean; export function isObject(obj: any): boolean; export function isString(obj: any): boolean; export function isArray(obj: any): boolean; export function isFunction(obj: any): boolean; export function isDate(obj: any): boolean; export function isRegExp(obj: any): boolean; export function isError(obj: any): boolean; export function isIP(obj: any): boolean; export function isIP4(obj: any): boolean; export function isIP6(obj: any): boolean; export function isFile(obj: string): boolean; export function isFileAsync(obj: string): Promise; export function isDir(obj: string): boolean; export function isDirAsync(obj: string): Promise; export function isNumberString(obj: string): boolean; export function isPromise(obj: any): boolean; export function isWritable(obj: string): boolean; export function isBuffer(obj: any): boolean; export function isEmpty(obj: any): boolean; export function clone(obj: any): any; export function mkdir(dir: string): boolean; export function rmdir(dir: string): Promise; export function md5(str: string): string; export function chmod(path: string): boolean; export function getFiles(path: string): StringArray; export function escapeHtml(str: string): string; export function datetime(d: any): string; /** * The current version of ThinkJS * @type {string} */ export var version: string; /** * current unix time * @type {number} */ export var startTime: number; /** * dirname */ module dirname { export var config: string; export var controller: string; export var model: string; export var adapter: string; export var logic: string; export var service: string; export var view: string; export var middleware: string; export var runtime: string; export var common: string; export var bootstrap: string; export var locale: string; } /** * env * @type {string} */ export var env: string; /** * server port * @type {number} */ export var port: number; /** * cli args * @type {string} */ export var cli: string; /** * system language * @type {string} */ export var lang: string; export var mode: number; export var mode_normal: number; export var mode_module: number; export var THINK_LIB_PATH: string; export var THINK_PATH: string; /** * module list * @type {Array} */ export var module: Array; /** * root path * @type {string} */ export var ROOT_PATH: string; /** * app path * @type {string} */ export var APP_PATH: string; /** * resource path * @type {string} */ export var RESOURCE_PATH: string; /** * runtime path * @type {string} */ export var RUNTIME_PATH: string; export function reject(err: any): Promise; export function isHttp(obj: any): boolean; interface think_base { new(...args: any[]): think_base_instance; } /** * think.base instance */ interface think_base_instance { /** * init * @param {any[]} ...args [] */ init(...args:any[]): void; /** * invoke * @param {string} method [] * @param {any[]} ...data [] * @return {Promise} [] */ invoke(method: string, ...data: any[]): Promise; /** * get file basename, without extname * @param {string} filepath [] * @return {string} [] */ basename(filepath?: string): string; } export var base: think_base; interface think_validate { /** * register * @type {string} */ (name: string, callback: Function): void; /** * get * @type {[type]} */ (name: string): Function; /** * exec * @type {EmptyObject} */ (name: EmptyObject, msg?: EmptyObject): EmptyObject; /** * exec * @param {EmptyObject} rules [] * @param {EmptyObject} msg [] * @return {EmptyObject} [] */ exec(rules: EmptyObject, msg?: EmptyObject): EmptyObject; /** * get values * @param {EmptyObject} rules [] * @return {EmptyObject} [] */ values(rules: EmptyObject): EmptyObject; /** * parse string rule to object * @param {string} rule [] * @return {EmptyObject} [] */ parse(rule: string): EmptyObject; } export var validate:think_validate; interface think_middleware { /** * register * @type {string} */ (name: string, callback: Function): void; /** * get * @type {[type]} */ (name: string): Function; /** * exec * @type {string} */ (name: string, http: HttpObject, data?: any): Promise; /** * create * @param {any} superClass [] * @param {EmptyObject} methods [] * @return {Function} [] */ create(superClass: any, methods: EmptyObject): Function; /** * get * @param {string} name [] * @return {Function} [] */ get(name: string): Function; /** * exec * @param {string} name [] * @param {HttpObject} http [] * @param {any} data [] * @return {Promise} [] */ exec(name: string, http: HttpObject, data?: any): Promise; /** * think.middleware.base * @type {think_middleware_base} */ base: think_middleware_base } interface think_middleware_base { new(http: HttpObject): think_middleware_base_instance } interface think_middleware_base_instance extends think_http_base_instance { /** * run * @return {any} [] */ run(): any; } export var middleware: think_middleware; interface think_hook{ /** * get hook * @type {[type]} */ (name: string): StringArray; /** * hook * @type {string} */ (name: string, value: any): void; /** * [name ] * @type {string} */ (name: string, http: HttpObject, data?: any): Promise; /** * set function * @param {[type]} name [] * @param {Function} fn [] */ set(name, fn: Function): void; /** * set array * @param {[type]} name [] * @param {StringArray} arr [] */ set(name, arr: StringArray): void; /** * exec * @param {string} name [] * @param {HttpObject} http [] * @param {any} data [] * @return {Promise} [] */ exec(name: string, http: HttpObject, data?: any): Promise; } export var hook: think_hook; interface think_route { (route: MixedArray): void; (route: EmptyObject): void; (): MixedArray; (): EmptyObject; } export var route: think_route; interface think_config { /** * set config * @type {string} */ (name: string, value: any): void; /** * get config * @type {[type]} */ (name: string): any; } export var config: think_config; export function getModuleConfig(): EmptyObject; interface think_co { (fn: Function): Promise; (obj: any): Promise; wrap(fn: Function): Function; } export var co: think_co; export function Class(): Function; export function lookClass(name: string, type: string, module?: string, base?: string): any; export function getPath(module?: string, type?: string, prefix?: string): string; export function require(name: string, flag?: boolean): any; export function safeRequire(file: string): any; export function parseConfig(...args: any[]): EmptyObject; export function prevent(): Promise; export function log(str: string | EmptyObject, type?: string, showTime?: boolean | number): void; interface think_adapter_base{ new(...args: any[]): think_adapter_base_instance; } interface think_adapter_base_instance extends think_base_instance { /** * parse config * @param {any[]} ...args [] * @return {EmptyObject} [] */ //parseConfig(...args: any[]): EmptyObject; } interface think_adapter { (type: string, name: string, fn: Function): void; (type: string, name: string, fn: EmptyObject): Function; (type: string, name: EmptyObject): Function; (type: string, name: string): Function; (type: EmptyObject): Function; (type: Function, name: EmptyObject): Function; base: think_adapter_base } export var adapter: think_adapter; export function loadAdapter(type?: string, base?: string): void; export function alias(type: string, paths: StringArray, slash?: boolean): void; export function gc(instance: EmptyObject): void; interface think_http { /** * get http * @type {[type]} */ (req: string | EmptyObject, res?: EmptyObject | boolean): Promise; /** * think.http.base * @type {think_http_base} */ base: think_http_base; } interface think_http_base { new(http: HttpObject): think_http_base_instance; } interface think_http_base_instance extends think_base_instance { /** * http object * @type {HttpObject} */ http: HttpObject; /** * get config * @param {string} name [] * @return {any} [] */ config(name: string): any; /** * set config * @param {string} name [] * @param {any} value [] */ config(name: string, value: any): void; /** * invoke action * @param {string} controller [] * @param {string} action [] * @param {boolean} transMCA [] * @return {Promise} [] */ action(controller: string, action: string, transMCA?: boolean): Promise; /** * invoke action * @param {think_controller_base} controller [] * @param {string} action [] * @param {boolean} transMCA [] * @return {Promise} [] */ action(controller: think_controller_base_instance, action: string, transMCA?: boolean): Promise; /** * get or set cache * @param {string} key [] * @param {any} value [] * @param {string | EmptyObject} options [] * @return {Promise} [] */ cache(key: string, value?: any, options?: string | EmptyObject): Promise; /** * exec hook * @param {string} event [] * @param {any} data [] * @return {Promise} [] */ hook(event: string, data?: any): Promise; /** * get model instance * @param {string} name [] * @param {string | EmptyObject} options [] * @param {string} module [] * @return {think_model_base} [] */ model(name: string, options: string | EmptyObject, module?: string): think_model_base_instance; /** * get controller instance * @param {string} name [] * @param {string} module [] * @return {think_controller_base} [] */ controller(name: string, module?: string): think_controller_base_instance; /** * get service * @param {string} name [] * @param {string} module [] * @return {any} [] */ service(name: string, module?: string): any; } export var http: think_http; /** * get uuid * @param {number} length [] * @return {string} [] */ export function uuid(length?: number): string; /** * session * @param {HttpObject} http [] * @return {EmptyObject} [] */ export function session(http: HttpObject): EmptyObject; interface think_controller{ /** * get controller instance * @type {string} */ (superClass: string, http: HttpObject): think_controller_base_instance; /** * get controller instance * @type {string} */ (superClass: string, http: any, module: string): think_controller_base_instance; /** * create controller * @type {Function} */ (superClass: Function, methods: EmptyObject): Function; /** * create controller * @type {[type]} */ (superClass: EmptyObject): Function; /** * think.controller.base class * @type {think_controller_base} */ base: think_controller_base; /** * think.controller.rest class * @type {think_controller_rest} */ rest: think_controller_rest; } interface think_controller_base { new(http: HttpObject): think_controller_base_instance } interface think_controller_base_instance extends think_http_base_instance { /** * get ip * @return {string} [] */ ip(): string; /** * get view instance * @return {EmptyObject} [] */ view(): EmptyObject; /** * get http method * @return {string} [] */ method(): string; /** * is method * @param {string} method [] * @return {boolean} [] */ isMethod(method: string): boolean; /** * is get * @return {boolean} [] */ isGet(): boolean; /** * is post * @return {boolean} [] */ isPost(): boolean; /** * is ajax request * @param {string} method [] * @return {boolean} [] */ isAjax(method?: string): boolean; /** * is websocket request * @return {boolean} [] */ isWebSocket(): boolean; /** * is cli env * @return {boolean} [] */ isCli(): boolean; /** * is jsonp request * @param {string} name [] * @return {boolean} [] */ isJsonp(name?: string): boolean; /** * get all parameters * @return {EmptyObject} [] */ get(): EmptyObject; /** * get one paramter * @param {string} name [] * @return {any} [] */ get(name: string): any; /** * set one paramter value * @param {string} name [] * @param {any} value [] */ get(name: string, value: any): void; /** * get all post parameters * @return {EmptyObject} [] */ post(): EmptyObject; /** * get one post parameter * @param {string} name [] * @return {any} [] */ post(name: string): any; /** * set one post parameter * @param {string} name [] * @param {any} value [] */ post(name: string, value: any): void; /** * get all parameters * @return {EmptyObject} [] */ param(): EmptyObject; /** * get one parameter * @param {string} name [] * @return {any} [] */ param(name: string): any; /** * get all upload files * @return {EmptyObject} [] */ file(): EmptyObject; /** * get one upload file * @param {string} name [] * @return {EmptyObject} [] */ file(name: string): EmptyObject; /** * set one upload file * @param {string} name [] * @param {any} value [] */ file(name: string, value: any): void; /** * get all request headers * @return {EmptyObject} [] */ header(): EmptyObject; /** * get one header * @param {string} name [] * @return {string} [] */ header(name: string): string; /** * set one header * @param {string} name [] * @param {string} value [] */ header(name: string, value: string): void; /** * get request userAgent * @return {string} [] */ userAgent(): string; /** * get request referrer * @param {boolean} onlyHost [] * @return {string} [] */ referrer(onlyHost?: boolean): string; /** * get all cookies * @return {EmptyObject} [] */ cookie(): EmptyObject; /** * get one cookie * @param {string} name [] * @return {string} [] */ cookie(name: string): string; /** * set one cookie * @param {string} name [] * @param {string} value [] * @param {any} options [] */ cookie(name: string, value: string, options?: any): void; /** * get session data * @param {string} name [] * @return {Promise} [] */ session(name: string): Promise; /** * set or remove session data * @param {string} name [] * @param {any} value [] * @return {Promise} [] */ session(name: string, value: any): Promise; /** * get language * @return {string} [] */ lang(): string; /** * set language * @param {string} lang [] * @param {boolean} asViewPath [] */ lang(lang:string, asViewPath?: boolean): void; /** * get all locales * @return {EmptyObject} [] */ locale(): EmptyObject; /** * get one locale * @param {string} key [] * @param {string[]} ...data [] * @return {string} [] */ locale(key: string, ...data: string[]): string; /** * redirect * @param {string} url [] * @param {number} code [] * @return {PreventPromise} [] */ redirect(url?: string, code?: number): PreventPromise; /** * assign data * @param {string} name [description] * @param {any} value [description] * @return {any} [description] */ assign(name: string, value: any): any; /** * get assign data * @param {string} name [description] * @return {any} [description] */ assign(name: string): any; /** * get all assign data * @return {EmptyObject} [description] */ assign(): EmptyObject; /** * assign object * @param {EmptyObject} name [description] * @return {any} [description] */ assign(name: EmptyObject): any; /** * get template content after render * @param {string} templateFile [] * @return {Promise} [] */ fetch(templateFile: string, data?: any, config?: any): Promise; /** * display template file * @param {string} templateFile [] * @param {string} charset [] * @param {string} contentType [] * @return {PreventPromise} [] */ display(templateFile?: string, charset?: string, contentType?: string): PreventPromise; /** * render template file * @param {string} templateFile [] * @param {string} charset [] * @param {string} contentType [] * @return {PreventPromise} [] */ render(templateFile?: string, charset?: string, contentType?: string): PreventPromise; /** * send jsonp data * @param {any} data [] * @return {PreventPromise} [] */ jsonp(data: any): PreventPromise; /** * send json data * @param {any} data [] * @return {PreventPromise} [] */ json(data: any): PreventPromise; /** * set http status * @param {number} status [] * @return {think_controller_base_instance} [] */ status(status?: number): think_controller_base_instance; /** * deny request * @param {number} status [] * @return {PreventPromise} [] */ deny(status?: number): PreventPromise; /** * set expires * @param {number} time [] * @return {think_controller_base_instance} [] */ expires(time: number): think_controller_base_instance; /** * send some content * @param {any} obj [] * @param {string} encoding [] */ write(obj: any, encoding?: string): void; /** * end request * @param {any} obj [] * @param {string} encoding [] * @return {PreventPromise} [] */ end(obj: any, encoding?: string): PreventPromise; /** * send content and end request * @param {any} obj [] * @param {string} encoding [] * @return {PreventPromise} [] */ send(obj: any, encoding?: string): PreventPromise; /** * get content-type * @return {string} [] */ type(): string; /** * set conent-type * @param {string} type [] * @param {string} encoding [] */ type(type: string, encoding?: string): void; /** * download file * @param {string} filepath [] * @param {string} contentType [] * @param {string} filename [] * @return {PreventPromise} [] */ download(filepath: string, contentType?: string, filename?: string): PreventPromise; /** * send success data * @param {any} data [] * @param {any} message [] * @return {PreventPromise} [] */ success(data: any, message?: any): PreventPromise; /** * send fail data * @param {number | string} errno [] * @param {string} errmsg [] * @param {any} data [] * @return {PreventPromise} [] */ fail(errno?: number | string, errmsg?: string, data?: any): PreventPromise; /** * send fail data, alias fail method * @param {number | string} errno [] * @param {string} errmsg [] * @param {any} data [] * @return {PreventPromise} [] */ error(errno?: number | string, errmsg?: string, data?: any): PreventPromise; /** * send exec time * @param {string} name [] */ sendTime(name: string): void; /** * emit event * @param {string} event [] * @param {any} data [] */ emit(event: string, data: any): void; /** * boradcast event * @param {string} event [] * @param {any} data [] */ broadcast(event: string, data: any): void; } interface think_controller_rest { new(http: HttpObject): think_controller_rest_instance } interface think_controller_rest_instance extends think_controller_base_instance { _isRest: boolean; _method: string; modelInstance: think_model_base_instance; resource: string; id: string; getResource(): string; getId(): string; getAction(): PreventPromise; postAction(): PreventPromise; putAction(): PreventPromise; deleteAction(): PreventPromise; __call(): PreventPromise; } export var controller: think_controller; interface think_logic { /** * get instance * @type {string} */ (name: string, http: HttpObject): think_logic_base_instance; /** * get instance * @type {string} */ (name: string, http: any, module: string): think_logic_base_instance; /** * create logic class * @type {[type]} */ (superClass?: any, methods?: EmptyObject): think_logic_base; /** * think.logic.base class * @type {think_logic_base} */ base: think_logic_base; } interface think_logic_base { new(http: HttpObject): think_logic_base_instance; } interface think_logic_base_instance extends think_controller_base_instance{ validate(rules?: EmptyObject): boolean; errors(): any; __after(): any; } export var logic: think_logic; interface think_model { /** * get model instance * @type {string} */ (name: string, config: DbConfObject): think_model_$base_instance; /** * create model * @type {any} */ (name: any, method: EmptyObject): think_model_base | think_model_mongo; /** * think.model.base class * @type {think_model_base} */ base: think_model_base; /** * think.model.mongo class * @type {think_model_mongo} */ mongo: think_model_mongo; } interface think_model_base { new(name?: string, config?: EmptyObject): think_model_base_instance; } interface think_model_mongo { new(name?: string, config?: EmptyObject): think_model_mongo_instance; } interface think_model_$base_instance extends think_base { pk: string; name: string; tablePrefix: string; tableName: string; schema: EmptyObject; _data: EmptyObject; _options: EmptyObject; init(name: string, config: EmptyObject): void; init(config: EmptyObject): void; model(name: string, config?: EmptyObject, module?: string): think_model_$base_instance; getTablePrefix(): string; db(): EmptyObject; getModelName(): string; getTableName(): string; cache(key: string, timeout?: number): think_model_$base_instance; cache(key: EmptyObject): think_model_$base_instance; limit(): think_model_$base_instance; limit(offset: number, length?: number): think_model_$base_instance; page(): think_model_$base_instance; page(page: number, listRows?: number): think_model_$base_instance; where(): think_model_$base_instance; where(where: string | EmptyObject): think_model_$base_instance; field(field?: string, reverse?:boolean): think_model_$base_instance; fieldReverse(reverse?:boolean): think_model_$base_instance; table(table?: string, prefix?:string): think_model_$base_instance; union(union?: string, all?: boolean): think_model_$base_instance; join(join?: string | EmptyObject): think_model_$base_instance; order(order?: string | StringArray): think_model_$base_instance; alias(alias?: string): think_model_$base_instance; having(having?:string): think_model_$base_instance; group(group?:string): think_model_$base_instance; lock(lock?:boolean):think_model_$base_instance; auto(auto?:any):think_model_$base_instance; filter(filter?:any): think_model_$base_instance; distinct(distinct?:string): think_model_$base_instance; explain(explain?:boolean): think_model_$base_instance; optionsFilter(options:EmptyObject): EmptyObject; dataFilter(data:any): any; beforeAdd(data:any):any; afterAdd(data:any):any; afterDelete(data: any): any; beforeUpdate(data: any): any; afterUpdate(data: any): any; afterFind(data: any): any; afterSelect(data: any): any; data(data: any): any; options(options: any): any; close(): void; } interface think_model_base_instance extends think_model_$base_instance { /** * get table schema * @param {string} table [] * @return {Promise} [] */ getSchema(table?:string): Promise; /** * get unique field in schema * @param {MixedArray[]} data [] * @return {string} [] */ getUniqueField(data?: MixedArray[]): string; /** * get last sql * @return {string} [] */ getLastSql(): string; /** * get pk * @return {Promise} [] */ getPk(): Promise; /** * build sql * @param {EmptyObject} options [] * @return {Promise} [] */ buildSql(options?:EmptyObject): Promise; /** * parse options * @param {EmptyObject} opt1 [] * @param {EmptyObject} opt2 [] * @return {Promise} [] */ parseOptions(opt1?: EmptyObject, opt2?: EmptyObject): Promise; /** * parse where options * @param {EmptyObject} options [] * @return {EmptyObject} [] */ parseWhereOptions(options: EmptyObject): EmptyObject; /** * parse type * @param {string} key [] * @param {EmptyObject} value [] * @return {EmptyObject} [] */ parseType(key: string, value: EmptyObject): EmptyObject; /** * parse data * @param {EmptyObject} data [] * @return {EmptyObject} [] */ parseData(data: EmptyObject): EmptyObject; /** * add data * @param {EmptyObject} data [] * @param {EmptyObject} options [] * @param {boolean} replace [] * @return {Promise} [] */ add(data: EmptyObject, options?: EmptyObject, replace?:boolean): Promise; /** * then add * @param {EmptyObject} data [] * @param {[type]} where? any [] * @return {Promise} [] */ thenAdd(data: EmptyObject, where?: any): Promise; /** * add many * @param {MixedArray} data [] * @param {EmptyObject} options [] * @param {boolean} replace [] * @return {Promise} [] */ addMany(data: MixedArray, options?: EmptyObject, replace?: boolean): Promise; /** * delete * @param {EmptyObject} options [] * @return {Promise} [] */ delete(options: EmptyObject):Promise; /** * update data * @param {EmptyObject} data [] * @param {EmptyObject} options [] * @return {Promise} [] */ update(data: EmptyObject, options?: EmptyObject): Promise; /** * update many * @param {MixedArray} data [] * @param {EmptyObject} options [] * @return {Promise} [] */ updateMany(data: MixedArray, options?: EmptyObject): Promise; /** * increment field * @param {string} field [] * @param {number} step [] * @return {Promise} [] */ increment(field: string, step?:number): Promise; /** * decrement field * @param {string} field [] * @param {number} step [] * @return {Promise} [] */ decrement(field: string, step?:number): Promise; /** * find data * @param {EmptyObject} options [] * @return {Promise} [] */ find(options?:EmptyObject): Promise; /** * select data * @param {EmptyObject} options [] * @return {Promise} [] */ select(options?:EmptyObject): Promise; /** * select add * @param {EmptyObject} options [] * @return {Promise} [] */ selectAdd(options?:EmptyObject): Promise; /** * count select * @param {EmptyObject} options [] * @param {boolean} flag [] * @return {Promise} [] */ countSelect(options?:EmptyObject, flag?:boolean): Promise; /** * get field data * @param {string} field [] * @param {boolean | number} one [] * @return {Promise} [] */ getField(field:string, one?:boolean | number): Promise; /** * count * @param {string} field [] * @return {Promise} [] */ count(field?:string): Promise; /** * sum * @param {string} field [] * @return {Promise} [] */ sum(field?:string): Promise; /** * get min value * @param {[type]} field?string [] * @return {Promise} [] */ min(field?:string): Promise; /** * get max value * @param {string} field [] * @return {Promise} [] */ max(field?:string): Promise; /** * get value average * @param {string} field [] * @return {Promise} [] */ avg(field?:string): Promise; /** * query * @param {StringArray[]} ...args [] * @return {Promise} [] */ query(...args: StringArray[]): Promise; /** * execute * @param {StringArray[]} ...args [] * @return {Promise} [] */ execute(...args: StringArray[]): Promise; /** * parse sql * @param {StringArray[]} ...args [] * @return {string} [] */ parseSql(...args: StringArray[]): string; /** * start transactions * @return {Promise} [] */ startTrans(): Promise; /** * commit transactions * @return {Promise} [] */ commit(): Promise; /** * rollback transactions * @return {Promise} [] */ rollback(): Promise; /** * transaction * @param {Function} fn [] * @return {Promise} [] */ transaction(fn: Function): Promise; } interface think_model_mongo_instance extends think_model_$base_instance { /** * get pk field * @return {Promise} [] */ getPk(): Promise; /** * create indexed * @return {Promise} [] */ _createIndexes(): Promise; /** * parse options * @param {EmptyObject} opt1 [] * @param {EmptyObject} opt2 [] * @return {Promise} [] */ parseOptions(opt1?: EmptyObject, opt2?: EmptyObject): Promise; /** * parse data * @param {any} data [] * @return {any} [] */ parseData(data: any): any; /** * get collection * @param {string} table [] * @return {EmptyObject} [] */ collection(table?:string): EmptyObject; /** * add data * @param {EmptyObject} data [] * @param {EmptyObject} options [] * @param {boolean} replace [] * @return {Promise} [] */ add(data: EmptyObject, options?: EmptyObject, replace?:boolean): Promise; /** * then add * @param {EmptyObject} data [] * @param {[type]} where? any [] * @return {Promise} [] */ thenAdd(data: EmptyObject, where?: any): Promise; /** * add many * @param {MixedArray} data [] * @param {EmptyObject} options [] * @param {boolean} replace [] * @return {Promise} [] */ addMany(data: MixedArray, options?: EmptyObject, replace?: boolean): Promise; /** * delete * @param {EmptyObject} options [] * @return {Promise} [] */ delete(options: EmptyObject):Promise; /** * update data * @param {EmptyObject} data [] * @param {EmptyObject} options [] * @return {Promise} [] */ update(data: EmptyObject, options?: EmptyObject): Promise; /** * update many * @param {MixedArray} data [] * @param {EmptyObject} options [] * @return {Promise} [] */ updateMany(data: MixedArray, options?: EmptyObject): Promise; /** * find * @param {EmptyObject} options [] * @return {Promise} [] */ find(options?:EmptyObject): Promise; /** * select data * @param {EmptyObject} options [] * @return {Promise} [] */ select(options?:EmptyObject): Promise; /** * select add * @param {EmptyObject} options [] * @return {Promise} [] */ selectAdd(options?:EmptyObject): Promise; /** * count select * @param {EmptyObject} options [] * @param {boolean} flag [] * @return {Promise} [] */ countSelect(options?:EmptyObject, flag?:boolean): Promise; /** * increment field * @param {string} field [] * @param {number} step [] * @return {Promise} [] */ increment(field: string, step?:number): Promise; /** * decrement field * @param {string} field [] * @param {number} step [] * @return {Promise} [] */ decrement(field: string, step?:number): Promise; /** * count * @param {string} field [] * @return {Promise} [] */ count(field?:string): Promise; /** * sum * @param {string} field [] * @return {Promise} [] */ sum(field?:string): Promise; /** * aggregate * @param {EmptyObject} options [] * @return {Promise} [] */ aggregate(options?:EmptyObject): Promise; /** * map reduce * @param {any} map [] * @param {any} resuce [] * @param {any} out [] * @return {Promise} [] */ mapReduce(map: any, resuce: any, out: any): Promise; /** * create index * @param {any} indexes [] * @param {any} options [] * @return {Promise} [] */ createIndex(indexes:any, options: any): Promise; /** * get indexes * @return {Promise} [] */ getIndexes(): Promise; } export var model: think_model; interface think_service { /** * get service * @type {[type]} */ (superClass: string): any; /** * create service * @type {[type]} */ (): think_service_base; /** * think.service.base * @type {think_service_base} */ base: think_service_base } interface think_service_base { new(): think_service_base_instance; } interface think_service_base_instance extends think_base_instance { } export var service: think_service; /** * think.cache * @param {string} name [] * @param {any} value [] * @param {any} options [] * @return {Promise} [] */ export function cache(name: string, value?: any, options?: any): Promise; /** * think.locale * @param {string} key [] * @param {string[]} ...data [] * @return {string} [] */ export function locale(key?: string, ...data: string[]): string | EmptyObject; /** * think.await * @param {string} key [] * @param {Function} callback [] * @return {Promise} [] */ export function await(key: string, callback: Function): Promise; /** * think.npm * @param {string} package [] * @return {Promise} [] */ export function npm(pkg: string): Promise; /** * think.error * @param {string | EmptyObject} err [] * @param {string} addOn [] * @return {EmptyObject} [] */ export function error(err: string | EmptyObject, addOn?: string): ErrorObject; /** * think.statusAction * @param {number} status [] * @param {HttpObject} http [] * @param {boolean} log [] * @return {PreventPromise} [] */ export function statusAction(status?: number, http?: HttpObject, log?: boolean): PreventPromise; /** * think.waterfall * @param {MixedArray} data [] * @param {any} callback [] * @return {Promise} [] */ export function waterfall(data: MixedArray, callback: any): Promise; /** * think.parallelLimit * @param {any} key [] * @param {any} data [] * @param {any} callback [] * @param {EmptyObject} options [] * @return {Promise} [] */ export function parallelLimit(key?: any, data?: any, callback?: any, options?: EmptyObject): Promise; } interface thinkData { hook: EmptyObject; config: EmptyObject; alias: EmptyObject; export: EmptyObject; route: any; middleware: EmptyObject; error: EmptyObject; template: EmptyObject; subController: EmptyObject; } declare var thinkData: thinkData; interface thinkCache { (type: string, name: string, value?: any): any; MEMORY: string; VIEW: string; VIEW_CONTENT: string; DB: string; TABLE: string; SESSION: string; REDIS: string; MEMCACHE: string; TIMER: string; AUTO_RELOAD: string; COLLECTION: string; WEBSOCKET: string; LIMIT: string; APP: string; } declare var thinkCache: thinkCache;