luadata compiles to WebAssembly, letting you convert Lua data to JSON directly in the browser. The luadata.js wrapper provides a clean API.
import { init, convert } from "./luadata.js";
// Initialize the WASM module (do this once)
await init();
// Basic conversion
const json = convert('playerName = "Thrall"');
console.log(json);
{
"playerName": "Thrall"
}
You can pass options as a second argument to convert(). The options mirror the Go API:
const json = convert(luaInput, {
emptyTable: "array", // "null", "omit", "array", "object"
arrayMode: "sparse", // "none", "index-only", "sparse"
arrayMaxGap: 10, // used with "sparse" mode
stringTransform: {
maxLen: 100,
mode: "redact", // "truncate", "empty", "redact", "replace"
},
});
Build the WASM module with:
make build-wasm
This produces bin/web/luadata.wasm along with the supporting JavaScript files. Serve the bin/web directory with any HTTP server to use it.
Try it live with the interactive converter tool — it uses the same WASM module under the hood.
Want more flexibility? Open the interactive converter to try any Lua input with all available options.