Detalhes do pacote

jsonld-document-loader

digitalbazaar5.6kBSD-3-Clause2.3.0

A document loader API for jsonld.js.

readme (leia-me)

JSON-LD Document Loader (jsonld-document-loader)

Build Status NPM Version

A document loader API for jsonld.js.

Table of Contents

Background

TBD

Security

TBD

Install

  • Node.js >= 18 is required.

NPM

To install via NPM:

npm install --save jsonld-document-loader

Development

To install locally (for development):

git clone https://github.com/digitalbazaar/jsonld-document-loader.git
cd jsonld-document-loader
npm install

Usage

import {JsonLdDocumentLoader} from 'jsonld-document-loader';

const loader = new JsonLdDocumentLoader();

addStatic(url, document)

The addStatic() method allows developers to load fixed static contexts and documents, to ensure known versions and contents, without going out to the network. The context is cloned when added.

For example, to add support for the DID Core context, the VC context, and crypto suite specific contexts:

import cred from 'credentials-context';
import didContext from 'did-context';
import ed25519Ctx from 'ed25519-signature-2020-context';

const {contexts: credentialsContexts, constants: {CREDENTIALS_CONTEXT_V1_URL}} =
  cred;

const jdl = new JsonLdDocumentLoader();

jdl.addStatic(ed25519Ctx.CONTEXT_URL, ed25519Ctx.CONTEXT);

jdl.addStatic(
  didContext.constants.DID_CONTEXT_URL,
  didContext.contexts.get(didContext.constants.DID_CONTEXT_URL)
);

jdl.addStatic(
  CREDENTIALS_CONTEXT_V1_URL,
  credentialsContexts.get(CREDENTIALS_CONTEXT_V1_URL)
);

const documentLoader = jdl.build();
// Pass to jsonld, jsonld-signatures, vc-js and similar libraries

addDocuments({documents})

Uses addStatic() to add many documents from an iterable object that returns values of the form [url, document]. Can be used directly with a Map associating URLs to documents.

import {contexts as credContexts} from '@digitalbazaar/credentials-context';

const jdl = new JsonLdDocumentLoader();

jdl.addDocuments({documents: credContexts});

setDidResolver()

To add support for resolving DIDs and DID-related key ids:

import * as didKey from '@digitalbazaar/did-method-key';
import {CachedResolver} from '@digitalbazaar/did-io';

const cachedResolver = new CachedResolver();
const jdl = new JsonLdDocumentLoader();

cachedResolver.use(didKey.driver());

jdl.setDidResolver(cachedResolver);

// Now you can resolve did:key type DIDs and key objects
const verificationKeyId = 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv';
await jdl.documentLoader(verificationKeyId);
// ->
{
  documentUrl: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
  document: {
    "@context": "https://w3id.org/security/suites/ed25519-2020/v1",
    "type": "Ed25519VerificationKey2020",
    "controller": "did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv",
    "publicKeyMultibase": "zFj5p9C2Sfqth6g6DEXtw5dWFqrtpFn4TCBBPJHGnwKzY",
    // ...
  }
}

setProtocolHandler()

You can add support for loading https-based JSON-LD contexts (a common case) by using your own loader or the one that comes with the jsonld package:

import * as jsonld from 'jsonld';

jdl.setProtocolHandler({protocol: 'https', handler: jsonld.documentLoader});

You can also add support for a custom protocol handler:

const customHandler = {
  get({url}) {
    // return document
  }
}

jdl.setProtocolHandler({protocol: 'ipfs', handler: customHandler});

Contribute

See the contribute file!

PRs accepted.

If editing the Readme, please conform to the standard-readme specification.

Commercial Support

Commercial support for this library is available upon request from Digital Bazaar: support@digitalbazaar.com

License

New BSD License (3-clause) © Digital Bazaar

changelog (log de mudanças)

jsonld-document-loader

2.3.0 - 2025-01-30

Added

  • Add .clone() API for cloning a document loader.

2.2.0 - 2024-07-31

Added

  • addDocuments({documents}) to add many URL to document mappings from an iterable object.

2.1.0 - 2024-06-05

Changed

  • addStatic deep clones documents to avoid shared document mutation issues.
    • The clone adds potential time and memory use considerations depending on the frequency of addStatic calls and on document size. For expected use cases this should be minimal.
    • structuredClone is used and may not be available in old browsers and Node.js before v17. Use a polyfill if needed.

2.0.0 - 2023-02-06

Changed

  • BREAKING: Convert to module (ESM).
  • BREAKING: Drop support for node <= 14.
  • Update dev deps to latest.
  • Use c8@7.12.0 for coverage.

1.2.1 - 2022-03-09

Fixed

  • Only set static tag for statically loaded contexts.

1.2.0 - 2021-04-28

Added

  • Adds setProtocolHandler() method (and a did-specific alias for it, setDidResolver()).

1.1.0 - 2020-11-19

Added

  • Set static tag for statically loaded contexts.

1.0.0 - 2019-10-18

  • See git history for changes.