From b7e9564fdd78981f5acf927cfef4cec9a0a21d68 Mon Sep 17 00:00:00 2001 From: James O'Cull Date: Wed, 6 Jan 2016 13:34:10 -0500 Subject: [PATCH 1/3] Add router /routes support to Restify --- restify/restify.d.ts | 60 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/restify/restify.d.ts b/restify/restify.d.ts index 6fb2e6718c..1cb61fd23f 100644 --- a/restify/restify.d.ts +++ b/restify/restify.d.ts @@ -72,6 +72,61 @@ declare module "restify" { headers: Object; id: string; } + + interface Route { + name: string; + method: string; + path: RoutePathRegex; + spec: Object; + types: string[]; + versions: string[]; + } + + interface RouteOptions { + name: string; + method: string; + path?: string | RegExp; + url?: string | RegExp; + urlParamPattern?: RegExp; + contentType?: string | string[]; + versions?: string | string[]; + } + + interface RoutePathRegex extends RegExp { + restifyParams: string[]; + } + + interface Router { + name: string; + mounts: { [routeName: string]: Route }; + versions: string[]; + contentType: string[]; + routes: { + DELETE: Route[]; + GET: Route[]; + HEAD: Route[]; + OPTIONS: Route[]; + PATCH: Route[]; + POST: Route[]; + PUT: Route[]; + }; + log?: any; + toString: () => string; + + /** + * adds a route. + * @param {Object} options an options object + * @returns {String} returns the route name if creation is successful. + */ + mount: (options: Object) => string; + + /** + * unmounts a route. + * @param {String} name the route name + * @returns {String} the name of the deleted route (or false if it was not matched) + */ + unmount: (name: string) => string | boolean; + } interface Server extends http.Server { use(handler: RequestHandler, ...handlers: RequestHandler[]): any; @@ -124,7 +179,9 @@ declare module "restify" { close(... args: any[]): any; pre(routeCallBack: RequestHandler): any; server: http.Server; - + router: Router; + routes: Route[]; + toString: () => string; } interface ServerOptions { @@ -138,6 +195,7 @@ declare module "restify" { responseTimeHeader ?: string; responseTimeFormatter ?: (durationInMilliseconds: number) => any; handleUpgrades ?: boolean; + router ?: Router; } interface ClientOptions { From 1140e9393fc943fcfae10dd67d97f8abbdd8dea6 Mon Sep 17 00:00:00 2001 From: James O'Cull Date: Wed, 6 Jan 2016 13:50:02 -0500 Subject: [PATCH 2/3] Added Restify Router render function --- restify/restify.d.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/restify/restify.d.ts b/restify/restify.d.ts index 1cb61fd23f..44c379fb36 100644 --- a/restify/restify.d.ts +++ b/restify/restify.d.ts @@ -113,17 +113,26 @@ declare module "restify" { log?: any; toString: () => string; + /** + * Takes an object of route params and query params, and 'renders' a URL + * @param {String} routeName the route name + * @param {Object} params an object of route params + * @param {Object} query an object of query params + * @returns {String} + */ + render: (routeName: string, params: Object, query?: Object) => string; + /** * adds a route. * @param {Object} options an options object - * @returns {String} returns the route name if creation is successful. + * @returns {String} returns the route name if creation is successful. */ mount: (options: Object) => string; /** * unmounts a route. * @param {String} name the route name - * @returns {String} the name of the deleted route (or false if it was not matched) + * @returns {String} the name of the deleted route (or false if it was not matched) */ unmount: (name: string) => string | boolean; } From d2443f6855ad706cd898e96bd40554b521985aa2 Mon Sep 17 00:00:00 2001 From: James O'Cull Date: Wed, 6 Jan 2016 14:21:47 -0500 Subject: [PATCH 3/3] Proper returns on server use/route --- restify/restify.d.ts | 66 ++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/restify/restify.d.ts b/restify/restify.d.ts index 44c379fb36..826b2ca430 100644 --- a/restify/restify.d.ts +++ b/restify/restify.d.ts @@ -138,45 +138,45 @@ declare module "restify" { } interface Server extends http.Server { - use(handler: RequestHandler, ...handlers: RequestHandler[]): any; - use(handler: RequestHandler[], ...handlers: RequestHandler[]): any; - use(handler: RequestHandler, ...handlers: RequestHandler[][]): any; - use(handler: RequestHandler[], ...handlers: RequestHandler[][]): any; + use(handler: RequestHandler, ...handlers: RequestHandler[]): Server; + use(handler: RequestHandler[], ...handlers: RequestHandler[]): Server; + use(handler: RequestHandler, ...handlers: RequestHandler[][]): Server; + use(handler: RequestHandler[], ...handlers: RequestHandler[][]): Server; - post(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any; - post(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any; - post(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any; - post(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any; + post(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): Route; + post(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): Route; + post(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): Route; + post(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): Route; - patch(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any; - patch(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any; - patch(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any; - patch(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any; + patch(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): Route; + patch(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): Route; + patch(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): Route; + patch(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): Route; - put(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any; - put(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any; - put(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any; - put(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any; + put(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): Route; + put(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): Route; + put(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): Route; + put(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): Route; - del(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any; - del(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any; - del(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any; - del(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any; + del(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): Route; + del(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): Route; + del(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): Route; + del(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): Route; - get(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any; - get(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any; - get(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any; - get(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any; + get(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): Route; + get(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): Route; + get(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): Route; + get(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): Route; - head(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any; - head(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any; - head(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any; - head(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any; + head(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): Route; + head(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): Route; + head(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): Route; + head(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): Route; - opts(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): any; - opts(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): any; - opts(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): any; - opts(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): any; + opts(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[]): Route; + opts(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[]): Route; + opts(route: any, routeCallBack: RequestHandler, ...routeCallBacks: RequestHandler[][]): Route; + opts(route: any, routeCallBack: RequestHandler[], ...routeCallBacks: RequestHandler[][]): Route; name: string; version: string; @@ -186,7 +186,7 @@ declare module "restify" { address: () => addressInterface; listen(... args: any[]): any; close(... args: any[]): any; - pre(routeCallBack: RequestHandler): any; + pre(routeCallBack: RequestHandler): Server; server: http.Server; router: Router; routes: Route[];