jwks-did-resolver
Version:
Resolve did:jwks documents using did-resolver
47 lines (45 loc) • 1.31 kB
JavaScript
import { fetchJwksDidDocument, isDidJwks } from "did-jwks";
//#region src/resolver.ts
/**
* Get a `did-resolver` compatible resolver for did:jwks
* @see {@link https://www.w3.org/TR/did-resolution/}
*
* @param opts - Additional options for the resolver
* @param opts.fetch - The fetch function to use.
* @param opts.allowedHttpHosts - The hosts that are allowed to be used via
* `http`. All other hosts will require `https`. This is useful for local
* development and testing.
*
* @returns A `did:jwks` resolver for use with `did-resolver`
*/
function getResolver(opts = {}) {
async function resolve(did) {
if (!did) return {
didDocument: null,
didDocumentMetadata: {},
didResolutionMetadata: { error: "invalidDid" }
};
if (!isDidJwks(did)) return {
didDocument: null,
didDocumentMetadata: {},
didResolutionMetadata: { error: "unsupportedDidMethod" }
};
const didDocument = await fetchJwksDidDocument(did, opts);
if (!didDocument) return {
didDocument: null,
didDocumentMetadata: {},
didResolutionMetadata: {
error: "notFound",
message: "No JWKS found"
}
};
return {
didDocument,
didDocumentMetadata: {},
didResolutionMetadata: { contentType: "application/did+ld+json" }
};
}
return { jwks: resolve };
}
//#endregion
export { getResolver };