Node.js
A native napi-rs addon: the same Rust core, no subprocess and no serialization beyond the command envelope itself.
bash
npm install wickra-benchmarkjavascript
const fs = require("node:fs");
const { Benchmark, version } = require("wickra-benchmark");
const theCase = JSON.parse(fs.readFileSync("cases/sma-crossover-01.json", "utf8"));
const data = [/* the dataset's candles */];
const bench = new Benchmark();
const result = JSON.parse(
bench.command(JSON.stringify({ cmd: "run_case", case: theCase, data })),
);
console.log(version(), result.passed, result.hash_match);The command surface
Every binding exposes the same four commands and returns the core's canonical JSON string verbatim. That is what makes byte equality the cross-language check.
cmd | Payload | Response |
|---|---|---|
run_case | {case, data} | a CaseResult — passed, hash_match, hash, recomputed |
run_suite | {suite, datasets} | a SuiteReport — the results sorted by id, plus the tally |
list_cases | {suite} | {"ids": [...]}, sorted |
version | — | {"version": ..., "engine_version": ...} |
A domain error — a malformed case, an unknown command — comes back in-band as {"ok":false,"error":...} rather than as an exception.
One committed example of every envelope lives in golden/commands/, with the exact response each must produce beside it in golden/expected/.