import { createHash } from "node:crypto"; export function stableJsonValue(value: unknown): unknown { if (Array.isArray(value)) return value.map(stableJsonValue); if (typeof value !== "object" || value === null) return value; const input = value as Record; return Object.fromEntries(Object.keys(input).sort().map((key) => [key, stableJsonValue(input[key])])); } export function stableJsonSha256(value: unknown): string { return `sha256:${createHash("sha256").update(JSON.stringify(stableJsonValue(value))).digest("hex")}`; }