import { isDid } from "./did"; import { parseExactOrigin } from "./origins"; export type SaveAction = "save" | "logout"; export type SaveQuery = | { ok: true; did: string; origin: string; action: SaveAction } | { ok: false; reason: string }; export function parseSaveQuery(url: URL): SaveQuery { const did = url.searchParams.get("did") ?? ""; const origin = url.searchParams.get("origin") ?? ""; const actionParam = url.searchParams.get("action") ?? "save"; if (!isDid(did)) return { ok: false, reason: "did is required" }; if (!origin) return { ok: false, reason: "origin is required" }; const parsed = parseExactOrigin(origin); if (!parsed.ok) return { ok: false, reason: parsed.reason }; if (actionParam !== "save" && actionParam !== "logout") { return { ok: false, reason: "action must be save or logout" }; } return { ok: true, did, origin: parsed.origin, action: actionParam }; }