@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
56 lines (55 loc) • 2.4 kB
JavaScript
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 { 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 === 0) didDocument = didToNumAlgo0DidDocument(did);
else if (numAlgo === 1) {
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 === 2) 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