/compress-brotli

Simple cross Node.js inteface for using brotli compression

Primary LanguageJavaScriptMIT LicenseMIT

compress-brotli

Last version Coverage Status NPM Status

Compress/Decompress using Brotli in a simple way.

Highlights

  • Handle edge cases (such as try to compress undefined).
  • JSON serialization/deserialization with Buffer support by default.
  • Easy tu customize (e.g., using v8 serialization).

Install

$ npm install compress-brotli --save

Usage

const createCompress = require('compress-brotli')

// It exposes compress/decompress methods
const { compress, decompress } = createCompress()

using v8 serialization:

const createCompress = require('compress-brotli')
const v8 = require('v8')

const { compress, decompress } = createCompress({
  serialize: v8.serialize,
  deserialize: v8.deserialize
})

customizing compress options:

const createCompress = require('compress-brotli')

const {
  constants: {
    BROTLI_MODE_TEXT,
    BROTLI_PARAM_MODE,
    BROTLI_PARAM_QUALITY
  }
} = require('zlib')

// Provide factory level default options
const { compress, decompress } = createCompress({
  compressOptions: {
    chunkSize: 1024,
    parameters: {
      [BROTLI_PARAM_MODE]: BROTLI_MODE_TEXT
    }
  },
  decompressOptions: {
    chunkSize: 1024,
    parameters: {
      [BROTLI_PARAM_MODE]: BROTLI_MODE_TEXT
    }
  }
})
const data = 'whatever'

// Override call level options (deep merge for parameters)
const compressed = compress(data, {
  parameters: {
    [BROTLI_PARAM_QUALITY]: 7
  }
})
decompress(compressed, {
  chunkSize: 2048
})

API

compressBrotli([options])

enable

Type: boolean
Default: false

If pass disable, it will return a noop compress/decompress methods.

serialize

Type: function
Default: JSONB.stringify

It determines the serialize method to use before compress the data.

deserialize

Type: function
Default: JSONB.parse

It determines the deserialize method to use after decompress the data.

compressOptions

Type: zlib.BrotliOptions
Default: {} i.e. default zlib.brotliCompress options will be used

It defines default options to be used in wrapped zlib.brotliCompress call

decompressOptions

Type: zlib.BrotliOptions
Default: {} i.e. default zlib.brotliDecompress options will be used

It defines default options to be used in wrapped zlib.brotliDecompress call

License

compress-brotli © Kiko Beats, released under the MIT License.
Authored and maintained by Kiko Beats with help from contributors.

kikobeats.com · GitHub Kiko Beats · Twitter @Kikobeats