Gates

loom-builder-solsourcetypescript
Path: loom-builder-sol/src/gates.tsRelative: src/gates.tsSubproject: loom-builder-solCategory: dispatch-system-sol
Lines: 174Bytes: 6,717Imports: 2Exports: 12

Content Preview

  1. import { createHash } from "node:crypto";
  2. import { GateHaltError, type HaltReason, type ValidationCmd } from "./types.js";
  3. /** Deterministic JSON: sorted keys, no whitespace. */
  4. export function canonicalJSON(value: unknown): string {
  5. if (value === null || typeof value !== "object") return JSON.stringify(value);
  6. if (Array.isArray(value)) return `[${value.map(canonicalJSON).join(",")}]`;
  7. const obj = value as Record<string, unknown>;
  8. const keys = Object.keys(obj).sort();
  9. return `{${keys.