From 3529d0b57daa66b11d71415b393cabf541efcb93 Mon Sep 17 00:00:00 2001 From: Lee Bousfield Date: Thu, 24 Mar 2016 11:13:30 -0600 Subject: [PATCH] Add ctx.wrappers array --- docs/api/context.md | 9 +++++++++ lib/application.js | 1 + test/context/wrappers.js | 23 +++++++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 test/context/wrappers.js diff --git a/docs/api/context.md b/docs/api/context.md index dc870cd47..9b7a13f27 100644 --- a/docs/api/context.md +++ b/docs/api/context.md @@ -58,6 +58,15 @@ app.use(async (ctx, next) => { ctx.state.user = await User.find(id); ``` +### ctx.wrappers + + Stores functions to wrap middleware (e.g. co.wrap could be used). + Note that koa itself does not implement the use of these wrappers, they are implemented by utilities such as koa-compose. + +```js +ctx.wrappers.push(co.wrap); +``` + ### ctx.app Application instance reference. diff --git a/lib/application.js b/lib/application.js index d68a995f3..1f5e760e8 100644 --- a/lib/application.js +++ b/lib/application.js @@ -164,6 +164,7 @@ module.exports = class Application extends Emitter { request.ip = request.ips[0] || req.socket.remoteAddress || ''; context.accept = request.accept = accepts(req); context.state = {}; + context.wrappers = []; return context; } diff --git a/test/context/wrappers.js b/test/context/wrappers.js new file mode 100644 index 000000000..a3798d693 --- /dev/null +++ b/test/context/wrappers.js @@ -0,0 +1,23 @@ + +'use strict'; + +const request = require('supertest'); +const assert = require('assert'); +const Koa = require('../..'); + +describe('ctx.wrappers', () => { + it('should provide a ctx.wrappers array', done => { + const app = new Koa(); + + app.use(ctx => { + assert(ctx.wrappers instanceof Array); + }); + + const server = app.listen(); + + request(server) + .get('/') + .expect(404) + .end(done); + }); +});