@fabric-platform/wasm
v0.7.1
Published
WebAssembly bindings for the Fabric platform SDK
Readme
@fabric-platform/wasm
WebAssembly bindings for the Fabric platform SDK.
A single Rust source-of-truth compiled to both a native rlib (via
fabric-platform) and a wasm-bindgen
npm package (@fabric-platform/wasm). The model follows Turso's libSQL and
ElectricSQL's PGlite — ship one crate, get both a native Rust library and a
browser/Node/edge-runtime-ready npm package.
Install
npm install @fabric-platform/wasmWorks in browsers, Node.js ≥ 18, Cloudflare Workers, Deno, and Bun.
Usage
import init, { FabricClient } from "@fabric-platform/wasm";
await init();
const client = new FabricClient("https://api.fabric.example", "sk-...");
client.setOrganizationId("org_123");
// REST
const me = await client.me();
const runId = await client.runWorkflow("video/face-swap", {
source_url: "https://...",
target_url: "https://...",
});
// SSE streaming (native browser ReadableStream, async-iterable)
for await (const evt of client.streamWorkflowRun(runId)) {
console.log(evt.event, evt.data);
}Why not EventSource?
Browser EventSource cannot set Authorization headers and doesn't support
POST. Every authenticated stream would break. We instead use reqwest's
streaming response body (backed by fetch's ReadableStream under the hood on
wasm, hyper on native) and parse the SSE framing in Rust. Same code path on
native and wasm, no browser-specific quirks.
What's wrapped
About a quarter of the full fabric-platform surface is exposed through
wasm-bindgen today. See MISSING_METHODS.md for the
backlog and priority of the rest. Unwrapped methods are still callable from any
other Rust crate depending on fabric-platform compiled to wasm.
Build locally
# Build for browsers
wasm-pack build sdks/rust-wasm --target web --release
# Build for Node / edge runtimes
wasm-pack build sdks/rust-wasm --target nodejs --release
# Build for bundlers (webpack, rollup, vite)
wasm-pack build sdks/rust-wasm --target bundler --releaseThe resulting pkg/ directory is the npm package. Our CI rewrites its
package.json name to @fabric-platform/wasm before publishing.
License
MIT
