diff options
Diffstat (limited to 'app/node_modules')
| -rw-r--r-- | app/node_modules/okserver/index.js | 20 | ||||
| -rw-r--r-- | app/node_modules/okview/index.js | 13 |
2 files changed, 26 insertions, 7 deletions
diff --git a/app/node_modules/okserver/index.js b/app/node_modules/okserver/index.js index a3219fa..6c19a9b 100644 --- a/app/node_modules/okserver/index.js +++ b/app/node_modules/okserver/index.js @@ -13,16 +13,24 @@ function OKServer(options) { var views = options.views; var express = options.express; var app = this._app = options.app; + var router = express.Router({ + strict: app.get('strict routing') + }); Object.keys(views) + // Sort such that more general routes are matched last .sort(specificity) + // Add the views .forEach(function(route) { - // We want to enforce trailing slashes for middleware - routeNoSlash = route.charAt(route.length - 1) === '/' ? - route.slice(0, route.length - 1) : route; - app.all(routeNoSlash, redirect(routeNoSlash)); - app.use(routeNoSlash + '/', views[route].middleware()); + var view = views[route]; + var mount = view.mount; + if (!mount) + throw Error('View doesn\'t specify a mount point'); + var handler = view.middleware(); + if (!handler) + throw new Error('View doesn\'t provide middleware'); + router[mount](route, handler); }); - // This enforces trailing slashes for stuff that isn't middleware + app.use(router); app.use(slash()); /** diff --git a/app/node_modules/okview/index.js b/app/node_modules/okview/index.js index 5f3c65c..1ceac03 100644 --- a/app/node_modules/okview/index.js +++ b/app/node_modules/okview/index.js @@ -20,7 +20,8 @@ function OKView(options) { throw new Error('No meta resource provided to view'); if (!options.route) throw new Error('No route provided to view'); - this.route = options.route; + var route = options.route; + var mount = options.mount || 'get'; this._template = options.template; var meta = this._meta = options.meta; var queries = this._queries = options.queries || []; @@ -29,6 +30,16 @@ function OKView(options) { // TODO This bound / unbound thing can probably be expressed in a // less convoluted way. var unbound = this.unbound = !!UNBOUND_ROUTE_PATTERN.exec(this.route); + Object.defineProperty(this, 'mount', { + value: mount, + writable: false, + enumerable: true + }); + Object.defineProperty(this, 'route', { + value: route, + writable: false, + enumerable: true + }); this._middleware = createMiddleware(this); this._fetchTemplateData = unbound ? fetchResourceTemplateData : fetchCollectionTemplateData; |
