UNPKG

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

Version:

Sphereon did:ebsi resolver for Legal Entities.

77 lines 3.79 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.keyToDidDoc = exports.EBSI_CONFORMANCE_REGISTRY_V4 = exports.EBSI_PILOT_REGISTRY_V4 = exports.EBSI_CONFORMANCE_REGISTRY_V5 = exports.EBSI_PILOT_REGISTRY_V5 = exports.EBSI_TEST_REGISTRY = void 0; const cross_fetch_1 = require("cross-fetch"); exports.EBSI_TEST_REGISTRY = 'https://api-test.ebsi.eu/did-registry/v5/identifiers'; exports.EBSI_PILOT_REGISTRY_V5 = 'https://api-pilot.ebsi.eu/did-registry/v5'; exports.EBSI_CONFORMANCE_REGISTRY_V5 = 'https://api-conformance.ebsi.eu/did-registry/v5/identifiers'; exports.EBSI_PILOT_REGISTRY_V4 = 'https://api-pilot.ebsi.eu/did-registry/v4'; exports.EBSI_CONFORMANCE_REGISTRY_V4 = 'https://api-conformance.ebsi.eu/did-registry/v4/identifiers'; const keyToDidDoc = (did, contentType, options) => __awaiter(void 0, void 0, void 0, function* () { const registries = determineRegistries(options); for (const registry of registries) { try { const didDocument = yield 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)}`)); }); exports.keyToDidDoc = keyToDidDoc; const keyToDidDocImpl = (did, contentType, registry, options) => __awaiter(void 0, void 0, void 0, function* () { const uri = didURI(did, registry); const response = yield (0, cross_fetch_1.fetch)(uri); if (response.status >= 400) { throw Error(yield response.json()); } return (yield response.json()); }); const didURI = (did, registry) => { let uri = registry; if (uri.endsWith('/')) { uri = uri.substring(0, uri.length - 1); } if (!uri.includes('identifiers')) { uri += '/identifiers'; } return `${uri}/${did}`; }; const determineRegistries = (options) => { let registries = 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(exports.EBSI_PILOT_REGISTRY_V5); registries.add(exports.EBSI_CONFORMANCE_REGISTRY_V5); registries.add(exports.EBSI_PILOT_REGISTRY_V4); registries.add(exports.EBSI_CONFORMANCE_REGISTRY_V4); registries.add(exports.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); }; exports.default = { keyToDidDoc: exports.keyToDidDoc }; //# sourceMappingURL=ebsi-v1.js.map