Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/biscuit-auth/biscuit-wasm

WebAssembly wrapper for Biscuit authorization tokens
https://github.com/biscuit-auth/biscuit-wasm

Last synced: 3 months ago
JSON representation

WebAssembly wrapper for Biscuit authorization tokens

Awesome Lists containing this project

README

        

# Biscuit-wasm

This library wraps the [Rust implementation](https://github.com/biscuit-auth) of [Biscuit tokens](https://www.biscuitsec.org) 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`:

```json
{
"dependencies": {
"@biscuit-auth/biscuit-wasm": "0.5.0"
}
}
```

### Node

*see the example code in examples/node*

The `node` executable must be started with the [`--experimental-wasm-modules` flag](https://nodejs.org/api/esm.html#wasm-modules).

#### Node 16-18

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

```javascript
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:

```javascript
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