INNER CODE UNIT · TypeScript
filterHash
harvard-edge/cs249r_book · interviews/staffml-vault-worker/src/index.ts:279
async function filterHash(params: URLSearchParams): Promise<string> {
const keys = ["track", "level", "zone", "topic", "status"];
const parts = keys.map(k => `${k}=${params.get(k) ?? ""}`);
const buf = new TextEncoder().encode(parts.join("&"));
const digest = await crypto.subtle.digest("SHA-256", buf);
return Array.from(new Uint8Array(digest))
.slice(0, 8)
.map(b => b.toString(16).padStart(2, "0"))
.join("");
}
async function handleQuestions(env: Env, req: Request, url: URL): Promise<Response> {
const origin = req.headers.get("Origin");
const params = url.searchParams;
const expectedFilterHash = await filterHash(params);
const cursor = decodeCursor(params.get("cursor"));
if (cursor && cursor.filter_hash !== expectedFilterHash) {
return json(