diff --git a/README.md b/README.md index 9bd82091d7..aa6a5f7b33 100755 --- a/README.md +++ b/README.md @@ -268,6 +268,7 @@ List of Definitions * [Underscore.js (Typed)](http://underscorejs.org/) (by [Josh Baldwin](https://github.com/jbaldwin/)) * [Underscore-ko.js](https://github.com/kamranayub/UnderscoreKO) (by [Maurits Elbers](https://github.com/MagicMau)) * [universal-analytics](https://github.com/peaksandpies/universal-analytics) (by [Bart van der Schoor](https://github.com/Bartvds)) +* [urlrouter](https://github.com/fengmk2/urlrouter) (by [Carlos Ballesteros Velasco](https://github.com/soywiz)) * [UUID.js](https://github.com/LiosK/UUID.js) (by [Jason Jarrett](https://github.com/staxmanade)) * [Valerie](https://github.com/davewatts/valerie) (by [Howard Richards](https://github.com/conficient)) * [Viewporter](https://github.com/zynga/viewporter) (by [Boris Yankov](https://github.com/borisyankov)) diff --git a/urlrouter/urlrouter-tests.ts b/urlrouter/urlrouter-tests.ts new file mode 100644 index 0000000000..c1411c3a35 --- /dev/null +++ b/urlrouter/urlrouter-tests.ts @@ -0,0 +1,19 @@ +/// + +import http = require("http"); +import urlrouter = require("urlrouter"); + +var result = urlrouter((app) => { + app.get('/', (req, res, next) => { + res.end('hello urlrouter'); + }); + app.get('/user/:id([0-9]+)', (req, res, next) => { + res.end('hello user ' + req.params.id); + }); +}); + +var req: urlrouter.ServerRequest; +var res: urlrouter.ServerResponse; +function next() { } + +result(req, res, next); \ No newline at end of file diff --git a/urlrouter/urlrouter.d.ts b/urlrouter/urlrouter.d.ts new file mode 100644 index 0000000000..9254843086 --- /dev/null +++ b/urlrouter/urlrouter.d.ts @@ -0,0 +1,69 @@ +// Type definitions for urlrouter +// Project: https://github.com/fengmk2/urlrouter +// Definitions by: soywiz +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "_UrlRouterInternal" { + import http = require("http"); + + export interface ServerRequest extends http.ServerRequest { + params: any; + } + + export interface ServerResponse extends http.ServerResponse { + + } + + export interface App { + // https://github.com/visionmedia/node-methods/blob/master/index.js + get(urlpattern: string, handler: HttpHandler): void; + post(urlpattern: string, handler: HttpHandler): void; + put(urlpattern: string, handler: HttpHandler): void; + head(urlpattern: string, handler: HttpHandler): void; + delete(urlpattern: string, handler: HttpHandler): void; + options(urlpattern: string, handler: HttpHandler): void; + trace(urlpattern: string, handler: HttpHandler): void; + copy(urlpattern: string, handler: HttpHandler): void; + lock(urlpattern: string, handler: HttpHandler): void; + mkcol(urlpattern: string, handler: HttpHandler): void; + move(urlpattern: string, handler: HttpHandler): void; + propfind(urlpattern: string, handler: HttpHandler): void; + proppatch(urlpattern: string, handler: HttpHandler): void; + unlock(urlpattern: string, handler: HttpHandler): void; + report(urlpattern: string, handler: HttpHandler): void; + mkactivity(urlpattern: string, handler: HttpHandler): void; + checkout(urlpattern: string, handler: HttpHandler): void; + merge(urlpattern: string, handler: HttpHandler): void; + "m-search"(urlpattern: string, handler: HttpHandler): void; + notify(urlpattern: string, handler: HttpHandler): void; + subscribe(urlpattern: string, handler: HttpHandler): void; + unsubscribe(urlpattern: string, handler: HttpHandler): void; + patch(urlpattern: string, handler: HttpHandler): void; + search(urlpattern: string, handler: HttpHandler): void; + + all(urlpattern: string, handler: HttpHandler): void; + redirect(urlpattern: string, to: string): void; + } + + export interface Options { + paramsName?: string; + pageNotFound?: (req: ServerRequest, res: ServerResponse) => void; + errorHandler?: (err:Error, req: ServerRequest, res: ServerResponse) => void; + } + + export function _UrlRouterfunc(handler: (app: App) => void, options?: any): void; + + export interface HttpHandler { + (req: ServerRequest, res: ServerResponse, next?: () => void): void; + } + +} + +declare module "urlrouter" { + import _UrlRouterInternal = require("_UrlRouterInternal"); + + function _UrlRouterInternal(handler: (app: _UrlRouterInternal.App) => void): _UrlRouterInternal.HttpHandler; + export = _UrlRouterInternal; +} \ No newline at end of file