@sphereon/ssi-sdk.oid4vci-issuer-store 0.36.1-feature.SSISDK.82.and.SSISDK.70.37 → 0.36.1-feature.SSISDK.89.metadata.persistence.103

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
@@ -360,12 +360,30 @@ var require_plugin_schema = __commonJS({
360
360
  var index_exports = {};
361
361
  __export(index_exports, {
362
362
  OID4VCIStore: () => OID4VCIStore,
363
+ oid4vciStoreMethods: () => oid4vciStoreMethods,
363
364
  schema: () => schema
364
365
  });
365
366
  module.exports = __toCommonJS(index_exports);
366
367
 
367
368
  // src/agent/OID4VCIStore.ts
368
369
  var import_ssi_sdk = require("@sphereon/ssi-sdk.kv-store-temp");
370
+ var oid4vciStoreMethods = [
371
+ "oid4vciStoreDefaultMetadata",
372
+ "oid4vciStoreDefaultIssuerOptions",
373
+ "oid4vciStoreDefaultStoreId",
374
+ "oid4vciStoreDefaultNamespace",
375
+ "oid4vciStoreGetIssuerOpts",
376
+ "oid4vciStoreHasIssuerOpts",
377
+ "oid4vciStorePersistIssuerOpts",
378
+ "oid4vciStoreRemoveIssuerOpts",
379
+ "oid4vciStoreClearAllIssuerOpts",
380
+ "oid4vciStoreGetMetadata",
381
+ "oid4vciStoreListMetadata",
382
+ "oid4vciStoreHasMetadata",
383
+ "oid4vciStorePersistMetadata",
384
+ "oid4vciStoreRemoveMetadata",
385
+ "oid4vciStoreClearAllMetadata"
386
+ ];
369
387
  var OID4VCIStore = class {
370
388
  static {
371
389
  __name(this, "OID4VCIStore");
@@ -426,17 +444,7 @@ var OID4VCIStore = class {
426
444
  }));
427
445
  }
428
446
  if (opts && Array.isArray(opts?.importMetadatas)) {
429
- opts.importMetadatas.forEach((metaImport) => {
430
- const meta = metaImport;
431
- void this.oid4vciStorePersistMetadata({
432
- metadataType: meta.metadataType,
433
- metadata: meta.metadata,
434
- storeId: meta.storeId ?? this.defaultStoreId,
435
- correlationId: meta.correlationId,
436
- namespace: meta.namespace ?? this.defaultNamespace,
437
- overwriteExisting: meta.overwriteExisting === void 0 ? true : meta.overwriteExisting
438
- });
439
- });
447
+ void this.importMetadatas(opts.importMetadatas);
440
448
  }
441
449
  if (opts?.issuerOptsStores && opts.issuerOptsStores instanceof Map) {
442
450
  this._optionStores = opts.issuerOptsStores;
@@ -464,6 +472,73 @@ var OID4VCIStore = class {
464
472
  importIssuerOpts(importOpts) {
465
473
  importOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt));
466
474
  }
475
+ async importMetadatas(metadataImports) {
476
+ for (const metaImport of metadataImports) {
477
+ const meta = metaImport;
478
+ const storeId = meta.storeId ?? this.defaultStoreId;
479
+ const namespace = meta.namespace ?? this.defaultNamespace;
480
+ const correlationId = meta.correlationId;
481
+ const existingMetadata = await this.oid4vciStoreGetMetadata({
482
+ metadataType: meta.metadataType,
483
+ correlationId,
484
+ storeId,
485
+ namespace
486
+ });
487
+ let metadataToPersist;
488
+ if (existingMetadata) {
489
+ if (meta.overwriteExisting === false) {
490
+ continue;
491
+ }
492
+ metadataToPersist = this.deepMerge(existingMetadata, meta.metadata);
493
+ } else {
494
+ metadataToPersist = meta.metadata;
495
+ }
496
+ await this.oid4vciStorePersistMetadata({
497
+ metadataType: meta.metadataType,
498
+ metadata: metadataToPersist,
499
+ storeId,
500
+ correlationId,
501
+ namespace,
502
+ // We set this to true because we have already handled the merge/overwrite logic above.
503
+ // We are now saving the final, combined object.
504
+ overwriteExisting: true
505
+ });
506
+ }
507
+ }
508
+ /**
509
+ * Generic Deep Merge.
510
+ * - Recursively merges objects.
511
+ * - Overwrites primitives and arrays (Arrays are treated as values).
512
+ * - Naturally handles 'credential_configurations_supported' by merging the keys of the map.
513
+ */
514
+ deepMerge(existing, incoming) {
515
+ if (!incoming) {
516
+ return existing;
517
+ }
518
+ if (!existing) {
519
+ return incoming;
520
+ }
521
+ const merged = {
522
+ ...existing
523
+ };
524
+ for (const key in incoming) {
525
+ if (!Object.prototype.hasOwnProperty.call(incoming, key)) {
526
+ continue;
527
+ }
528
+ const incomingValue = incoming[key];
529
+ const existingValue = existing[key];
530
+ if (this.isPlainObject(incomingValue) && this.isPlainObject(existingValue)) {
531
+ merged[key] = this.deepMerge(existingValue, incomingValue);
532
+ } else if (incomingValue !== void 0) {
533
+ merged[key] = incomingValue;
534
+ }
535
+ }
536
+ return merged;
537
+ }
538
+ // Type guard to check if value is a plain object (and not an array or null)
539
+ isPlainObject(value) {
540
+ return typeof value === "object" && value !== null && !Array.isArray(value);
541
+ }
467
542
  async oid4vciStoreHasIssuerOpts({ correlationId, storeId, namespace }) {
468
543
  return this.store({
469
544
  stores: this._optionStores,
@@ -1 +1 @@
1
- {"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/agent/OID4VCIStore.ts"],"sourcesContent":["{\n \"IDidAuthSiopOpAuthenticator\": {\n \"components\": {\n \"schemas\": {\n \"IGetSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSessionForSiop } \"\n },\n \"IRegisterSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"identifier\": {\n \"type\": \"object\",\n \"properties\": {\n \"did\": {\n \"type\": \"string\"\n },\n \"alias\": {\n \"type\": \"string\"\n },\n \"provider\": {\n \"type\": \"string\"\n },\n \"controllerKeyId\": {\n \"type\": \"string\"\n },\n \"keys\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n },\n \"services\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"did\", \"provider\", \"keys\", \"services\"]\n },\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"expiresIn\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"identifier\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.registerSessionForSiop } \"\n },\n \"IRemoveSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.removeSessionForSiop } \"\n },\n \"IAuthenticateWithSiopArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.authenticateWithSiop } \"\n },\n \"IResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": true\n },\n \"required\": [\"status\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.authenticateWithSiop & DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n },\n \"IGetSiopAuthenticationRequestFromRpArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"jwt\": {\n \"type\": \"string\"\n },\n \"requestPayload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"registration\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"jwt\", \"requestPayload\", \"registration\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"IGetSiopAuthenticationRequestDetailsArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"credentialFilter\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IAuthRequestDetails\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"alsoKnownAs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"vpResponseOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"id\", \"vpResponseOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IVerifySiopAuthenticationRequestUriArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"ParsedAuthenticationRequestURI\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"VerifiedAuthorizationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"payload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"presentationDefinitions\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifyOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"payload\", \"verifyOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"ISendSiopAuthenticationResponseArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifiablePresentationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n }\n },\n \"methods\": {\n \"getSessionForSiop\": {\n \"description\": \"Get SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"registerSessionForSiop\": {\n \"description\": \"Register SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRegisterSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"removeSessionForSiop\": {\n \"description\": \"Remove SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRemoveSiopSessionArgs\"\n },\n \"returnType\": \"boolean\"\n },\n \"authenticateWithSiop\": {\n \"description\": \"Authenticate using DID Auth SIOP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IAuthenticateWithSiopArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/Response\"\n }\n },\n \"getSiopAuthenticationRequestFromRP\": {\n \"description\": \"Get authentication request from RP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestFromRpArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ParsedAuthenticationRequestURI\"\n }\n },\n \"getSiopAuthenticationRequestDetails\": {\n \"description\": \"Get authentication request details\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestDetailsArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IAuthRequestDetails\"\n }\n },\n \"verifySiopAuthenticationRequestURI\": {\n \"description\": \"Verify authentication request URI\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IVerifySiopAuthenticationRequestUriArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/VerifiedAuthorizationRequest\"\n }\n },\n \"sendSiopAuthenticationResponse\": {\n \"description\": \"Send authentication response\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISendSiopAuthenticationResponseArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IRequiredContext\"\n }\n }\n }\n }\n }\n}\n","/**\n * @public\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\nexport { OID4VCIStore } from './agent/OID4VCIStore'\nexport * from './types/IOID4VCIStore'\n","import { AuthorizationServerMetadata, IssuerMetadata } from '@sphereon/oid4vci-common'\nimport { IKeyValueStore, IValueData, KeyValueStore, ValueStoreType } from '@sphereon/ssi-sdk.kv-store-temp'\nimport { IAgentPlugin } from '@veramo/core'\nimport {\n IIssuerDefaultOpts,\n IIssuerMetadataImportArgs,\n IIssuerOptions,\n IIssuerOptsImportArgs,\n IIssuerOptsPersistArgs,\n IMetadataImportArgs,\n IMetadataPersistArgs,\n Ioid4vciStoreClearArgs,\n Ioid4vciStoreExistsArgs,\n IOid4vciStoreGetArgs,\n IOid4vciStoreListArgs,\n IOID4VCIStoreOpts,\n Ioid4vciStoreRemoveArgs,\n OptionalIssuerMetadata,\n OptionalIssuerMetadataValue,\n} from '../index'\n\nimport { IOID4VCIStore } from '../types/IOID4VCIStore'\n\nexport class OID4VCIStore implements IAgentPlugin {\n get defaultOpts(): IIssuerDefaultOpts | undefined {\n return this._defaultOpts\n }\n\n set defaultOpts(value: IIssuerDefaultOpts | undefined) {\n this._defaultOpts = value\n }\n\n private readonly _issuerMetadataStores: Map<string, IKeyValueStore<IssuerMetadata>>\n private readonly _authorizationServerMetadataStores: Map<string, IKeyValueStore<AuthorizationServerMetadata>>\n private readonly _optionStores: Map<string, IKeyValueStore<IIssuerOptions>>\n private readonly defaultStoreId: string\n private readonly defaultNamespace: string\n\n private _defaultOpts?: IIssuerDefaultOpts\n\n readonly methods: IOID4VCIStore = {\n oid4vciStoreDefaultMetadata: this.oid4vciStoreDefaultMetadata.bind(this),\n oid4vciStoreDefaultIssuerOptions: this.oid4vciStoreIssuerOptions.bind(this),\n oid4vciStoreDefaultStoreId: this.oid4vciStoreDefaultStoreId.bind(this),\n oid4vciStoreDefaultNamespace: this.oid4vciStoreDefaultNamespace.bind(this),\n\n oid4vciStoreGetIssuerOpts: this.oid4vciStoreGetIssuerOpts.bind(this),\n oid4vciStoreHasIssuerOpts: this.oid4vciStoreHasIssuerOpts.bind(this),\n oid4vciStorePersistIssuerOpts: this.oid4vciStorePersistIssuerOpts.bind(this),\n oid4vciStoreRemoveIssuerOpts: this.oid4vciStoreRemoveIssuerOpts.bind(this),\n oid4vciStoreClearAllIssuerOpts: this.oid4vciStoreClearAllIssuerOpts.bind(this),\n\n oid4vciStoreGetMetadata: this.oid4vciStoreGetMetadata.bind(this),\n oid4vciStoreListMetadata: this.oid4vciStoreListMetadata.bind(this),\n oid4vciStoreHasMetadata: this.oid4vciStoreHasMetadata.bind(this),\n oid4vciStorePersistMetadata: this.oid4vciStorePersistMetadata.bind(this),\n oid4vciStoreRemoveMetadata: this.oid4vciStoreRemoveMetadata.bind(this),\n oid4vciStoreClearAllMetadata: this.oid4vciStoreClearAllMetadata.bind(this),\n }\n\n constructor(opts: IOID4VCIStoreOpts) {\n this.defaultStoreId = opts.defaultStore ?? '_default'\n this.defaultNamespace = opts.defaultNamespace ?? 'oid4vci'\n if (opts.defaultOpts) {\n this._defaultOpts = opts.defaultOpts\n }\n if (opts?.issuerMetadataStores && opts.issuerMetadataStores instanceof Map) {\n this._issuerMetadataStores = opts.issuerMetadataStores\n } else if (opts?.issuerMetadataStores) {\n this._issuerMetadataStores = new Map().set(this.defaultStoreId, opts.issuerMetadataStores)\n } else {\n this._issuerMetadataStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, IssuerMetadata>(),\n }),\n )\n }\n if (opts?.authorizationServerMetadataStores && opts.authorizationServerMetadataStores instanceof Map) {\n this._authorizationServerMetadataStores = opts.authorizationServerMetadataStores\n } else if (opts?.authorizationServerMetadataStores) {\n this._authorizationServerMetadataStores = new Map().set(this.defaultStoreId, opts.authorizationServerMetadataStores)\n } else {\n this._authorizationServerMetadataStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, AuthorizationServerMetadata>(),\n }),\n )\n }\n\n if (opts && Array.isArray(opts?.importMetadatas)) {\n opts.importMetadatas.forEach((metaImport: IMetadataImportArgs) => {\n const meta = metaImport as IIssuerMetadataImportArgs\n void this.oid4vciStorePersistMetadata({\n metadataType: meta.metadataType,\n metadata: meta.metadata,\n storeId: meta.storeId ?? this.defaultStoreId,\n correlationId: meta.correlationId,\n namespace: meta.namespace ?? this.defaultNamespace,\n overwriteExisting: meta.overwriteExisting === undefined ? true : meta.overwriteExisting,\n })\n })\n }\n\n if (opts?.issuerOptsStores && opts.issuerOptsStores instanceof Map) {\n this._optionStores = opts.issuerOptsStores\n } else if (opts?.issuerOptsStores) {\n this._optionStores = new Map().set(this.defaultStoreId, opts.issuerOptsStores)\n } else {\n this._optionStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, IIssuerOptions>(),\n }),\n )\n }\n if (opts && Array.isArray(opts?.importIssuerOpts)) {\n opts.importIssuerOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))\n }\n }\n\n private async oid4vciStoreGetIssuerOpts({ correlationId, storeId, namespace }: IOid4vciStoreGetArgs): Promise<IIssuerOptions | undefined> {\n return (\n (await this.store({ stores: this._optionStores, storeId }).get(\n this.prefix({\n namespace,\n correlationId,\n }),\n )) ?? this.defaultOpts\n )\n }\n\n public importIssuerOpts(importOpts: IIssuerOptsImportArgs[]) {\n importOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))\n }\n\n private async oid4vciStoreHasIssuerOpts({ correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {\n return this.store({ stores: this._optionStores, storeId }).has(this.prefix({ namespace, correlationId }))\n }\n\n private async oid4vciStorePersistIssuerOpts(args: IIssuerOptsPersistArgs): Promise<IValueData<IIssuerOptions>> {\n const storeId = this.storeIdStr(args)\n const namespace = this.namespaceStr(args)\n const { correlationId, issuerOpts, ttl } = args\n if (args?.validation !== false) {\n //todo\n }\n const existing = await this.store({ stores: this._optionStores, storeId }).getAsValueData(\n this.prefix({\n namespace,\n correlationId,\n }),\n )\n if (!existing.value || (existing.value && args.overwriteExisting !== false)) {\n return await this.store({ stores: this._optionStores, storeId }).set(\n this.prefix({\n namespace,\n correlationId,\n }),\n issuerOpts,\n ttl,\n )\n }\n return existing\n }\n\n private async oid4vciStoreRemoveIssuerOpts({ storeId, correlationId, namespace }: Ioid4vciStoreRemoveArgs): Promise<boolean> {\n return this.store({ stores: this._optionStores, storeId }).delete(this.prefix({ namespace, correlationId }))\n }\n\n private async oid4vciStoreClearAllIssuerOpts({ storeId }: Ioid4vciStoreClearArgs): Promise<boolean> {\n return await this.store({ stores: this._optionStores, storeId })\n .clear()\n .then(() => true)\n }\n\n private async oid4vciStoreGetMetadata({\n metadataType,\n correlationId,\n storeId,\n namespace,\n }: IOid4vciStoreGetArgs): Promise<IssuerMetadata | AuthorizationServerMetadata | undefined> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).get(this.prefix({ namespace, correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).get(this.prefix({ namespace, correlationId }))\n }\n return undefined\n }\n\n private async oid4vciStoreListMetadata({ metadataType, storeId, namespace }: IOid4vciStoreListArgs): Promise<Array<OptionalIssuerMetadata>> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).getMany([`${this.namespaceStr({ namespace })}`])\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).getMany([`${this.namespaceStr({ namespace })}`])\n }\n return []\n }\n\n private async oid4vciStoreHasMetadata({ metadataType, correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).has(this.prefix({ namespace, correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).has(this.prefix({ namespace, correlationId }))\n }\n return false\n }\n\n private async oid4vciStorePersistMetadata(args: IMetadataPersistArgs): Promise<OptionalIssuerMetadataValue> {\n const namespace = this.namespaceStr(args)\n const storeId = this.storeIdStr(args)\n const { correlationId, metadata, ttl, metadataType } = args\n\n if (args?.validation !== false) {\n //todo\n }\n\n switch (metadataType) {\n case 'authorizationServer':\n const existingAuth = await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).getAsValueData(this.prefix({ namespace, correlationId }))\n\n if (!existingAuth.value || (existingAuth.value && args.overwriteExisting !== false)) {\n return await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).set(this.prefix({ namespace, correlationId }), metadata as AuthorizationServerMetadata, ttl)\n }\n return existingAuth\n case 'issuer':\n const existingIssuer = await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).getAsValueData(this.prefix({ namespace, correlationId }))\n\n if (!existingIssuer.value || (existingIssuer.value && args.overwriteExisting !== false)) {\n return await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).set(this.prefix({ namespace, correlationId }), metadata as IssuerMetadata, ttl)\n }\n return existingIssuer\n }\n return undefined\n }\n\n private async oid4vciStoreRemoveMetadata(args: Ioid4vciStoreRemoveArgs): Promise<boolean> {\n const namespace = this.namespaceStr(args)\n const storeId = this.storeIdStr(args)\n\n switch (args.metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).delete(this.prefix({ namespace, correlationId: args.correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).delete(this.prefix({ namespace, correlationId: args.correlationId }))\n }\n return false\n }\n\n private async oid4vciStoreClearAllMetadata({ metadataType, storeId }: Ioid4vciStoreClearArgs): Promise<boolean> {\n switch (metadataType) {\n case 'authorizationServer':\n return await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n })\n .clear()\n .then(() => true)\n case 'issuer':\n return await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n })\n .clear()\n .then(() => true)\n }\n return false\n }\n\n private oid4vciStoreIssuerOptions(): Promise<IKeyValueStore<IIssuerOptions>> {\n return Promise.resolve(this.store({ stores: this._optionStores, storeId: this.defaultStoreId }))\n }\n\n private oid4vciStoreDefaultMetadata(): Promise<IKeyValueStore<IssuerMetadata>> {\n return Promise.resolve(this.store({ stores: this._issuerMetadataStores, storeId: this.defaultStoreId }))\n }\n\n private oid4vciStoreDefaultStoreId(): Promise<string> {\n return Promise.resolve(this.defaultStoreId)\n }\n\n private oid4vciStoreDefaultNamespace(): Promise<string> {\n return Promise.resolve(this.defaultNamespace)\n }\n\n private store<T extends ValueStoreType>(args: { stores: Map<string, IKeyValueStore<T>>; storeId?: string }): IKeyValueStore<T> {\n const storeId = this.storeIdStr({ storeId: args.storeId })\n const store = args.stores.get(storeId)\n if (!store) {\n throw Error(`Could not get issuer metadata store: ${storeId}`)\n }\n return store\n }\n\n private storeIdStr({ storeId }: { storeId?: string }): string {\n return storeId ?? this.defaultStoreId\n }\n\n private namespaceStr({ namespace }: { namespace?: string }): string {\n return namespace ?? this.defaultNamespace\n }\n\n private prefix({ namespace, correlationId }: { namespace?: string; correlationId: string }): string {\n return `${this.namespaceStr({ namespace })}:${correlationId}`\n }\n}\n"],"mappings":"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","names":["module","OID4VCIStore","defaultOpts","_defaultOpts","value","_issuerMetadataStores","_authorizationServerMetadataStores","_optionStores","defaultStoreId","defaultNamespace","methods","oid4vciStoreDefaultMetadata","bind","oid4vciStoreDefaultIssuerOptions","oid4vciStoreIssuerOptions","oid4vciStoreDefaultStoreId","oid4vciStoreDefaultNamespace","oid4vciStoreGetIssuerOpts","oid4vciStoreHasIssuerOpts","oid4vciStorePersistIssuerOpts","oid4vciStoreRemoveIssuerOpts","oid4vciStoreClearAllIssuerOpts","oid4vciStoreGetMetadata","oid4vciStoreListMetadata","oid4vciStoreHasMetadata","oid4vciStorePersistMetadata","oid4vciStoreRemoveMetadata","oid4vciStoreClearAllMetadata","opts","defaultStore","issuerMetadataStores","Map","set","KeyValueStore","namespace","store","authorizationServerMetadataStores","Array","isArray","importMetadatas","forEach","metaImport","meta","metadataType","metadata","storeId","correlationId","overwriteExisting","undefined","issuerOptsStores","importIssuerOpts","opt","stores","get","prefix","importOpts","has","args","storeIdStr","namespaceStr","issuerOpts","ttl","validation","existing","getAsValueData","delete","clear","then","getMany","existingAuth","existingIssuer","Promise","resolve","Error","schema","require"]}
1
+ {"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/agent/OID4VCIStore.ts"],"sourcesContent":["{\n \"IDidAuthSiopOpAuthenticator\": {\n \"components\": {\n \"schemas\": {\n \"IGetSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSessionForSiop } \"\n },\n \"IRegisterSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"identifier\": {\n \"type\": \"object\",\n \"properties\": {\n \"did\": {\n \"type\": \"string\"\n },\n \"alias\": {\n \"type\": \"string\"\n },\n \"provider\": {\n \"type\": \"string\"\n },\n \"controllerKeyId\": {\n \"type\": \"string\"\n },\n \"keys\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n },\n \"services\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"did\", \"provider\", \"keys\", \"services\"]\n },\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"expiresIn\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"identifier\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.registerSessionForSiop } \"\n },\n \"IRemoveSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.removeSessionForSiop } \"\n },\n \"IAuthenticateWithSiopArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.authenticateWithSiop } \"\n },\n \"IResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": true\n },\n \"required\": [\"status\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.authenticateWithSiop & DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n },\n \"IGetSiopAuthenticationRequestFromRpArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"jwt\": {\n \"type\": \"string\"\n },\n \"requestPayload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"registration\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"jwt\", \"requestPayload\", \"registration\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"IGetSiopAuthenticationRequestDetailsArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"credentialFilter\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IAuthRequestDetails\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"alsoKnownAs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"vpResponseOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"id\", \"vpResponseOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IVerifySiopAuthenticationRequestUriArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"ParsedAuthenticationRequestURI\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"VerifiedAuthorizationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"payload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"presentationDefinitions\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifyOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"payload\", \"verifyOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"ISendSiopAuthenticationResponseArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifiablePresentationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n }\n },\n \"methods\": {\n \"getSessionForSiop\": {\n \"description\": \"Get SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"registerSessionForSiop\": {\n \"description\": \"Register SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRegisterSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"removeSessionForSiop\": {\n \"description\": \"Remove SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRemoveSiopSessionArgs\"\n },\n \"returnType\": \"boolean\"\n },\n \"authenticateWithSiop\": {\n \"description\": \"Authenticate using DID Auth SIOP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IAuthenticateWithSiopArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/Response\"\n }\n },\n \"getSiopAuthenticationRequestFromRP\": {\n \"description\": \"Get authentication request from RP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestFromRpArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ParsedAuthenticationRequestURI\"\n }\n },\n \"getSiopAuthenticationRequestDetails\": {\n \"description\": \"Get authentication request details\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestDetailsArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IAuthRequestDetails\"\n }\n },\n \"verifySiopAuthenticationRequestURI\": {\n \"description\": \"Verify authentication request URI\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IVerifySiopAuthenticationRequestUriArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/VerifiedAuthorizationRequest\"\n }\n },\n \"sendSiopAuthenticationResponse\": {\n \"description\": \"Send authentication response\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISendSiopAuthenticationResponseArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IRequiredContext\"\n }\n }\n }\n }\n }\n}\n","/**\n * @public\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\nexport { OID4VCIStore, oid4vciStoreMethods } from './agent/OID4VCIStore'\nexport * from './types/IOID4VCIStore'\n","import { AuthorizationServerMetadata, IssuerMetadata } from '@sphereon/oid4vci-common'\nimport { IKeyValueStore, IValueData, KeyValueStore, ValueStoreType } from '@sphereon/ssi-sdk.kv-store-temp'\nimport { IAgentPlugin } from '@veramo/core'\nimport {\n IIssuerDefaultOpts,\n IIssuerMetadataImportArgs,\n IIssuerOptions,\n IIssuerOptsImportArgs,\n IIssuerOptsPersistArgs,\n IMetadataImportArgs,\n IMetadataPersistArgs,\n Ioid4vciStoreClearArgs,\n Ioid4vciStoreExistsArgs,\n IOid4vciStoreGetArgs,\n IOid4vciStoreListArgs,\n IOID4VCIStoreOpts,\n Ioid4vciStoreRemoveArgs,\n OptionalIssuerMetadata,\n OptionalIssuerMetadataValue,\n} from '../index'\n\nimport { IOID4VCIStore } from '../types/IOID4VCIStore'\n\nexport const oid4vciStoreMethods: Array<string> = [\n 'oid4vciStoreDefaultMetadata',\n 'oid4vciStoreDefaultIssuerOptions',\n 'oid4vciStoreDefaultStoreId',\n 'oid4vciStoreDefaultNamespace',\n 'oid4vciStoreGetIssuerOpts',\n 'oid4vciStoreHasIssuerOpts',\n 'oid4vciStorePersistIssuerOpts',\n 'oid4vciStoreRemoveIssuerOpts',\n 'oid4vciStoreClearAllIssuerOpts',\n 'oid4vciStoreGetMetadata',\n 'oid4vciStoreListMetadata',\n 'oid4vciStoreHasMetadata',\n 'oid4vciStorePersistMetadata',\n 'oid4vciStoreRemoveMetadata',\n 'oid4vciStoreClearAllMetadata',\n]\n\nexport class OID4VCIStore implements IAgentPlugin {\n get defaultOpts(): IIssuerDefaultOpts | undefined {\n return this._defaultOpts\n }\n\n set defaultOpts(value: IIssuerDefaultOpts | undefined) {\n this._defaultOpts = value\n }\n\n private readonly _issuerMetadataStores: Map<string, IKeyValueStore<IssuerMetadata>>\n private readonly _authorizationServerMetadataStores: Map<string, IKeyValueStore<AuthorizationServerMetadata>>\n private readonly _optionStores: Map<string, IKeyValueStore<IIssuerOptions>>\n private readonly defaultStoreId: string\n private readonly defaultNamespace: string\n\n private _defaultOpts?: IIssuerDefaultOpts\n\n readonly methods: IOID4VCIStore = {\n oid4vciStoreDefaultMetadata: this.oid4vciStoreDefaultMetadata.bind(this),\n oid4vciStoreDefaultIssuerOptions: this.oid4vciStoreIssuerOptions.bind(this),\n oid4vciStoreDefaultStoreId: this.oid4vciStoreDefaultStoreId.bind(this),\n oid4vciStoreDefaultNamespace: this.oid4vciStoreDefaultNamespace.bind(this),\n\n oid4vciStoreGetIssuerOpts: this.oid4vciStoreGetIssuerOpts.bind(this),\n oid4vciStoreHasIssuerOpts: this.oid4vciStoreHasIssuerOpts.bind(this),\n oid4vciStorePersistIssuerOpts: this.oid4vciStorePersistIssuerOpts.bind(this),\n oid4vciStoreRemoveIssuerOpts: this.oid4vciStoreRemoveIssuerOpts.bind(this),\n oid4vciStoreClearAllIssuerOpts: this.oid4vciStoreClearAllIssuerOpts.bind(this),\n\n oid4vciStoreGetMetadata: this.oid4vciStoreGetMetadata.bind(this),\n oid4vciStoreListMetadata: this.oid4vciStoreListMetadata.bind(this),\n oid4vciStoreHasMetadata: this.oid4vciStoreHasMetadata.bind(this),\n oid4vciStorePersistMetadata: this.oid4vciStorePersistMetadata.bind(this),\n oid4vciStoreRemoveMetadata: this.oid4vciStoreRemoveMetadata.bind(this),\n oid4vciStoreClearAllMetadata: this.oid4vciStoreClearAllMetadata.bind(this),\n }\n\n constructor(opts: IOID4VCIStoreOpts) {\n this.defaultStoreId = opts.defaultStore ?? '_default'\n this.defaultNamespace = opts.defaultNamespace ?? 'oid4vci'\n if (opts.defaultOpts) {\n this._defaultOpts = opts.defaultOpts\n }\n if (opts?.issuerMetadataStores && opts.issuerMetadataStores instanceof Map) {\n this._issuerMetadataStores = opts.issuerMetadataStores\n } else if (opts?.issuerMetadataStores) {\n this._issuerMetadataStores = new Map().set(this.defaultStoreId, opts.issuerMetadataStores)\n } else {\n this._issuerMetadataStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, IssuerMetadata>(),\n }),\n )\n }\n if (opts?.authorizationServerMetadataStores && opts.authorizationServerMetadataStores instanceof Map) {\n this._authorizationServerMetadataStores = opts.authorizationServerMetadataStores\n } else if (opts?.authorizationServerMetadataStores) {\n this._authorizationServerMetadataStores = new Map().set(this.defaultStoreId, opts.authorizationServerMetadataStores)\n } else {\n this._authorizationServerMetadataStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, AuthorizationServerMetadata>(),\n }),\n )\n }\n\n if (opts && Array.isArray(opts?.importMetadatas)) {\n void this.importMetadatas(opts.importMetadatas)\n }\n\n if (opts?.issuerOptsStores && opts.issuerOptsStores instanceof Map) {\n this._optionStores = opts.issuerOptsStores\n } else if (opts?.issuerOptsStores) {\n this._optionStores = new Map().set(this.defaultStoreId, opts.issuerOptsStores)\n } else {\n this._optionStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, IIssuerOptions>(),\n }),\n )\n }\n if (opts && Array.isArray(opts?.importIssuerOpts)) {\n opts.importIssuerOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))\n }\n }\n\n private async oid4vciStoreGetIssuerOpts({ correlationId, storeId, namespace }: IOid4vciStoreGetArgs): Promise<IIssuerOptions | undefined> {\n return (\n (await this.store({ stores: this._optionStores, storeId }).get(\n this.prefix({\n namespace,\n correlationId,\n }),\n )) ?? this.defaultOpts\n )\n }\n\n public importIssuerOpts(importOpts: IIssuerOptsImportArgs[]) {\n importOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))\n }\n\n private async importMetadatas(metadataImports: IMetadataImportArgs[]): Promise<void> {\n for (const metaImport of metadataImports) {\n const meta = metaImport as IIssuerMetadataImportArgs\n const storeId = meta.storeId ?? this.defaultStoreId\n const namespace = meta.namespace ?? this.defaultNamespace\n const correlationId = meta.correlationId\n\n const existingMetadata = await this.oid4vciStoreGetMetadata({\n metadataType: meta.metadataType,\n correlationId,\n storeId,\n namespace,\n })\n\n let metadataToPersist: IssuerMetadata | AuthorizationServerMetadata\n\n if (existingMetadata) {\n // If overwriteExisting is explicitly false, we skip this import if data exists\n if (meta.overwriteExisting === false) {\n continue\n }\n // Otherwise, we perform a deep merge.\n metadataToPersist = this.deepMerge(existingMetadata, meta.metadata)\n } else {\n metadataToPersist = meta.metadata\n }\n\n await this.oid4vciStorePersistMetadata({\n metadataType: meta.metadataType,\n metadata: metadataToPersist,\n storeId,\n correlationId,\n namespace,\n // We set this to true because we have already handled the merge/overwrite logic above.\n // We are now saving the final, combined object.\n overwriteExisting: true,\n })\n }\n }\n\n /**\n * Generic Deep Merge.\n * - Recursively merges objects.\n * - Overwrites primitives and arrays (Arrays are treated as values).\n * - Naturally handles 'credential_configurations_supported' by merging the keys of the map.\n */\n private deepMerge<T extends Record<string, any>>(existing: T, incoming: T): T {\n if (!incoming) {\n return existing\n }\n if (!existing) {\n return incoming\n }\n\n const merged = { ...existing }\n\n for (const key in incoming) {\n if (!Object.prototype.hasOwnProperty.call(incoming, key)) {\n continue\n }\n\n const incomingValue = incoming[key]\n const existingValue = existing[key]\n\n if (this.isPlainObject(incomingValue) && this.isPlainObject(existingValue)) {\n // Recursively merge objects\n merged[key] = this.deepMerge(existingValue, incomingValue) as T[Extract<keyof T, string>]\n } else if (incomingValue !== undefined) {\n // Overwrite primitives, arrays, or if existing value was undefined\n merged[key] = incomingValue\n }\n }\n\n return merged\n }\n\n // Type guard to check if value is a plain object (and not an array or null)\n private isPlainObject(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n }\n\n private async oid4vciStoreHasIssuerOpts({ correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {\n return this.store({ stores: this._optionStores, storeId }).has(this.prefix({ namespace, correlationId }))\n }\n\n private async oid4vciStorePersistIssuerOpts(args: IIssuerOptsPersistArgs): Promise<IValueData<IIssuerOptions>> {\n const storeId = this.storeIdStr(args)\n const namespace = this.namespaceStr(args)\n const { correlationId, issuerOpts, ttl } = args\n if (args?.validation !== false) {\n //todo\n }\n const existing = await this.store({ stores: this._optionStores, storeId }).getAsValueData(\n this.prefix({\n namespace,\n correlationId,\n }),\n )\n if (!existing.value || (existing.value && args.overwriteExisting !== false)) {\n return await this.store({ stores: this._optionStores, storeId }).set(\n this.prefix({\n namespace,\n correlationId,\n }),\n issuerOpts,\n ttl,\n )\n }\n return existing\n }\n\n private async oid4vciStoreRemoveIssuerOpts({ storeId, correlationId, namespace }: Ioid4vciStoreRemoveArgs): Promise<boolean> {\n return this.store({ stores: this._optionStores, storeId }).delete(this.prefix({ namespace, correlationId }))\n }\n\n private async oid4vciStoreClearAllIssuerOpts({ storeId }: Ioid4vciStoreClearArgs): Promise<boolean> {\n return await this.store({ stores: this._optionStores, storeId })\n .clear()\n .then(() => true)\n }\n\n private async oid4vciStoreGetMetadata({\n metadataType,\n correlationId,\n storeId,\n namespace,\n }: IOid4vciStoreGetArgs): Promise<IssuerMetadata | AuthorizationServerMetadata | undefined> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).get(this.prefix({ namespace, correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).get(this.prefix({ namespace, correlationId }))\n }\n return undefined\n }\n\n private async oid4vciStoreListMetadata({ metadataType, storeId, namespace }: IOid4vciStoreListArgs): Promise<Array<OptionalIssuerMetadata>> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).getMany([`${this.namespaceStr({ namespace })}`])\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).getMany([`${this.namespaceStr({ namespace })}`])\n }\n return []\n }\n\n private async oid4vciStoreHasMetadata({ metadataType, correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).has(this.prefix({ namespace, correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).has(this.prefix({ namespace, correlationId }))\n }\n return false\n }\n\n private async oid4vciStorePersistMetadata(args: IMetadataPersistArgs): Promise<OptionalIssuerMetadataValue> {\n const namespace = this.namespaceStr(args)\n const storeId = this.storeIdStr(args)\n const { correlationId, metadata, ttl, metadataType } = args\n\n if (args?.validation !== false) {\n //todo\n }\n\n switch (metadataType) {\n case 'authorizationServer':\n const existingAuth = await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).getAsValueData(this.prefix({ namespace, correlationId }))\n\n if (!existingAuth.value || (existingAuth.value && args.overwriteExisting !== false)) {\n return await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).set(this.prefix({ namespace, correlationId }), metadata as AuthorizationServerMetadata, ttl)\n }\n return existingAuth\n case 'issuer':\n const existingIssuer = await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).getAsValueData(this.prefix({ namespace, correlationId }))\n\n if (!existingIssuer.value || (existingIssuer.value && args.overwriteExisting !== false)) {\n return await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).set(this.prefix({ namespace, correlationId }), metadata as IssuerMetadata, ttl)\n }\n return existingIssuer\n }\n return undefined\n }\n\n private async oid4vciStoreRemoveMetadata(args: Ioid4vciStoreRemoveArgs): Promise<boolean> {\n const namespace = this.namespaceStr(args)\n const storeId = this.storeIdStr(args)\n\n switch (args.metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).delete(this.prefix({ namespace, correlationId: args.correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).delete(this.prefix({ namespace, correlationId: args.correlationId }))\n }\n return false\n }\n\n private async oid4vciStoreClearAllMetadata({ metadataType, storeId }: Ioid4vciStoreClearArgs): Promise<boolean> {\n switch (metadataType) {\n case 'authorizationServer':\n return await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n })\n .clear()\n .then(() => true)\n case 'issuer':\n return await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n })\n .clear()\n .then(() => true)\n }\n return false\n }\n\n private oid4vciStoreIssuerOptions(): Promise<IKeyValueStore<IIssuerOptions>> {\n return Promise.resolve(this.store({ stores: this._optionStores, storeId: this.defaultStoreId }))\n }\n\n private oid4vciStoreDefaultMetadata(): Promise<IKeyValueStore<IssuerMetadata>> {\n return Promise.resolve(this.store({ stores: this._issuerMetadataStores, storeId: this.defaultStoreId }))\n }\n\n private oid4vciStoreDefaultStoreId(): Promise<string> {\n return Promise.resolve(this.defaultStoreId)\n }\n\n private oid4vciStoreDefaultNamespace(): Promise<string> {\n return Promise.resolve(this.defaultNamespace)\n }\n\n private store<T extends ValueStoreType>(args: { stores: Map<string, IKeyValueStore<T>>; storeId?: string }): IKeyValueStore<T> {\n const storeId = this.storeIdStr({ storeId: args.storeId })\n const store = args.stores.get(storeId)\n if (!store) {\n throw Error(`Could not get issuer metadata store: ${storeId}`)\n }\n return store\n }\n\n private storeIdStr({ storeId }: { storeId?: string }): string {\n return storeId ?? this.defaultStoreId\n }\n\n private namespaceStr({ namespace }: { namespace?: string }): string {\n return namespace ?? this.defaultNamespace\n }\n\n private prefix({ namespace, correlationId }: { namespace?: string; correlationId: string }): string {\n return `${this.namespaceStr({ namespace })}:${correlationId}`\n }\n}\n"],"mappings":"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","names":["module","oid4vciStoreMethods","OID4VCIStore","defaultOpts","_defaultOpts","value","_issuerMetadataStores","_authorizationServerMetadataStores","_optionStores","defaultStoreId","defaultNamespace","methods","oid4vciStoreDefaultMetadata","bind","oid4vciStoreDefaultIssuerOptions","oid4vciStoreIssuerOptions","oid4vciStoreDefaultStoreId","oid4vciStoreDefaultNamespace","oid4vciStoreGetIssuerOpts","oid4vciStoreHasIssuerOpts","oid4vciStorePersistIssuerOpts","oid4vciStoreRemoveIssuerOpts","oid4vciStoreClearAllIssuerOpts","oid4vciStoreGetMetadata","oid4vciStoreListMetadata","oid4vciStoreHasMetadata","oid4vciStorePersistMetadata","oid4vciStoreRemoveMetadata","oid4vciStoreClearAllMetadata","opts","defaultStore","issuerMetadataStores","Map","set","KeyValueStore","namespace","store","authorizationServerMetadataStores","Array","isArray","importMetadatas","issuerOptsStores","importIssuerOpts","forEach","opt","correlationId","storeId","stores","get","prefix","importOpts","metadataImports","metaImport","meta","existingMetadata","metadataType","metadataToPersist","overwriteExisting","deepMerge","metadata","existing","incoming","merged","key","Object","prototype","hasOwnProperty","call","incomingValue","existingValue","isPlainObject","undefined","has","args","storeIdStr","namespaceStr","issuerOpts","ttl","validation","getAsValueData","delete","clear","then","getMany","existingAuth","existingIssuer","Promise","resolve","Error","schema","require"]}
package/dist/index.d.cts CHANGED
@@ -102,6 +102,7 @@ interface Ioid4vciStoreClearArgs {
102
102
  storeId?: string;
103
103
  }
