@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
48 lines (47 loc) • 1.69 kB
JavaScript
import { CredoError } from "../../../error/CredoError.mjs";
import { isDid } from "../../../utils/did.mjs";
import "../../../utils/index.mjs";
import { DidResolverService } from "../../dids/services/DidResolverService.mjs";
import "../../dids/index.mjs";
import { DEFAULT_CONTEXTS } from "./contexts/defaultContexts.mjs";
import jsonld_default from "./jsonld.mjs";
import { getNativeDocumentLoader } from "./nativeDocumentLoader.mjs";
//#region src/modules/vc/jsonld/documentLoader.ts
function defaultDocumentLoader(agentContext, additionalContexts = {}) {
const didResolver = agentContext.dependencyManager.resolve(DidResolverService);
const contexts = {
...DEFAULT_CONTEXTS,
...additionalContexts
};
async function loader(url) {
if (url in contexts) return {
contextUrl: null,
documentUrl: url,
document: contexts[url]
};
const withoutFragment = url.split("#")[0];
if (withoutFragment in contexts) return {
contextUrl: null,
documentUrl: url,
document: contexts[withoutFragment]
};
if (isDid(url)) {
const result = await didResolver.resolve(agentContext, url);
if (result.didResolutionMetadata.error || !result.didDocument) throw new CredoError(`Unable to resolve DID: ${url}`);
return {
contextUrl: null,
documentUrl: url,
document: await jsonld_default.frame(result.didDocument.toJSON(), {
"@context": result.didDocument.context,
"@embed": "@never",
id: url
}, { documentLoader: this })
};
}
return await (await getNativeDocumentLoader()).apply(jsonld_default, [])(url);
}
return loader.bind(loader);
}
//#endregion
export { defaultDocumentLoader };
//# sourceMappingURL=documentLoader.mjs.map