Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/foliojs/brotli.js
A JavaScript port of the Brotli compression algorithm, as used in WOFF2
https://github.com/foliojs/brotli.js
Last synced: 3 days ago
JSON representation
A JavaScript port of the Brotli compression algorithm, as used in WOFF2
- Host: GitHub
- URL: https://github.com/foliojs/brotli.js
- Owner: foliojs
- Created: 2014-09-28T20:39:22.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-05-14T13:52:43.000Z (6 months ago)
- Last Synced: 2024-10-29T00:45:15.460Z (11 days ago)
- Language: JavaScript
- Homepage:
- Size: 6.68 MB
- Stars: 499
- Watchers: 20
- Forks: 51
- Open Issues: 28
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
- awesome-typography - Brotli.js
README
# Brotli.js
Brotli.js is port of the [Brotli](http://tools.ietf.org/html/draft-alakuijala-brotli-01) compression algorithm (as used in the [WOFF2](http://www.w3.org/TR/WOFF2/) font format) to JavaScript. The decompressor is hand ported, and the compressor is ported
with Emscripten. The original C++ source code can be found [here](http://github.com/google/brotli).## Installation and usage
Install using npm.
npm install brotli
If you want to use brotli in the browser, you should use a bundler to build it.
In node, or in bundlers, you can load brotli in the standard way:
```javascript
var brotli = require('brotli');
```You can also require just the `decompress` function or just the `compress` function, which is useful for browser builds.
For example, here's how you'd require just the `decompress` function.```javascript
var decompress = require('brotli/decompress');
```## API
### brotli.decompress(buffer, [outSize])
Decompresses the given buffer to produce the original input to the compressor.
The `outSize` parameter is optional, and will be computed by the decompressor
if not provided. Inside a WOFF2 file, this can be computed from the WOFF2 directory.```javascript
// decode a buffer where the output size is known
brotli.decompress(compressedData, uncompressedLength);// decode a buffer where the output size is not known
brotli.decompress(fs.readFileSync('compressed.bin'));
```### brotli.compress(buffer, isText = false)
Compresses the given buffer. Pass optional parameters as the second argument.
```javascript
// encode a buffer of binary data
brotli.compress(fs.readFileSync('myfile.bin'));// encode some data with options (default options shown)
brotli.compress(fs.readFileSync('myfile.bin'), {
mode: 0, // 0 = generic, 1 = text, 2 = font (WOFF2)
quality: 11, // 0 - 11
lgwin: 22, // window size
dictionary: ''
});
```## License
MIT