nSTRUCT.js is a ProtoBuf-like serialization system for JavaScript. It's designed with JavaScript in mind, and supports direct serialization/deserialization of objects (unlike ProtoBuf or JSON, which build intermediary objects).
import * as nstructjs from "nstructjs";
class Point {
constructor(x = 0, y = 0) { this.x = x; this.y = y; }
loadSTRUCT(reader) { reader(this); }
static STRUCT = nstructjs.inlineRegister(this, `
Point { x : float; y : float; }
`);
}
const data = []; // write to a byte array
nstructjs.writeObject(data, new Point(1, 2));
const view = new DataView(new Uint8Array(data).buffer);
const p = nstructjs.readObject(view, Point); // -> Point { x: 1, y: 2 }The maintained documentation lives in documentation/:
The full API reference is generated with TypeDoc (pnpm docs, output in
docs/) and includes the pages above. The old GitHub wiki is deprecated.
pnpm install
pnpm build # build the library bundles into build/
pnpm test # run the vitest suite
pnpm docs # generate API docs into docs/