UNPKG

koa-typescript-router

Version:

koa router middleware, typescript fully supported, jersey like coding

150 lines (146 loc) 5.51 kB
// Type definitions for ts-router 0.1.1 // Project: https://github.com/joesonw/ts-router // Definitions by: Qiaosen Huang <https://github.com/joesonw> /// <reference path="../koa/koa.d.ts"/> declare module 'ts-router'{ import * as Koa from 'koa'; export class Controller { __routes:{ [key:string]: { method?: string; filter?: 'after' | 'before'; path?: string; produce?: MediaType; consume?: MediaType; parameters?: { index: number; type: Function; key: string; paramType: string; }[]; }}; __properties: { [key:string] : { key: string; paramType: string; }}; __path:string; } export class Router { routes(): (context: Koa.IContext, next:Promise<void>) => Promise<void>; use<T extends Controller>(RouterClass: new(...args) => T); } export class ResponseBuilder { status(status: number | Response.Status):ResponseBuilder; header(key:string, value:string):ResponseBuilder; type(type: MediaType):ResponseBuilder; body(body: any):ResponseBuilder; allow(...methods: (string | HttpMethod)[]):ResponseBuilder; charset(charset: Charset | string):ResponseBuilder; expires(date: Date):ResponseBuilder; lastModified(date: Date):ResponseBuilder; cookie(cookie:Cookie):ResponseBuilder; build(): Response; } export class Response { static status(status: number | Response.Status):ResponseBuilder; body: any; status: number; headers: { [key:string] : string}; constructor(body:string, status:number, headers: { [key:string] : string}); send(context: Context); } export namespace Response { export enum Status { ACCEPTED = 202, BAD_GATEWAY = 502, BAD_REQUEST = 400, CONFLICT = 409, CREATED = 201, EXPECTATION_FAILED = 417, FORBIDDEN = 403, FOUND = 302, GATEWAY_TIMEOUT = 504, GONE = 410, HTTP_VERSION_NOT_SUPPORTED = 505, INTERNAL_SERVER_ERROR = 500, LENGTH_REQUIRED = 411, METHOD_NOT_ALLOWED = 405, MOVED_PERMANENTLY = 301, NO_CONTENT = 204, NOT_ACCEPTABLE = 406, NOT_FOUND = 404, NOT_IMPLEMENTED = 501, NOT_MODIFIED = 304, OK = 200, PARTIAL_CONTENT = 206, PAYMENT_REQUIRED = 402, PRECONDITION_FAILED = 412, PROXY_AUTHENTICATION_REQUIRED = 407, REQUEST_ENTITY_TOO_LARGE = 413, REQUEST_TIMEOUT = 408, REQUEST_URI_TOO_LONG = 414, REQUESTED_RANGE_NOT_SATISFIABLE = 416, RESET_CONTENT = 205, SEE_OTHER = 303, SERVICE_UNAVAILABLE = 503, TEMPORARY_REDIRECT = 307, UNAUTHORIZED = 401, UNSUPPORTED_MEDIA_TYPE = 415, USE_PROXY = 305 } } export function Before(target:Controller, key:string); export function After(target:Controller, key:string); export function GET(target:Controller, key:string); export function POST(target:Controller, key:string); export function PUT(target:Controller, key:string); export function DELETE(target:Controller, key:string); export function Path(path:string):(target:Controller | (new () => Controller), key?:string) => void; export function Produce(type: MediaType):(target:Controller, key:string) => void; export function Consume(type: MediaType):(target:Controller, key:string) => void; export function QueryParam(param: string):(target:Controller, key:string, index:number) => void; export function PathParam(param: string):(target:Controller, key:string, index?:number) => void; export function BodyParam(param:string):(target:Controller, key:string, index?:number) => void; export function HeaderParam(param:string): (target:Controller, key:string, index?:number) => void; export function Query(target:Controller, key:string, index?:number); export function Params(target:Controller, key:string, index?:number); export function Body(target:Controller, key:string, index?:number); export function Headers(target:Controller, key:string, index?:number); export function AppContext(target:Controller, key:string, index?:number); export function HttpContext(target:Controller, key:string, index?:number); export function RouteResponse(target:Controller, key:string, index:number); export enum MediaType { TEXT, MULTIPART, JSON, FORM } export enum HttpMethod { GET, POST, PUT, DELETE } export enum Charset { UTF8 } export function mediaTypeToString(type: MediaType):string; export interface Context extends Koa.IContext{ cookie?: Cookie; params?: Object; requestBody?: any; } export class ReflectType { static TYPE:string; static PARAMETER_TYPE:string; static RETURN_TYPE:string; } export class Cookie { content: string; path: string; secure: boolean; httpOnly: boolean; expires: Date; maxAge: number; toString():string; } }