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

48 lines (47 loc) • 1.69 kB
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