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}