Skip to content

WebAssembly wrapper for Biscuit authorization tokens

License

Notifications You must be signed in to change notification settings

louismorgan-linaro/biscuit-wasm

 
 

Repository files navigation

Biscuit-wasm

This library wraps the Rust implementation of Biscuit tokens in WebAssembly, for usage in NodeJS and browsers.

It provides both EcmaScript and CommonJS modules, along with TypeScript type definitions.

Usage

Add this dependency to your package.json:

{
    "dependencies": {
        "@biscuit-auth/biscuit-wasm": "0.4.0-beta1"
    }
}

Node

see the example code in examples/node

The node executable must be started with the --experimental-wasm-modules flag.

Node 16-18

Due to some wasm-side dependencies, to work in Node, biscuit-wasm requires that this be added to the application:

import { webcrypto } from 'node:crypto'
globalThis.crypto = webcrypto

This is no longer necessary starting with node 19.

In browser

see the example code in examples/frontend

Importing a WebAssembly library with a bundler can take a bit of configuration. We have a working example with Webpack, and would welcome example configuration for other bundlers:

const path = require('path');

module.exports = {
  entry: './index.js',
  output: {
    filename: 'index.js',
    path: path.resolve(__dirname, 'dist'),
  },
  experiments: {
    asyncWebAssembly: true
  }
};

License

Licensed under the Apache 2.0 License.

Copyright 2021 Geoffroy Couprie

About

WebAssembly wrapper for Biscuit authorization tokens

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 71.8%
  • Rust 28.1%
  • Nix 0.1%