INNER CODE UNIT · TypeScript

parts

harvard-edge/cs249r_book · interviews/staffml-vault-worker/src/index.ts:281

  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(
      { error: "cursor-filter-mismatch", detail: "cursor was minted under different filter params" },
      { status: 400, headers: corsHeaders(env, origin) },

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…