-
Notifications
You must be signed in to change notification settings - Fork 0
/
koa-ring.js
26 lines (23 loc) · 661 Bytes
/
koa-ring.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
'use strict'
const f = require('fpx')
const u = require('./utils')
exports.toKoaMiddleware = toKoaMiddleware
function toKoaMiddleware(handler) {
f.validate(handler, f.isFunction)
return async function koaRingMiddleware(ctx, next) {
const request = u.toPlainRequest(ctx)
request.koaNext = next
const response = await handler(request)
if (u.isAwaitingResponse(ctx)) u.assignResponseToContext(ctx, response)
}
}
// Undocumented
exports.runKoaNext = runKoaNext
async function runKoaNext(request) {
const {ctx, koaNext} = request || {}
if (ctx && koaNext) {
await koaNext()
return u.toPlainResponse(ctx)
}
return undefined
}