import type { DavScope } from "@/worker/db/types"; // ADR: DAV write scopes imply read for the same protocol area. A write-only DAV client // still needs discovery, ETag, and readback access to perform interoperable writes. export function hasDavScope(scopes: readonly DavScope[], required: DavScope): boolean { if (scopes.includes(required)) return true; switch (required) { case "dav:files:read": return scopes.includes("dav:files:write"); case "dav:caldav:read": return scopes.includes("dav:caldav:write"); case "dav:carddav:read": return scopes.includes("dav:carddav:write"); default: return false; } } export function hasAnyDavScope(scopes: readonly DavScope[], required: readonly DavScope[]): boolean { return required.some((scope) => hasDavScope(scopes, scope)); }