wasm-brotli

WebJar for wasm-brotli

License

License

MIT
Categories

Categories

ASM Application Layer Libs Bytecode Manipulation
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

wasm-brotli
Last Version

Last Version

2.0.2
Release Date

Release Date

Type

Type

jar
Description

Description

wasm-brotli
WebJar for wasm-brotli
Project URL

Project URL

https://www.webjars.org
Source Code Management

Source Code Management

https://github.com/dfrankland/wasm-brotli

Download wasm-brotli

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/wasm-brotli/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>wasm-brotli</artifactId>
    <version>2.0.2</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/wasm-brotli/
implementation 'org.webjars.npm:wasm-brotli:2.0.2'
// https://jarcasting.com/artifacts/org.webjars.npm/wasm-brotli/
implementation ("org.webjars.npm:wasm-brotli:2.0.2")
'org.webjars.npm:wasm-brotli:jar:2.0.2'
<dependency org="org.webjars.npm" name="wasm-brotli" rev="2.0.2">
  <artifact name="wasm-brotli" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='wasm-brotli', version='2.0.2')
)
libraryDependencies += "org.webjars.npm" % "wasm-brotli" % "2.0.2"
[org.webjars.npm/wasm-brotli "2.0.2"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

wasm-brotli

WebAssembly compiled Brotli library. See a browser example on Codesandbox 👀

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.

Development

To build wasm-brotli you will need to install wasm-pack. After that all that is needed is to do the following:

  1. Install all dependencies.

    npm install
  2. Build the module.

    npm run build
  3. Test the module.

    npm test

Benchmark

  1. Build wasm-brotli if you haven't already done so— see instructions here.

  2. Build and run the benchmark.

    npm run benchmark
  3. 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)

Versions

Version
2.0.2