koa-router
Advanced tools
+28
-26
@@ -12,7 +12,6 @@ /** | ||
| var co = require('co'); | ||
| var methods = require('methods'); | ||
| var Route = require('./route'); | ||
| var Resource = require('./resource'); | ||
| var parse = require('url').parse; | ||
| var methods = require('methods') | ||
| , parse = require('url').parse | ||
| , Resource = require('./resource') | ||
| , Route = require('./route'); | ||
@@ -28,2 +27,6 @@ /** | ||
| function Router(app) { | ||
| if (!(this instanceof Router)) { | ||
| var router = new Router(app); | ||
| return router.middleware(); | ||
| } | ||
| app.router = this; | ||
@@ -37,3 +40,3 @@ this.app = app; | ||
| // Expose `router.route` as `app.map` | ||
| app.map = router.route; | ||
| app.map = this.route; | ||
| // Alias methods for `router.route` | ||
@@ -66,5 +69,18 @@ methods.forEach(function(method) { | ||
| /** | ||
| * Router middleware. Dispatches route callbacks corresponding to the request. | ||
| * Expose `Router` | ||
| */ | ||
| module.exports = Router; | ||
| /** | ||
| * Router prototype | ||
| */ | ||
| var router = Router.prototype; | ||
| /** | ||
| * Router middleware factory. Returns router middleware which dispatches route | ||
| * callbacks corresponding to the request. | ||
| * | ||
| * @param {Application} app | ||
| * @param {Function} next | ||
| * @return {Function} | ||
@@ -74,13 +90,11 @@ * @api public | ||
| Router.middleware = function(app) { | ||
| // Initialize Router | ||
| new Router(app); | ||
| // Return middleware | ||
| router.middleware = function() { | ||
| var router = this; | ||
| return function(next) { | ||
| return function *() { | ||
| // Find matching route | ||
| var route = app.router.match(this.req.method, parse(this.req.url).path); | ||
| var route = router.match(this.req.method, parse(this.req.url).path); | ||
| // Dispatch route callbacks | ||
| if (route) { | ||
| app.context({ route: route, params: route.params }); | ||
| router.app.context({ route: route, params: route.params }); | ||
| for (var len = route.callbacks.length, i=0; i<len; i++) { | ||
@@ -101,14 +115,2 @@ yield route.callbacks[i].apply( | ||
| /** | ||
| * Expose `Router.middleware` | ||
| */ | ||
| module.exports = Router.middleware; | ||
| /** | ||
| * Router prototype | ||
| */ | ||
| var router = Router.prototype; | ||
| /** | ||
| * Match given `method` and `path` and return corresponding route. | ||
@@ -115,0 +117,0 @@ * |
+2
-3
@@ -9,7 +9,5 @@ { | ||
| "author": "Alex Mingoia <talk@alexmingoia.com>", | ||
| "version": "1.3.3", | ||
| "version": "1.4.3", | ||
| "keywords": ["koa", "middleware", "router", "route"], | ||
| "dependencies": { | ||
| "co": "1.5.1", | ||
| "koa": "0.0.1", | ||
| "lingo": "0.0.5", | ||
@@ -20,2 +18,3 @@ "methods": "0.0.1", | ||
| "devDependencies": { | ||
| "koa": "0.0.1", | ||
| "mocha": "1.12.0", | ||
@@ -22,0 +21,0 @@ "should": "1.2.2", |
+12
-2
@@ -18,3 +18,3 @@ # Router middleware for [koa](https://github.com/koajs/koa) | ||
| First, require the middleware and mount it: | ||
| Require the router and mount the middleware: | ||
@@ -26,3 +26,5 @@ var koa = require('koa') | ||
| app.use(router(app)); | ||
| After the router has been initialized, you can register routes or resources: | ||
| app.get('/users/:id', function *(id) { | ||
@@ -32,3 +34,11 @@ var user = yield User.findOne(id); | ||
| }); | ||
| app.resource('forums', require('./controllers/forums')); | ||
| You may also instantiate the router separately from mounting the middleware: | ||
| var router = new Router(app); | ||
| app.use(router.middleware()); | ||
| ### app.verb(path, callback, [callback...]) | ||
@@ -35,0 +45,0 @@ |
+20
-8
@@ -8,3 +8,3 @@ /** | ||
| var request = require('supertest'); | ||
| var router = require('..'); | ||
| var Router = require('..'); | ||
| var should = require('should'); | ||
@@ -16,6 +16,6 @@ var koa = require('koa'); | ||
| describe('module', function() { | ||
| it('should expose middleware', function(done) { | ||
| it('should expose Router', function(done) { | ||
| var app = koa(); | ||
| should.exist(router); | ||
| router.should.be.a('function'); | ||
| should.exist(Router); | ||
| Router.should.be.a('function'); | ||
| done(); | ||
@@ -28,3 +28,15 @@ }); | ||
| var app = koa(); | ||
| var middleware = router(app); | ||
| Router.should.be.a('function'); | ||
| var router = new Router(app); | ||
| router.should.be.instanceOf(Router); | ||
| done(); | ||
| }); | ||
| it('should expose middleware factory', function(done) { | ||
| var app = koa(); | ||
| var router = new Router(app); | ||
| router.should.have.property('middleware'); | ||
| router.middleware.should.be.a('function'); | ||
| var middleware = router.middleware(); | ||
| should.exist(middleware); | ||
| middleware.should.be.a('function'); | ||
@@ -36,3 +48,3 @@ done(); | ||
| var app = koa(); | ||
| app.use(router(app)); | ||
| app.use(Router(app)); | ||
| methods.forEach(function(method) { | ||
@@ -68,3 +80,3 @@ app.should.have.property(method); | ||
| var app = koa(); | ||
| app.use(router(app)); | ||
| app.use(Router(app)); | ||
| app.use(function(next) { | ||
@@ -99,3 +111,3 @@ return function *() { | ||
| var app = koa(); | ||
| app.use(router(app)); | ||
| app.use(Router(app)); | ||
| var route = app.all('/', function *(next) { | ||
@@ -102,0 +114,0 @@ this.status = 204; |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
22955
3.13%3
-40%589
2.26%188
5.62%4
33.33%- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed