mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-06 05:56:19 +01:00
13 lines
547 B
TypeScript
13 lines
547 B
TypeScript
import { createHash } from "node:crypto";
|
|
|
|
function canonical(value: unknown): unknown {
|
|
if (value instanceof Date) return value.toISOString();
|
|
if (Array.isArray(value)) return value.map(canonical);
|
|
if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => [key, canonical(item)]));
|
|
return value;
|
|
}
|
|
|
|
export function receiptFingerprint(value: unknown): string {
|
|
return createHash("sha256").update(JSON.stringify(canonical(value))).digest("hex");
|
|
}
|