import { createHash } from "node:crypto";
export function sha256(value: string): string {
return createHash("sha256").update(value).digest("hex");
}
export function stableStringify(value: unknown): string {
if (Array.isArray(value)) {
return `[${value.map((item) => stableStringify(item)).join(",")}]`;
}
if (value && typeof value === "object") {
const entries = Object.entries(value as Record<string, unknown>).sort(([left], [right]) =>
left.localeCompare(right),
);
return `{${entries
.map(([key, entryValue]) => `${JSON.stringify(key)}:${stableStringify(entryValue)}`)
.join(",")}}`;
}
return JSON.stringify(value);
}