···291/// - PLC directory or Slingshot for `did:plc`
292/// - Slingshot `resolveHandle` (unauthenticated) when configured as the PLC source
293/// - PDS fallbacks via helpers that use stateless XRPC on top of reqwest
294-#[async_trait::async_trait]
295pub trait IdentityResolver {
296 /// Access options for validation decisions in default methods
297 fn options(&self) -> &ResolverOptions;
···360 let did = self.resolve_handle(handle).await?;
361 let pds = self.pds_for_did(&did).await?;
362 Ok((did, pds))
00000000000000000363 }
364}
365
···291/// - PLC directory or Slingshot for `did:plc`
292/// - Slingshot `resolveHandle` (unauthenticated) when configured as the PLC source
293/// - PDS fallbacks via helpers that use stateless XRPC on top of reqwest
294+#[async_trait::async_trait()]
295pub trait IdentityResolver {
296 /// Access options for validation decisions in default methods
297 fn options(&self) -> &ResolverOptions;
···360 let did = self.resolve_handle(handle).await?;
361 let pds = self.pds_for_did(&did).await?;
362 Ok((did, pds))
363+ }
364+}
365+366+#[async_trait::async_trait]
367+impl<T: IdentityResolver + Sync + Send> IdentityResolver for std::sync::Arc<T> {
368+ fn options(&self) -> &ResolverOptions {
369+ self.as_ref().options()
370+ }
371+372+ /// Resolve handle
373+ async fn resolve_handle(&self, handle: &Handle<'_>) -> Result<Did<'static>, IdentityError> {
374+ self.as_ref().resolve_handle(handle).await
375+ }
376+377+ /// Resolve DID document
378+ async fn resolve_did_doc(&self, did: &Did<'_>) -> Result<DidDocResponse, IdentityError> {
379+ self.as_ref().resolve_did_doc(did).await
380 }
381}
382
···2//! Transport, discovery, and orchestration live in `jacquard`.
34pub mod atproto;
005pub mod dpop;
6pub mod error;
7pub mod jose;
8pub mod keyset;
09pub mod resolver;
10pub mod scopes;
11pub mod session;
12pub mod types;
01314pub const FALLBACK_ALG: &str = "ES256";
···2//! Transport, discovery, and orchestration live in `jacquard`.
34pub mod atproto;
5+pub mod authstore;
6+pub mod client;
7pub mod dpop;
8pub mod error;
9pub mod jose;
10pub mod keyset;
11+pub mod request;
12pub mod resolver;
13pub mod scopes;
14pub mod session;
15pub mod types;
16+pub mod utils;
1718pub const FALLBACK_ALG: &str = "ES256";