129 lines
3.5 KiB
Markdown
129 lines
3.5 KiB
Markdown
# iltorb
|
|
|
|
[![NPM Version][npm-badge]][npm-url]
|
|
[![Travis Build Status][travis-badge]][travis-url]
|
|
[![AppVeyor Build Status][appveyor-badge]][appveyor-url]
|
|
[![CircleCI Build Status][circleci-badge]][circleci-url]
|
|
|
|
[iltorb](https://www.npmjs.com/package/iltorb) is a [Node.js](https://nodejs.org) package offering native bindings for the [brotli](https://github.com/google/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](https://github.com/MayhemYDG/iltorb/releases) does not exist.
|
|
|
|
- Python 2.7
|
|
- GCC 4.8+ (Unix) or [windows-build-tools](https://github.com/felixrieseberg/windows-build-tools) (Windows), see [Node Building tools](https://github.com/nodejs/node-gyp#installation).
|
|
|
|
## Methods
|
|
|
|
### Async
|
|
|
|
#### compress(buffer[, brotliEncodeParams], callback)
|
|
|
|
```javascript
|
|
const compress = require('iltorb').compress;
|
|
|
|
compress(input, function(err, output) {
|
|
// ...
|
|
});
|
|
```
|
|
|
|
#### decompress(buffer, callback)
|
|
|
|
```javascript
|
|
const decompress = require('iltorb').decompress;
|
|
|
|
decompress(input, function(err, output) {
|
|
// ...
|
|
});
|
|
```
|
|
|
|
### Sync
|
|
|
|
#### compressSync(buffer[, brotliEncodeParams])
|
|
|
|
```javascript
|
|
const compressSync = require('iltorb').compressSync;
|
|
|
|
try {
|
|
var output = compressSync(input);
|
|
} catch(err) {
|
|
// ...
|
|
}
|
|
```
|
|
|
|
#### decompressSync(buffer)
|
|
|
|
```javascript
|
|
const decompressSync = require('iltorb').decompressSync;
|
|
|
|
try {
|
|
var output = decompressSync(input);
|
|
} catch(err) {
|
|
// ...
|
|
}
|
|
```
|
|
|
|
### Stream
|
|
|
|
#### compressStream([brotliEncodeParams])
|
|
|
|
```javascript
|
|
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()
|
|
|
|
```javascript
|
|
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:
|
|
- [type definition](https://github.com/google/brotli/blob/v1.0.2/c/enc/quality.h#L43-L52)
|
|
- [defaults](https://github.com/google/brotli/blob/v1.0.2/c/enc/encode.c#L672-L679)
|
|
- [explanations](https://github.com/google/brotli/blob/v1.0.2/c/include/brotli/encode.h#L128-L180)
|
|
|
|
```javascript
|
|
const brotliEncodeParams = {
|
|
mode: 0,
|
|
quality: 11,
|
|
lgwin: 22,
|
|
lgblock: 0,
|
|
size_hint: 0, // automatically set for `compress` and `compressSync`
|
|
disable_literal_context_modeling: false
|
|
};
|
|
```
|
|
|
|
[npm-badge]: https://img.shields.io/npm/v/iltorb.svg
|
|
[npm-url]: https://www.npmjs.com/package/iltorb
|
|
[travis-badge]: https://img.shields.io/travis/MayhemYDG/iltorb.svg
|
|
[travis-url]: https://travis-ci.org/MayhemYDG/iltorb
|
|
[appveyor-badge]: https://ci.appveyor.com/api/projects/status/ysib4o1bfey84lqk/branch/master?svg=true
|
|
[appveyor-url]: https://ci.appveyor.com/project/MayhemYDG/iltorb
|
|
[circleci-badge]: https://circleci.com/gh/MayhemYDG/iltorb/tree/master.svg?style=shield
|
|
[circleci-url]: https://circleci.com/gh/MayhemYDG/iltorb/tree/master
|