import { exports } from "cloudflare:workers"; export function controlRequest(pathOrUrl: string, init: RequestInit = {}): Request { const url = pathOrUrl.startsWith("http") ? pathOrUrl : `https://dav.example.com${pathOrUrl}`; const headers = new Headers(init.headers); return new Request(url, { ...init, headers }); } export function subjectRequest(hostLabel: string, path: string, init: RequestInit = {}): Request { const headers = new Headers(init.headers); return new Request(`https://${hostLabel}.dav.example.com${path}`, { ...init, headers }); } export function fetchWorker(request: Request): Promise { return exports.default.fetch(request); } export function setCookieHeaders(response: Response): string[] { return response.headers.getSetCookie?.() ?? []; } export function cookiePair(setCookie: string): string { return setCookie.split(";")[0] ?? setCookie; } export function cookiePairFor(response: Response, name: string): string { const cookie = setCookieHeaders(response).find((header) => header.startsWith(`${name}=`)); if (!cookie) throw new Error(`Missing Set-Cookie for ${name}`); return cookiePair(cookie); } export function cookieHeaderFrom(response: Response): string { return setCookieHeaders(response).map(cookiePair).join("; "); }