express-toss

2.0.0 • Public • Published

express-toss

Travis Coveralls ISC licensed npm|express-toss flowtype

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.

Readme

Keywords

none

Package Sidebar

Install

npm i express-toss

Weekly Downloads

0

Version

2.0.0

License

ISC

Unpacked Size

19.6 kB

Total Files

19

Last publish

Collaborators

  • streetstrider