Files
hyperframes/packages/producer/src/services/distributed/planV2Layout.ts
T

17 lines
591 B
TypeScript

import { join } from "node:path";
import { PlanV2IntegrityError } from "./planV2Errors.js";
const SHA256_PATTERN = /^[0-9a-f]{64}$/;
export function assertPlanV2Sha256(value: unknown, field: string): string {
if (typeof value !== "string" || !SHA256_PATTERN.test(value)) {
throw new PlanV2IntegrityError(`${field} must be a lowercase sha256 digest`);
}
return value;
}
export function planV2BlobPath(root: string, sha256: string): string {
const digest = assertPlanV2Sha256(sha256, "artifact sha256");
return join(root, "artifacts", "sha256", digest.slice(0, 2), digest);
}