express-multi-hijack
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

Express Multi Hijack

Simply hijack or intercept your express response via middleware.

Installation

npm i express-multi-hijack

How it works

This library works by overriding res.end function, still maintaining the original one once all of the "hijack" functions are executed.

So it is safe to use with Your own custom res.end implementation.

Example

  1. Simple Tracing Response Body
const Express = require('express');
const { Hijack } = require('express-multi-hijack');

const app = Express()

app.use(Hijack({
  json: true,
  handler: (body, req, res, next) => {
    console.info('got response body', body) // { "foo": "bar" }
  }
}))

app.get('/bar', (req, res, next) => {
  res.json({
    bar: 'foo',
  })
})

app.get('/foo', (req, res, next) => {
  res.json({
    foo: 'bar',
  })
})

app.listen(8080)

Based on the example above, the hijack handler will print { "foo": "bar" } on request to localhost:8080/foo and { "bar": "foo" } when requesting to localhost:8080/bar.

  1. Intercept and Override Response Body
const Express = require('express')
const { Hijack } = require('../dist')

const app = Express()

app.use(Hijack({
  json: true,
  handler: (body, _, res) => {
    console.info('body:', body)
    res.json({ message: 'Today is the bad day' })
  }
}))

app.get('/', (_, res) => {
  return res.json({ message: 'Today is a Great Day!' })
})

app.listen(8080)

The code above will change the response message from 'Today is a Great Day!' to 'Today is the bad day'

  1. Multiple Hijack, early hijack function is the highest priority
const Express = require('express')
const { Hijack } = require('../dist')

const app = Express()

// hijack on monday
app.use(Hijack({
  json: true,
  handler: (body, _, res) => {
    if (body.today === 'Monday') {
      res.json({
        ...body,
        message: 'What a lazy day'
      })
    }
  }
}))

// hijack on friday
app.use(Hijack({
  json: true,
  handler: (body, req, res) => {
    if (req.path === '/friday') {
      res.json({
        ...body,
        message: 'What a wondeful day'
      })
    }
  }
}))

app.get('/', (_, res) => res.json({ message: 'No Hijack' }))

app.get('/monday', (_, res) => {
  return res.status(200).json({ today: 'Monday', message: 'Today is a Great Day!' })
})

app.get('/friday', (_, res) => {
  return res.status(200).json({ message: 'Today is a Great Day!' })
})

app.listen(8080)

The code above will intercept and change response for [localhost:8080/monday](http://localhost:8080/monday) to `{today: 'Moday', message: 'What a lazy day'}`, and [localhost:8080/friday](http://localhost:8080/friday) to `{message: 'What a wondeful day'}`

For more examples please visit example directory.

LICENSE

MIT

Dependents (0)

Package Sidebar

Install

npm i express-multi-hijack

Weekly Downloads

15

Version

1.0.1

License

MIT

Unpacked Size

23.4 kB

Total Files

18

Last publish

Collaborators

  • kresnap