Skip to content
Node.js module for brotli compression/decompression with native bindings
JavaScript C++ Python C
Branch: master
Clone or download
Latest commit 4455453 Oct 25, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
brotli @ d6d9895 Update brotli and npm dependencies Oct 24, 2018
scripts fix CI builds (#76) Oct 5, 2018
src Address deprecation and compiler warnings Apr 24, 2019
test Update ava Dec 15, 2018
.gitattributes Enforce eol lf in fixture txt file Jun 8, 2018
.gitignore Update brotli to v1.0.5, dev deps Jun 28, 2018
.gitmodules Initial commit Oct 18, 2015
.travis.yml Add support for Node 13 (#101) Oct 25, 2019
CHANGELOG.md Bump to v2.4.4 Oct 25, 2019
LICENSE update LICENSE Mar 23, 2018
README.md
appveyor.yml Add support for Node 13 (#101) Oct 25, 2019
binding.gyp Revert back to nan (#83) Mar 9, 2019
index.js
package.json Bump to v2.4.4 Oct 25, 2019

README.md

iltorb

NPM Version Travis Build Status AppVeyor Build Status CircleCI Build Status

iltorb is a Node.js package offering native bindings for the brotli compression library.

Install

This module uses prebuild to download a pre-compiled binary for your platform, if it exists. Otherwise, it will use node-gyp to build the module.

npm install iltorb

Prerequisites for Building

The following is required to build from source or when a pre-compiled binary does not exist.

Methods

Async

Omitting the callback argument will result in the compress and decompress methods to return a Promise.

compress(buffer[, brotliEncodeParams][, callback])

const compress = require('iltorb').compress;

// callback style
compress(input, function(err, output) {
  // ...
});

// promise style
compress(input)
  .then(output => /* ... */)
  .catch(err => /* ... */);

// async/await style
try {
  const output = await compress(input);
} catch(err) {
  // ...
}

decompress(buffer[, callback])

const decompress = require('iltorb').decompress;

// callback style
decompress(input, function(err, output) {
  // ...
});

// promise style
decompress(input)
  .then(output => /* ... */)
  .catch(err => /* ... */);

// async/await style
try {
  const output = await decompress(input);
} catch(err) {
  // ...
}

Sync

compressSync(buffer[, brotliEncodeParams])

const compressSync = require('iltorb').compressSync;

try {
  var output = compressSync(input);
} catch(err) {
  // ...
}

decompressSync(buffer)

const decompressSync = require('iltorb').decompressSync;

try {
  var output = decompressSync(input);
} catch(err) {
  // ...
}

Stream

compressStream([brotliEncodeParams])

const compressStream = require('iltorb').compressStream;
const fs = require('fs');

fs.createReadStream('path/to/input')
  .pipe(compressStream())
  .pipe(fs.createWriteStream('path/to/output'));
compressionStream.flush()

Call this method to flush pending data. Don't call this frivolously, premature flushes negatively impact the effectiveness of the compression algorithm.

decompressStream()

const decompressStream = require('iltorb').decompressStream;
const fs = require('fs');

fs.createReadStream('path/to/input')
  .pipe(decompressStream())
  .pipe(fs.createWriteStream('path/to/output'));

brotliEncodeParams

The compress, compressSync and compressStream methods may accept an optional brotliEncodeParams object to define some or all of brotli's compression parameters:

const brotliEncodeParams = {
  mode: 0,
  quality: 11,
  lgwin: 22,
  lgblock: 0,
  disable_literal_context_modeling: false,
  size_hint: 0, // automatically set for `compress` and `compressSync`
  large_window: false,
  npostfix: 0,
  ndirect: 0
};

Troubleshooting

  1. I am unable to install iltorb because the host (GitHub) that serves the binaries is blocked by my firewall.

    a) By default, if the binaries could not be downloaded for any reason, the install script will attempt to compile the binaries locally on your machine. This requires having all of the build requirements fulfilled.

    b) You can override the binary.host value found in package.json with the following methods:

    • using the following ENV variable npm_config_iltorb_binary_host=https://domain.tld/path
    • as an additional argument with npm install --iltorb_binary_host=https://domain.tld/path

    Note: Both of these would result in downloading the binary from https://domain.tld/path/vX.X.X/iltorb-vX.X.X-node-vXX-arch.tar.gz

You can’t perform that action at this time.