JSPM

  • Created
  • Published
  • Downloads 7509
  • Score
    100M100P100Q145035F
  • License MIT

Http content encoding middleware for the middy framework

Package Exports

  • @middy/http-content-encoding

Readme

Middy http-content-encoding middleware

Middy logo

HTTP content encoding middleware for the middy framework, the stylish Node.js middleware engine for AWS Lambda

npm version npm install size GitHub Actions test status badge
Standard Code Style Known Vulnerabilities Language grade: JavaScript Core Infrastructure Initiative (CII) Best Practices
Chat on Gitter Ask questions on StackOverflow

This middleware take the preferredEncoding output from @middy/http-content-negotiation and applies the encoding to response.body when a string.

Install

To install this middleware you can use NPM:

npm install --save @middy/http-content-encoding

Options

  • br (object) (default {}): zlib.createBrotliCompress brotliOptions
  • gzip (object) (default {}): zlib.createGzip gzipOptions
  • deflate (object) (default {}): zlib.createDeflate deflateOptions
  • overridePreferredEncoding (array[string]) (optional): Override the preferred encoding order, most browsers prefer gzip over br, even though br has higher compression. Default: []

NOTES:

  • Important For br encoding NodeJS defaults to 11. Levels 10 & 11 have been shown to have lower performance for the level of compression they apply. Testing is recommended to ensure the right balance of compression & performance.

Sample usage

import middy from '@middy/core'
import httpContentNegotiation from '@middy/http-content-negotiation'
import httpContentEncoding from '@middy/http-content-encoding'
import { constants } from 'zlib'

const handler = middy((event, context) => {
  return {
    statusCode: 200,
    body: '{...}'
  }
})

handler
  .use(httpContentNegotiation())
  .use(httpCompressMiddleware({
    br: {
      params: {
        [constants.BROTLI_PARAM_MODE]: constants.BROTLI_MODE_TEXT,  // adjusted for UTF-8 text
        [constants.BROTLI_PARAM_QUALITY]: 7
      }
    },
    overridePreferredEncoding: ['br', 'gzip', 'deflate']
  }))

export default { handler }

Middy documentation and examples

For more documentation and examples, refers to the main Middy monorepo on GitHub or Middy official website.

Contributing

Everyone is very welcome to contribute to this repository. Feel free to raise issues or to submit Pull Requests.

License

Licensed under MIT License. Copyright (c) 2017-2022 Luciano Mammino, will Farrell, and the Middy team.

FOSSA Status