Something went wrong. Try again.
The logic for serving and storing associations between users and apps
Something went wrong. Try again.
123456789101112131415161718192021222324252627import { 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 };}