plasmate-wasm
v0.1.0
Published
Compile HTML to Plasmate SOM in any JavaScript runtime via WebAssembly
Readme
plasmate-wasm
Compile HTML to Plasmate SOM in any JavaScript runtime via WebAssembly. No native binary, no browser engine, no network requests. Just HTML in, structured JSON out.
Install
npm install plasmate-wasmUsage
Node.js
const { compile, compile_pretty, version } = require('plasmate-wasm');
const html = '<html><body><nav><a href="/about">About</a></nav><main><h1>Hello</h1><p>World</p></main></body></html>';
const somJson = compile(html, 'https://example.com');
const som = JSON.parse(somJson);
console.log(som.title); // "Hello"
console.log(som.regions.length); // 2 (navigation + main)
console.log(som.meta.element_count); // element countBrowser (ES module)
<script type="module">
import init, { compile } from './plasmate_wasm.js';
await init();
const som = JSON.parse(compile(htmlString, 'https://example.com'));
</script>API
compile(html: string, url: string): string
Compile HTML to SOM JSON (compact). The url parameter is used for stable ID generation only; no network request is made.
compile_pretty(html: string, url: string): string
Same as compile but returns pretty-printed JSON.
version(): string
Returns the compiler version.
Why WASM?
The full Plasmate binary includes a browser engine for JavaScript execution and page rendering. That is necessary for fetching live pages but is heavy (large binary, platform-specific).
The SOM compiler itself is pure computation: parse HTML, identify regions, classify elements, generate IDs, serialize JSON. It has no system dependencies and compiles cleanly to WebAssembly.
This package gives you the compiler without the browser. Use it when:
- You already have the HTML (CMS build pipelines, static site generators)
- You need to run in environments where native binaries are not available (serverless, edge functions, browsers)
- You want zero-dependency SOM compilation in any JavaScript runtime
For fetching live pages with JavaScript execution, use the full plasmate CLI or the daemon mode.
Size
The WASM binary is approximately 864KB (before gzip). After gzip compression (typical for CDN delivery), this drops to approximately 300KB.
Links
- Plasmate (full compiler with browser engine)
- SOM Spec v1.0
- Documentation
License
Apache 2.0
