Scratch space for learning atproto app development
1import { IdResolver, MemoryCache } from '@atproto/identity'
2
3const HOUR = 60e3 * 60
4const DAY = HOUR * 24
5
6export function createResolver() {
7 const resolver = new IdResolver({
8 didCache: new MemoryCache(HOUR, DAY),
9 })
10
11 return {
12 async resolveDidToHandle(did: string): Promise<string> {
13 const didDoc = await resolver.did.resolveAtprotoData(did)
14 const resolvedHandle = await resolver.handle.resolve(didDoc.handle)
15 if (resolvedHandle === did) {
16 return didDoc.handle
17 }
18 return did
19 },
20
21 async resolveDidsToHandles(
22 dids: string[]
23 ): Promise<Record<string, string>> {
24 const didHandleMap: Record<string, string> = {}
25 const resolves = await Promise.all(
26 dids.map((did) => this.resolveDidToHandle(did).catch((_) => did))
27 )
28 for (let i = 0; i < dids.length; i++) {
29 didHandleMap[dids[i]] = resolves[i]
30 }
31 return didHandleMap
32 },
33 }
34}