Skip to content

Latest commit

 

History

History

identity-resolver

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

@atcute/identity-resolver

Note

not yet published.

atproto handle and DID document resolution

// handle resolution
const handleResolver = new CompositeHandleResolver({
	strategy: 'race',
	methods: {
		dns: new DohJsonHandleResolver({ dohUrl: 'https://mozilla.cloudflare-dns.com/dns-query' }),
		http: new WellKnownHandleResolver(),
	},
});

try {
	const handle = await handleResolver.resolve('bsky.app');
	//    ^? 'did:plc:z72i7hdynmk6r22z27h6tvur'
} catch (err) {
	if (err instanceof DidNotFoundError) {
		// handle returned no did
	}
	if (err instanceof InvalidResolvedHandleError) {
		// handle returned a did, but isn't a valid atproto did
	}
	if (err instanceof AmbiguousHandleError) {
		// handle returned multiple did values
	}
	if (err instanceof FailedHandleResolutionError) {
		// handle resolution had thrown something unexpected (fetch error)
	}

	if (err instanceof HandleResolutionError) {
		// the errors above extend this class, so you can do a catch-all.
	}
}

// DID document resolution
const docResolver = new CompositeDidDocumentResolver({
	methods: {
		plc: new PlcDidDocumentResolver(),
		web: new WebDidDocumentResolver(),
	},
});

try {
	const doc = await docResolver.resolve('did:plc:z72i7hdynmk6r22z27h6tvur');
	//    ^? { '@context': [...], id: 'did:plc:z72i7hdynmk6r22z27h6tvur', ... }
} catch (err) {
	if (err instanceof DocumentNotFoundError) {
		// did returned no document
	}
	if (err instanceof UnsupportedDidMethodError) {
		// resolver doesn't support did method (composite resolver)
	}
	if (err instanceof ImproperDidError) {
		// resolver considers did as invalid (atproto did:web)
	}
	if (err instanceof FailedDocumentResolutionError) {
		// document resolution had thrown something unexpected (fetch error)
	}

	if (err instanceof HandleResolutionError) {
		// the errors above extend this class, so you can do a catch-all.
	}
}