···
+
DidDocument} from "@/lib/types/atproto";
+
} from "@/lib/types/atproto";
+
import type { Result } from "@/lib/utils/result";
+
import type { DidDocumentResolver } from "@atcute/identity-resolver";
+
CompositeDidDocumentResolver,
+
CompositeHandleResolver,
+
PlcDidDocumentResolver,
+
WebDidDocumentResolver,
+
WellKnownHandleResolver,
+
} from "@atcute/identity-resolver";
+
export const didDocResolver: DidDocumentResolver =
+
new CompositeDidDocumentResolver({
+
plc: new PlcDidDocumentResolver(),
+
web: new WebDidDocumentResolver(),
+
export const handleResolver = new CompositeHandleResolver({
+
dns: new DohJsonHandleResolver({
+
dohUrl: "https://mozilla.cloudflare-dns.com/dns-query",
+
http: new WellKnownHandleResolver(),
+
export const resolveDidDoc = async (
+
authority: Did | AtprotoHandle,
+
): Promise<Result<DidDocument, unknown>> => {
+
const { data: handle } = atprotoHandleSchema.safeParse(authority);
+
did = await handleResolver.resolve(handle);
+
return { ok: false, error: err };
+
// @ts-expect-error if handle is undefined, then we know that authority must be a valid did:web or did:plc
+
const doc: DidDocument = await didDocResolver.resolve(did);
+
return { ok: true, data: doc };
+
return { ok: false, error: err };