|
|
@ -10,7 +10,7 @@ const DEV = 'development' === process.env.NODE_ENV |
|
|
|
const TESTING = 'test' === process.env.NODE_ENV |
|
|
|
|
|
|
|
const serve = fn => server((req, res) => { |
|
|
|
run(req, res, fn, sendError) |
|
|
|
run(req, res, fn) |
|
|
|
}) |
|
|
|
|
|
|
|
module.exports = exports = serve |
|
|
@ -21,7 +21,7 @@ exports.send = send |
|
|
|
exports.sendError = sendError |
|
|
|
exports.createError = createError |
|
|
|
|
|
|
|
async function run(req, res, fn, onError) { |
|
|
|
async function run(req, res, fn) { |
|
|
|
try { |
|
|
|
const val = await fn(req, res) |
|
|
|
|
|
|
@ -35,7 +35,7 @@ async function run(req, res, fn, onError) { |
|
|
|
send(res, res.statusCode || 200, val) |
|
|
|
} |
|
|
|
} catch (err) { |
|
|
|
await onError(req, res, err) |
|
|
|
await sendError(req, res, err) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -72,7 +72,11 @@ async function json(req, {limit = '1mb'} = {}) { |
|
|
|
function send(res, code, obj = null) { |
|
|
|
res.statusCode = code |
|
|
|
|
|
|
|
if (null !== obj) { |
|
|
|
if (null === obj) { |
|
|
|
res.end() |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
if (Buffer.isBuffer(obj)) { |
|
|
|
if (!res.getHeader('Content-Type')) { |
|
|
|
res.setHeader('Content-Type', 'application/octet-stream') |
|
|
@ -80,14 +84,19 @@ function send(res, code, obj = null) { |
|
|
|
|
|
|
|
res.setHeader('Content-Length', obj.length) |
|
|
|
res.end(obj) |
|
|
|
} else if (isStream(obj)) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
if (isStream(obj)) { |
|
|
|
if (!res.getHeader('Content-Type')) { |
|
|
|
res.setHeader('Content-Type', 'application/octet-stream') |
|
|
|
} |
|
|
|
|
|
|
|
obj.pipe(res) |
|
|
|
} else { |
|
|
|
let str |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
let str = obj |
|
|
|
|
|
|
|
if ('object' === typeof obj) { |
|
|
|
// we stringify before setting the header
|
|
|
@ -103,17 +112,11 @@ function send(res, code, obj = null) { |
|
|
|
str = JSON.stringify(obj) |
|
|
|
} |
|
|
|
res.setHeader('Content-Type', 'application/json') |
|
|
|
} else { |
|
|
|
str = obj |
|
|
|
} |
|
|
|
|
|
|
|
res.setHeader('Content-Length', Buffer.byteLength(str)) |
|
|
|
res.end(str) |
|
|
|
} |
|
|
|
} else { |
|
|
|
res.end() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function sendError(req, res, {statusCode, message, stack}) { |
|
|
|
if (statusCode) { |
|
|
|