stack-player
TypeScript icon, indicating that this package has built-in type declarations

2.0.4 • Public • Published

stack-player

stack-player is a small, powerful Express middleware that allows for executing middlewares, switching between them conditionally, and handling their errors separately.

For example, you can use stack-player to execute Express middlewares as follows:

userRouter.get('/:userId', stackplayer((req, res, sNext) => {
    /* your code */
}))

userRouter.get('/:userId', stackplayer((req, res, sNext) => (req, res, sNext) => {
    /* your code */
}))

userRouter.get('/:userId', stackplayer((req, res, sNext) => [
    (req, res, sNext) => { /* your code */ },
    (req, res, sNext) => { /* your code */ },
    (req, res, sNext) => { /* your code */ },
], { autoCallNext: true, callNext: true })

userRouter.get('/:userId', stackplayer([
    (req, res, sNext) => { /* your code */ },
    (req, res, sNext) => { /* your code */ },
    (req, res, sNext) => { /* your code */ },
], { autoCallNext: true, callNext: true }))

How this is useful?

This opens up the doors to new express applications design patterns, for example, the following code sample demonstrates using stack-player with fancy-object to set the request within the corresponding middleware stack to the logged in user role:

userRouter.use((req, res, next) => {
  req.$loggedInUser = { role: 'admin' }
  next()
})
userRouter.get(
  '/:userId',
  stackplayer(
    (req) =>
      ({
        superadmin: [(req, res, next) => {}, (req, res, next) => {}],
        admin: [(req, res, next) => {}, (req, res, next) => {}],
        user: [(req, res, next) => {}, (req, res, next) => {}],
      }[req.$loggedInUser.role])
  )
)

Package Sidebar

Install

npm i stack-player

Weekly Downloads

3

Version

2.0.4

License

ISC

Unpacked Size

22 kB

Total Files

23

Last publish

Collaborators

  • samislam