https://github.com/eclipse-biscuit/biscuit-wasm
WebAssembly wrapper for Biscuit authorization tokens
https://github.com/eclipse-biscuit/biscuit-wasm
Last synced: about 1 year ago
JSON representation
WebAssembly wrapper for Biscuit authorization tokens
- Host: GitHub
- URL: https://github.com/eclipse-biscuit/biscuit-wasm
- Owner: eclipse-biscuit
- License: apache-2.0
- Created: 2021-12-22T22:03:44.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-04-08T12:47:14.000Z (about 1 year ago)
- Last Synced: 2025-05-10T06:45:51.423Z (about 1 year ago)
- Language: Rust
- Size: 608 KB
- Stars: 28
- Watchers: 5
- Forks: 10
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
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.6.0-beta.1"
}
}
```
Usage examples are available [here](https://doc.biscuitsec.org/usage/nodejs).
### 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 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