aboutsummaryrefslogtreecommitdiff
path: root/node_modules/koa-convert/README.md
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/koa-convert/README.md
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/koa-convert/README.md')
-rw-r--r--node_modules/koa-convert/README.md136
1 files changed, 136 insertions, 0 deletions
diff --git a/node_modules/koa-convert/README.md b/node_modules/koa-convert/README.md
new file mode 100644
index 00000000..79cb65d4
--- /dev/null
+++ b/node_modules/koa-convert/README.md
@@ -0,0 +1,136 @@
+
+# koa-convert
+
+[![npm version](https://img.shields.io/npm/v/koa-convert.svg)](https://npmjs.org/package/koa-convert)
+[![build status](https://travis-ci.org/gyson/koa-convert.svg)](https://travis-ci.org/gyson/koa-convert)
+
+Convert koa legacy ( 0.x & 1.x ) generator middleware to modern promise middleware ( 2.x ).
+
+It could also convert modern promise middleware back to legacy generator middleware ( useful to help modern middleware support koa 0.x or 1.x ).
+
+## Note
+
+It should be able to convert any legacy generator middleware to modern promise middleware ( or convert it back ).
+
+Please let me know ( send a issue ) if you fail to do so.
+
+## Installation
+
+```
+$ npm install koa-convert
+```
+
+## Usage
+
+```js
+const Koa = require('koa') // koa v2.x
+const convert = require('koa-convert')
+const app = new Koa()
+
+app.use(modernMiddleware)
+
+app.use(convert(legacyMiddleware))
+
+app.use(convert.compose(legacyMiddleware, modernMiddleware))
+
+function * legacyMiddleware (next) {
+ // before
+ yield next
+ // after
+}
+
+function modernMiddleware (ctx, next) {
+ // before
+ return next().then(() => {
+ // after
+ })
+}
+```
+
+## Distinguish legacy and modern middleware
+
+In koa 0.x and 1.x ( without experimental flag ), `app.use` has an assertion that all ( legacy ) middleware must be generator function and it's tested with `fn.constructor.name == 'GeneratorFunction'` at [here](https://github.com/koajs/koa/blob/7fe29d92f1e826d9ce36029e1b9263b94cba8a7c/lib/application.js#L105).
+
+Therefore, we can distinguish legacy and modern middleware with `fn.constructor.name == 'GeneratorFunction'`.
+
+## Migration
+
+`app.use(legacyMiddleware)` is everywhere in 0.x and 1.x and it would be painful to manually change all of them to `app.use(convert(legacyMiddleware))`.
+
+You can use following snippet to make migration easier.
+
+```js
+const _use = app.use
+app.use = x => _use.call(app, convert(x))
+```
+
+The above snippet will override `app.use` method and implicitly convert all legacy generator middleware to modern promise middleware.
+
+Therefore, you can have both `app.use(modernMiddleware)` and `app.use(legacyMiddleware)` and your 0.x or 1.x should work without modification.
+
+Complete example:
+
+```js
+const Koa = require('koa') // v2.x
+const convert = require('koa-convert')
+const app = new Koa()
+
+// ---------- override app.use method ----------
+
+const _use = app.use
+app.use = x => _use.call(app, convert(x))
+
+// ---------- end ----------
+
+app.use(modernMiddleware)
+
+// this will be converted to modern promise middleware implicitly
+app.use(legacyMiddleware)
+
+function * legacyMiddleware (next) {
+ // before
+ yield next
+ // after
+}
+
+function modernMiddleware (ctx, next) {
+ // before
+ return next().then(() => {
+ // after
+ })
+}
+```
+
+## API
+
+#### `convert()`
+
+Convert legacy generator middleware to modern promise middleware.
+
+```js
+modernMiddleware = convert(legacyMiddleware)
+```
+
+#### `convert.compose()`
+
+Convert and compose multiple middleware (could mix legacy and modern ones) and return modern promise middleware.
+
+```js
+composedModernMiddleware = convert.compose(legacyMiddleware, modernMiddleware)
+// or
+composedModernMiddleware = convert.compose([legacyMiddleware, modernMiddleware])
+```
+
+#### `convert.back()`
+
+Convert modern promise middleware back to legacy generator middleware.
+
+This is useful to help modern promise middleware support koa 0.x or 1.x.
+
+```js
+legacyMiddleware = convert.back(modernMiddleware)
+```
+
+## License
+
+MIT