1.3.6 • Published 4 months ago

@rayo/compress v1.3.6

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

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

1.3.6

4 months ago

1.3.5

8 months ago

1.3.4

8 months ago

1.3.2

8 months ago

1.2.0

2 years ago

1.3.0

2 years ago

1.1.23

2 years ago

1.1.22

2 years ago

1.1.24

2 years ago

1.1.20

4 years ago

1.1.19

4 years ago

1.1.18

4 years ago

1.1.17

5 years ago

1.1.16

5 years ago

1.1.15

5 years ago

1.1.13

5 years ago

1.1.12

5 years ago

1.1.11

5 years ago

1.1.10

5 years ago

1.1.9

6 years ago

1.1.8

6 years ago

1.1.7

6 years ago

1.1.6

6 years ago

1.1.5

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago

0.1.1

6 years ago