From 890d4d8bfea9ba2fd03fb76c82cd95e236a48433 Mon Sep 17 00:00:00 2001
From: DavidCai <376462191@qq.com>
Date: Mon, 11 Jan 2016 22:23:56 +0800
Subject: [PATCH] add koa2.d.ts
---
koa2/koa2-tests.ts | 20 +++++++
koa2/koa2.d.ts | 135 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 155 insertions(+)
create mode 100644 koa2/koa2-tests.ts
create mode 100644 koa2/koa2.d.ts
diff --git a/koa2/koa2-tests.ts b/koa2/koa2-tests.ts
new file mode 100644
index 0000000000..7c460d475f
--- /dev/null
+++ b/koa2/koa2-tests.ts
@@ -0,0 +1,20 @@
+///
+import * as Koa from "koa";
+
+const app = new Koa();
+
+app.use((ctx, next) => {
+ const start: any = new Date();
+ return next().then(() => {
+ const end: any = new Date();
+ const ms = end - start;
+ console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
+ });
+});
+
+// response
+app.use(ctx => {
+ ctx.body = "Hello World";
+});
+
+app.listen(3000);
diff --git a/koa2/koa2.d.ts b/koa2/koa2.d.ts
new file mode 100644
index 0000000000..0433e2b09b
--- /dev/null
+++ b/koa2/koa2.d.ts
@@ -0,0 +1,135 @@
+// Type definitions for Koa 2.x
+// Project: http://koajs.com
+// Definitions by: DavidCai1993
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+/* =================== USAGE ===================
+
+ import * as Koa from "koa"
+ const app = new Koa()
+
+ =============================================== */
+///
+
+declare module "koa" {
+ import { EventEmitter } from "events";
+ import * as http from "http";
+ import * as net from "net";
+
+ interface IContext extends IRequest, IResponse {
+ body?: any;
+ request?: IRequest;
+ response?: IResponse;
+ originalUrl?: string;
+ state?: any;
+ name?: string;
+ cookies?: any;
+ writable?: Boolean;
+ respond?: Boolean;
+ app?: Koa;
+ req?: http.IncomingMessage;
+ res?: http.ServerResponse;
+ onerror(err: any): void;
+ toJSON(): any;
+ inspect(): any;
+ throw(): void;
+ assert(): void;
+ }
+
+ interface IRequest {
+ _querycache?: string;
+ app?: Koa;
+ req?: http.IncomingMessage;
+ res?: http.ServerResponse;
+ response?: IResponse;
+ ctx?: IContext;
+ 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;
+ }
+
+ interface IResponse {
+ _body?: any;
+ _explicitStatus?: Boolean;
+ app?: Koa;
+ res?: http.ServerResponse;
+ req?: http.IncomingMessage;
+ ctx?: IContext;
+ request?: IRequest;
+ 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: IContext;
+ request: IRequest;
+ response: IResponse;
+ silent: Boolean;
+ constructor();
+ use(middleware: (ctx: IContext, 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;
+ }
+
+ let K: typeof Koa;
+ export = K
+}