@sphereon/ssi-sdk.uni-resolver-registrar-api 0.33.1-feature.vcdm2.tsup.37 → 0.33.1-feature.vcdm2.tsup.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  // src/index.ts
32
32
  var index_exports = {};
33
33
  __export(index_exports, {
34
+ DidWebServer: () => DidWebServer,
34
35
  UniResolverApiServer: () => UniResolverApiServer,
35
36
  createDidEndpoint: () => createDidEndpoint,
36
37
  deactivateDidEndpoint: () => deactivateDidEndpoint,
@@ -41,11 +42,6 @@ __export(index_exports, {
41
42
  });
42
43
  module.exports = __toCommonJS(index_exports);
43
44
 
44
- // src/uni-resolver-api-server.ts
45
- var import_ssi_sdk = require("@sphereon/ssi-sdk.core");
46
- var import_ssi_express_support2 = require("@sphereon/ssi-express-support");
47
- var import_express = __toESM(require("express"), 1);
48
-
49
45
  // src/api-functions.ts
50
46
  var import_ssi_sdk_ext = require("@sphereon/ssi-sdk-ext.did-utils");
51
47
  var import_ssi_sdk_ext2 = require("@sphereon/ssi-sdk-ext.key-utils");
@@ -314,6 +310,9 @@ function didWebDomainEndpoint(router, context, opts) {
314
310
  __name(didWebDomainEndpoint, "didWebDomainEndpoint");
315
311
 
316
312
  // src/uni-resolver-api-server.ts
313
+ var import_ssi_sdk = require("@sphereon/ssi-sdk.core");
314
+ var import_ssi_express_support2 = require("@sphereon/ssi-express-support");
315
+ var import_express = __toESM(require("express"), 1);
317
316
  var UniResolverApiServer = class {
318
317
  static {
319
318
  __name(this, "UniResolverApiServer");
@@ -367,4 +366,58 @@ var UniResolverApiServer = class {
367
366
  return this._express;
368
367
  }
369
368
  };
369
+
370
+ // src/did-web-server.ts
371
+ var import_ssi_sdk2 = require("@sphereon/ssi-sdk.core");
372
+ var import_express2 = __toESM(require("express"), 1);
373
+ var DidWebServer = class {
374
+ static {
375
+ __name(this, "DidWebServer");
376
+ }
377
+ get router() {
378
+ return this._router;
379
+ }
380
+ _express;
381
+ _agent;
382
+ _opts;
383
+ _router;
384
+ constructor(args) {
385
+ const { agent, opts } = args;
386
+ const features = opts?.enableFeatures ?? [];
387
+ if (!features.includes("did-web-global-resolution")) {
388
+ console.log("did:web hosting service NOT enabled");
389
+ return;
390
+ }
391
+ this._agent = agent;
392
+ if (opts?.globalAuth) {
393
+ copyGlobalAuthToEndpoint(opts, "endpointOpts");
394
+ }
395
+ this._opts = opts;
396
+ this._express = args.expressSupport.express;
397
+ this._router = import_express2.default.Router();
398
+ const context = (0, import_ssi_sdk2.agentContext)(agent);
399
+ console.log(`did:web hosting service enabled`);
400
+ didWebDomainEndpoint(this.router, context, opts?.endpointOpts);
401
+ this._express.use(this.router);
402
+ }
403
+ get agent() {
404
+ return this._agent;
405
+ }
406
+ get opts() {
407
+ return this._opts;
408
+ }
409
+ get express() {
410
+ return this._express;
411
+ }
412
+ };
413
+ function copyGlobalAuthToEndpoint(opts, key) {
414
+ if (opts?.globalAuth) {
415
+ opts[key] = {
416
+ ...opts?.globalAuth,
417
+ // @ts-ignore
418
+ ...opts[key]
419
+ };
420
+ }
421
+ }
422
+ __name(copyGlobalAuthToEndpoint, "copyGlobalAuthToEndpoint");
370
423
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/uni-resolver-api-server.ts","../src/api-functions.ts"],"sourcesContent":["/**\n * @public\n */\nexport * from './uni-resolver-api-server'\nexport * from './types'\nexport * from './api-functions'\n","import { agentContext } from '@sphereon/ssi-sdk.core'\nimport { copyGlobalAuthToEndpoints, ExpressSupport } from '@sphereon/ssi-express-support'\nimport { TAgent } from '@veramo/core'\n\nimport express, { Express, Router } from 'express'\nimport { createDidEndpoint, deleteDidEndpoint, deactivateDidEndpoint, getDidMethodsEndpoint, resolveDidEndpoint } from './api-functions'\nimport { IDidAPIOpts, IRequiredPlugins } from './types'\n\nexport class UniResolverApiServer {\n get router(): express.Router {\n return this._router\n }\n\n private readonly _express: Express\n private readonly _agent: TAgent<IRequiredPlugins>\n private readonly _opts?: IDidAPIOpts\n private readonly _router: Router\n\n constructor(args: { agent: TAgent<IRequiredPlugins>; expressSupport: ExpressSupport; opts?: IDidAPIOpts }) {\n const { agent, opts } = args\n this._agent = agent\n copyGlobalAuthToEndpoints({ opts, keys: ['getDidMethods', 'createDid', 'resolveDid', 'deactivateDid'] })\n this._opts = opts\n this._express = args.expressSupport.express\n this._router = express.Router()\n const context = agentContext(agent)\n const features = opts?.enableFeatures ?? ['did-resolve', 'did-persist']\n console.log(`DID Uni Resolver and Registrar API enabled, with features: ${JSON.stringify(features)}}`)\n\n // DID endpoints\n if (features.includes('did-resolve')) {\n resolveDidEndpoint(this.router, context, opts?.endpointOpts?.resolveDid)\n getDidMethodsEndpoint(this.router, context, opts?.endpointOpts?.getDidMethods)\n }\n if (features.includes('did-persist')) {\n createDidEndpoint(this.router, context, opts?.endpointOpts?.createDid)\n deleteDidEndpoint(this.router, context, opts?.endpointOpts?.deactivateDid) // not in spec.\n deactivateDidEndpoint(this.router, context, opts?.endpointOpts?.deactivateDid)\n }\n this._express.use(opts?.endpointOpts?.basePath ?? '', this.router)\n }\n\n get agent(): TAgent<IRequiredPlugins> {\n return this._agent\n }\n\n get opts(): IDidAPIOpts | undefined {\n return this._opts\n }\n\n get express(): Express {\n return this._express\n }\n}\n","import { DIDResolutionResult } from '@sphereon/did-uni-client'\nimport { getAgentDIDMethods, toDidDocument, toDidResolutionResult } from '@sphereon/ssi-sdk-ext.did-utils'\nimport { JwkKeyUse } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { checkAuth, ISingleEndpointOpts, sendErrorResponse } from '@sphereon/ssi-express-support'\nimport { parseDid } from '@sphereon/ssi-types'\nimport { IIdentifier } from '@veramo/core'\nimport { Request, Response, Router } from 'express'\nimport { v4 } from 'uuid'\nimport {\n CreateState,\n DidRegistrationCreateRequest,\n DidRegistrationDeactivateRequest,\n DidStateValue,\n ICreateDidEndpointOpts,\n IGlobalDidWebEndpointOpts,\n IRequiredContext,\n IResolveEndpointOpts,\n} from './types'\nimport Debug from 'debug'\n\nconst debug = Debug('sphereon:ssi-sdk:uni-resolver-registrar')\n\nexport function createDidEndpoint(router: Router, context: IRequiredContext, opts?: ICreateDidEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`create DID endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/identifiers'\n\n router.post(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const createRequest: DidRegistrationCreateRequest = request.body\n if (!createRequest) {\n return sendErrorResponse(response, 400, 'No DID create request present')\n }\n const did = createRequest.did\n const didMethod = (request.query.method as string) ?? (did ? parseDid(did).method : opts?.defaultMethod)\n const allDidMethods = await getAgentDIDMethods(context)\n if (!didMethod) {\n return sendErrorResponse(response, 400, 'No DID method supplied or deductible')\n } else if (did && parseDid(did).method != didMethod) {\n return sendErrorResponse(response, 400, 'DID method did not match method param')\n } else if (!allDidMethods.includes(didMethod)) {\n return sendErrorResponse(response, 400, 'DID method not supported')\n }\n const provider = `did:${didMethod}`\n const jobId = createRequest.jobId ?? v4()\n let alias: string | undefined = undefined\n if (didMethod === 'web') {\n if (!did) {\n return sendErrorResponse(response, 400, 'Please provide a value for \"did\" in the request body when creating a DID web')\n }\n alias = parseDid(did).id\n if (!alias) {\n return sendErrorResponse(response, 400, 'Could not determine alias from did:web DID value: ' + did)\n }\n }\n\n let identifier: IIdentifier | undefined\n let state: DidStateValue | undefined\n if (opts?.noErrorOnExistingDid && did) {\n try {\n identifier = await context.agent.didManagerGet({ did })\n state = 'exists'\n } catch (e) {\n // Okay, since we will create a new one\n }\n }\n if (identifier === undefined) {\n if (createRequest.options.storeSecrets === false) {\n return sendErrorResponse(response, 400, 'Only storeSecrets mode is supported currently')\n /*const memoryKMS = new SphereonKeyManager({\n store: new MemoryKeyStore(),\n kms: {'mem': new KeyManagementSystem(new MemoryPrivateKeyStore())}\n })\n identifier = await memoryKMS..didManagerCreate({provider, alias, kms: opts?.kms})*/\n } else if (createRequest.options.storeSecrets || opts?.storeSecrets) {\n identifier = await context.agent.didManagerCreate({ provider, alias, kms: opts?.kms })\n state = 'finished'\n } else {\n return sendErrorResponse(response, 400, 'Only storeSecrets mode is supported currently')\n }\n }\n if (!identifier || !state) {\n return sendErrorResponse(response, 400, 'An identifier and did state should be present at this point')\n }\n\n const didDocument = toDidDocument(identifier, { did, use: [JwkKeyUse.Signature, JwkKeyUse.Encryption] })\n const createState: CreateState = {\n jobId,\n didState: {\n did: identifier.did,\n state,\n didDocument,\n },\n }\n response.statusCode = 200\n return response.send(createState)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nexport function getDidMethodsEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Get DID methods endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/methods'\n router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const methods = await getAgentDIDMethods(context) // these are already without the 'did:' prefix\n response.statusCode = 200\n return response.send(methods)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nasync function agentDidToResolutionResult(context: IRequiredContext, did: string) {\n try {\n const identifier = await context.agent.didManagerGet({ did })\n debug(JSON.stringify(identifier, null, 2))\n return toDidResolutionResult(identifier, {\n did,\n supportedMethods: await getAgentDIDMethods(context),\n })\n } catch (error) {\n console.log(JSON.stringify(error.message))\n return {\n didDocument: null,\n didResolutionMetadata: {\n error: 'notFound',\n },\n didDocumentMetadata: {},\n }\n }\n}\n\nexport function resolveDidEndpoint(router: Router, context: IRequiredContext, opts?: IResolveEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Resolve DID endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/identifiers/:identifier'\n router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const did = request.params.identifier\n if (!did) {\n return sendErrorResponse(response, 400, 'no identifier provided')\n }\n const mode = request.query.mode?.toString().toLowerCase() ?? opts?.mode?.toLowerCase() ?? 'hybrid'\n let resolutionResult: DIDResolutionResult | undefined\n if (mode === 'local' || mode === 'hybrid') {\n resolutionResult = await agentDidToResolutionResult(context, did)\n }\n if (mode !== 'local' && !resolutionResult?.didDocument) {\n resolutionResult = await context.agent.resolveDid({ didUrl: did })\n }\n\n response.statusCode = 200\n return response.send(resolutionResult)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\n/**\n * @param router\n * @param context\n * @param opts\n */\nexport function deleteDidEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Deactivate DID endpoint is disabled`)\n return\n }\n router.delete(opts?.path ?? '/identifiers/:identifier', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const did = request.params.identifier\n if (!did) {\n return sendErrorResponse(response, 400, 'no DID provided')\n }\n\n const result = await context.agent.didManagerDelete({ did })\n if (!result) {\n return sendErrorResponse(response, 404, `id ${did} not found`)\n }\n response.statusCode = 200\n return response.send()\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nexport function deactivateDidEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log('Deactivate DID endpoint is disabled')\n return\n }\n\n router.post(opts?.path ?? '/deactivate', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const deactivateRequest: DidRegistrationDeactivateRequest = request.body\n if (!deactivateRequest) {\n return sendErrorResponse(response, 400, 'Invalid request body', { state: 'failed' })\n }\n\n const { did, jobId = v4() } = deactivateRequest\n if (!did) {\n return sendErrorResponse(response, 400, 'No DID provided', { state: 'failed' })\n }\n\n const result = await context.agent.didManagerDelete({ did })\n if (!result) {\n return sendErrorResponse(response, 404, `DID ${did} not found`, { state: 'failed' })\n }\n\n response.status(200).json({\n state: 'finished',\n did,\n jobId,\n })\n return response.send()\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, { state: 'failed', errorDetails: e })\n }\n })\n}\n\n/**\n * Endpoint that eases DID web resolution, by mapping did-web paths to stored agent DIDs.\n *\n * Typically, you will have a reverse proxy or load balancer in front of this endpoint.\n *\n * Some examples of how did:web behaves:\n * did:web:example.com resolves to https://example.com/.well-known/did.json\n * did:web:example.com:sub:paths resolves to https://example.com/sub/paths/did.json\n *\n * This endpoint translate both forms by looking at the paths that end in /did.json.\n *\n * @param router\n * @param context\n * @param opts\n */\nexport function didWebDomainEndpoint(router: Router, context: IRequiredContext, opts?: IGlobalDidWebEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`DID Web domain resolution endpoint is disabled`)\n return\n }\n router.get(opts?.path ?? ':path(*)/did.json', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const path = request.params.path\n if (!path || path.length === 0) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n let did: string\n did = `did:web:${opts?.hostname?.replace('https://', '')?.replace('http://', '') ?? request.hostname}`\n if (path !== '/.well-known') {\n if (opts?.disableSubPaths) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n const suffix = path.replace(/\\//g, ':').replace(/%2F/g, ':')\n if (!suffix.startsWith(':')) {\n did += ':'\n }\n did += suffix\n } else if (opts?.disableWellKnown) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n\n const resolutionResult = await agentDidToResolutionResult(context, did)\n if (!resolutionResult || !resolutionResult.didDocument || resolutionResult?.didResolutionMetadata?.error === 'notFound') {\n return sendErrorResponse(response, 404, 'Not found')\n }\n response.statusCode = 200\n return response.send(resolutionResult.didDocument)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n"],"mappings":"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","names":["import_ssi_express_support","import_ssi_sdk_ext","debug","Debug","createDidEndpoint","router","context","opts","enabled","console","log","path","post","checkAuth","endpoint","request","response","createRequest","body","sendErrorResponse","did","didMethod","query","method","parseDid","defaultMethod","allDidMethods","getAgentDIDMethods","includes","provider","jobId","v4","alias","undefined","id","identifier","state","noErrorOnExistingDid","agent","didManagerGet","e","options","storeSecrets","didManagerCreate","kms","didDocument","toDidDocument","use","JwkKeyUse","Signature","Encryption","createState","didState","statusCode","send","message","getDidMethodsEndpoint","get","methods","agentDidToResolutionResult","JSON","stringify","toDidResolutionResult","supportedMethods","error","didResolutionMetadata","didDocumentMetadata","resolveDidEndpoint","params","mode","toString","toLowerCase","resolutionResult","resolveDid","didUrl","deleteDidEndpoint","delete","result","didManagerDelete","deactivateDidEndpoint","deactivateRequest","status","json","errorDetails","didWebDomainEndpoint","length","hostname","replace","disableSubPaths","suffix","startsWith","disableWellKnown","UniResolverApiServer","router","_router","_express","_agent","_opts","constructor","args","agent","opts","copyGlobalAuthToEndpoints","keys","expressSupport","express","Router","context","agentContext","features","enableFeatures","console","log","JSON","stringify","includes","resolveDidEndpoint","endpointOpts","resolveDid","getDidMethodsEndpoint","getDidMethods","createDidEndpoint","createDid","deleteDidEndpoint","deactivateDid","deactivateDidEndpoint","use","basePath"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/api-functions.ts","../src/uni-resolver-api-server.ts","../src/did-web-server.ts"],"sourcesContent":["/**\n * @public\n */\nexport * from './types'\nexport * from './api-functions'\nexport * from './uni-resolver-api-server'\nexport * from './did-web-server'\n","import { DIDResolutionResult } from '@sphereon/did-uni-client'\nimport { getAgentDIDMethods, toDidDocument, toDidResolutionResult } from '@sphereon/ssi-sdk-ext.did-utils'\nimport { JwkKeyUse } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { checkAuth, ISingleEndpointOpts, sendErrorResponse } from '@sphereon/ssi-express-support'\nimport { parseDid } from '@sphereon/ssi-types'\nimport { IIdentifier } from '@veramo/core'\nimport { Request, Response, Router } from 'express'\nimport { v4 } from 'uuid'\nimport {\n CreateState,\n DidRegistrationCreateRequest,\n DidRegistrationDeactivateRequest,\n DidStateValue,\n ICreateDidEndpointOpts,\n IGlobalDidWebEndpointOpts,\n IRequiredContext,\n IResolveEndpointOpts,\n} from './types'\nimport Debug from 'debug'\n\nconst debug = Debug('sphereon:ssi-sdk:uni-resolver-registrar')\n\nexport function createDidEndpoint(router: Router, context: IRequiredContext, opts?: ICreateDidEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`create DID endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/identifiers'\n\n router.post(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const createRequest: DidRegistrationCreateRequest = request.body\n if (!createRequest) {\n return sendErrorResponse(response, 400, 'No DID create request present')\n }\n const did = createRequest.did\n const didMethod = (request.query.method as string) ?? (did ? parseDid(did).method : opts?.defaultMethod)\n const allDidMethods = await getAgentDIDMethods(context)\n if (!didMethod) {\n return sendErrorResponse(response, 400, 'No DID method supplied or deductible')\n } else if (did && parseDid(did).method != didMethod) {\n return sendErrorResponse(response, 400, 'DID method did not match method param')\n } else if (!allDidMethods.includes(didMethod)) {\n return sendErrorResponse(response, 400, 'DID method not supported')\n }\n const provider = `did:${didMethod}`\n const jobId = createRequest.jobId ?? v4()\n let alias: string | undefined = undefined\n if (didMethod === 'web') {\n if (!did) {\n return sendErrorResponse(response, 400, 'Please provide a value for \"did\" in the request body when creating a DID web')\n }\n alias = parseDid(did).id\n if (!alias) {\n return sendErrorResponse(response, 400, 'Could not determine alias from did:web DID value: ' + did)\n }\n }\n\n let identifier: IIdentifier | undefined\n let state: DidStateValue | undefined\n if (opts?.noErrorOnExistingDid && did) {\n try {\n identifier = await context.agent.didManagerGet({ did })\n state = 'exists'\n } catch (e) {\n // Okay, since we will create a new one\n }\n }\n if (identifier === undefined) {\n if (createRequest.options.storeSecrets === false) {\n return sendErrorResponse(response, 400, 'Only storeSecrets mode is supported currently')\n /*const memoryKMS = new SphereonKeyManager({\n store: new MemoryKeyStore(),\n kms: {'mem': new KeyManagementSystem(new MemoryPrivateKeyStore())}\n })\n identifier = await memoryKMS..didManagerCreate({provider, alias, kms: opts?.kms})*/\n } else if (createRequest.options.storeSecrets || opts?.storeSecrets) {\n identifier = await context.agent.didManagerCreate({ provider, alias, kms: opts?.kms })\n state = 'finished'\n } else {\n return sendErrorResponse(response, 400, 'Only storeSecrets mode is supported currently')\n }\n }\n if (!identifier || !state) {\n return sendErrorResponse(response, 400, 'An identifier and did state should be present at this point')\n }\n\n const didDocument = toDidDocument(identifier, { did, use: [JwkKeyUse.Signature, JwkKeyUse.Encryption] })\n const createState: CreateState = {\n jobId,\n didState: {\n did: identifier.did,\n state,\n didDocument,\n },\n }\n response.statusCode = 200\n return response.send(createState)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nexport function getDidMethodsEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Get DID methods endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/methods'\n router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const methods = await getAgentDIDMethods(context) // these are already without the 'did:' prefix\n response.statusCode = 200\n return response.send(methods)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nasync function agentDidToResolutionResult(context: IRequiredContext, did: string) {\n try {\n const identifier = await context.agent.didManagerGet({ did })\n debug(JSON.stringify(identifier, null, 2))\n return toDidResolutionResult(identifier, {\n did,\n supportedMethods: await getAgentDIDMethods(context),\n })\n } catch (error) {\n console.log(JSON.stringify(error.message))\n return {\n didDocument: null,\n didResolutionMetadata: {\n error: 'notFound',\n },\n didDocumentMetadata: {},\n }\n }\n}\n\nexport function resolveDidEndpoint(router: Router, context: IRequiredContext, opts?: IResolveEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Resolve DID endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/identifiers/:identifier'\n router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const did = request.params.identifier\n if (!did) {\n return sendErrorResponse(response, 400, 'no identifier provided')\n }\n const mode = request.query.mode?.toString().toLowerCase() ?? opts?.mode?.toLowerCase() ?? 'hybrid'\n let resolutionResult: DIDResolutionResult | undefined\n if (mode === 'local' || mode === 'hybrid') {\n resolutionResult = await agentDidToResolutionResult(context, did)\n }\n if (mode !== 'local' && !resolutionResult?.didDocument) {\n resolutionResult = await context.agent.resolveDid({ didUrl: did })\n }\n\n response.statusCode = 200\n return response.send(resolutionResult)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\n/**\n * @param router\n * @param context\n * @param opts\n */\nexport function deleteDidEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Deactivate DID endpoint is disabled`)\n return\n }\n router.delete(opts?.path ?? '/identifiers/:identifier', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const did = request.params.identifier\n if (!did) {\n return sendErrorResponse(response, 400, 'no DID provided')\n }\n\n const result = await context.agent.didManagerDelete({ did })\n if (!result) {\n return sendErrorResponse(response, 404, `id ${did} not found`)\n }\n response.statusCode = 200\n return response.send()\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nexport function deactivateDidEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log('Deactivate DID endpoint is disabled')\n return\n }\n\n router.post(opts?.path ?? '/deactivate', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const deactivateRequest: DidRegistrationDeactivateRequest = request.body\n if (!deactivateRequest) {\n return sendErrorResponse(response, 400, 'Invalid request body', { state: 'failed' })\n }\n\n const { did, jobId = v4() } = deactivateRequest\n if (!did) {\n return sendErrorResponse(response, 400, 'No DID provided', { state: 'failed' })\n }\n\n const result = await context.agent.didManagerDelete({ did })\n if (!result) {\n return sendErrorResponse(response, 404, `DID ${did} not found`, { state: 'failed' })\n }\n\n response.status(200).json({\n state: 'finished',\n did,\n jobId,\n })\n return response.send()\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, { state: 'failed', errorDetails: e })\n }\n })\n}\n\n/**\n * Endpoint that eases DID web resolution, by mapping did-web paths to stored agent DIDs.\n *\n * Typically, you will have a reverse proxy or load balancer in front of this endpoint.\n *\n * Some examples of how did:web behaves:\n * did:web:example.com resolves to https://example.com/.well-known/did.json\n * did:web:example.com:sub:paths resolves to https://example.com/sub/paths/did.json\n *\n * This endpoint translate both forms by looking at the paths that end in /did.json.\n *\n * @param router\n * @param context\n * @param opts\n */\nexport function didWebDomainEndpoint(router: Router, context: IRequiredContext, opts?: IGlobalDidWebEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`DID Web domain resolution endpoint is disabled`)\n return\n }\n router.get(opts?.path ?? ':path(*)/did.json', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const path = request.params.path\n if (!path || path.length === 0) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n let did: string\n did = `did:web:${opts?.hostname?.replace('https://', '')?.replace('http://', '') ?? request.hostname}`\n if (path !== '/.well-known') {\n if (opts?.disableSubPaths) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n const suffix = path.replace(/\\//g, ':').replace(/%2F/g, ':')\n if (!suffix.startsWith(':')) {\n did += ':'\n }\n did += suffix\n } else if (opts?.disableWellKnown) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n\n const resolutionResult = await agentDidToResolutionResult(context, did)\n if (!resolutionResult || !resolutionResult.didDocument || resolutionResult?.didResolutionMetadata?.error === 'notFound') {\n return sendErrorResponse(response, 404, 'Not found')\n }\n response.statusCode = 200\n return response.send(resolutionResult.didDocument)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n","import { agentContext } from '@sphereon/ssi-sdk.core'\nimport { copyGlobalAuthToEndpoints, ExpressSupport } from '@sphereon/ssi-express-support'\nimport { TAgent } from '@veramo/core'\n\nimport express, { Express, Router } from 'express'\nimport { createDidEndpoint, deleteDidEndpoint, deactivateDidEndpoint, getDidMethodsEndpoint, resolveDidEndpoint } from './api-functions'\nimport { IDidAPIOpts, IRequiredPlugins } from './types'\n\nexport class UniResolverApiServer {\n get router(): express.Router {\n return this._router\n }\n\n private readonly _express: Express\n private readonly _agent: TAgent<IRequiredPlugins>\n private readonly _opts?: IDidAPIOpts\n private readonly _router: Router\n\n constructor(args: { agent: TAgent<IRequiredPlugins>; expressSupport: ExpressSupport; opts?: IDidAPIOpts }) {\n const { agent, opts } = args\n this._agent = agent\n copyGlobalAuthToEndpoints({ opts, keys: ['getDidMethods', 'createDid', 'resolveDid', 'deactivateDid'] })\n this._opts = opts\n this._express = args.expressSupport.express\n this._router = express.Router()\n const context = agentContext(agent)\n const features = opts?.enableFeatures ?? ['did-resolve', 'did-persist']\n console.log(`DID Uni Resolver and Registrar API enabled, with features: ${JSON.stringify(features)}}`)\n\n // DID endpoints\n if (features.includes('did-resolve')) {\n resolveDidEndpoint(this.router, context, opts?.endpointOpts?.resolveDid)\n getDidMethodsEndpoint(this.router, context, opts?.endpointOpts?.getDidMethods)\n }\n if (features.includes('did-persist')) {\n createDidEndpoint(this.router, context, opts?.endpointOpts?.createDid)\n deleteDidEndpoint(this.router, context, opts?.endpointOpts?.deactivateDid) // not in spec.\n deactivateDidEndpoint(this.router, context, opts?.endpointOpts?.deactivateDid)\n }\n this._express.use(opts?.endpointOpts?.basePath ?? '', this.router)\n }\n\n get agent(): TAgent<IRequiredPlugins> {\n return this._agent\n }\n\n get opts(): IDidAPIOpts | undefined {\n return this._opts\n }\n\n get express(): Express {\n return this._express\n }\n}\n","import { agentContext } from '@sphereon/ssi-sdk.core'\nimport { ExpressSupport } from '@sphereon/ssi-express-support'\nimport { TAgent } from '@veramo/core'\n\nimport express, { Express, Router } from 'express'\nimport { didWebDomainEndpoint } from './api-functions'\nimport { IDidWebServiceOpts, IRequiredPlugins } from './types'\n\nexport class DidWebServer {\n get router(): express.Router | undefined {\n return this._router\n }\n\n private readonly _express: Express | undefined\n private readonly _agent: TAgent<IRequiredPlugins> | undefined\n private readonly _opts?: IDidWebServiceOpts\n private readonly _router: Router | undefined\n\n constructor(args: { agent: TAgent<IRequiredPlugins>; expressSupport: ExpressSupport; opts?: IDidWebServiceOpts }) {\n const { agent, opts } = args\n const features = opts?.enableFeatures ?? []\n if (!features.includes('did-web-global-resolution')) {\n console.log('did:web hosting service NOT enabled')\n return\n }\n\n this._agent = agent\n if (opts?.globalAuth) {\n copyGlobalAuthToEndpoint(opts, 'endpointOpts')\n }\n\n this._opts = opts\n this._express = args.expressSupport.express\n this._router = express.Router()\n\n const context = agentContext(agent)\n\n console.log(`did:web hosting service enabled`)\n\n didWebDomainEndpoint(this.router!, context, opts?.endpointOpts)\n this._express.use(this.router!)\n }\n\n get agent(): TAgent<IRequiredPlugins> | undefined {\n return this._agent\n }\n\n get opts(): IDidWebServiceOpts | undefined {\n return this._opts\n }\n\n get express(): Express | undefined {\n return this._express\n }\n}\n\nfunction copyGlobalAuthToEndpoint(opts: IDidWebServiceOpts, key: string) {\n if (opts?.globalAuth) {\n // @ts-ignore\n opts[key] = {\n ...opts?.globalAuth,\n // @ts-ignore\n ...opts[key],\n }\n }\n}\n"],"mappings":"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","names":["import_ssi_sdk_ext","debug","Debug","createDidEndpoint","router","context","opts","enabled","console","log","path","post","checkAuth","endpoint","request","response","createRequest","body","sendErrorResponse","did","didMethod","query","method","parseDid","defaultMethod","allDidMethods","getAgentDIDMethods","includes","provider","jobId","v4","alias","undefined","id","identifier","state","noErrorOnExistingDid","agent","didManagerGet","e","options","storeSecrets","didManagerCreate","kms","didDocument","toDidDocument","use","JwkKeyUse","Signature","Encryption","createState","didState","statusCode","send","message","getDidMethodsEndpoint","get","methods","agentDidToResolutionResult","JSON","stringify","toDidResolutionResult","supportedMethods","error","didResolutionMetadata","didDocumentMetadata","resolveDidEndpoint","params","mode","toString","toLowerCase","resolutionResult","resolveDid","didUrl","deleteDidEndpoint","delete","result","didManagerDelete","deactivateDidEndpoint","deactivateRequest","status","json","errorDetails","didWebDomainEndpoint","length","hostname","replace","disableSubPaths","suffix","startsWith","disableWellKnown","import_ssi_express_support","UniResolverApiServer","router","_router","_express","_agent","_opts","constructor","args","agent","opts","copyGlobalAuthToEndpoints","keys","expressSupport","express","Router","context","agentContext","features","enableFeatures","console","log","JSON","stringify","includes","resolveDidEndpoint","endpointOpts","resolveDid","getDidMethodsEndpoint","getDidMethods","createDidEndpoint","createDid","deleteDidEndpoint","deactivateDid","deactivateDidEndpoint","use","basePath","import_ssi_sdk","import_express","DidWebServer","router","_router","_express","_agent","_opts","constructor","args","agent","opts","features","enableFeatures","includes","console","log","globalAuth","copyGlobalAuthToEndpoint","expressSupport","express","Router","context","agentContext","didWebDomainEndpoint","endpointOpts","use","key"]}
package/dist/index.d.cts CHANGED
@@ -1,9 +1,9 @@
1
- import { GenericAuthArgs, ISingleEndpointOpts, ExpressSupport } from '@sphereon/ssi-express-support';
2
- import { IDataStoreORM, IDIDManager, IKeyManager, IResolver, IAgentContext, TAgent } from '@veramo/core';
3
- import express, { Express, Router } from 'express';
4
1
  import { DIDDocument } from '@sphereon/did-uni-client';
2
+ import { GenericAuthArgs, ISingleEndpointOpts, ExpressSupport } from '@sphereon/ssi-express-support';
5
3
  import { JsonWebKey } from '@sphereon/ssi-types';
4
+ import { IDataStoreORM, IDIDManager, IKeyManager, IResolver, IAgentContext, TAgent } from '@veramo/core';
6
5
  import { VerificationMethod } from 'did-resolver';
6
+ import express, { Router, Express } from 'express';
7
7
 
8
8
  type IRequiredPlugins = IDataStoreORM & IDIDManager & IKeyManager & IResolver;
9
9
  type IRequiredContext = IAgentContext<IRequiredPlugins>;
@@ -99,22 +99,6 @@ interface IResolveEndpointOpts extends ISingleEndpointOpts {
99
99
  type DidWebServiceFeatures = 'did-web-global-resolution';
100
100
  type DidApiFeatures = 'did-resolve' | 'did-persist';
101
101
 
102
- declare class UniResolverApiServer {
103
- get router(): express.Router;
104
- private readonly _express;
105
- private readonly _agent;
106
- private readonly _opts?;
107
- private readonly _router;
108
- constructor(args: {
109
- agent: TAgent<IRequiredPlugins>;
110
- expressSupport: ExpressSupport;
111
- opts?: IDidAPIOpts;
112
- });
113
- get agent(): TAgent<IRequiredPlugins>;
114
- get opts(): IDidAPIOpts | undefined;
115
- get express(): Express;
116
- }
117
-
118
102
  declare function createDidEndpoint(router: Router, context: IRequiredContext, opts?: ICreateDidEndpointOpts): void;
119
103
  declare function getDidMethodsEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts): void;
120
104
  declare function resolveDidEndpoint(router: Router, context: IRequiredContext, opts?: IResolveEndpointOpts): void;
@@ -142,4 +126,36 @@ declare function deactivateDidEndpoint(router: Router, context: IRequiredContext
142
126
  */
143
127
  declare function didWebDomainEndpoint(router: Router, context: IRequiredContext, opts?: IGlobalDidWebEndpointOpts): void;
144
128
 
145
- export { type CreateState, type CreateVerificationMethod, type DidApiFeatures, type DidDocumentOperation, type DidRegistrationCreateRequest, type DidRegistrationDeactivateRequest, type DidRegistrationOptions, type DidRegistrationSecret, type DidRegistrationUpdateRequest, type DidState, type DidStateAction, type DidStateValue, type DidWebServiceFeatures, type ICreateDidEndpointOpts, type IDidAPIEndpointOpts, type IDidAPIOpts, type IDidWebServiceOpts, type IGlobalDidWebEndpointOpts, type IRequiredContext, type IRequiredPlugins, type IResolveEndpointOpts, UniResolverApiServer, createDidEndpoint, deactivateDidEndpoint, deleteDidEndpoint, didWebDomainEndpoint, getDidMethodsEndpoint, resolveDidEndpoint };
129
+ declare class UniResolverApiServer {
130
+ get router(): express.Router;
131
+ private readonly _express;
132
+ private readonly _agent;
133
+ private readonly _opts?;
134
+ private readonly _router;
135
+ constructor(args: {
136
+ agent: TAgent<IRequiredPlugins>;
137
+ expressSupport: ExpressSupport;
138
+ opts?: IDidAPIOpts;
139
+ });
140
+ get agent(): TAgent<IRequiredPlugins>;
141
+ get opts(): IDidAPIOpts | undefined;
142
+ get express(): Express;
143
+ }
144
+
145
+ declare class DidWebServer {
146
+ get router(): express.Router | undefined;
147
+ private readonly _express;
148
+ private readonly _agent;
149
+ private readonly _opts?;
150
+ private readonly _router;
151
+ constructor(args: {
152
+ agent: TAgent<IRequiredPlugins>;
153
+ expressSupport: ExpressSupport;
154
+ opts?: IDidWebServiceOpts;
155
+ });
156
+ get agent(): TAgent<IRequiredPlugins> | undefined;
157
+ get opts(): IDidWebServiceOpts | undefined;
158
+ get express(): Express | undefined;
159
+ }
160
+
161
+ export { type CreateState, type CreateVerificationMethod, type DidApiFeatures, type DidDocumentOperation, type DidRegistrationCreateRequest, type DidRegistrationDeactivateRequest, type DidRegistrationOptions, type DidRegistrationSecret, type DidRegistrationUpdateRequest, type DidState, type DidStateAction, type DidStateValue, DidWebServer, type DidWebServiceFeatures, type ICreateDidEndpointOpts, type IDidAPIEndpointOpts, type IDidAPIOpts, type IDidWebServiceOpts, type IGlobalDidWebEndpointOpts, type IRequiredContext, type IRequiredPlugins, type IResolveEndpointOpts, UniResolverApiServer, createDidEndpoint, deactivateDidEndpoint, deleteDidEndpoint, didWebDomainEndpoint, getDidMethodsEndpoint, resolveDidEndpoint };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { GenericAuthArgs, ISingleEndpointOpts, ExpressSupport } from '@sphereon/ssi-express-support';
2
- import { IDataStoreORM, IDIDManager, IKeyManager, IResolver, IAgentContext, TAgent } from '@veramo/core';
3
- import express, { Express, Router } from 'express';
4
1
  import { DIDDocument } from '@sphereon/did-uni-client';
2
+ import { GenericAuthArgs, ISingleEndpointOpts, ExpressSupport } from '@sphereon/ssi-express-support';
5
3
  import { JsonWebKey } from '@sphereon/ssi-types';
4
+ import { IDataStoreORM, IDIDManager, IKeyManager, IResolver, IAgentContext, TAgent } from '@veramo/core';
6
5
  import { VerificationMethod } from 'did-resolver';
6
+ import express, { Router, Express } from 'express';
7
7
 
8
8
  type IRequiredPlugins = IDataStoreORM & IDIDManager & IKeyManager & IResolver;
9
9
  type IRequiredContext = IAgentContext<IRequiredPlugins>;
@@ -99,22 +99,6 @@ interface IResolveEndpointOpts extends ISingleEndpointOpts {
99
99
  type DidWebServiceFeatures = 'did-web-global-resolution';
100
100
  type DidApiFeatures = 'did-resolve' | 'did-persist';
101
101
 
102
- declare class UniResolverApiServer {
103
- get router(): express.Router;
104
- private readonly _express;
105
- private readonly _agent;
106
- private readonly _opts?;
107
- private readonly _router;
108
- constructor(args: {
109
- agent: TAgent<IRequiredPlugins>;
110
- expressSupport: ExpressSupport;
111
- opts?: IDidAPIOpts;
112
- });
113
- get agent(): TAgent<IRequiredPlugins>;
114
- get opts(): IDidAPIOpts | undefined;
115
- get express(): Express;
116
- }
117
-
118
102
  declare function createDidEndpoint(router: Router, context: IRequiredContext, opts?: ICreateDidEndpointOpts): void;
119
103
  declare function getDidMethodsEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts): void;
120
104
  declare function resolveDidEndpoint(router: Router, context: IRequiredContext, opts?: IResolveEndpointOpts): void;
@@ -142,4 +126,36 @@ declare function deactivateDidEndpoint(router: Router, context: IRequiredContext
142
126
  */
143
127
  declare function didWebDomainEndpoint(router: Router, context: IRequiredContext, opts?: IGlobalDidWebEndpointOpts): void;
144
128
 
145
- export { type CreateState, type CreateVerificationMethod, type DidApiFeatures, type DidDocumentOperation, type DidRegistrationCreateRequest, type DidRegistrationDeactivateRequest, type DidRegistrationOptions, type DidRegistrationSecret, type DidRegistrationUpdateRequest, type DidState, type DidStateAction, type DidStateValue, type DidWebServiceFeatures, type ICreateDidEndpointOpts, type IDidAPIEndpointOpts, type IDidAPIOpts, type IDidWebServiceOpts, type IGlobalDidWebEndpointOpts, type IRequiredContext, type IRequiredPlugins, type IResolveEndpointOpts, UniResolverApiServer, createDidEndpoint, deactivateDidEndpoint, deleteDidEndpoint, didWebDomainEndpoint, getDidMethodsEndpoint, resolveDidEndpoint };
129
+ declare class UniResolverApiServer {
130
+ get router(): express.Router;
131
+ private readonly _express;
132
+ private readonly _agent;
133
+ private readonly _opts?;
134
+ private readonly _router;
135
+ constructor(args: {
136
+ agent: TAgent<IRequiredPlugins>;
137
+ expressSupport: ExpressSupport;
138
+ opts?: IDidAPIOpts;
139
+ });
140
+ get agent(): TAgent<IRequiredPlugins>;
141
+ get opts(): IDidAPIOpts | undefined;
142
+ get express(): Express;
143
+ }
144
+
145
+ declare class DidWebServer {
146
+ get router(): express.Router | undefined;
147
+ private readonly _express;
148
+ private readonly _agent;
149
+ private readonly _opts?;
150
+ private readonly _router;
151
+ constructor(args: {
152
+ agent: TAgent<IRequiredPlugins>;
153
+ expressSupport: ExpressSupport;
154
+ opts?: IDidWebServiceOpts;
155
+ });
156
+ get agent(): TAgent<IRequiredPlugins> | undefined;
157
+ get opts(): IDidWebServiceOpts | undefined;
158
+ get express(): Express | undefined;
159
+ }
160
+
161
+ export { type CreateState, type CreateVerificationMethod, type DidApiFeatures, type DidDocumentOperation, type DidRegistrationCreateRequest, type DidRegistrationDeactivateRequest, type DidRegistrationOptions, type DidRegistrationSecret, type DidRegistrationUpdateRequest, type DidState, type DidStateAction, type DidStateValue, DidWebServer, type DidWebServiceFeatures, type ICreateDidEndpointOpts, type IDidAPIEndpointOpts, type IDidAPIOpts, type IDidWebServiceOpts, type IGlobalDidWebEndpointOpts, type IRequiredContext, type IRequiredPlugins, type IResolveEndpointOpts, UniResolverApiServer, createDidEndpoint, deactivateDidEndpoint, deleteDidEndpoint, didWebDomainEndpoint, getDidMethodsEndpoint, resolveDidEndpoint };
package/dist/index.js CHANGED
@@ -1,11 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
- // src/uni-resolver-api-server.ts
5
- import { agentContext } from "@sphereon/ssi-sdk.core";
6
- import { copyGlobalAuthToEndpoints } from "@sphereon/ssi-express-support";
7
- import express from "express";
8
-
9
4
  // src/api-functions.ts
10
5
  import { getAgentDIDMethods, toDidDocument, toDidResolutionResult } from "@sphereon/ssi-sdk-ext.did-utils";
11
6
  import { JwkKeyUse } from "@sphereon/ssi-sdk-ext.key-utils";
@@ -274,6 +269,9 @@ function didWebDomainEndpoint(router, context, opts) {
274
269
  __name(didWebDomainEndpoint, "didWebDomainEndpoint");
275
270
 
276
271
  // src/uni-resolver-api-server.ts
272
+ import { agentContext } from "@sphereon/ssi-sdk.core";
273
+ import { copyGlobalAuthToEndpoints } from "@sphereon/ssi-express-support";
274
+ import express from "express";
277
275
  var UniResolverApiServer = class {
278
276
  static {
279
277
  __name(this, "UniResolverApiServer");
@@ -327,7 +325,62 @@ var UniResolverApiServer = class {
327
325
  return this._express;
328
326
  }
329
327
  };
328
+
329
+ // src/did-web-server.ts
330
+ import { agentContext as agentContext2 } from "@sphereon/ssi-sdk.core";
331
+ import express2 from "express";
332
+ var DidWebServer = class {
333
+ static {
334
+ __name(this, "DidWebServer");
335
+ }
336
+ get router() {
337
+ return this._router;
338
+ }
339
+ _express;
340
+ _agent;
341
+ _opts;
342
+ _router;
343
+ constructor(args) {
344
+ const { agent, opts } = args;
345
+ const features = opts?.enableFeatures ?? [];
346
+ if (!features.includes("did-web-global-resolution")) {
347
+ console.log("did:web hosting service NOT enabled");
348
+ return;
349
+ }
350
+ this._agent = agent;
351
+ if (opts?.globalAuth) {
352
+ copyGlobalAuthToEndpoint(opts, "endpointOpts");
353
+ }
354
+ this._opts = opts;
355
+ this._express = args.expressSupport.express;
356
+ this._router = express2.Router();
357
+ const context = agentContext2(agent);
358
+ console.log(`did:web hosting service enabled`);
359
+ didWebDomainEndpoint(this.router, context, opts?.endpointOpts);
360
+ this._express.use(this.router);
361
+ }
362
+ get agent() {
363
+ return this._agent;
364
+ }
365
+ get opts() {
366
+ return this._opts;
367
+ }
368
+ get express() {
369
+ return this._express;
370
+ }
371
+ };
372
+ function copyGlobalAuthToEndpoint(opts, key) {
373
+ if (opts?.globalAuth) {
374
+ opts[key] = {
375
+ ...opts?.globalAuth,
376
+ // @ts-ignore
377
+ ...opts[key]
378
+ };
379
+ }
380
+ }
381
+ __name(copyGlobalAuthToEndpoint, "copyGlobalAuthToEndpoint");
330
382
  export {
383
+ DidWebServer,
331
384
  UniResolverApiServer,
332
385
  createDidEndpoint,
333
386
  deactivateDidEndpoint,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/uni-resolver-api-server.ts","../src/api-functions.ts"],"sourcesContent":["import { agentContext } from '@sphereon/ssi-sdk.core'\nimport { copyGlobalAuthToEndpoints, ExpressSupport } from '@sphereon/ssi-express-support'\nimport { TAgent } from '@veramo/core'\n\nimport express, { Express, Router } from 'express'\nimport { createDidEndpoint, deleteDidEndpoint, deactivateDidEndpoint, getDidMethodsEndpoint, resolveDidEndpoint } from './api-functions'\nimport { IDidAPIOpts, IRequiredPlugins } from './types'\n\nexport class UniResolverApiServer {\n get router(): express.Router {\n return this._router\n }\n\n private readonly _express: Express\n private readonly _agent: TAgent<IRequiredPlugins>\n private readonly _opts?: IDidAPIOpts\n private readonly _router: Router\n\n constructor(args: { agent: TAgent<IRequiredPlugins>; expressSupport: ExpressSupport; opts?: IDidAPIOpts }) {\n const { agent, opts } = args\n this._agent = agent\n copyGlobalAuthToEndpoints({ opts, keys: ['getDidMethods', 'createDid', 'resolveDid', 'deactivateDid'] })\n this._opts = opts\n this._express = args.expressSupport.express\n this._router = express.Router()\n const context = agentContext(agent)\n const features = opts?.enableFeatures ?? ['did-resolve', 'did-persist']\n console.log(`DID Uni Resolver and Registrar API enabled, with features: ${JSON.stringify(features)}}`)\n\n // DID endpoints\n if (features.includes('did-resolve')) {\n resolveDidEndpoint(this.router, context, opts?.endpointOpts?.resolveDid)\n getDidMethodsEndpoint(this.router, context, opts?.endpointOpts?.getDidMethods)\n }\n if (features.includes('did-persist')) {\n createDidEndpoint(this.router, context, opts?.endpointOpts?.createDid)\n deleteDidEndpoint(this.router, context, opts?.endpointOpts?.deactivateDid) // not in spec.\n deactivateDidEndpoint(this.router, context, opts?.endpointOpts?.deactivateDid)\n }\n this._express.use(opts?.endpointOpts?.basePath ?? '', this.router)\n }\n\n get agent(): TAgent<IRequiredPlugins> {\n return this._agent\n }\n\n get opts(): IDidAPIOpts | undefined {\n return this._opts\n }\n\n get express(): Express {\n return this._express\n }\n}\n","import { DIDResolutionResult } from '@sphereon/did-uni-client'\nimport { getAgentDIDMethods, toDidDocument, toDidResolutionResult } from '@sphereon/ssi-sdk-ext.did-utils'\nimport { JwkKeyUse } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { checkAuth, ISingleEndpointOpts, sendErrorResponse } from '@sphereon/ssi-express-support'\nimport { parseDid } from '@sphereon/ssi-types'\nimport { IIdentifier } from '@veramo/core'\nimport { Request, Response, Router } from 'express'\nimport { v4 } from 'uuid'\nimport {\n CreateState,\n DidRegistrationCreateRequest,\n DidRegistrationDeactivateRequest,\n DidStateValue,\n ICreateDidEndpointOpts,\n IGlobalDidWebEndpointOpts,\n IRequiredContext,\n IResolveEndpointOpts,\n} from './types'\nimport Debug from 'debug'\n\nconst debug = Debug('sphereon:ssi-sdk:uni-resolver-registrar')\n\nexport function createDidEndpoint(router: Router, context: IRequiredContext, opts?: ICreateDidEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`create DID endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/identifiers'\n\n router.post(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const createRequest: DidRegistrationCreateRequest = request.body\n if (!createRequest) {\n return sendErrorResponse(response, 400, 'No DID create request present')\n }\n const did = createRequest.did\n const didMethod = (request.query.method as string) ?? (did ? parseDid(did).method : opts?.defaultMethod)\n const allDidMethods = await getAgentDIDMethods(context)\n if (!didMethod) {\n return sendErrorResponse(response, 400, 'No DID method supplied or deductible')\n } else if (did && parseDid(did).method != didMethod) {\n return sendErrorResponse(response, 400, 'DID method did not match method param')\n } else if (!allDidMethods.includes(didMethod)) {\n return sendErrorResponse(response, 400, 'DID method not supported')\n }\n const provider = `did:${didMethod}`\n const jobId = createRequest.jobId ?? v4()\n let alias: string | undefined = undefined\n if (didMethod === 'web') {\n if (!did) {\n return sendErrorResponse(response, 400, 'Please provide a value for \"did\" in the request body when creating a DID web')\n }\n alias = parseDid(did).id\n if (!alias) {\n return sendErrorResponse(response, 400, 'Could not determine alias from did:web DID value: ' + did)\n }\n }\n\n let identifier: IIdentifier | undefined\n let state: DidStateValue | undefined\n if (opts?.noErrorOnExistingDid && did) {\n try {\n identifier = await context.agent.didManagerGet({ did })\n state = 'exists'\n } catch (e) {\n // Okay, since we will create a new one\n }\n }\n if (identifier === undefined) {\n if (createRequest.options.storeSecrets === false) {\n return sendErrorResponse(response, 400, 'Only storeSecrets mode is supported currently')\n /*const memoryKMS = new SphereonKeyManager({\n store: new MemoryKeyStore(),\n kms: {'mem': new KeyManagementSystem(new MemoryPrivateKeyStore())}\n })\n identifier = await memoryKMS..didManagerCreate({provider, alias, kms: opts?.kms})*/\n } else if (createRequest.options.storeSecrets || opts?.storeSecrets) {\n identifier = await context.agent.didManagerCreate({ provider, alias, kms: opts?.kms })\n state = 'finished'\n } else {\n return sendErrorResponse(response, 400, 'Only storeSecrets mode is supported currently')\n }\n }\n if (!identifier || !state) {\n return sendErrorResponse(response, 400, 'An identifier and did state should be present at this point')\n }\n\n const didDocument = toDidDocument(identifier, { did, use: [JwkKeyUse.Signature, JwkKeyUse.Encryption] })\n const createState: CreateState = {\n jobId,\n didState: {\n did: identifier.did,\n state,\n didDocument,\n },\n }\n response.statusCode = 200\n return response.send(createState)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nexport function getDidMethodsEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Get DID methods endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/methods'\n router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const methods = await getAgentDIDMethods(context) // these are already without the 'did:' prefix\n response.statusCode = 200\n return response.send(methods)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nasync function agentDidToResolutionResult(context: IRequiredContext, did: string) {\n try {\n const identifier = await context.agent.didManagerGet({ did })\n debug(JSON.stringify(identifier, null, 2))\n return toDidResolutionResult(identifier, {\n did,\n supportedMethods: await getAgentDIDMethods(context),\n })\n } catch (error) {\n console.log(JSON.stringify(error.message))\n return {\n didDocument: null,\n didResolutionMetadata: {\n error: 'notFound',\n },\n didDocumentMetadata: {},\n }\n }\n}\n\nexport function resolveDidEndpoint(router: Router, context: IRequiredContext, opts?: IResolveEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Resolve DID endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/identifiers/:identifier'\n router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const did = request.params.identifier\n if (!did) {\n return sendErrorResponse(response, 400, 'no identifier provided')\n }\n const mode = request.query.mode?.toString().toLowerCase() ?? opts?.mode?.toLowerCase() ?? 'hybrid'\n let resolutionResult: DIDResolutionResult | undefined\n if (mode === 'local' || mode === 'hybrid') {\n resolutionResult = await agentDidToResolutionResult(context, did)\n }\n if (mode !== 'local' && !resolutionResult?.didDocument) {\n resolutionResult = await context.agent.resolveDid({ didUrl: did })\n }\n\n response.statusCode = 200\n return response.send(resolutionResult)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\n/**\n * @param router\n * @param context\n * @param opts\n */\nexport function deleteDidEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Deactivate DID endpoint is disabled`)\n return\n }\n router.delete(opts?.path ?? '/identifiers/:identifier', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const did = request.params.identifier\n if (!did) {\n return sendErrorResponse(response, 400, 'no DID provided')\n }\n\n const result = await context.agent.didManagerDelete({ did })\n if (!result) {\n return sendErrorResponse(response, 404, `id ${did} not found`)\n }\n response.statusCode = 200\n return response.send()\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nexport function deactivateDidEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log('Deactivate DID endpoint is disabled')\n return\n }\n\n router.post(opts?.path ?? '/deactivate', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const deactivateRequest: DidRegistrationDeactivateRequest = request.body\n if (!deactivateRequest) {\n return sendErrorResponse(response, 400, 'Invalid request body', { state: 'failed' })\n }\n\n const { did, jobId = v4() } = deactivateRequest\n if (!did) {\n return sendErrorResponse(response, 400, 'No DID provided', { state: 'failed' })\n }\n\n const result = await context.agent.didManagerDelete({ did })\n if (!result) {\n return sendErrorResponse(response, 404, `DID ${did} not found`, { state: 'failed' })\n }\n\n response.status(200).json({\n state: 'finished',\n did,\n jobId,\n })\n return response.send()\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, { state: 'failed', errorDetails: e })\n }\n })\n}\n\n/**\n * Endpoint that eases DID web resolution, by mapping did-web paths to stored agent DIDs.\n *\n * Typically, you will have a reverse proxy or load balancer in front of this endpoint.\n *\n * Some examples of how did:web behaves:\n * did:web:example.com resolves to https://example.com/.well-known/did.json\n * did:web:example.com:sub:paths resolves to https://example.com/sub/paths/did.json\n *\n * This endpoint translate both forms by looking at the paths that end in /did.json.\n *\n * @param router\n * @param context\n * @param opts\n */\nexport function didWebDomainEndpoint(router: Router, context: IRequiredContext, opts?: IGlobalDidWebEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`DID Web domain resolution endpoint is disabled`)\n return\n }\n router.get(opts?.path ?? ':path(*)/did.json', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const path = request.params.path\n if (!path || path.length === 0) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n let did: string\n did = `did:web:${opts?.hostname?.replace('https://', '')?.replace('http://', '') ?? request.hostname}`\n if (path !== '/.well-known') {\n if (opts?.disableSubPaths) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n const suffix = path.replace(/\\//g, ':').replace(/%2F/g, ':')\n if (!suffix.startsWith(':')) {\n did += ':'\n }\n did += suffix\n } else if (opts?.disableWellKnown) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n\n const resolutionResult = await agentDidToResolutionResult(context, did)\n if (!resolutionResult || !resolutionResult.didDocument || resolutionResult?.didResolutionMetadata?.error === 'notFound') {\n return sendErrorResponse(response, 404, 'Not found')\n }\n response.statusCode = 200\n return response.send(resolutionResult.didDocument)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n"],"mappings":"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","names":["agentContext","copyGlobalAuthToEndpoints","express","getAgentDIDMethods","toDidDocument","toDidResolutionResult","JwkKeyUse","checkAuth","sendErrorResponse","parseDid","v4","Debug","debug","Debug","createDidEndpoint","router","context","opts","enabled","console","log","path","post","checkAuth","endpoint","request","response","createRequest","body","sendErrorResponse","did","didMethod","query","method","parseDid","defaultMethod","allDidMethods","getAgentDIDMethods","includes","provider","jobId","v4","alias","undefined","id","identifier","state","noErrorOnExistingDid","agent","didManagerGet","e","options","storeSecrets","didManagerCreate","kms","didDocument","toDidDocument","use","JwkKeyUse","Signature","Encryption","createState","didState","statusCode","send","message","getDidMethodsEndpoint","get","methods","agentDidToResolutionResult","JSON","stringify","toDidResolutionResult","supportedMethods","error","didResolutionMetadata","didDocumentMetadata","resolveDidEndpoint","params","mode","toString","toLowerCase","resolutionResult","resolveDid","didUrl","deleteDidEndpoint","delete","result","didManagerDelete","deactivateDidEndpoint","deactivateRequest","status","json","errorDetails","didWebDomainEndpoint","length","hostname","replace","disableSubPaths","suffix","startsWith","disableWellKnown","UniResolverApiServer","router","_router","_express","_agent","_opts","constructor","args","agent","opts","copyGlobalAuthToEndpoints","keys","expressSupport","express","Router","context","agentContext","features","enableFeatures","console","log","JSON","stringify","includes","resolveDidEndpoint","endpointOpts","resolveDid","getDidMethodsEndpoint","getDidMethods","createDidEndpoint","createDid","deleteDidEndpoint","deactivateDid","deactivateDidEndpoint","use","basePath"]}
1
+ {"version":3,"sources":["../src/api-functions.ts","../src/uni-resolver-api-server.ts","../src/did-web-server.ts"],"sourcesContent":["import { DIDResolutionResult } from '@sphereon/did-uni-client'\nimport { getAgentDIDMethods, toDidDocument, toDidResolutionResult } from '@sphereon/ssi-sdk-ext.did-utils'\nimport { JwkKeyUse } from '@sphereon/ssi-sdk-ext.key-utils'\nimport { checkAuth, ISingleEndpointOpts, sendErrorResponse } from '@sphereon/ssi-express-support'\nimport { parseDid } from '@sphereon/ssi-types'\nimport { IIdentifier } from '@veramo/core'\nimport { Request, Response, Router } from 'express'\nimport { v4 } from 'uuid'\nimport {\n CreateState,\n DidRegistrationCreateRequest,\n DidRegistrationDeactivateRequest,\n DidStateValue,\n ICreateDidEndpointOpts,\n IGlobalDidWebEndpointOpts,\n IRequiredContext,\n IResolveEndpointOpts,\n} from './types'\nimport Debug from 'debug'\n\nconst debug = Debug('sphereon:ssi-sdk:uni-resolver-registrar')\n\nexport function createDidEndpoint(router: Router, context: IRequiredContext, opts?: ICreateDidEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`create DID endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/identifiers'\n\n router.post(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const createRequest: DidRegistrationCreateRequest = request.body\n if (!createRequest) {\n return sendErrorResponse(response, 400, 'No DID create request present')\n }\n const did = createRequest.did\n const didMethod = (request.query.method as string) ?? (did ? parseDid(did).method : opts?.defaultMethod)\n const allDidMethods = await getAgentDIDMethods(context)\n if (!didMethod) {\n return sendErrorResponse(response, 400, 'No DID method supplied or deductible')\n } else if (did && parseDid(did).method != didMethod) {\n return sendErrorResponse(response, 400, 'DID method did not match method param')\n } else if (!allDidMethods.includes(didMethod)) {\n return sendErrorResponse(response, 400, 'DID method not supported')\n }\n const provider = `did:${didMethod}`\n const jobId = createRequest.jobId ?? v4()\n let alias: string | undefined = undefined\n if (didMethod === 'web') {\n if (!did) {\n return sendErrorResponse(response, 400, 'Please provide a value for \"did\" in the request body when creating a DID web')\n }\n alias = parseDid(did).id\n if (!alias) {\n return sendErrorResponse(response, 400, 'Could not determine alias from did:web DID value: ' + did)\n }\n }\n\n let identifier: IIdentifier | undefined\n let state: DidStateValue | undefined\n if (opts?.noErrorOnExistingDid && did) {\n try {\n identifier = await context.agent.didManagerGet({ did })\n state = 'exists'\n } catch (e) {\n // Okay, since we will create a new one\n }\n }\n if (identifier === undefined) {\n if (createRequest.options.storeSecrets === false) {\n return sendErrorResponse(response, 400, 'Only storeSecrets mode is supported currently')\n /*const memoryKMS = new SphereonKeyManager({\n store: new MemoryKeyStore(),\n kms: {'mem': new KeyManagementSystem(new MemoryPrivateKeyStore())}\n })\n identifier = await memoryKMS..didManagerCreate({provider, alias, kms: opts?.kms})*/\n } else if (createRequest.options.storeSecrets || opts?.storeSecrets) {\n identifier = await context.agent.didManagerCreate({ provider, alias, kms: opts?.kms })\n state = 'finished'\n } else {\n return sendErrorResponse(response, 400, 'Only storeSecrets mode is supported currently')\n }\n }\n if (!identifier || !state) {\n return sendErrorResponse(response, 400, 'An identifier and did state should be present at this point')\n }\n\n const didDocument = toDidDocument(identifier, { did, use: [JwkKeyUse.Signature, JwkKeyUse.Encryption] })\n const createState: CreateState = {\n jobId,\n didState: {\n did: identifier.did,\n state,\n didDocument,\n },\n }\n response.statusCode = 200\n return response.send(createState)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nexport function getDidMethodsEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Get DID methods endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/methods'\n router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const methods = await getAgentDIDMethods(context) // these are already without the 'did:' prefix\n response.statusCode = 200\n return response.send(methods)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nasync function agentDidToResolutionResult(context: IRequiredContext, did: string) {\n try {\n const identifier = await context.agent.didManagerGet({ did })\n debug(JSON.stringify(identifier, null, 2))\n return toDidResolutionResult(identifier, {\n did,\n supportedMethods: await getAgentDIDMethods(context),\n })\n } catch (error) {\n console.log(JSON.stringify(error.message))\n return {\n didDocument: null,\n didResolutionMetadata: {\n error: 'notFound',\n },\n didDocumentMetadata: {},\n }\n }\n}\n\nexport function resolveDidEndpoint(router: Router, context: IRequiredContext, opts?: IResolveEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Resolve DID endpoint is disabled`)\n return\n }\n const path = opts?.path ?? '/identifiers/:identifier'\n router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const did = request.params.identifier\n if (!did) {\n return sendErrorResponse(response, 400, 'no identifier provided')\n }\n const mode = request.query.mode?.toString().toLowerCase() ?? opts?.mode?.toLowerCase() ?? 'hybrid'\n let resolutionResult: DIDResolutionResult | undefined\n if (mode === 'local' || mode === 'hybrid') {\n resolutionResult = await agentDidToResolutionResult(context, did)\n }\n if (mode !== 'local' && !resolutionResult?.didDocument) {\n resolutionResult = await context.agent.resolveDid({ didUrl: did })\n }\n\n response.statusCode = 200\n return response.send(resolutionResult)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\n/**\n * @param router\n * @param context\n * @param opts\n */\nexport function deleteDidEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`Deactivate DID endpoint is disabled`)\n return\n }\n router.delete(opts?.path ?? '/identifiers/:identifier', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const did = request.params.identifier\n if (!did) {\n return sendErrorResponse(response, 400, 'no DID provided')\n }\n\n const result = await context.agent.didManagerDelete({ did })\n if (!result) {\n return sendErrorResponse(response, 404, `id ${did} not found`)\n }\n response.statusCode = 200\n return response.send()\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n\nexport function deactivateDidEndpoint(router: Router, context: IRequiredContext, opts?: ISingleEndpointOpts) {\n if (opts?.enabled === false) {\n console.log('Deactivate DID endpoint is disabled')\n return\n }\n\n router.post(opts?.path ?? '/deactivate', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const deactivateRequest: DidRegistrationDeactivateRequest = request.body\n if (!deactivateRequest) {\n return sendErrorResponse(response, 400, 'Invalid request body', { state: 'failed' })\n }\n\n const { did, jobId = v4() } = deactivateRequest\n if (!did) {\n return sendErrorResponse(response, 400, 'No DID provided', { state: 'failed' })\n }\n\n const result = await context.agent.didManagerDelete({ did })\n if (!result) {\n return sendErrorResponse(response, 404, `DID ${did} not found`, { state: 'failed' })\n }\n\n response.status(200).json({\n state: 'finished',\n did,\n jobId,\n })\n return response.send()\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, { state: 'failed', errorDetails: e })\n }\n })\n}\n\n/**\n * Endpoint that eases DID web resolution, by mapping did-web paths to stored agent DIDs.\n *\n * Typically, you will have a reverse proxy or load balancer in front of this endpoint.\n *\n * Some examples of how did:web behaves:\n * did:web:example.com resolves to https://example.com/.well-known/did.json\n * did:web:example.com:sub:paths resolves to https://example.com/sub/paths/did.json\n *\n * This endpoint translate both forms by looking at the paths that end in /did.json.\n *\n * @param router\n * @param context\n * @param opts\n */\nexport function didWebDomainEndpoint(router: Router, context: IRequiredContext, opts?: IGlobalDidWebEndpointOpts) {\n if (opts?.enabled === false) {\n console.log(`DID Web domain resolution endpoint is disabled`)\n return\n }\n router.get(opts?.path ?? ':path(*)/did.json', checkAuth(opts?.endpoint), async (request: Request, response: Response) => {\n try {\n const path = request.params.path\n if (!path || path.length === 0) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n let did: string\n did = `did:web:${opts?.hostname?.replace('https://', '')?.replace('http://', '') ?? request.hostname}`\n if (path !== '/.well-known') {\n if (opts?.disableSubPaths) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n const suffix = path.replace(/\\//g, ':').replace(/%2F/g, ':')\n if (!suffix.startsWith(':')) {\n did += ':'\n }\n did += suffix\n } else if (opts?.disableWellKnown) {\n return sendErrorResponse(response, 404, 'Not found')\n }\n\n const resolutionResult = await agentDidToResolutionResult(context, did)\n if (!resolutionResult || !resolutionResult.didDocument || resolutionResult?.didResolutionMetadata?.error === 'notFound') {\n return sendErrorResponse(response, 404, 'Not found')\n }\n response.statusCode = 200\n return response.send(resolutionResult.didDocument)\n } catch (e) {\n return sendErrorResponse(response, 500, e.message as string, e)\n }\n })\n}\n","import { agentContext } from '@sphereon/ssi-sdk.core'\nimport { copyGlobalAuthToEndpoints, ExpressSupport } from '@sphereon/ssi-express-support'\nimport { TAgent } from '@veramo/core'\n\nimport express, { Express, Router } from 'express'\nimport { createDidEndpoint, deleteDidEndpoint, deactivateDidEndpoint, getDidMethodsEndpoint, resolveDidEndpoint } from './api-functions'\nimport { IDidAPIOpts, IRequiredPlugins } from './types'\n\nexport class UniResolverApiServer {\n get router(): express.Router {\n return this._router\n }\n\n private readonly _express: Express\n private readonly _agent: TAgent<IRequiredPlugins>\n private readonly _opts?: IDidAPIOpts\n private readonly _router: Router\n\n constructor(args: { agent: TAgent<IRequiredPlugins>; expressSupport: ExpressSupport; opts?: IDidAPIOpts }) {\n const { agent, opts } = args\n this._agent = agent\n copyGlobalAuthToEndpoints({ opts, keys: ['getDidMethods', 'createDid', 'resolveDid', 'deactivateDid'] })\n this._opts = opts\n this._express = args.expressSupport.express\n this._router = express.Router()\n const context = agentContext(agent)\n const features = opts?.enableFeatures ?? ['did-resolve', 'did-persist']\n console.log(`DID Uni Resolver and Registrar API enabled, with features: ${JSON.stringify(features)}}`)\n\n // DID endpoints\n if (features.includes('did-resolve')) {\n resolveDidEndpoint(this.router, context, opts?.endpointOpts?.resolveDid)\n getDidMethodsEndpoint(this.router, context, opts?.endpointOpts?.getDidMethods)\n }\n if (features.includes('did-persist')) {\n createDidEndpoint(this.router, context, opts?.endpointOpts?.createDid)\n deleteDidEndpoint(this.router, context, opts?.endpointOpts?.deactivateDid) // not in spec.\n deactivateDidEndpoint(this.router, context, opts?.endpointOpts?.deactivateDid)\n }\n this._express.use(opts?.endpointOpts?.basePath ?? '', this.router)\n }\n\n get agent(): TAgent<IRequiredPlugins> {\n return this._agent\n }\n\n get opts(): IDidAPIOpts | undefined {\n return this._opts\n }\n\n get express(): Express {\n return this._express\n }\n}\n","import { agentContext } from '@sphereon/ssi-sdk.core'\nimport { ExpressSupport } from '@sphereon/ssi-express-support'\nimport { TAgent } from '@veramo/core'\n\nimport express, { Express, Router } from 'express'\nimport { didWebDomainEndpoint } from './api-functions'\nimport { IDidWebServiceOpts, IRequiredPlugins } from './types'\n\nexport class DidWebServer {\n get router(): express.Router | undefined {\n return this._router\n }\n\n private readonly _express: Express | undefined\n private readonly _agent: TAgent<IRequiredPlugins> | undefined\n private readonly _opts?: IDidWebServiceOpts\n private readonly _router: Router | undefined\n\n constructor(args: { agent: TAgent<IRequiredPlugins>; expressSupport: ExpressSupport; opts?: IDidWebServiceOpts }) {\n const { agent, opts } = args\n const features = opts?.enableFeatures ?? []\n if (!features.includes('did-web-global-resolution')) {\n console.log('did:web hosting service NOT enabled')\n return\n }\n\n this._agent = agent\n if (opts?.globalAuth) {\n copyGlobalAuthToEndpoint(opts, 'endpointOpts')\n }\n\n this._opts = opts\n this._express = args.expressSupport.express\n this._router = express.Router()\n\n const context = agentContext(agent)\n\n console.log(`did:web hosting service enabled`)\n\n didWebDomainEndpoint(this.router!, context, opts?.endpointOpts)\n this._express.use(this.router!)\n }\n\n get agent(): TAgent<IRequiredPlugins> | undefined {\n return this._agent\n }\n\n get opts(): IDidWebServiceOpts | undefined {\n return this._opts\n }\n\n get express(): Express | undefined {\n return this._express\n }\n}\n\nfunction copyGlobalAuthToEndpoint(opts: IDidWebServiceOpts, key: string) {\n if (opts?.globalAuth) {\n // @ts-ignore\n opts[key] = {\n ...opts?.globalAuth,\n // @ts-ignore\n ...opts[key],\n }\n }\n}\n"],"mappings":"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","names":["getAgentDIDMethods","toDidDocument","toDidResolutionResult","JwkKeyUse","checkAuth","sendErrorResponse","parseDid","v4","Debug","debug","Debug","createDidEndpoint","router","context","opts","enabled","console","log","path","post","checkAuth","endpoint","request","response","createRequest","body","sendErrorResponse","did","didMethod","query","method","parseDid","defaultMethod","allDidMethods","getAgentDIDMethods","includes","provider","jobId","v4","alias","undefined","id","identifier","state","noErrorOnExistingDid","agent","didManagerGet","e","options","storeSecrets","didManagerCreate","kms","didDocument","toDidDocument","use","JwkKeyUse","Signature","Encryption","createState","didState","statusCode","send","message","getDidMethodsEndpoint","get","methods","agentDidToResolutionResult","JSON","stringify","toDidResolutionResult","supportedMethods","error","didResolutionMetadata","didDocumentMetadata","resolveDidEndpoint","params","mode","toString","toLowerCase","resolutionResult","resolveDid","didUrl","deleteDidEndpoint","delete","result","didManagerDelete","deactivateDidEndpoint","deactivateRequest","status","json","errorDetails","didWebDomainEndpoint","length","hostname","replace","disableSubPaths","suffix","startsWith","disableWellKnown","agentContext","copyGlobalAuthToEndpoints","express","UniResolverApiServer","router","_router","_express","_agent","_opts","constructor","args","agent","opts","copyGlobalAuthToEndpoints","keys","expressSupport","express","Router","context","agentContext","features","enableFeatures","console","log","JSON","stringify","includes","resolveDidEndpoint","endpointOpts","resolveDid","getDidMethodsEndpoint","getDidMethods","createDidEndpoint","createDid","deleteDidEndpoint","deactivateDid","deactivateDidEndpoint","use","basePath","agentContext","express","DidWebServer","router","_router","_express","_agent","_opts","constructor","args","agent","opts","features","enableFeatures","includes","console","log","globalAuth","copyGlobalAuthToEndpoint","expressSupport","express","Router","context","agentContext","didWebDomainEndpoint","endpointOpts","use","key"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk.uni-resolver-registrar-api",
3
- "version": "0.33.1-feature.vcdm2.tsup.37+a1794c54",
3
+ "version": "0.33.1-feature.vcdm2.tsup.39+76dc56ed",
4
4
  "source": "src/index.ts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -23,12 +23,12 @@
23
23
  "start:dev": "ts-node __tests__/agent.ts"
24
24
  },
25
25
  "dependencies": {
26
- "@sphereon/ssi-express-support": "^0.33.1-feature.vcdm2.tsup.37+a1794c54",
26
+ "@sphereon/ssi-express-support": "0.33.1-feature.vcdm2.tsup.39+76dc56ed",
27
27
  "@sphereon/ssi-sdk-ext.did-utils": "0.28.1-feature.esm.cjs.17",
28
28
  "@sphereon/ssi-sdk-ext.key-manager": "0.28.1-feature.esm.cjs.17",
29
29
  "@sphereon/ssi-sdk-ext.key-utils": "0.28.1-feature.esm.cjs.17",
30
- "@sphereon/ssi-sdk.core": "^0.33.1-feature.vcdm2.tsup.37+a1794c54",
31
- "@sphereon/ssi-types": "^0.33.1-feature.vcdm2.tsup.37+a1794c54",
30
+ "@sphereon/ssi-sdk.core": "0.33.1-feature.vcdm2.tsup.39+76dc56ed",
31
+ "@sphereon/ssi-types": "0.33.1-feature.vcdm2.tsup.39+76dc56ed",
32
32
  "@veramo/core": "4.2.0",
33
33
  "body-parser": "^1.20.2",
34
34
  "casbin": "^5.30.0",
@@ -45,8 +45,8 @@
45
45
  "@sphereon/did-uni-client": "^0.6.3",
46
46
  "@sphereon/ssi-sdk-ext.did-provider-jwk": "0.28.1-feature.esm.cjs.17",
47
47
  "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.28.1-feature.esm.cjs.17",
48
- "@sphereon/ssi-sdk.data-store": "^0.33.1-feature.vcdm2.tsup.37+a1794c54",
49
- "@sphereon/ssi-sdk.vc-handler-ld-local": "^0.33.1-feature.vcdm2.tsup.37+a1794c54",
48
+ "@sphereon/ssi-sdk.data-store": "0.33.1-feature.vcdm2.tsup.39+76dc56ed",
49
+ "@sphereon/ssi-sdk.vc-handler-ld-local": "0.33.1-feature.vcdm2.tsup.39+76dc56ed",
50
50
  "@types/body-parser": "^1.19.5",
51
51
  "@types/cookie-parser": "^1.4.7",
52
52
  "@types/cors": "^2.8.17",
@@ -101,5 +101,5 @@
101
101
  "Inversal Registrar",
102
102
  "DIF"
103
103
  ],
104
- "gitHead": "a1794c54131d9daec6111d1c90d6cded2fa412f4"
104
+ "gitHead": "76dc56eda0f9d350912293ce21412df5b09f843a"
105
105
  }
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @public
3
3
  */
4
- export * from './uni-resolver-api-server'
5
4
  export * from './types'
6
5
  export * from './api-functions'
6
+ export * from './uni-resolver-api-server'
7
+ export * from './did-web-server'