diff --git a/koa/koa.d.ts b/koa/koa.d.ts index b005067b1f..1356ffdb0e 100644 --- a/koa/koa.d.ts +++ b/koa/koa.d.ts @@ -13,129 +13,170 @@ } =============================================== */ -/// +/// +/// declare module "koa" { - import { EventEmitter } from "events"; - import * as http from "http"; - import * as net from "net"; + import { EventEmitter } from "events"; + import * as cookies from "cookies"; + import * as http from "http"; + import * as net from "net"; - namespace Koa { - export interface Context extends Request, Response { - body?: any; - request?: Request; - response?: Response; - originalUrl?: string; - state?: any; - name?: string; - cookies?: any; - writable?: Boolean; - respond?: Boolean; - app?: Koa; - req?: http.IncomingMessage; - res?: http.ServerResponse; + namespace Koa { + export interface Context extends Request, Response { + app: Koa; + req: http.IncomingMessage; + res: http.ServerResponse; + request: Request; + response: Response; + + cookies: cookies.ICookies; + originalUrl: string; + state: any; + + name?: string; + respond?: boolean; + + assert(test: any, ...args: any[]): void; + onerror(err?: any): void; + throw(...args: any[]): void; + + toJSON(): any; + inspect(): any; + } + + export interface Request { + app: Koa; + req: http.IncomingMessage; + res: http.ServerResponse; + ctx: Context; + response: Response; + + fresh: boolean; + header: any; + headers: any; + host: string; + hostname: string; + href: string; + idempotent: boolean; + ip: string; + ips: string[]; + method: string; + origin: string; + originalUrl: string; + path: string; + protocol: string; + query: any; + querystring: string; + search: string; + secure: boolean; + socket: net.Socket; + stale: boolean; + subdomains: string[]; + type: string; + url: string; + + charset?: string; + length?: number; + + accepts(): string[]; + accepts(arg: string): void | string; + accepts(arg: string[]): void | string; + accepts(...args: string[]): void | string; + acceptsCharsets(): string[]; + acceptsCharsets(arg: string): void | string; + acceptsCharsets(arg: string[]): void | string; + acceptsCharsets(...args: string[]): void | string; + acceptsEncodings(): string[]; + acceptsEncodings(arg: string): void | string; + acceptsEncodings(arg: string[]): void | string; + acceptsEncodings(...args: string[]): void | string; + acceptsLanguages(): string[]; + acceptsLanguages(arg: string): void | string; + acceptsLanguages(arg: string[]): void | string; + acceptsLanguages(...args: string[]): void | string; + get(field: string): string; + is(): string[]; + is(arg: string): void | string; + is(arg: string[]): void | string; + is(...args: string[]): void | string; + + toJSON(): any; + inspect(): any; + } + + export interface Response { + app: Koa; + req: http.IncomingMessage; + res: http.ServerResponse; + ctx: Context; + request: Request; + + body: any; + etag: string; + header: any; + headers: any; + headerSent: boolean; + lastModified: Date; + message: string; + socket: net.Socket; + status: number; + type: string; + writable: boolean; + + charset?: string; + length?: number; + + append(field: string, val: string | string[]): void; + attachment(filename?: string): void; + get(field: string): string; + is(): string[]; + is(arg: string): void | string; + is(arg: string[]): void | string; + is(...args: string[]): void | string; + redirect(url: string, alt?: string): void; + remove(field: string): void; + set(field: string, val: string | string[]): void; + set(field: any): void; + vary(field: string): void; + + toJSON(): any; + inspect(): any; + } + } + + class Koa extends EventEmitter { + context: Koa.Context; + env: string; + keys: string[]; + proxy: boolean; + request: Koa.Request; + response: Koa.Response; + server: http.Server; + silent: boolean; + subdomainOffset: number; + + constructor(); + + // From node.d.ts + listen(port: number, hostname?: string, backlog?: number, listeningListener?: Function): http.Server; + listen(port: number, hostname?: string, listeningListener?: Function): http.Server; + listen(port: number, backlog?: number, listeningListener?: Function): http.Server; + listen(port: number, listeningListener?: Function): http.Server; + listen(path: string, backlog?: number, listeningListener?: Function): http.Server; + listen(path: string, listeningListener?: Function): http.Server; + listen(handle: any, backlog?: number, listeningListener?: Function): http.Server; + listen(handle: any, listeningListener?: Function): http.Server; + listen(options: net.ListenOptions, listeningListener?: Function): http.Server; + + callback(): (req: http.IncomingMessage, res: http.ServerResponse) => void; onerror(err: any): void; + use(middleware: (ctx: Koa.Context, next: () => Promise) => any): Koa; + toJSON(): any; inspect(): any; - throw(code?: any, message?: any): void; - assert(test: any, status: number, message: string): void; } - export interface Request { - _querycache?: string; - app?: Koa; - req?: http.IncomingMessage; - res?: http.ServerResponse; - response?: Response; - ctx?: Context; - headers?: any; - header?: any; - method?: string; - length?: any; - url?: string; - origin?: string; - originalUrl?: string; - href?: string; - path?: string; - querystring?: string; - query?: any; - search?: string; - idempotent?: Boolean; - socket?: net.Socket; - protocol?: string; - host?: string; - hostname?: string; - fresh?: Boolean; - stale?: Boolean; - charset?: string; - secure?: Boolean; - ips?: Array; - ip?: string; - subdomains?: Array; - accept?: any; - type?: string; - accepts?: () => any; - acceptsEncodings?: () => any; - acceptsCharsets?: () => any; - acceptsLanguages?: () => any; - is?: (types: any) => any; - toJSON?: () => any; - inspect?: () => any; - get?: (field: string) => string; - } - - export interface Response { - _body?: any; - _explicitStatus?: Boolean; - app?: Koa; - res?: http.ServerResponse; - req?: http.IncomingMessage; - ctx?: Context; - request?: Request; - socket?: net.Socket; - header?: any; - headers?: any; - status?: number; - message?: string; - type?: string; - body?: any; - length?: any; - headerSent?: Boolean; - lastModified?: Date; - etag?: string; - writable?: Boolean; - is?: (types: any) => any; - redirect?: (url: string, alt: string) => void; - attachment?: (filename?: string) => void; - vary?: (field: string) => void; - get?: (field: string) => string; - set?: (field: any, val: any) => void; - remove?: (field: string) => void; - append?: (field: string, val: any) => void; - toJSON?: () => any; - inspect?: () => any; - } - } - - class Koa extends EventEmitter { - keys: Array; - subdomainOffset: number; - proxy: Boolean; - server: http.Server; - env: string; - context: Koa.Context; - request: Koa.Request; - response: Koa.Response; - silent: Boolean; - constructor(); - use(middleware: (ctx: Koa.Context, next: Function) => any): Koa; - callback(): (req: http.IncomingMessage, res: http.ServerResponse) => void; - listen(port: number, callback?: Function): http.Server; - toJSON(): any; - inspect(): any; - onerror(err: any): void; - } - - namespace Koa {} - export = Koa; + namespace Koa {} + export = Koa; }