import { Did, DidDocument } from '@atproto/did' import { CachedGetter, SimpleStore } from '@atproto-labs/simple-store' import { DidCacheMemory } from './did-cache-memory.js' import { DidMethod, ResolveDidOptions } from './did-method.js' import { DidResolver, ResolvedDocument } from './did-resolver.js' export type { DidMethod, ResolveDidOptions, ResolvedDocument } export type DidCache = SimpleStore export type DidResolverCachedOptions = { cache?: DidCache } export class DidResolverCached implements DidResolver { protected readonly getter: CachedGetter constructor( resolver: DidResolver, cache: DidCache = new DidCacheMemory(), ) { this.getter = new CachedGetter( (did, options) => resolver.resolve(did, options), cache, ) } public async resolve(did: D, options?: ResolveDidOptions) { return this.getter.get(did, options) as Promise> } }