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.
;;; const writeFileAsync = ; const content = Buffer; async { try const compressedContent = await ; await ; catch err console; };
Browser
An example of compressing something and downloading it from the browser.
; const content = 'utf-8'; async { try const compressedContent = await ; const file = compressedContent 'hello_world.txt.br' type: 'application/brotli' ; const link = document; link; link; link; catch err console; };
Documentation
compress(buffer)
buffer
<Uint8Array>
Compress buffer
using Brotli compression.
decompress(buffer)
buffer
<Uint8Array>
Decompress buffer
using Brotli decompression.
Development
To build wasm-brotli
you will need to install wasm-pack
. 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
Benchmark
-
Build
wasm-brotli
if you haven't already done so— see instructions here. -
Build and run the benchmark.
npm run benchmark -
Wait a while... The tests might run quite slow.
These results are run on a Dell XPS 13 9360 with an Intel® Core™ i7-7500U CPU @ 2.70GHz × 4 and 16 GB 1866 MHz DDR3 memory, running Ubuntu 19.10:
iltorb (native compress) 1 byte(s) x 5,159 ops/sec ±9.73% (66 runs sampled)
wasm-brotli (wasm compress) 1 byte(s) x 49.80 ops/sec ±0.61% (78 runs sampled)
iltorb (native compress) 1024 byte(s) x 329 ops/sec ±1.63% (81 runs sampled)
wasm-brotli (wasm compress) 1024 byte(s) x 32.33 ops/sec ±0.77% (76 runs sampled)
iltorb (native compress) 1038336 byte(s) x 2.23 ops/sec ±1.20% (15 runs sampled)
wasm-brotli (wasm compress) 1038336 byte(s) x 1.03 ops/sec ±0.93% (10 runs sampled)