@arminmajerie/data-morph-wasm
v0.1.1
Published
WASM bindings for data-morph (DataMorph)
Readme
DataMorph WASM bindings
This folder contains a small wasm-bindgen adapter crate that exposes a JSON-only API for using DataMorph (data-morph) from JS/TS.
Exports
All exports return JSON strings of the form:
{ "ok": true, "value": "...", "context": { "payloadFormat": "json", "payload": {}, "attributes": {}, "variables": {}, "error": null } }evaluate_script(script: string, contextJson: string) -> stringvalidate_script(script: string) -> stringdefinitions_with_scope_d(contextJson: string) -> string(requires metadata+internals enabled on the Rust side)fn_metadata_json(includeStandardPackages: boolean) -> string
Context JSON schema
contextJson must be valid JSON (keys must be quoted):
{
"payloadFormat": "json",
"payload": { "any": "json" },
"attributes": { "k": "v" },
"variables": { "k": 123 },
"error": null
}Notes:
- Unknown top-level keys are accepted and become additional scope variables.
attributesandvariablesmust be JSON objects.variablesalso accepts the alias keyvars.- Header-driven
input/outputdirectives can read/write non-JSON formats; support is best-effort and may not cover all DataMorph edge-cases.
Build (wasm-pack)
- Install target + wasm-pack:
rustup target add wasm32-unknown-unknown
cargo install wasm-pack
- Build npm/bundler-friendly output-dev:
- DEV
cd d:\Code\IntegrationBuilder\IntegrationBuilder\data-morph\wasm
wasm-pack build --target bundler --out-dir .\pkg-web --dev
wasm-pack build --release --target web --out-dir pkg-web -- --features production- PROD
Set-Location "d:\Code\IntegrationBuilder\IntegrationBuilder\data-morph\wasm"wasm-pack build --release --target bundler --out-dir pkg-web -- --features production
or
wasm-pack build --release --target web --out-dir pkg-web -- --features production
The generated JS glue + .wasm will be in wasm/pkg/.
Quick smoke test (Node)
After building, you can do a minimal import test from any TS/JS project by importing the generated package.
See ts/wasm-loader.ts for a minimal loader.
