UNPKG

@credo-ts/core

Version:

<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1

59 lines (55 loc) • 2.52 kB
import { CredoError } from "../../../../error/CredoError.mjs"; import "../../../../error/index.mjs"; import { DidRepository } from "../../repository/DidRepository.mjs"; import "../../repository/index.mjs"; import { didToNumAlgo4DidDocument, isShortFormDidPeer4 } from "./peerDidNumAlgo4.mjs"; import { PeerDidNumAlgo, getNumAlgoFromPeerDid, isValidPeerDid } from "./didPeer.mjs"; import { didToNumAlgo0DidDocument } from "./peerDidNumAlgo0.mjs"; import { didToNumAlgo2DidDocument } from "./peerDidNumAlgo2.mjs"; //#region src/modules/dids/methods/peer/PeerDidResolver.ts var PeerDidResolver = class { constructor() { this.supportedMethods = ["peer"]; this.allowsCaching = false; this.allowsLocalDidRecord = false; } async resolve(agentContext, did) { const didRepository = agentContext.dependencyManager.resolve(DidRepository); const didDocumentMetadata = {}; try { let didDocument; if (!isValidPeerDid(did)) throw new CredoError(`did ${did} is not a valid peer did`); const numAlgo = getNumAlgoFromPeerDid(did); if (numAlgo === PeerDidNumAlgo.InceptionKeyWithoutDoc) didDocument = didToNumAlgo0DidDocument(did); else if (numAlgo === PeerDidNumAlgo.GenesisDoc) { const [didDocumentRecord] = await didRepository.findAllByDid(agentContext, did); if (!didDocumentRecord) throw new CredoError(`No did record found for peer did ${did}.`); if (!didDocumentRecord.didDocument) throw new CredoError(`Found did record for method 1 peer did (${did}), but no did document.`); didDocument = didDocumentRecord.didDocument; } else if (numAlgo === PeerDidNumAlgo.MultipleInceptionKeyWithoutDoc) didDocument = didToNumAlgo2DidDocument(did); else if (isShortFormDidPeer4(did)) { const [didRecord] = await didRepository.findAllByDid(agentContext, did); if (!didRecord) throw new CredoError(`No did record found for peer did ${did}.`); didDocument = didToNumAlgo4DidDocument(didRecord.did); } else didDocument = didToNumAlgo4DidDocument(did); return { didDocument, didDocumentMetadata, didResolutionMetadata: { contentType: "application/did+ld+json" } }; } catch (error) { agentContext.config.logger.error(`Error resolving did '${did}'`, { error }); return { didDocument: null, didDocumentMetadata, didResolutionMetadata: { error: "notFound", message: `resolver_error: Unable to resolve did '${did}': ${error}` } }; } } }; //#endregion export { PeerDidResolver }; //# sourceMappingURL=PeerDidResolver.mjs.map