@rayo/compress

1.3.6ย โ€ขย Publicย โ€ขย Published
@rayo/compress

Install

$> npm i @rayo/compress

Both Gzip and Brotli are supported, and the algorithm will be determined by the accept-encoding request header.
With multiple values/options (e.g. "gzip, deflate, br"), Gzip will be preferred.

Use

@rayo/compress is also compatible with Express and many other frameworks.

import rayo from 'rayo';
import compress from '@rayo/compress';

rayo({ port: 5050 })
  .through(compress())
  .get('/hello/:user', (req, res) => {
    res.setHeader('content-type', 'application/json');
    res.end(JSON.stringify({
      message: `Hello ${req.params.user}.
      I am compressed!`
    }));
  })
  .start();

Note: You need to set the right response header, e.g. application/json for @rayo/compress to be able to determine whether the payload can be compressed or not. Also keep in mind that not all types of content can be compressed.

@rayo/compress supports compression on these MIME types:

  • text/plain
  • text/csv
  • text/html
  • text/xml
  • text/javascript
  • application/json
  • application/xml

API

compress(options = {})

@param   {object} [options]
@returns {function}
  • options.preferBrotli (boolean, optional): Prefer Brotli if the accept-encoding request header has multiple values/options.
    Keep in mind that Brotli has more performance overhead than Gzip.
    Default: false.

  • options.threshold (number, optional): The minimum threshold (in bytes) for compressing responses.
    Default: 1024.

  • options.level (number, optional): The compression level to use.
    Range (gzip): 1 to 9.
    Range (brotli): 1 to 11.
    A higher level will result in better compression, but will take longer to complete. A lower level will result in less compression, but will be much faster.
    Default: 6.

  • options.chunkSize (number, optional): Brake large responses into chunks of this size (in kilobytes). While this setting can have an impact on speed, compression is affected most dramatically by the level setting.
    Default: 16.

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i @rayo/compress

Weekly Downloads

24

Version

1.3.6

License

MIT

Unpacked Size

7.27 kB

Total Files

4

Last publish

Collaborators

  • saichholzer