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 brotli 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 brotli(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 brotli from 'wasm-brotli';
const content = new TextEncoder('utf-8').encode('Hello, world!');
(async () => {
try {
const compressedContent = await brotli(content);
const file = new File([compressedContent], 'hello_world.txt.gz', { 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
brotli(data)
Compress data
using Brotli compression.
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