You can override the default document loader to handle custom logic, such as using pre-loaded contexts instead of fetching them from the network.
To set a global custom loader:
// grab the built-in Node.js doc loader
const nodeDocumentLoader = jsonld.documentLoaders.node();
// define a custom loader
const customLoader = async (url, options) => {
if(url in CONTEXTS) {
return {
contextUrl: null,
document: CONTEXTS[url],
documentUrl: url
};
}
return nodeDocumentLoader(url);
};
// change the default document loader
jsonld.documentLoader = customLoader;
Alternatively, pass a custom loader for a specific call:
const compacted = await jsonld.compact(doc, context, {documentLoader: customLoader});
const customLoader = async (url, options) => {
if(url in CONTEXTS) {
return {
contextUrl: null,
document: CONTEXTS[url],
documentUrl: url
};
}
return nodeDocumentLoader(url);
};
jsonld.documentLoader = customLoader;