UNPKG

@sphereon/ssi-sdk-ext.did-resolver-ebsi

Version:

Sphereon did:ebsi resolver for Legal Entities.

163 lines (160 loc) • 6.31 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { DID_JSON: () => DID_JSON, DID_LD_JSON: () => DID_LD_JSON, default: () => index_default, getResolver: () => getResolver }); module.exports = __toCommonJS(index_exports); // src/drivers/ebsi-v1.ts var ebsi_v1_exports = {}; __export(ebsi_v1_exports, { EBSI_CONFORMANCE_REGISTRY_V4: () => EBSI_CONFORMANCE_REGISTRY_V4, EBSI_CONFORMANCE_REGISTRY_V5: () => EBSI_CONFORMANCE_REGISTRY_V5, EBSI_PILOT_REGISTRY_V4: () => EBSI_PILOT_REGISTRY_V4, EBSI_PILOT_REGISTRY_V5: () => EBSI_PILOT_REGISTRY_V5, EBSI_TEST_REGISTRY: () => EBSI_TEST_REGISTRY, default: () => ebsi_v1_default, keyToDidDoc: () => keyToDidDoc }); var import_cross_fetch = require("cross-fetch"); var EBSI_TEST_REGISTRY = "https://api-test.ebsi.eu/did-registry/v5/identifiers"; var EBSI_PILOT_REGISTRY_V5 = "https://api-pilot.ebsi.eu/did-registry/v5"; var EBSI_CONFORMANCE_REGISTRY_V5 = "https://api-conformance.ebsi.eu/did-registry/v5/identifiers"; var EBSI_PILOT_REGISTRY_V4 = "https://api-pilot.ebsi.eu/did-registry/v4"; var EBSI_CONFORMANCE_REGISTRY_V4 = "https://api-conformance.ebsi.eu/did-registry/v4/identifiers"; var keyToDidDoc = /* @__PURE__ */ __name(async (did, contentType, options) => { const registries = determineRegistries(options); for (const registry of registries) { try { const didDocument = await keyToDidDocImpl(did, contentType, registry, options); if (didDocument && !("error" in didDocument)) { return didDocument; } } catch (error) { console.log(error); } } return Promise.reject(new Error(`Could not resolve DID ${did} using registries: ${JSON.stringify(registries)}`)); }, "keyToDidDoc"); var keyToDidDocImpl = /* @__PURE__ */ __name(async (did, contentType, registry, options) => { const uri = didURI(did, registry); const response = await (0, import_cross_fetch.fetch)(uri); if (response.status >= 400) { throw Error(await response.json()); } return await response.json(); }, "keyToDidDocImpl"); var didURI = /* @__PURE__ */ __name((did, registry) => { let uri = registry; if (uri.endsWith("/")) { uri = uri.substring(0, uri.length - 1); } if (!uri.includes("identifiers")) { uri += "/identifiers"; } return `${uri}/${did}`; }, "didURI"); var determineRegistries = /* @__PURE__ */ __name((options) => { let registries = /* @__PURE__ */ new Set(); if (options.registries && Array.isArray(options.registries) && options.registries.length > 0) { options.registries.forEach(registries.add); } if (options.registry) { registries.add(options.registry); } if (options.noEnvVarRegistry !== true && process.env.EBSI_DEFAULT_REGISTRY) { registries.add(process.env.EBSI_DEFAULT_REGISTRY); } if (options.noFallbackRegistries !== true) { registries.add(EBSI_PILOT_REGISTRY_V5); registries.add(EBSI_CONFORMANCE_REGISTRY_V5); registries.add(EBSI_PILOT_REGISTRY_V4); registries.add(EBSI_CONFORMANCE_REGISTRY_V4); registries.add(EBSI_TEST_REGISTRY); } if (registries.size === 0) { throw Error("Please provide a registry as an option, a fallback registry or use an environment variable (EBSI_DEFAULT_REGISTRY)"); } return Array.from(registries); }, "determineRegistries"); var ebsi_v1_default = { keyToDidDoc }; // src/index.ts var import_dotenv = require("dotenv"); (0, import_dotenv.config)(); var DID_LD_JSON = "application/did+ld+json"; var DID_JSON = "application/did+json"; var methodToDriverMap = { ebsi: ebsi_v1_exports }; var getResolver = /* @__PURE__ */ __name(() => { return { ebsi: /* @__PURE__ */ __name(async (did, parsed, r, options) => { const response = { didResolutionMetadata: {}, didDocument: null, didDocumentMetadata: {} }; try { const contentType = determineContentType(options); response.didResolutionMetadata.contentType = contentType; const driver = methodToDriverMap[parsed.method]; const doc = await driver.keyToDidDoc(did, contentType, options); switch (contentType) { case DID_LD_JSON: if (!doc["@context"]) { doc["@context"] = "https://w3id.org/did/v1"; } else if (Array.isArray(doc["@context"]) && !doc["@context"].includes("https://w3id.org/did/v1") && !doc["@context"].includes("https://www.w3.org/ns/did/v1")) { doc["@context"].push("https://w3id.org/did/v1"); } response.didDocument = doc; break; case DID_JSON: response.didDocument = doc; break; default: delete response.didResolutionMetadata.contentType; response.didResolutionMetadata.error = "representationNotSupported"; break; } } catch (e) { response.didResolutionMetadata.error = "invalidDid"; response.didResolutionMetadata.message = e.toString(); } return response; }, "ebsi") }; }, "getResolver"); var determineContentType = /* @__PURE__ */ __name((options) => { const contentType = options.accept || DID_JSON; if (contentType !== DID_JSON && contentType !== DID_LD_JSON) { throw Error(`Only ${DID_JSON} and ${DID_LD_JSON} are supported. Provided: ${contentType}`); } return contentType; }, "determineContentType"); var index_default = { getResolver }; //# sourceMappingURL=index.cjs.map