express-toss v2.0.0
express-toss
Makes express router handlers aware of promises. Brings more clear dataflow to express handlers.
toss.method
Transforms (rq) => Promise function to (rq, rs) => void function for use inside Express' handlers.
resolving
import tosser from 'express-toss'
var toss = tosser({ debug: true })
express.get('/resource', toss.method(rq =>
{
return db.query().then(transform) /* … */
}))— return value is used as response body with status 200 and adequate mime. MIME would be determined automatically by express (application/json in case of Object, text/html in case of string, learn more).
rejecting
import tosser from 'express-toss'
var toss = tosser({ debug: true })
express.get('/resource', toss.method(rq =>
{
throw new TypeError
}))— sync throws or promise rejections will convert into 500s with specific JSON body. If debug = true body is detailed, if debug = false it is like a simple internal-ish error.
Resp()
import tosser from 'express-toss'
import Resp from 'express-toss/Resp'
var toss = tosser({ debug: true })
express.get('/resource', toss.method(rq =>
{
// use `Resp` to fine-control response
return Resp(200, 'text/html', html)
// can be used for 400s
return Resp(400, { server: error })
}))— Resp([status], [mime], body) is applied to express' response. Resp can be sync-returned or used inside promise.
Wrong()
import tosser from 'express-toss'
import Wrong from 'express-toss/Wrong'
var toss = tosser({ debug: true })
// use Wrong to create protocol-level errors
// Wrong(code) creates constructor for `code` error
var NotPermitted = Wrong('permission_required')
var NotFound = Wrong('user_not_found', { status: 404 })
express.get('/resource', toss.method(rq =>
{
// throwing or returning `Wrong` to fine-control response
throw NotPermitted()
// details can be supplied
throw NotFound({ username: 'username' })
}))— Wrong(code, [options]) creates new specific error factory. Calling that factory creates error instance. This instance can be throwed/rejected or sync-returned to indicate error situation.
flow
FlowType definitions included.
license
ISC © Strider, 2017 — 2019.