104
104
 
105
+ declare const oid4vciStoreMethods: Array<string>;
105
106
  declare class OID4VCIStore implements IAgentPlugin {
106
107
  get defaultOpts(): IIssuerDefaultOpts | undefined;
107
108
  set defaultOpts(value: IIssuerDefaultOpts | undefined);
@@ -115,6 +116,15 @@ declare class OID4VCIStore implements IAgentPlugin {
115
116
  constructor(opts: IOID4VCIStoreOpts);
116
117
  private oid4vciStoreGetIssuerOpts;
117
118
  importIssuerOpts(importOpts: IIssuerOptsImportArgs[]): void;
119
+ private importMetadatas;
120
+ /**
121
+ * Generic Deep Merge.
122
+ * - Recursively merges objects.
123
+ * - Overwrites primitives and arrays (Arrays are treated as values).
124
+ * - Naturally handles 'credential_configurations_supported' by merging the keys of the map.
125
+ */
126
+ private deepMerge;
127
+ private isPlainObject;
118
128
  private oid4vciStoreHasIssuerOpts;
119
129
  private oid4vciStorePersistIssuerOpts;
120
130
  private oid4vciStoreRemoveIssuerOpts;
@@ -140,4 +150,4 @@ declare class OID4VCIStore implements IAgentPlugin {
140
150
  */
141
151
  declare const schema: any;
142
152
 
143
- export { type IIssuerDefaultOpts, type IIssuerInstanceOptions, type IIssuerMetadataImportArgs, type IIssuerOptions, type IIssuerOptsImportArgs, type IIssuerOptsPersistArgs, type IMetadataImportArgs, type IMetadataOptions, type IMetadataPersistArgs, type IOID4VCIStore, type IOID4VCIStoreOpts, type IOid4vciStoreGetArgs, type IOid4vciStoreListArgs, type Ioid4vciStoreClearArgs, type Ioid4vciStoreExistsArgs, type Ioid4vciStorePersistArgs, type Ioid4vciStoreRemoveArgs, type MetadataType, type MetadataTypeMap, OID4VCIStore, type OptionalIssuerMetadata, type OptionalIssuerMetadataValue, schema };
153
+ export { type IIssuerDefaultOpts, type IIssuerInstanceOptions, type IIssuerMetadataImportArgs, type IIssuerOptions, type IIssuerOptsImportArgs, type IIssuerOptsPersistArgs, type IMetadataImportArgs, type IMetadataOptions, type IMetadataPersistArgs, type IOID4VCIStore, type IOID4VCIStoreOpts, type IOid4vciStoreGetArgs, type IOid4vciStoreListArgs, type Ioid4vciStoreClearArgs, type Ioid4vciStoreExistsArgs, type Ioid4vciStorePersistArgs, type Ioid4vciStoreRemoveArgs, type MetadataType, type MetadataTypeMap, OID4VCIStore, type OptionalIssuerMetadata, type OptionalIssuerMetadataValue, oid4vciStoreMethods, schema };
package/dist/index.d.ts CHANGED
@@ -102,6 +102,7 @@ interface Ioid4vciStoreClearArgs {
102
102
  storeId?: string;
103
103
  }
104
104
 
105
+ declare const oid4vciStoreMethods: Array<string>;
105
106
  declare class OID4VCIStore implements IAgentPlugin {
106
107
  get defaultOpts(): IIssuerDefaultOpts | undefined;
107
108
  set defaultOpts(value: IIssuerDefaultOpts | undefined);
@@ -115,6 +116,15 @@ declare class OID4VCIStore implements IAgentPlugin {
115
116
  constructor(opts: IOID4VCIStoreOpts);
116
117
  private oid4vciStoreGetIssuerOpts;
117
118
  importIssuerOpts(importOpts: IIssuerOptsImportArgs[]): void;
119
+ private importMetadatas;
120
+ /**
121
+ * Generic Deep Merge.
122
+ * - Recursively merges objects.
123
+ * - Overwrites primitives and arrays (Arrays are treated as values).
124
+ * - Naturally handles 'credential_configurations_supported' by merging the keys of the map.
125
+ */
126
+ private deepMerge;
127
+ private isPlainObject;
118
128
  private oid4vciStoreHasIssuerOpts;
119
129
  private oid4vciStorePersistIssuerOpts;
120
130
  private oid4vciStoreRemoveIssuerOpts;
@@ -140,4 +150,4 @@ declare class OID4VCIStore implements IAgentPlugin {
140
150
  */
141
151
  declare const schema: any;
142
152
 
143
- export { type IIssuerDefaultOpts, type IIssuerInstanceOptions, type IIssuerMetadataImportArgs, type IIssuerOptions, type IIssuerOptsImportArgs, type IIssuerOptsPersistArgs, type IMetadataImportArgs, type IMetadataOptions, type IMetadataPersistArgs, type IOID4VCIStore, type IOID4VCIStoreOpts, type IOid4vciStoreGetArgs, type IOid4vciStoreListArgs, type Ioid4vciStoreClearArgs, type Ioid4vciStoreExistsArgs, type Ioid4vciStorePersistArgs, type Ioid4vciStoreRemoveArgs, type MetadataType, type MetadataTypeMap, OID4VCIStore, type OptionalIssuerMetadata, type OptionalIssuerMetadataValue, schema };
153
+ export { type IIssuerDefaultOpts, type IIssuerInstanceOptions, type IIssuerMetadataImportArgs, type IIssuerOptions, type IIssuerOptsImportArgs, type IIssuerOptsPersistArgs, type IMetadataImportArgs, type IMetadataOptions, type IMetadataPersistArgs, type IOID4VCIStore, type IOID4VCIStoreOpts, type IOid4vciStoreGetArgs, type IOid4vciStoreListArgs, type Ioid4vciStoreClearArgs, type Ioid4vciStoreExistsArgs, type Ioid4vciStorePersistArgs, type Ioid4vciStoreRemoveArgs, type MetadataType, type MetadataTypeMap, OID4VCIStore, type OptionalIssuerMetadata, type OptionalIssuerMetadataValue, oid4vciStoreMethods, schema };
package/dist/index.js CHANGED
@@ -342,6 +342,23 @@ var require_plugin_schema = __commonJS({
342
342
 
343
343
  // src/agent/OID4VCIStore.ts
344
344
  import { KeyValueStore } from "@sphereon/ssi-sdk.kv-store-temp";
345
+ var oid4vciStoreMethods = [
346
+ "oid4vciStoreDefaultMetadata",
347
+ "oid4vciStoreDefaultIssuerOptions",
348
+ "oid4vciStoreDefaultStoreId",
349
+ "oid4vciStoreDefaultNamespace",
350
+ "oid4vciStoreGetIssuerOpts",
351
+ "oid4vciStoreHasIssuerOpts",
352
+ "oid4vciStorePersistIssuerOpts",
353
+ "oid4vciStoreRemoveIssuerOpts",
354
+ "oid4vciStoreClearAllIssuerOpts",
355
+ "oid4vciStoreGetMetadata",
356
+ "oid4vciStoreListMetadata",
357
+ "oid4vciStoreHasMetadata",
358
+ "oid4vciStorePersistMetadata",
359
+ "oid4vciStoreRemoveMetadata",
360
+ "oid4vciStoreClearAllMetadata"
361
+ ];
345
362
  var OID4VCIStore = class {
346
363
  static {
347
364
  __name(this, "OID4VCIStore");
@@ -402,17 +419,7 @@ var OID4VCIStore = class {
402
419
  }));
403
420
  }
404
421
  if (opts && Array.isArray(opts?.importMetadatas)) {
405
- opts.importMetadatas.forEach((metaImport) => {
406
- const meta = metaImport;
407
- void this.oid4vciStorePersistMetadata({
408
- metadataType: meta.metadataType,
409
- metadata: meta.metadata,
410
- storeId: meta.storeId ?? this.defaultStoreId,
411
- correlationId: meta.correlationId,
412
- namespace: meta.namespace ?? this.defaultNamespace,
413
- overwriteExisting: meta.overwriteExisting === void 0 ? true : meta.overwriteExisting
414
- });
415
- });
422
+ void this.importMetadatas(opts.importMetadatas);
416
423
  }
417
424
  if (opts?.issuerOptsStores && opts.issuerOptsStores instanceof Map) {
418
425
  this._optionStores = opts.issuerOptsStores;
@@ -440,6 +447,73 @@ var OID4VCIStore = class {
440
447
  importIssuerOpts(importOpts) {
441
448
  importOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt));
442
449
  }
450
+ async importMetadatas(metadataImports) {
451
+ for (const metaImport of metadataImports) {
452
+ const meta = metaImport;
453
+ const storeId = meta.storeId ?? this.defaultStoreId;
454
+ const namespace = meta.namespace ?? this.defaultNamespace;
455
+ const correlationId = meta.correlationId;
456
+ const existingMetadata = await this.oid4vciStoreGetMetadata({
457
+ metadataType: meta.metadataType,
458
+ correlationId,
459
+ storeId,
460
+ namespace
461
+ });
462
+ let metadataToPersist;
463
+ if (existingMetadata) {
464
+ if (meta.overwriteExisting === false) {
465
+ continue;
466
+ }
467
+ metadataToPersist = this.deepMerge(existingMetadata, meta.metadata);
468
+ } else {
469
+ metadataToPersist = meta.metadata;
470
+ }
471
+ await this.oid4vciStorePersistMetadata({
472
+ metadataType: meta.metadataType,
473
+ metadata: metadataToPersist,
474
+ storeId,
475
+ correlationId,
476
+ namespace,
477
+ // We set this to true because we have already handled the merge/overwrite logic above.
478
+ // We are now saving the final, combined object.
479
+ overwriteExisting: true
480
+ });
481
+ }
482
+ }
483
+ /**
484
+ * Generic Deep Merge.
485
+ * - Recursively merges objects.
486
+ * - Overwrites primitives and arrays (Arrays are treated as values).
487
+ * - Naturally handles 'credential_configurations_supported' by merging the keys of the map.
488
+ */
489
+ deepMerge(existing, incoming) {
490
+ if (!incoming) {
491
+ return existing;
492
+ }
493
+ if (!existing) {
494
+ return incoming;
495
+ }
496
+ const merged = {
497
+ ...existing
498
+ };
499
+ for (const key in incoming) {
500
+ if (!Object.prototype.hasOwnProperty.call(incoming, key)) {
501
+ continue;
502
+ }
503
+ const incomingValue = incoming[key];
504
+ const existingValue = existing[key];
505
+ if (this.isPlainObject(incomingValue) && this.isPlainObject(existingValue)) {
506
+ merged[key] = this.deepMerge(existingValue, incomingValue);
507
+ } else if (incomingValue !== void 0) {
508
+ merged[key] = incomingValue;
509
+ }
510
+ }
511
+ return merged;
512
+ }
513
+ // Type guard to check if value is a plain object (and not an array or null)
514
+ isPlainObject(value) {
515
+ return typeof value === "object" && value !== null && !Array.isArray(value);
516
+ }
443
517
  async oid4vciStoreHasIssuerOpts({ correlationId, storeId, namespace }) {
444
518
  return this.store({
445
519
  stores: this._optionStores,
@@ -682,6 +756,7 @@ var OID4VCIStore = class {
682
756
  var schema = require_plugin_schema();
683
757
  export {
684
758
  OID4VCIStore,
759
+ oid4vciStoreMethods,
685
760
  schema
686
761
  };
687
762
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../plugin.schema.json","../src/agent/OID4VCIStore.ts","../src/index.ts"],"sourcesContent":["{\n \"IDidAuthSiopOpAuthenticator\": {\n \"components\": {\n \"schemas\": {\n \"IGetSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSessionForSiop } \"\n },\n \"IRegisterSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"identifier\": {\n \"type\": \"object\",\n \"properties\": {\n \"did\": {\n \"type\": \"string\"\n },\n \"alias\": {\n \"type\": \"string\"\n },\n \"provider\": {\n \"type\": \"string\"\n },\n \"controllerKeyId\": {\n \"type\": \"string\"\n },\n \"keys\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n },\n \"services\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"did\", \"provider\", \"keys\", \"services\"]\n },\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"expiresIn\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"identifier\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.registerSessionForSiop } \"\n },\n \"IRemoveSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.removeSessionForSiop } \"\n },\n \"IAuthenticateWithSiopArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.authenticateWithSiop } \"\n },\n \"IResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": true\n },\n \"required\": [\"status\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.authenticateWithSiop & DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n },\n \"IGetSiopAuthenticationRequestFromRpArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"jwt\": {\n \"type\": \"string\"\n },\n \"requestPayload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"registration\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"jwt\", \"requestPayload\", \"registration\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"IGetSiopAuthenticationRequestDetailsArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"credentialFilter\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IAuthRequestDetails\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"alsoKnownAs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"vpResponseOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"id\", \"vpResponseOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IVerifySiopAuthenticationRequestUriArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"ParsedAuthenticationRequestURI\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"VerifiedAuthorizationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"payload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"presentationDefinitions\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifyOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"payload\", \"verifyOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"ISendSiopAuthenticationResponseArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifiablePresentationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n }\n },\n \"methods\": {\n \"getSessionForSiop\": {\n \"description\": \"Get SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"registerSessionForSiop\": {\n \"description\": \"Register SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRegisterSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"removeSessionForSiop\": {\n \"description\": \"Remove SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRemoveSiopSessionArgs\"\n },\n \"returnType\": \"boolean\"\n },\n \"authenticateWithSiop\": {\n \"description\": \"Authenticate using DID Auth SIOP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IAuthenticateWithSiopArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/Response\"\n }\n },\n \"getSiopAuthenticationRequestFromRP\": {\n \"description\": \"Get authentication request from RP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestFromRpArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ParsedAuthenticationRequestURI\"\n }\n },\n \"getSiopAuthenticationRequestDetails\": {\n \"description\": \"Get authentication request details\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestDetailsArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IAuthRequestDetails\"\n }\n },\n \"verifySiopAuthenticationRequestURI\": {\n \"description\": \"Verify authentication request URI\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IVerifySiopAuthenticationRequestUriArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/VerifiedAuthorizationRequest\"\n }\n },\n \"sendSiopAuthenticationResponse\": {\n \"description\": \"Send authentication response\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISendSiopAuthenticationResponseArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IRequiredContext\"\n }\n }\n }\n }\n }\n}\n","import { AuthorizationServerMetadata, IssuerMetadata } from '@sphereon/oid4vci-common'\nimport { IKeyValueStore, IValueData, KeyValueStore, ValueStoreType } from '@sphereon/ssi-sdk.kv-store-temp'\nimport { IAgentPlugin } from '@veramo/core'\nimport {\n IIssuerDefaultOpts,\n IIssuerMetadataImportArgs,\n IIssuerOptions,\n IIssuerOptsImportArgs,\n IIssuerOptsPersistArgs,\n IMetadataImportArgs,\n IMetadataPersistArgs,\n Ioid4vciStoreClearArgs,\n Ioid4vciStoreExistsArgs,\n IOid4vciStoreGetArgs,\n IOid4vciStoreListArgs,\n IOID4VCIStoreOpts,\n Ioid4vciStoreRemoveArgs,\n OptionalIssuerMetadata,\n OptionalIssuerMetadataValue,\n} from '../index'\n\nimport { IOID4VCIStore } from '../types/IOID4VCIStore'\n\nexport class OID4VCIStore implements IAgentPlugin {\n get defaultOpts(): IIssuerDefaultOpts | undefined {\n return this._defaultOpts\n }\n\n set defaultOpts(value: IIssuerDefaultOpts | undefined) {\n this._defaultOpts = value\n }\n\n private readonly _issuerMetadataStores: Map<string, IKeyValueStore<IssuerMetadata>>\n private readonly _authorizationServerMetadataStores: Map<string, IKeyValueStore<AuthorizationServerMetadata>>\n private readonly _optionStores: Map<string, IKeyValueStore<IIssuerOptions>>\n private readonly defaultStoreId: string\n private readonly defaultNamespace: string\n\n private _defaultOpts?: IIssuerDefaultOpts\n\n readonly methods: IOID4VCIStore = {\n oid4vciStoreDefaultMetadata: this.oid4vciStoreDefaultMetadata.bind(this),\n oid4vciStoreDefaultIssuerOptions: this.oid4vciStoreIssuerOptions.bind(this),\n oid4vciStoreDefaultStoreId: this.oid4vciStoreDefaultStoreId.bind(this),\n oid4vciStoreDefaultNamespace: this.oid4vciStoreDefaultNamespace.bind(this),\n\n oid4vciStoreGetIssuerOpts: this.oid4vciStoreGetIssuerOpts.bind(this),\n oid4vciStoreHasIssuerOpts: this.oid4vciStoreHasIssuerOpts.bind(this),\n oid4vciStorePersistIssuerOpts: this.oid4vciStorePersistIssuerOpts.bind(this),\n oid4vciStoreRemoveIssuerOpts: this.oid4vciStoreRemoveIssuerOpts.bind(this),\n oid4vciStoreClearAllIssuerOpts: this.oid4vciStoreClearAllIssuerOpts.bind(this),\n\n oid4vciStoreGetMetadata: this.oid4vciStoreGetMetadata.bind(this),\n oid4vciStoreListMetadata: this.oid4vciStoreListMetadata.bind(this),\n oid4vciStoreHasMetadata: this.oid4vciStoreHasMetadata.bind(this),\n oid4vciStorePersistMetadata: this.oid4vciStorePersistMetadata.bind(this),\n oid4vciStoreRemoveMetadata: this.oid4vciStoreRemoveMetadata.bind(this),\n oid4vciStoreClearAllMetadata: this.oid4vciStoreClearAllMetadata.bind(this),\n }\n\n constructor(opts: IOID4VCIStoreOpts) {\n this.defaultStoreId = opts.defaultStore ?? '_default'\n this.defaultNamespace = opts.defaultNamespace ?? 'oid4vci'\n if (opts.defaultOpts) {\n this._defaultOpts = opts.defaultOpts\n }\n if (opts?.issuerMetadataStores && opts.issuerMetadataStores instanceof Map) {\n this._issuerMetadataStores = opts.issuerMetadataStores\n } else if (opts?.issuerMetadataStores) {\n this._issuerMetadataStores = new Map().set(this.defaultStoreId, opts.issuerMetadataStores)\n } else {\n this._issuerMetadataStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, IssuerMetadata>(),\n }),\n )\n }\n if (opts?.authorizationServerMetadataStores && opts.authorizationServerMetadataStores instanceof Map) {\n this._authorizationServerMetadataStores = opts.authorizationServerMetadataStores\n } else if (opts?.authorizationServerMetadataStores) {\n this._authorizationServerMetadataStores = new Map().set(this.defaultStoreId, opts.authorizationServerMetadataStores)\n } else {\n this._authorizationServerMetadataStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, AuthorizationServerMetadata>(),\n }),\n )\n }\n\n if (opts && Array.isArray(opts?.importMetadatas)) {\n opts.importMetadatas.forEach((metaImport: IMetadataImportArgs) => {\n const meta = metaImport as IIssuerMetadataImportArgs\n void this.oid4vciStorePersistMetadata({\n metadataType: meta.metadataType,\n metadata: meta.metadata,\n storeId: meta.storeId ?? this.defaultStoreId,\n correlationId: meta.correlationId,\n namespace: meta.namespace ?? this.defaultNamespace,\n overwriteExisting: meta.overwriteExisting === undefined ? true : meta.overwriteExisting,\n })\n })\n }\n\n if (opts?.issuerOptsStores && opts.issuerOptsStores instanceof Map) {\n this._optionStores = opts.issuerOptsStores\n } else if (opts?.issuerOptsStores) {\n this._optionStores = new Map().set(this.defaultStoreId, opts.issuerOptsStores)\n } else {\n this._optionStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, IIssuerOptions>(),\n }),\n )\n }\n if (opts && Array.isArray(opts?.importIssuerOpts)) {\n opts.importIssuerOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))\n }\n }\n\n private async oid4vciStoreGetIssuerOpts({ correlationId, storeId, namespace }: IOid4vciStoreGetArgs): Promise<IIssuerOptions | undefined> {\n return (\n (await this.store({ stores: this._optionStores, storeId }).get(\n this.prefix({\n namespace,\n correlationId,\n }),\n )) ?? this.defaultOpts\n )\n }\n\n public importIssuerOpts(importOpts: IIssuerOptsImportArgs[]) {\n importOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))\n }\n\n private async oid4vciStoreHasIssuerOpts({ correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {\n return this.store({ stores: this._optionStores, storeId }).has(this.prefix({ namespace, correlationId }))\n }\n\n private async oid4vciStorePersistIssuerOpts(args: IIssuerOptsPersistArgs): Promise<IValueData<IIssuerOptions>> {\n const storeId = this.storeIdStr(args)\n const namespace = this.namespaceStr(args)\n const { correlationId, issuerOpts, ttl } = args\n if (args?.validation !== false) {\n //todo\n }\n const existing = await this.store({ stores: this._optionStores, storeId }).getAsValueData(\n this.prefix({\n namespace,\n correlationId,\n }),\n )\n if (!existing.value || (existing.value && args.overwriteExisting !== false)) {\n return await this.store({ stores: this._optionStores, storeId }).set(\n this.prefix({\n namespace,\n correlationId,\n }),\n issuerOpts,\n ttl,\n )\n }\n return existing\n }\n\n private async oid4vciStoreRemoveIssuerOpts({ storeId, correlationId, namespace }: Ioid4vciStoreRemoveArgs): Promise<boolean> {\n return this.store({ stores: this._optionStores, storeId }).delete(this.prefix({ namespace, correlationId }))\n }\n\n private async oid4vciStoreClearAllIssuerOpts({ storeId }: Ioid4vciStoreClearArgs): Promise<boolean> {\n return await this.store({ stores: this._optionStores, storeId })\n .clear()\n .then(() => true)\n }\n\n private async oid4vciStoreGetMetadata({\n metadataType,\n correlationId,\n storeId,\n namespace,\n }: IOid4vciStoreGetArgs): Promise<IssuerMetadata | AuthorizationServerMetadata | undefined> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).get(this.prefix({ namespace, correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).get(this.prefix({ namespace, correlationId }))\n }\n return undefined\n }\n\n private async oid4vciStoreListMetadata({ metadataType, storeId, namespace }: IOid4vciStoreListArgs): Promise<Array<OptionalIssuerMetadata>> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).getMany([`${this.namespaceStr({ namespace })}`])\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).getMany([`${this.namespaceStr({ namespace })}`])\n }\n return []\n }\n\n private async oid4vciStoreHasMetadata({ metadataType, correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).has(this.prefix({ namespace, correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).has(this.prefix({ namespace, correlationId }))\n }\n return false\n }\n\n private async oid4vciStorePersistMetadata(args: IMetadataPersistArgs): Promise<OptionalIssuerMetadataValue> {\n const namespace = this.namespaceStr(args)\n const storeId = this.storeIdStr(args)\n const { correlationId, metadata, ttl, metadataType } = args\n\n if (args?.validation !== false) {\n //todo\n }\n\n switch (metadataType) {\n case 'authorizationServer':\n const existingAuth = await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).getAsValueData(this.prefix({ namespace, correlationId }))\n\n if (!existingAuth.value || (existingAuth.value && args.overwriteExisting !== false)) {\n return await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).set(this.prefix({ namespace, correlationId }), metadata as AuthorizationServerMetadata, ttl)\n }\n return existingAuth\n case 'issuer':\n const existingIssuer = await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).getAsValueData(this.prefix({ namespace, correlationId }))\n\n if (!existingIssuer.value || (existingIssuer.value && args.overwriteExisting !== false)) {\n return await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).set(this.prefix({ namespace, correlationId }), metadata as IssuerMetadata, ttl)\n }\n return existingIssuer\n }\n return undefined\n }\n\n private async oid4vciStoreRemoveMetadata(args: Ioid4vciStoreRemoveArgs): Promise<boolean> {\n const namespace = this.namespaceStr(args)\n const storeId = this.storeIdStr(args)\n\n switch (args.metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).delete(this.prefix({ namespace, correlationId: args.correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).delete(this.prefix({ namespace, correlationId: args.correlationId }))\n }\n return false\n }\n\n private async oid4vciStoreClearAllMetadata({ metadataType, storeId }: Ioid4vciStoreClearArgs): Promise<boolean> {\n switch (metadataType) {\n case 'authorizationServer':\n return await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n })\n .clear()\n .then(() => true)\n case 'issuer':\n return await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n })\n .clear()\n .then(() => true)\n }\n return false\n }\n\n private oid4vciStoreIssuerOptions(): Promise<IKeyValueStore<IIssuerOptions>> {\n return Promise.resolve(this.store({ stores: this._optionStores, storeId: this.defaultStoreId }))\n }\n\n private oid4vciStoreDefaultMetadata(): Promise<IKeyValueStore<IssuerMetadata>> {\n return Promise.resolve(this.store({ stores: this._issuerMetadataStores, storeId: this.defaultStoreId }))\n }\n\n private oid4vciStoreDefaultStoreId(): Promise<string> {\n return Promise.resolve(this.defaultStoreId)\n }\n\n private oid4vciStoreDefaultNamespace(): Promise<string> {\n return Promise.resolve(this.defaultNamespace)\n }\n\n private store<T extends ValueStoreType>(args: { stores: Map<string, IKeyValueStore<T>>; storeId?: string }): IKeyValueStore<T> {\n const storeId = this.storeIdStr({ storeId: args.storeId })\n const store = args.stores.get(storeId)\n if (!store) {\n throw Error(`Could not get issuer metadata store: ${storeId}`)\n }\n return store\n }\n\n private storeIdStr({ storeId }: { storeId?: string }): string {\n return storeId ?? this.defaultStoreId\n }\n\n private namespaceStr({ namespace }: { namespace?: string }): string {\n return namespace ?? this.defaultNamespace\n }\n\n private prefix({ namespace, correlationId }: { namespace?: string; correlationId: string }): string {\n return `${this.namespaceStr({ namespace })}:${correlationId}`\n }\n}\n","/**\n * @public\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\nexport { OID4VCIStore } from './agent/OID4VCIStore'\nexport * from './types/IOID4VCIStore'\n"],"mappings":"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","names":["KeyValueStore","OID4VCIStore","defaultOpts","_defaultOpts","value","_issuerMetadataStores","_authorizationServerMetadataStores","_optionStores","defaultStoreId","defaultNamespace","methods","oid4vciStoreDefaultMetadata","bind","oid4vciStoreDefaultIssuerOptions","oid4vciStoreIssuerOptions","oid4vciStoreDefaultStoreId","oid4vciStoreDefaultNamespace","oid4vciStoreGetIssuerOpts","oid4vciStoreHasIssuerOpts","oid4vciStorePersistIssuerOpts","oid4vciStoreRemoveIssuerOpts","oid4vciStoreClearAllIssuerOpts","oid4vciStoreGetMetadata","oid4vciStoreListMetadata","oid4vciStoreHasMetadata","oid4vciStorePersistMetadata","oid4vciStoreRemoveMetadata","oid4vciStoreClearAllMetadata","opts","defaultStore","issuerMetadataStores","Map","set","KeyValueStore","namespace","store","authorizationServerMetadataStores","Array","isArray","importMetadatas","forEach","metaImport","meta","metadataType","metadata","storeId","correlationId","overwriteExisting","undefined","issuerOptsStores","importIssuerOpts","opt","stores","get","prefix","importOpts","has","args","storeIdStr","namespaceStr","issuerOpts","ttl","validation","existing","getAsValueData","delete","clear","then","getMany","existingAuth","existingIssuer","Promise","resolve","Error","schema","require"]}
1
+ {"version":3,"sources":["../plugin.schema.json","../src/agent/OID4VCIStore.ts","../src/index.ts"],"sourcesContent":["{\n \"IDidAuthSiopOpAuthenticator\": {\n \"components\": {\n \"schemas\": {\n \"IGetSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSessionForSiop } \"\n },\n \"IRegisterSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"identifier\": {\n \"type\": \"object\",\n \"properties\": {\n \"did\": {\n \"type\": \"string\"\n },\n \"alias\": {\n \"type\": \"string\"\n },\n \"provider\": {\n \"type\": \"string\"\n },\n \"controllerKeyId\": {\n \"type\": \"string\"\n },\n \"keys\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n },\n \"services\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"did\", \"provider\", \"keys\", \"services\"]\n },\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"expiresIn\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"identifier\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.registerSessionForSiop } \"\n },\n \"IRemoveSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.removeSessionForSiop } \"\n },\n \"IAuthenticateWithSiopArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.authenticateWithSiop } \"\n },\n \"IResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": true\n },\n \"required\": [\"status\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.authenticateWithSiop & DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n },\n \"IGetSiopAuthenticationRequestFromRpArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"jwt\": {\n \"type\": \"string\"\n },\n \"requestPayload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"registration\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"jwt\", \"requestPayload\", \"registration\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"IGetSiopAuthenticationRequestDetailsArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"credentialFilter\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IAuthRequestDetails\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"alsoKnownAs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"vpResponseOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"id\", \"vpResponseOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IVerifySiopAuthenticationRequestUriArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"ParsedAuthenticationRequestURI\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"VerifiedAuthorizationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"payload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"presentationDefinitions\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifyOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"payload\", \"verifyOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"ISendSiopAuthenticationResponseArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifiablePresentationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n }\n },\n \"methods\": {\n \"getSessionForSiop\": {\n \"description\": \"Get SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"registerSessionForSiop\": {\n \"description\": \"Register SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRegisterSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"removeSessionForSiop\": {\n \"description\": \"Remove SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRemoveSiopSessionArgs\"\n },\n \"returnType\": \"boolean\"\n },\n \"authenticateWithSiop\": {\n \"description\": \"Authenticate using DID Auth SIOP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IAuthenticateWithSiopArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/Response\"\n }\n },\n \"getSiopAuthenticationRequestFromRP\": {\n \"description\": \"Get authentication request from RP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestFromRpArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ParsedAuthenticationRequestURI\"\n }\n },\n \"getSiopAuthenticationRequestDetails\": {\n \"description\": \"Get authentication request details\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestDetailsArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IAuthRequestDetails\"\n }\n },\n \"verifySiopAuthenticationRequestURI\": {\n \"description\": \"Verify authentication request URI\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IVerifySiopAuthenticationRequestUriArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/VerifiedAuthorizationRequest\"\n }\n },\n \"sendSiopAuthenticationResponse\": {\n \"description\": \"Send authentication response\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISendSiopAuthenticationResponseArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IRequiredContext\"\n }\n }\n }\n }\n }\n}\n","import { AuthorizationServerMetadata, IssuerMetadata } from '@sphereon/oid4vci-common'\nimport { IKeyValueStore, IValueData, KeyValueStore, ValueStoreType } from '@sphereon/ssi-sdk.kv-store-temp'\nimport { IAgentPlugin } from '@veramo/core'\nimport {\n IIssuerDefaultOpts,\n IIssuerMetadataImportArgs,\n IIssuerOptions,\n IIssuerOptsImportArgs,\n IIssuerOptsPersistArgs,\n IMetadataImportArgs,\n IMetadataPersistArgs,\n Ioid4vciStoreClearArgs,\n Ioid4vciStoreExistsArgs,\n IOid4vciStoreGetArgs,\n IOid4vciStoreListArgs,\n IOID4VCIStoreOpts,\n Ioid4vciStoreRemoveArgs,\n OptionalIssuerMetadata,\n OptionalIssuerMetadataValue,\n} from '../index'\n\nimport { IOID4VCIStore } from '../types/IOID4VCIStore'\n\nexport const oid4vciStoreMethods: Array<string> = [\n 'oid4vciStoreDefaultMetadata',\n 'oid4vciStoreDefaultIssuerOptions',\n 'oid4vciStoreDefaultStoreId',\n 'oid4vciStoreDefaultNamespace',\n 'oid4vciStoreGetIssuerOpts',\n 'oid4vciStoreHasIssuerOpts',\n 'oid4vciStorePersistIssuerOpts',\n 'oid4vciStoreRemoveIssuerOpts',\n 'oid4vciStoreClearAllIssuerOpts',\n 'oid4vciStoreGetMetadata',\n 'oid4vciStoreListMetadata',\n 'oid4vciStoreHasMetadata',\n 'oid4vciStorePersistMetadata',\n 'oid4vciStoreRemoveMetadata',\n 'oid4vciStoreClearAllMetadata',\n]\n\nexport class OID4VCIStore implements IAgentPlugin {\n get defaultOpts(): IIssuerDefaultOpts | undefined {\n return this._defaultOpts\n }\n\n set defaultOpts(value: IIssuerDefaultOpts | undefined) {\n this._defaultOpts = value\n }\n\n private readonly _issuerMetadataStores: Map<string, IKeyValueStore<IssuerMetadata>>\n private readonly _authorizationServerMetadataStores: Map<string, IKeyValueStore<AuthorizationServerMetadata>>\n private readonly _optionStores: Map<string, IKeyValueStore<IIssuerOptions>>\n private readonly defaultStoreId: string\n private readonly defaultNamespace: string\n\n private _defaultOpts?: IIssuerDefaultOpts\n\n readonly methods: IOID4VCIStore = {\n oid4vciStoreDefaultMetadata: this.oid4vciStoreDefaultMetadata.bind(this),\n oid4vciStoreDefaultIssuerOptions: this.oid4vciStoreIssuerOptions.bind(this),\n oid4vciStoreDefaultStoreId: this.oid4vciStoreDefaultStoreId.bind(this),\n oid4vciStoreDefaultNamespace: this.oid4vciStoreDefaultNamespace.bind(this),\n\n oid4vciStoreGetIssuerOpts: this.oid4vciStoreGetIssuerOpts.bind(this),\n oid4vciStoreHasIssuerOpts: this.oid4vciStoreHasIssuerOpts.bind(this),\n oid4vciStorePersistIssuerOpts: this.oid4vciStorePersistIssuerOpts.bind(this),\n oid4vciStoreRemoveIssuerOpts: this.oid4vciStoreRemoveIssuerOpts.bind(this),\n oid4vciStoreClearAllIssuerOpts: this.oid4vciStoreClearAllIssuerOpts.bind(this),\n\n oid4vciStoreGetMetadata: this.oid4vciStoreGetMetadata.bind(this),\n oid4vciStoreListMetadata: this.oid4vciStoreListMetadata.bind(this),\n oid4vciStoreHasMetadata: this.oid4vciStoreHasMetadata.bind(this),\n oid4vciStorePersistMetadata: this.oid4vciStorePersistMetadata.bind(this),\n oid4vciStoreRemoveMetadata: this.oid4vciStoreRemoveMetadata.bind(this),\n oid4vciStoreClearAllMetadata: this.oid4vciStoreClearAllMetadata.bind(this),\n }\n\n constructor(opts: IOID4VCIStoreOpts) {\n this.defaultStoreId = opts.defaultStore ?? '_default'\n this.defaultNamespace = opts.defaultNamespace ?? 'oid4vci'\n if (opts.defaultOpts) {\n this._defaultOpts = opts.defaultOpts\n }\n if (opts?.issuerMetadataStores && opts.issuerMetadataStores instanceof Map) {\n this._issuerMetadataStores = opts.issuerMetadataStores\n } else if (opts?.issuerMetadataStores) {\n this._issuerMetadataStores = new Map().set(this.defaultStoreId, opts.issuerMetadataStores)\n } else {\n this._issuerMetadataStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, IssuerMetadata>(),\n }),\n )\n }\n if (opts?.authorizationServerMetadataStores && opts.authorizationServerMetadataStores instanceof Map) {\n this._authorizationServerMetadataStores = opts.authorizationServerMetadataStores\n } else if (opts?.authorizationServerMetadataStores) {\n this._authorizationServerMetadataStores = new Map().set(this.defaultStoreId, opts.authorizationServerMetadataStores)\n } else {\n this._authorizationServerMetadataStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, AuthorizationServerMetadata>(),\n }),\n )\n }\n\n if (opts && Array.isArray(opts?.importMetadatas)) {\n void this.importMetadatas(opts.importMetadatas)\n }\n\n if (opts?.issuerOptsStores && opts.issuerOptsStores instanceof Map) {\n this._optionStores = opts.issuerOptsStores\n } else if (opts?.issuerOptsStores) {\n this._optionStores = new Map().set(this.defaultStoreId, opts.issuerOptsStores)\n } else {\n this._optionStores = new Map().set(\n this.defaultStoreId,\n new KeyValueStore({\n namespace: this.defaultNamespace,\n store: new Map<string, IIssuerOptions>(),\n }),\n )\n }\n if (opts && Array.isArray(opts?.importIssuerOpts)) {\n opts.importIssuerOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))\n }\n }\n\n private async oid4vciStoreGetIssuerOpts({ correlationId, storeId, namespace }: IOid4vciStoreGetArgs): Promise<IIssuerOptions | undefined> {\n return (\n (await this.store({ stores: this._optionStores, storeId }).get(\n this.prefix({\n namespace,\n correlationId,\n }),\n )) ?? this.defaultOpts\n )\n }\n\n public importIssuerOpts(importOpts: IIssuerOptsImportArgs[]) {\n importOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))\n }\n\n private async importMetadatas(metadataImports: IMetadataImportArgs[]): Promise<void> {\n for (const metaImport of metadataImports) {\n const meta = metaImport as IIssuerMetadataImportArgs\n const storeId = meta.storeId ?? this.defaultStoreId\n const namespace = meta.namespace ?? this.defaultNamespace\n const correlationId = meta.correlationId\n\n const existingMetadata = await this.oid4vciStoreGetMetadata({\n metadataType: meta.metadataType,\n correlationId,\n storeId,\n namespace,\n })\n\n let metadataToPersist: IssuerMetadata | AuthorizationServerMetadata\n\n if (existingMetadata) {\n // If overwriteExisting is explicitly false, we skip this import if data exists\n if (meta.overwriteExisting === false) {\n continue\n }\n // Otherwise, we perform a deep merge.\n metadataToPersist = this.deepMerge(existingMetadata, meta.metadata)\n } else {\n metadataToPersist = meta.metadata\n }\n\n await this.oid4vciStorePersistMetadata({\n metadataType: meta.metadataType,\n metadata: metadataToPersist,\n storeId,\n correlationId,\n namespace,\n // We set this to true because we have already handled the merge/overwrite logic above.\n // We are now saving the final, combined object.\n overwriteExisting: true,\n })\n }\n }\n\n /**\n * Generic Deep Merge.\n * - Recursively merges objects.\n * - Overwrites primitives and arrays (Arrays are treated as values).\n * - Naturally handles 'credential_configurations_supported' by merging the keys of the map.\n */\n private deepMerge<T extends Record<string, any>>(existing: T, incoming: T): T {\n if (!incoming) {\n return existing\n }\n if (!existing) {\n return incoming\n }\n\n const merged = { ...existing }\n\n for (const key in incoming) {\n if (!Object.prototype.hasOwnProperty.call(incoming, key)) {\n continue\n }\n\n const incomingValue = incoming[key]\n const existingValue = existing[key]\n\n if (this.isPlainObject(incomingValue) && this.isPlainObject(existingValue)) {\n // Recursively merge objects\n merged[key] = this.deepMerge(existingValue, incomingValue) as T[Extract<keyof T, string>]\n } else if (incomingValue !== undefined) {\n // Overwrite primitives, arrays, or if existing value was undefined\n merged[key] = incomingValue\n }\n }\n\n return merged\n }\n\n // Type guard to check if value is a plain object (and not an array or null)\n private isPlainObject(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n }\n\n private async oid4vciStoreHasIssuerOpts({ correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {\n return this.store({ stores: this._optionStores, storeId }).has(this.prefix({ namespace, correlationId }))\n }\n\n private async oid4vciStorePersistIssuerOpts(args: IIssuerOptsPersistArgs): Promise<IValueData<IIssuerOptions>> {\n const storeId = this.storeIdStr(args)\n const namespace = this.namespaceStr(args)\n const { correlationId, issuerOpts, ttl } = args\n if (args?.validation !== false) {\n //todo\n }\n const existing = await this.store({ stores: this._optionStores, storeId }).getAsValueData(\n this.prefix({\n namespace,\n correlationId,\n }),\n )\n if (!existing.value || (existing.value && args.overwriteExisting !== false)) {\n return await this.store({ stores: this._optionStores, storeId }).set(\n this.prefix({\n namespace,\n correlationId,\n }),\n issuerOpts,\n ttl,\n )\n }\n return existing\n }\n\n private async oid4vciStoreRemoveIssuerOpts({ storeId, correlationId, namespace }: Ioid4vciStoreRemoveArgs): Promise<boolean> {\n return this.store({ stores: this._optionStores, storeId }).delete(this.prefix({ namespace, correlationId }))\n }\n\n private async oid4vciStoreClearAllIssuerOpts({ storeId }: Ioid4vciStoreClearArgs): Promise<boolean> {\n return await this.store({ stores: this._optionStores, storeId })\n .clear()\n .then(() => true)\n }\n\n private async oid4vciStoreGetMetadata({\n metadataType,\n correlationId,\n storeId,\n namespace,\n }: IOid4vciStoreGetArgs): Promise<IssuerMetadata | AuthorizationServerMetadata | undefined> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).get(this.prefix({ namespace, correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).get(this.prefix({ namespace, correlationId }))\n }\n return undefined\n }\n\n private async oid4vciStoreListMetadata({ metadataType, storeId, namespace }: IOid4vciStoreListArgs): Promise<Array<OptionalIssuerMetadata>> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).getMany([`${this.namespaceStr({ namespace })}`])\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).getMany([`${this.namespaceStr({ namespace })}`])\n }\n return []\n }\n\n private async oid4vciStoreHasMetadata({ metadataType, correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {\n switch (metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).has(this.prefix({ namespace, correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).has(this.prefix({ namespace, correlationId }))\n }\n return false\n }\n\n private async oid4vciStorePersistMetadata(args: IMetadataPersistArgs): Promise<OptionalIssuerMetadataValue> {\n const namespace = this.namespaceStr(args)\n const storeId = this.storeIdStr(args)\n const { correlationId, metadata, ttl, metadataType } = args\n\n if (args?.validation !== false) {\n //todo\n }\n\n switch (metadataType) {\n case 'authorizationServer':\n const existingAuth = await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).getAsValueData(this.prefix({ namespace, correlationId }))\n\n if (!existingAuth.value || (existingAuth.value && args.overwriteExisting !== false)) {\n return await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).set(this.prefix({ namespace, correlationId }), metadata as AuthorizationServerMetadata, ttl)\n }\n return existingAuth\n case 'issuer':\n const existingIssuer = await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).getAsValueData(this.prefix({ namespace, correlationId }))\n\n if (!existingIssuer.value || (existingIssuer.value && args.overwriteExisting !== false)) {\n return await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).set(this.prefix({ namespace, correlationId }), metadata as IssuerMetadata, ttl)\n }\n return existingIssuer\n }\n return undefined\n }\n\n private async oid4vciStoreRemoveMetadata(args: Ioid4vciStoreRemoveArgs): Promise<boolean> {\n const namespace = this.namespaceStr(args)\n const storeId = this.storeIdStr(args)\n\n switch (args.metadataType) {\n case 'authorizationServer':\n return this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n }).delete(this.prefix({ namespace, correlationId: args.correlationId }))\n case 'issuer':\n return this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n }).delete(this.prefix({ namespace, correlationId: args.correlationId }))\n }\n return false\n }\n\n private async oid4vciStoreClearAllMetadata({ metadataType, storeId }: Ioid4vciStoreClearArgs): Promise<boolean> {\n switch (metadataType) {\n case 'authorizationServer':\n return await this.store<AuthorizationServerMetadata>({\n stores: this._authorizationServerMetadataStores,\n storeId,\n })\n .clear()\n .then(() => true)\n case 'issuer':\n return await this.store<IssuerMetadata>({\n stores: this._issuerMetadataStores,\n storeId,\n })\n .clear()\n .then(() => true)\n }\n return false\n }\n\n private oid4vciStoreIssuerOptions(): Promise<IKeyValueStore<IIssuerOptions>> {\n return Promise.resolve(this.store({ stores: this._optionStores, storeId: this.defaultStoreId }))\n }\n\n private oid4vciStoreDefaultMetadata(): Promise<IKeyValueStore<IssuerMetadata>> {\n return Promise.resolve(this.store({ stores: this._issuerMetadataStores, storeId: this.defaultStoreId }))\n }\n\n private oid4vciStoreDefaultStoreId(): Promise<string> {\n return Promise.resolve(this.defaultStoreId)\n }\n\n private oid4vciStoreDefaultNamespace(): Promise<string> {\n return Promise.resolve(this.defaultNamespace)\n }\n\n private store<T extends ValueStoreType>(args: { stores: Map<string, IKeyValueStore<T>>; storeId?: string }): IKeyValueStore<T> {\n const storeId = this.storeIdStr({ storeId: args.storeId })\n const store = args.stores.get(storeId)\n if (!store) {\n throw Error(`Could not get issuer metadata store: ${storeId}`)\n }\n return store\n }\n\n private storeIdStr({ storeId }: { storeId?: string }): string {\n return storeId ?? this.defaultStoreId\n }\n\n private namespaceStr({ namespace }: { namespace?: string }): string {\n return namespace ?? this.defaultNamespace\n }\n\n private prefix({ namespace, correlationId }: { namespace?: string; correlationId: string }): string {\n return `${this.namespaceStr({ namespace })}:${correlationId}`\n }\n}\n","/**\n * @public\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\nexport { OID4VCIStore, oid4vciStoreMethods } from './agent/OID4VCIStore'\nexport * from './types/IOID4VCIStore'\n"],"mappings":"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","names":["KeyValueStore","oid4vciStoreMethods","OID4VCIStore","defaultOpts","_defaultOpts","value","_issuerMetadataStores","_authorizationServerMetadataStores","_optionStores","defaultStoreId","defaultNamespace","methods","oid4vciStoreDefaultMetadata","bind","oid4vciStoreDefaultIssuerOptions","oid4vciStoreIssuerOptions","oid4vciStoreDefaultStoreId","oid4vciStoreDefaultNamespace","oid4vciStoreGetIssuerOpts","oid4vciStoreHasIssuerOpts","oid4vciStorePersistIssuerOpts","oid4vciStoreRemoveIssuerOpts","oid4vciStoreClearAllIssuerOpts","oid4vciStoreGetMetadata","oid4vciStoreListMetadata","oid4vciStoreHasMetadata","oid4vciStorePersistMetadata","oid4vciStoreRemoveMetadata","oid4vciStoreClearAllMetadata","opts","defaultStore","issuerMetadataStores","Map","set","KeyValueStore","namespace","store","authorizationServerMetadataStores","Array","isArray","importMetadatas","issuerOptsStores","importIssuerOpts","forEach","opt","correlationId","storeId","stores","get","prefix","importOpts","metadataImports","metaImport","meta","existingMetadata","metadataType","metadataToPersist","overwriteExisting","deepMerge","metadata","existing","incoming","merged","key","Object","prototype","hasOwnProperty","call","incomingValue","existingValue","isPlainObject","undefined","has","args","storeIdStr","namespaceStr","issuerOpts","ttl","validation","getAsValueData","delete","clear","then","getMany","existingAuth","existingIssuer","Promise","resolve","Error","schema","require"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk.oid4vci-issuer-store",
3
- "version": "0.36.1-feature.SSISDK.82.and.SSISDK.70.37+4f1096f2",
3
+ "version": "0.36.1-feature.SSISDK.89.metadata.persistence.103+7d41f865",
4
4
  "source": "src/index.ts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -26,10 +26,10 @@
26
26
  "build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json"
27
27
  },
28
28
  "dependencies": {
29
- "@sphereon/oid4vci-common": "0.20.1-fix.1",
30
- "@sphereon/ssi-sdk-ext.did-utils": "0.36.1-feature.SSISDK.82.and.SSISDK.70.37+4f1096f2",
31
- "@sphereon/ssi-sdk-ext.identifier-resolution": "0.36.1-feature.SSISDK.82.and.SSISDK.70.37+4f1096f2",
32
- "@sphereon/ssi-sdk.kv-store-temp": "0.36.1-feature.SSISDK.82.and.SSISDK.70.37+4f1096f2",
29
+ "@sphereon/oid4vci-common": "0.20.1-next.3",
30
+ "@sphereon/ssi-sdk-ext.did-utils": "0.36.1-feature.SSISDK.89.metadata.persistence.103+7d41f865",
31
+ "@sphereon/ssi-sdk-ext.identifier-resolution": "0.36.1-feature.SSISDK.89.metadata.persistence.103+7d41f865",
32
+ "@sphereon/ssi-sdk.kv-store-temp": "0.36.1-feature.SSISDK.89.metadata.persistence.103+7d41f865",
33
33
  "@veramo/core": "4.2.0",
34
34
  "@veramo/credential-w3c": "4.2.0",
35
35
  "cross-fetch": "^4.1.0",
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "devDependencies": {
39
39
  "@sphereon/did-uni-client": "^0.6.3",
40
- "@sphereon/ssi-sdk.vc-status-list": "0.36.1-feature.SSISDK.82.and.SSISDK.70.37+4f1096f2",
40
+ "@sphereon/ssi-sdk.vc-status-list": "0.36.1-feature.SSISDK.89.metadata.persistence.103+7d41f865",
41
41
  "@types/uuid": "^9.0.8",
42
42
  "@veramo/did-provider-key": "4.2.0",
43
43
  "@veramo/did-resolver": "4.2.0",
@@ -71,5 +71,5 @@
71
71
  "OpenID Connect",
72
72
  "Authenticator"
73
73
  ],
74
- "gitHead": "4f1096f2d7ce22bdc20319a780386979393bc2ef"
74
+ "gitHead": "7d41f86553fed321199e36cb6aacca36cb99032f"
75
75
  }
@@ -21,6 +21,24 @@ import {
21
21
 
22
22
  import { IOID4VCIStore } from '../types/IOID4VCIStore'
23
23
 
24
+ export const oid4vciStoreMethods: Array<string> = [
25
+ 'oid4vciStoreDefaultMetadata',
26
+ 'oid4vciStoreDefaultIssuerOptions',
27
+ 'oid4vciStoreDefaultStoreId',
28
+ 'oid4vciStoreDefaultNamespace',
29
+ 'oid4vciStoreGetIssuerOpts',
30
+ 'oid4vciStoreHasIssuerOpts',
31
+ 'oid4vciStorePersistIssuerOpts',
32
+ 'oid4vciStoreRemoveIssuerOpts',
33
+ 'oid4vciStoreClearAllIssuerOpts',
34
+ 'oid4vciStoreGetMetadata',
35
+ 'oid4vciStoreListMetadata',
36
+ 'oid4vciStoreHasMetadata',
37
+ 'oid4vciStorePersistMetadata',
38
+ 'oid4vciStoreRemoveMetadata',
39
+ 'oid4vciStoreClearAllMetadata',
40
+ ]
41
+
24
42
  export class OID4VCIStore implements IAgentPlugin {
25
43
  get defaultOpts(): IIssuerDefaultOpts | undefined {
26
44
  return this._defaultOpts
@@ -92,17 +110,7 @@ export class OID4VCIStore implements IAgentPlugin {
92
110
  }
93
111
 
94
112
  if (opts && Array.isArray(opts?.importMetadatas)) {
95
- opts.importMetadatas.forEach((metaImport: IMetadataImportArgs) => {
96
- const meta = metaImport as IIssuerMetadataImportArgs
97
- void this.oid4vciStorePersistMetadata({
98
- metadataType: meta.metadataType,
99
- metadata: meta.metadata,
100
- storeId: meta.storeId ?? this.defaultStoreId,
101
- correlationId: meta.correlationId,
102
- namespace: meta.namespace ?? this.defaultNamespace,
103
- overwriteExisting: meta.overwriteExisting === undefined ? true : meta.overwriteExisting,
104
- })
105
- })
113
+ void this.importMetadatas(opts.importMetadatas)
106
114
  }
107
115
 
108
116
  if (opts?.issuerOptsStores && opts.issuerOptsStores instanceof Map) {
@@ -138,6 +146,87 @@ export class OID4VCIStore implements IAgentPlugin {
138
146
  importOpts.forEach((opt) => this.oid4vciStorePersistIssuerOpts(opt))
139
147
  }
140
148
 
149
+ private async importMetadatas(metadataImports: IMetadataImportArgs[]): Promise<void> {
150
+ for (const metaImport of metadataImports) {
151
+ const meta = metaImport as IIssuerMetadataImportArgs
152
+ const storeId = meta.storeId ?? this.defaultStoreId
153
+ const namespace = meta.namespace ?? this.defaultNamespace
154
+ const correlationId = meta.correlationId
155
+
156
+ const existingMetadata = await this.oid4vciStoreGetMetadata({
157
+ metadataType: meta.metadataType,
158
+ correlationId,
159
+ storeId,
160
+ namespace,
161
+ })
162
+
163
+ let metadataToPersist: IssuerMetadata | AuthorizationServerMetadata
164
+
165
+ if (existingMetadata) {
166
+ // If overwriteExisting is explicitly false, we skip this import if data exists
167
+ if (meta.overwriteExisting === false) {
168
+ continue
169
+ }
170
+ // Otherwise, we perform a deep merge.
171
+ metadataToPersist = this.deepMerge(existingMetadata, meta.metadata)
172
+ } else {
173
+ metadataToPersist = meta.metadata
174
+ }
175
+
176
+ await this.oid4vciStorePersistMetadata({
177
+ metadataType: meta.metadataType,
178
+ metadata: metadataToPersist,
179
+ storeId,
180
+ correlationId,
181
+ namespace,
182
+ // We set this to true because we have already handled the merge/overwrite logic above.
183
+ // We are now saving the final, combined object.
184
+ overwriteExisting: true,
185
+ })
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Generic Deep Merge.
191
+ * - Recursively merges objects.
192
+ * - Overwrites primitives and arrays (Arrays are treated as values).
193
+ * - Naturally handles 'credential_configurations_supported' by merging the keys of the map.
194
+ */
195
+ private deepMerge<T extends Record<string, any>>(existing: T, incoming: T): T {
196
+ if (!incoming) {
197
+ return existing
198
+ }
199
+ if (!existing) {
200
+ return incoming
201
+ }
202
+
203
+ const merged = { ...existing }
204
+
205
+ for (const key in incoming) {
206
+ if (!Object.prototype.hasOwnProperty.call(incoming, key)) {
207
+ continue
208
+ }
209
+
210
+ const incomingValue = incoming[key]
211
+ const existingValue = existing[key]
212
+
213
+ if (this.isPlainObject(incomingValue) && this.isPlainObject(existingValue)) {
214
+ // Recursively merge objects
215
+ merged[key] = this.deepMerge(existingValue, incomingValue) as T[Extract<keyof T, string>]
216
+ } else if (incomingValue !== undefined) {
217
+ // Overwrite primitives, arrays, or if existing value was undefined
218
+ merged[key] = incomingValue
219
+ }
220
+ }
221
+
222
+ return merged
223
+ }
224
+
225
+ // Type guard to check if value is a plain object (and not an array or null)
226
+ private isPlainObject(value: unknown): value is Record<string, any> {
227
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
228
+ }
229
+
141
230
  private async oid4vciStoreHasIssuerOpts({ correlationId, storeId, namespace }: Ioid4vciStoreExistsArgs): Promise<boolean> {
142
231
  return this.store({ stores: this._optionStores, storeId }).has(this.prefix({ namespace, correlationId }))
143
232
  }
package/src/index.ts CHANGED
@@ -3,5 +3,5 @@
3
3
  */
4
4
  const schema = require('../plugin.schema.json')
5
5
  export { schema }
6
- export { OID4VCIStore } from './agent/OID4VCIStore'
6
+ export { OID4VCIStore, oid4vciStoreMethods } from './agent/OID4VCIStore'
7
7
  export * from './types/IOID4VCIStore'