wasm-brotli
WebAssembly compiled Brotli library.
Installation
npm install -S wasm-brotli
The awesome thing about wasm-brotli
is that it does not need to compile or
download any prebuilt binaries!
Usage
Because WebAssembly is supported on both Node.js and several browsers,
wasm-brotli
is super easy to use.
Node.js
An example of compressing something and saving it to a file via Node.js.
import { compress } from 'wasm-brotli';
import { writeFile } from 'fs';
import { promisify } from 'util';
const writeFileAsync = promisify(writeFile);
const content = Buffer.from('Hello, world!', 'utf8');
(async () => {
try {
const compressedContent = await compress(content);
await writeFileAsync('./hello_world.txt.br', compressedContent);
} catch (err) {
console.error(err);
}
})();
Browser
An example of compressing something and downloading it from the browser.
import { compress } from 'wasm-brotli';
const content = new TextEncoder('utf-8').encode('Hello, world!');
(async () => {
try {
const compressedContent = await compress(content);
const file = new File([compressedContent], 'hello_world.txt.br', { type: 'application/brotli' });
const link = document.createElement('a');
link.setAttribute('href', URL.createObjectURL(file));
link.setAttribute('download', file.name);
link.click();
} catch (err) {
console.error(err);
}
})();
Documentation
compress(buffer)
Compress buffer
using Brotli compression.
decompress(buffer)
Decompress buffer
using Brotli decompression.
brotli(method, buffer)
method
<BROTLI_COMPRESS>
| <BROTLI_DECOMPRESS>
buffer
<Uint8Array>
The function that compress
and decompress
wrap. Pass any of the constants
below and a buffer to compress or decompress.
BROTLI_COMPRESS
Constant, reference, for compressing a buffer with brotli
.
BROTLI_DECOMPRESS
Constant, reference, for decompressing a buffer with brotli
.
Benchmark
Want to see how fast this is? Go to the benchmark directory to see
results, instructions on running your own benchmark, and more.
Development
To build wasm-brotli
you will need to install Docker, and
pull rustlang/rust:nightly
. After that all that is needed is
to do the following:
- Install all dependencies.
npm install
- Build the module.
npm run build
- Test the module.
npm test