/* * clippr: a social bookmarking service for the AT Protocol * Copyright (c) 2025 clippr contributors. * SPDX-License-Identifier: AGPL-3.0-only */ import { CompositeDidDocumentResolver, DocumentNotFoundError, FailedDocumentResolutionError, HandleResolutionError, ImproperDidError, PlcDidDocumentResolver, UnsupportedDidMethodError, WebDidDocumentResolver, } from "@atcute/identity-resolver"; // Gets a DID document from a given DID. DID method agnostic. export async function getDidDocument( did: `did:plc:${string}` | `did:web:${string}`, ) { const docResolver = new CompositeDidDocumentResolver({ methods: { plc: new PlcDidDocumentResolver(), web: new WebDidDocumentResolver(), }, }); let doc; try { doc = await docResolver.resolve(did); } catch (err) { if (err instanceof DocumentNotFoundError) { throw new Error("Document not found"); } if (err instanceof UnsupportedDidMethodError) { throw new Error("Unsupported DID method"); } if (err instanceof ImproperDidError) { throw new Error("Invalid DID"); } if (err instanceof FailedDocumentResolutionError) { throw new Error("Failed document resolution"); } if (err instanceof HandleResolutionError) { throw new Error("Unknown resolution error"); } } return doc; }