18 lines
668 B
TypeScript
18 lines
668 B
TypeScript
import { createHash } from "node:crypto";
|
|
|
|
interface CacheVersionDefinition {
|
|
sources: string;
|
|
requests: string;
|
|
secrets: Array<{ sourceId: string; kind: string; encryptedValue: string }>;
|
|
}
|
|
|
|
export function getCustomWidgetCacheVersion(definition: CacheVersionDefinition) {
|
|
const secrets = definition.secrets
|
|
.map(({ sourceId, kind, encryptedValue }) => ({ sourceId, kind, encryptedValue }))
|
|
.toSorted((left, right) => `${left.sourceId}:${left.kind}`.localeCompare(`${right.sourceId}:${right.kind}`));
|
|
return createHash("sha256")
|
|
.update(JSON.stringify([definition.sources, definition.requests, secrets]))
|
|
.digest("hex")
|
|
.slice(0, 16);
|
|
}
|