@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 +86 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +86 -11
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/agent/OID4VCIStore.ts +100 -11
- package/src/index.ts +1 -1
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
|
|
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,
|
package/dist/index.cjs.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,gCAAAA,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,6BAA+B;AAAA,QAC7B,YAAc;AAAA,UACZ,SAAW;AAAA,YACT,qBAAuB;AAAA,cACrB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,WAAW;AAAA,cACxB,aAAe;AAAA,YACjB;AAAA,YACA,0BAA4B;AAAA,cAC1B,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,YAAc;AAAA,kBACZ,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,KAAO;AAAA,sBACL,MAAQ;AAAA,oBACV;AAAA,oBACA,OAAS;AAAA,sBACP,MAAQ;AAAA,oBACV;AAAA,oBACA,UAAY;AAAA,sBACV,MAAQ;AAAA,oBACV;AAAA,oBACA,iBAAmB;AAAA,sBACjB,MAAQ;AAAA,oBACV;AAAA,oBACA,MAAQ;AAAA,sBACN,MAAQ;AAAA,sBACR,OAAS;AAAA,wBACP,MAAQ;AAAA,wBACR,YAAc;AAAA,0BACZ,sBAAwB;AAAA,wBAC1B;AAAA,sBACF;AAAA,oBACF;AAAA,oBACA,UAAY;AAAA,sBACV,MAAQ;AAAA,sBACR,OAAS;AAAA,wBACP,MAAQ;AAAA,wBACR,YAAc;AAAA,0BACZ,sBAAwB;AAAA,wBAC1B;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,kBACA,sBAAwB;AAAA,kBACxB,UAAY,CAAC,OAAO,YAAY,QAAQ,UAAU;AAAA,gBACpD;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,YAAY;AAAA,cACzB,aAAe;AAAA,YACjB;AAAA,YACA,wBAA0B;AAAA,cACxB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,WAAW;AAAA,cACxB,aAAe;AAAA,YACjB;AAAA,YACA,2BAA6B;AAAA,cAC3B,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACT,MAAQ;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACb,MAAQ;AAAA,gBACV;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,aAAa,WAAW,aAAa;AAAA,cAClD,aAAe;AAAA,YACjB;AAAA,YACA,WAAa;AAAA,cACX,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,QAAU;AAAA,kBACR,MAAQ;AAAA,gBACV;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,QAAQ;AAAA,cACrB,aAAe;AAAA,YACjB;AAAA,YACA,yCAA2C;AAAA,cACzC,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACT,MAAQ;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACb,MAAQ;AAAA,gBACV;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,aAAa,WAAW,aAAa;AAAA,cAClD,aAAe;AAAA,YACjB;AAAA,YACA,gCAAkC;AAAA,cAChC,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,KAAO;AAAA,kBACL,MAAQ;AAAA,gBACV;AAAA,gBACA,gBAAkB;AAAA,kBAChB,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,cAAgB;AAAA,kBACd,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,OAAO,kBAAkB,cAAc;AAAA,cACpD,aAAe;AAAA,YACjB;AAAA,YACA,0CAA4C;AAAA,cAC1C,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,+BAAiC;AAAA,kBAC/B,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,kBAAoB;AAAA,kBAClB,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,aAAa,+BAA+B;AAAA,cACzD,aAAe;AAAA,YACjB;AAAA,YACA,qBAAuB;AAAA,cACrB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,IAAM;AAAA,kBACJ,MAAQ;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACb,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,gBACA,gBAAkB;AAAA,kBAChB,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,MAAM,gBAAgB;AAAA,cACnC,aAAe;AAAA,YACjB;AAAA,YACA,yCAA2C;AAAA,cACzC,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,gCAAkC;AAAA,kBAChC,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,aAAa,gCAAgC;AAAA,cAC1D,aAAe;AAAA,YACjB;AAAA,YACA,8BAAgC;AAAA,cAC9B,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,SAAW;AAAA,kBACT,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,yBAA2B;AAAA,kBACzB,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,YAAc;AAAA,kBACZ,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,WAAW,YAAY;AAAA,cACpC,aAAe;AAAA,YACjB;AAAA,YACA,qCAAuC;AAAA,cACrC,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,WAAa;AAAA,kBACX,MAAQ;AAAA,gBACV;AAAA,gBACA,+BAAiC;AAAA,kBAC/B,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,gCAAkC;AAAA,kBAChC,MAAQ;AAAA,kBACR,YAAc;AAAA,oBACZ,sBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA,gBACA,sBAAwB;AAAA,cAC1B;AAAA,cACA,UAAY,CAAC,aAAa,+BAA+B;AAAA,cACzD,aAAe;AAAA,YACjB;AAAA,UACF;AAAA,UACA,SAAW;AAAA,YACT,mBAAqB;AAAA,cACnB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,YAChB;AAAA,YACA,wBAA0B;AAAA,cACxB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,YAChB;AAAA,YACA,sBAAwB;AAAA,cACtB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,YAChB;AAAA,YACA,sBAAwB;AAAA,cACtB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,oCAAsC;AAAA,cACpC,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,qCAAuC;AAAA,cACrC,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,oCAAsC;AAAA,cACpC,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,YACA,gCAAkC;AAAA,cAChC,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACxUA;;;;;;;;;ACCA,qBAA0E;AAsBnE,IAAMC,sBAAqC;EAChD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGK,IAAMC,eAAN,MAAMA;EAxCb,OAwCaA;;;EACX,IAAIC,cAA8C;AAChD,WAAO,KAAKC;EACd;EAEA,IAAID,YAAYE,OAAuC;AACrD,SAAKD,eAAeC;EACtB;EAEiBC;EACAC;EACAC;EACAC;EACAC;EAETN;EAECO,UAAyB;IAChCC,6BAA6B,KAAKA,4BAA4BC,KAAK,IAAI;IACvEC,kCAAkC,KAAKC,0BAA0BF,KAAK,IAAI;IAC1EG,4BAA4B,KAAKA,2BAA2BH,KAAK,IAAI;IACrEI,8BAA8B,KAAKA,6BAA6BJ,KAAK,IAAI;IAEzEK,2BAA2B,KAAKA,0BAA0BL,KAAK,IAAI;IACnEM,2BAA2B,KAAKA,0BAA0BN,KAAK,IAAI;IACnEO,+BAA+B,KAAKA,8BAA8BP,KAAK,IAAI;IAC3EQ,8BAA8B,KAAKA,6BAA6BR,KAAK,IAAI;IACzES,gCAAgC,KAAKA,+BAA+BT,KAAK,IAAI;IAE7EU,yBAAyB,KAAKA,wBAAwBV,KAAK,IAAI;IAC/DW,0BAA0B,KAAKA,yBAAyBX,KAAK,IAAI;IACjEY,yBAAyB,KAAKA,wBAAwBZ,KAAK,IAAI;IAC/Da,6BAA6B,KAAKA,4BAA4Bb,KAAK,IAAI;IACvEc,4BAA4B,KAAKA,2BAA2Bd,KAAK,IAAI;IACrEe,8BAA8B,KAAKA,6BAA6Bf,KAAK,IAAI;EAC3E;EAEA,YAAYgB,MAAyB;AACnC,SAAKpB,iBAAiBoB,KAAKC,gBAAgB;AAC3C,SAAKpB,mBAAmBmB,KAAKnB,oBAAoB;AACjD,QAAImB,KAAK1B,aAAa;AACpB,WAAKC,eAAeyB,KAAK1B;IAC3B;AACA,QAAI0B,MAAME,wBAAwBF,KAAKE,gCAAgCC,KAAK;AAC1E,WAAK1B,wBAAwBuB,KAAKE;IACpC,WAAWF,MAAME,sBAAsB;AACrC,WAAKzB,yBAAwB,oBAAI0B,IAAAA,GAAMC,IAAI,KAAKxB,gBAAgBoB,KAAKE,oBAAoB;IAC3F,OAAO;AACL,WAAKzB,yBAAwB,oBAAI0B,IAAAA,GAAMC,IACrC,KAAKxB,gBACL,IAAIyB,6BAAc;QAChBC,WAAW,KAAKzB;QAChB0B,OAAO,oBAAIJ,IAAAA;MACb,CAAA,CAAA;IAEJ;AACA,QAAIH,MAAMQ,qCAAqCR,KAAKQ,6CAA6CL,KAAK;AACpG,WAAKzB,qCAAqCsB,KAAKQ;IACjD,WAAWR,MAAMQ,mCAAmC;AAClD,WAAK9B,sCAAqC,oBAAIyB,IAAAA,GAAMC,IAAI,KAAKxB,gBAAgBoB,KAAKQ,iCAAiC;IACrH,OAAO;AACL,WAAK9B,sCAAqC,oBAAIyB,IAAAA,GAAMC,IAClD,KAAKxB,gBACL,IAAIyB,6BAAc;QAChBC,WAAW,KAAKzB;QAChB0B,OAAO,oBAAIJ,IAAAA;MACb,CAAA,CAAA;IAEJ;AAEA,QAAIH,QAAQS,MAAMC,QAAQV,MAAMW,eAAAA,GAAkB;AAChD,WAAK,KAAKA,gBAAgBX,KAAKW,eAAe;IAChD;AAEA,QAAIX,MAAMY,oBAAoBZ,KAAKY,4BAA4BT,KAAK;AAClE,WAAKxB,gBAAgBqB,KAAKY;IAC5B,WAAWZ,MAAMY,kBAAkB;AACjC,WAAKjC,iBAAgB,oBAAIwB,IAAAA,GAAMC,IAAI,KAAKxB,gBAAgBoB,KAAKY,gBAAgB;IAC/E,OAAO;AACL,WAAKjC,iBAAgB,oBAAIwB,IAAAA,GAAMC,IAC7B,KAAKxB,gBACL,IAAIyB,6BAAc;QAChBC,WAAW,KAAKzB;QAChB0B,OAAO,oBAAIJ,IAAAA;MACb,CAAA,CAAA;IAEJ;AACA,QAAIH,QAAQS,MAAMC,QAAQV,MAAMa,gBAAAA,GAAmB;AACjDb,WAAKa,iBAAiBC,QAAQ,CAACC,QAAQ,KAAKxB,8BAA8BwB,GAAAA,CAAAA;IAC5E;EACF;EAEA,MAAc1B,0BAA0B,EAAE2B,eAAeC,SAASX,UAAS,GAA+D;AACxI,WACG,MAAM,KAAKC,MAAM;MAAEW,QAAQ,KAAKvC;MAAesC;IAAQ,CAAA,EAAGE,IACzD,KAAKC,OAAO;MACVd;MACAU;IACF,CAAA,CAAA,KACI,KAAK1C;EAEf;EAEOuC,iBAAiBQ,YAAqC;AAC3DA,eAAWP,QAAQ,CAACC,QAAQ,KAAKxB,8BAA8BwB,GAAAA,CAAAA;EACjE;EAEA,MAAcJ,gBAAgBW,iBAAuD;AACnF,eAAWC,cAAcD,iBAAiB;AACxC,YAAME,OAAOD;AACb,YAAMN,UAAUO,KAAKP,WAAW,KAAKrC;AACrC,YAAM0B,YAAYkB,KAAKlB,aAAa,KAAKzB;AACzC,YAAMmC,gBAAgBQ,KAAKR;AAE3B,YAAMS,mBAAmB,MAAM,KAAK/B,wBAAwB;QAC1DgC,cAAcF,KAAKE;QACnBV;QACAC;QACAX;MACF,CAAA;AAEA,UAAIqB;AAEJ,UAAIF,kBAAkB;AAEpB,YAAID,KAAKI,sBAAsB,OAAO;AACpC;QACF;AAEAD,4BAAoB,KAAKE,UAAUJ,kBAAkBD,KAAKM,QAAQ;MACpE,OAAO;AACLH,4BAAoBH,KAAKM;MAC3B;AAEA,YAAM,KAAKjC,4BAA4B;QACrC6B,cAAcF,KAAKE;QACnBI,UAAUH;QACVV;QACAD;QACAV;;;QAGAsB,mBAAmB;MACrB,CAAA;IACF;EACF;;;;;;;EAQQC,UAAyCE,UAAaC,UAAgB;AAC5E,QAAI,CAACA,UAAU;AACb,aAAOD;IACT;AACA,QAAI,CAACA,UAAU;AACb,aAAOC;IACT;AAEA,UAAMC,SAAS;MAAE,GAAGF;IAAS;AAE7B,eAAWG,OAAOF,UAAU;AAC1B,UAAI,CAACG,OAAOC,UAAUC,eAAeC,KAAKN,UAAUE,GAAAA,GAAM;AACxD;MACF;AAEA,YAAMK,gBAAgBP,SAASE,GAAAA;AAC/B,YAAMM,gBAAgBT,SAASG,GAAAA;AAE/B,UAAI,KAAKO,cAAcF,aAAAA,KAAkB,KAAKE,cAAcD,aAAAA,GAAgB;AAE1EP,eAAOC,GAAAA,IAAO,KAAKL,UAAUW,eAAeD,aAAAA;MAC9C,WAAWA,kBAAkBG,QAAW;AAEtCT,eAAOC,GAAAA,IAAOK;MAChB;IACF;AAEA,WAAON;EACT;;EAGQQ,cAAcjE,OAA8C;AAClE,WAAO,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAACiC,MAAMC,QAAQlC,KAAAA;EACvE;EAEA,MAAcc,0BAA0B,EAAE0B,eAAeC,SAASX,UAAS,GAA+C;AACxH,WAAO,KAAKC,MAAM;MAAEW,QAAQ,KAAKvC;MAAesC;IAAQ,CAAA,EAAG0B,IAAI,KAAKvB,OAAO;MAAEd;MAAWU;IAAc,CAAA,CAAA;EACxG;EAEA,MAAczB,8BAA8BqD,MAAmE;AAC7G,UAAM3B,UAAU,KAAK4B,WAAWD,IAAAA;AAChC,UAAMtC,YAAY,KAAKwC,aAAaF,IAAAA;AACpC,UAAM,EAAE5B,eAAe+B,YAAYC,IAAG,IAAKJ;AAC3C,QAAIA,MAAMK,eAAe,OAAO;IAEhC;AACA,UAAMlB,WAAW,MAAM,KAAKxB,MAAM;MAAEW,QAAQ,KAAKvC;MAAesC;IAAQ,CAAA,EAAGiC,eACzE,KAAK9B,OAAO;MACVd;MACAU;IACF,CAAA,CAAA;AAEF,QAAI,CAACe,SAASvD,SAAUuD,SAASvD,SAASoE,KAAKhB,sBAAsB,OAAQ;AAC3E,aAAO,MAAM,KAAKrB,MAAM;QAAEW,QAAQ,KAAKvC;QAAesC;MAAQ,CAAA,EAAGb,IAC/D,KAAKgB,OAAO;QACVd;QACAU;MACF,CAAA,GACA+B,YACAC,GAAAA;IAEJ;AACA,WAAOjB;EACT;EAEA,MAAcvC,6BAA6B,EAAEyB,SAASD,eAAeV,UAAS,GAA+C;AAC3H,WAAO,KAAKC,MAAM;MAAEW,QAAQ,KAAKvC;MAAesC;IAAQ,CAAA,EAAGkC,OAAO,KAAK/B,OAAO;MAAEd;MAAWU;IAAc,CAAA,CAAA;EAC3G;EAEA,MAAcvB,+BAA+B,EAAEwB,QAAO,GAA8C;AAClG,WAAO,MAAM,KAAKV,MAAM;MAAEW,QAAQ,KAAKvC;MAAesC;IAAQ,CAAA,EAC3DmC,MAAK,EACLC,KAAK,MAAM,IAAA;EAChB;EAEA,MAAc3D,wBAAwB,EACpCgC,cACAV,eACAC,SACAX,UAAS,GACiF;AAC1F,YAAQoB,cAAAA;MACN,KAAK;AACH,eAAO,KAAKnB,MAAmC;UAC7CW,QAAQ,KAAKxC;UACbuC;QACF,CAAA,EAAGE,IAAI,KAAKC,OAAO;UAAEd;UAAWU;QAAc,CAAA,CAAA;MAChD,KAAK;AACH,eAAO,KAAKT,MAAsB;UAChCW,QAAQ,KAAKzC;UACbwC;QACF,CAAA,EAAGE,IAAI,KAAKC,OAAO;UAAEd;UAAWU;QAAc,CAAA,CAAA;IAClD;AACA,WAAO0B;EACT;EAEA,MAAc/C,yBAAyB,EAAE+B,cAAcT,SAASX,UAAS,GAAmE;AAC1I,YAAQoB,cAAAA;MACN,KAAK;AACH,eAAO,KAAKnB,MAAmC;UAC7CW,QAAQ,KAAKxC;UACbuC;QACF,CAAA,EAAGqC,QAAQ;UAAC,GAAG,KAAKR,aAAa;YAAExC;UAAU,CAAA,CAAA;SAAK;MACpD,KAAK;AACH,eAAO,KAAKC,MAAsB;UAChCW,QAAQ,KAAKzC;UACbwC;QACF,CAAA,EAAGqC,QAAQ;UAAC,GAAG,KAAKR,aAAa;YAAExC;UAAU,CAAA,CAAA;SAAK;IACtD;AACA,WAAO,CAAA;EACT;EAEA,MAAcV,wBAAwB,EAAE8B,cAAcV,eAAeC,SAASX,UAAS,GAA+C;AACpI,YAAQoB,cAAAA;MACN,KAAK;AACH,eAAO,KAAKnB,MAAmC;UAC7CW,QAAQ,KAAKxC;UACbuC;QACF,CAAA,EAAG0B,IAAI,KAAKvB,OAAO;UAAEd;UAAWU;QAAc,CAAA,CAAA;MAChD,KAAK;AACH,eAAO,KAAKT,MAAsB;UAChCW,QAAQ,KAAKzC;UACbwC;QACF,CAAA,EAAG0B,IAAI,KAAKvB,OAAO;UAAEd;UAAWU;QAAc,CAAA,CAAA;IAClD;AACA,WAAO;EACT;EAEA,MAAcnB,4BAA4B+C,MAAkE;AAC1G,UAAMtC,YAAY,KAAKwC,aAAaF,IAAAA;AACpC,UAAM3B,UAAU,KAAK4B,WAAWD,IAAAA;AAChC,UAAM,EAAE5B,eAAec,UAAUkB,KAAKtB,aAAY,IAAKkB;AAEvD,QAAIA,MAAMK,eAAe,OAAO;IAEhC;AAEA,YAAQvB,cAAAA;MACN,KAAK;AACH,cAAM6B,eAAe,MAAM,KAAKhD,MAAmC;UACjEW,QAAQ,KAAKxC;UACbuC;QACF,CAAA,EAAGiC,eAAe,KAAK9B,OAAO;UAAEd;UAAWU;QAAc,CAAA,CAAA;AAEzD,YAAI,CAACuC,aAAa/E,SAAU+E,aAAa/E,SAASoE,KAAKhB,sBAAsB,OAAQ;AACnF,iBAAO,MAAM,KAAKrB,MAAmC;YACnDW,QAAQ,KAAKxC;YACbuC;UACF,CAAA,EAAGb,IAAI,KAAKgB,OAAO;YAAEd;YAAWU;UAAc,CAAA,GAAIc,UAAyCkB,GAAAA;QAC7F;AACA,eAAOO;MACT,KAAK;AACH,cAAMC,iBAAiB,MAAM,KAAKjD,MAAsB;UACtDW,QAAQ,KAAKzC;UACbwC;QACF,CAAA,EAAGiC,eAAe,KAAK9B,OAAO;UAAEd;UAAWU;QAAc,CAAA,CAAA;AAEzD,YAAI,CAACwC,eAAehF,SAAUgF,eAAehF,SAASoE,KAAKhB,sBAAsB,OAAQ;AACvF,iBAAO,MAAM,KAAKrB,MAAsB;YACtCW,QAAQ,KAAKzC;YACbwC;UACF,CAAA,EAAGb,IAAI,KAAKgB,OAAO;YAAEd;YAAWU;UAAc,CAAA,GAAIc,UAA4BkB,GAAAA;QAChF;AACA,eAAOQ;IACX;AACA,WAAOd;EACT;EAEA,MAAc5C,2BAA2B8C,MAAiD;AACxF,UAAMtC,YAAY,KAAKwC,aAAaF,IAAAA;AACpC,UAAM3B,UAAU,KAAK4B,WAAWD,IAAAA;AAEhC,YAAQA,KAAKlB,cAAY;MACvB,KAAK;AACH,eAAO,KAAKnB,MAAmC;UAC7CW,QAAQ,KAAKxC;UACbuC;QACF,CAAA,EAAGkC,OAAO,KAAK/B,OAAO;UAAEd;UAAWU,eAAe4B,KAAK5B;QAAc,CAAA,CAAA;MACvE,KAAK;AACH,eAAO,KAAKT,MAAsB;UAChCW,QAAQ,KAAKzC;UACbwC;QACF,CAAA,EAAGkC,OAAO,KAAK/B,OAAO;UAAEd;UAAWU,eAAe4B,KAAK5B;QAAc,CAAA,CAAA;IACzE;AACA,WAAO;EACT;EAEA,MAAcjB,6BAA6B,EAAE2B,cAAcT,QAAO,GAA8C;AAC9G,YAAQS,cAAAA;MACN,KAAK;AACH,eAAO,MAAM,KAAKnB,MAAmC;UACnDW,QAAQ,KAAKxC;UACbuC;QACF,CAAA,EACGmC,MAAK,EACLC,KAAK,MAAM,IAAA;MAChB,KAAK;AACH,eAAO,MAAM,KAAK9C,MAAsB;UACtCW,QAAQ,KAAKzC;UACbwC;QACF,CAAA,EACGmC,MAAK,EACLC,KAAK,MAAM,IAAA;IAClB;AACA,WAAO;EACT;EAEQnE,4BAAqE;AAC3E,WAAOuE,QAAQC,QAAQ,KAAKnD,MAAM;MAAEW,QAAQ,KAAKvC;MAAesC,SAAS,KAAKrC;IAAe,CAAA,CAAA;EAC/F;EAEQG,8BAAuE;AAC7E,WAAO0E,QAAQC,QAAQ,KAAKnD,MAAM;MAAEW,QAAQ,KAAKzC;MAAuBwC,SAAS,KAAKrC;IAAe,CAAA,CAAA;EACvG;EAEQO,6BAA8C;AACpD,WAAOsE,QAAQC,QAAQ,KAAK9E,cAAc;EAC5C;EAEQQ,+BAAgD;AACtD,WAAOqE,QAAQC,QAAQ,KAAK7E,gBAAgB;EAC9C;EAEQ0B,MAAgCqC,MAAuF;AAC7H,UAAM3B,UAAU,KAAK4B,WAAW;MAAE5B,SAAS2B,KAAK3B;IAAQ,CAAA;AACxD,UAAMV,QAAQqC,KAAK1B,OAAOC,IAAIF,OAAAA;AAC9B,QAAI,CAACV,OAAO;AACV,YAAMoD,MAAM,wCAAwC1C,OAAAA,EAAS;IAC/D;AACA,WAAOV;EACT;EAEQsC,WAAW,EAAE5B,QAAO,GAAkC;AAC5D,WAAOA,WAAW,KAAKrC;EACzB;EAEQkE,aAAa,EAAExC,UAAS,GAAoC;AAClE,WAAOA,aAAa,KAAKzB;EAC3B;EAEQuC,OAAO,EAAEd,WAAWU,cAAa,GAA2D;AAClG,WAAO,GAAG,KAAK8B,aAAa;MAAExC;IAAU,CAAA,CAAA,IAAMU,aAAAA;EAChD;AACF;;;ADlbA,IAAM4C,SAASC;","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
|
|
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.
|
|
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-
|
|
30
|
-
"@sphereon/ssi-sdk-ext.did-utils": "0.36.1-feature.SSISDK.
|
|
31
|
-
"@sphereon/ssi-sdk-ext.identifier-resolution": "0.36.1-feature.SSISDK.
|
|
32
|
-
"@sphereon/ssi-sdk.kv-store-temp": "0.36.1-feature.SSISDK.
|
|
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.
|
|
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": "
|
|
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
|
|
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