jwt-compact-wasm
v0.0.19
Published
Usability of `jwt-compact` in WASM
Downloads
61
Readme
Testing jwt-compact
Crate in WASM
This simple crate tests that jwt-compact
builds and can be used in WASM.
Note that chrono
and getrandom
crates need to be configured in Cargo.toml
in order to work with the WASM target:
[dependencies]
chrono = { version = "0.4.22", features = ["wasmbind"] }
getrandom = { version = "0.2", features = ["js"] }
Usage
- Install WASM target for Rust via
rustup
:rustup target add wasm32-unknown-unknown
. - Install
wasm-pack
. - Install Node.
- Switch to the directory with this README and run
wasm-pack build --target bundler
. - Run the testing script:
node test.js
.
:::note
If you are using wasm-bindgen
without workers-rs
/ worker-build
, then you will need to patch the JavaScript that it emits. This is because when you import a wasm
file in Workers, you get a WebAssembly.Module
instead of a WebAssembly.Instance
for performance and security reasons.
To patch the JavaScript that wasm-bindgen
emits:
- Run
wasm-pack build --target bundler
as you normally would. - Patch the JavaScript file that it produces (the following code block assumes the file is called
mywasmlib.js
):
import * as imports from "./mywasmlib_bg.js";
// switch between both syntax for node and for workerd
import wkmod from "./mywasmlib_bg.wasm";
import * as nodemod from "./mywasmlib_bg.wasm";
if (typeof process !== "undefined" && process.release.name === "node") {
imports.__wbg_set_wasm(nodemod);
} else {
const instance = new WebAssembly.Instance(wkmod, {
"./mywasmlib_bg.js": imports,
});
imports.__wbg_set_wasm(instance.exports);
}
export * from "./mywasmlib_bg.js";
- In your Worker entrypoint, import the function and use it directly:
import { myFunction } from "path/to/mylib.js";
:::
src: https://github.com/cloudflare/cloudflare-docs/blob/95aacf2eee782e3a89525b0f0855f02959367536/src/content/docs/workers/languages/rust/index.mdx?plain=1#L154