diff --git a/packages/agent/conf/demos/dbc/oid4vci_metadata/dbc.json b/packages/agent/conf/demos/dbc/oid4vci_metadata/dbc.json index 163ce0e3..f4e3356a 100644 --- a/packages/agent/conf/demos/dbc/oid4vci_metadata/dbc.json +++ b/packages/agent/conf/demos/dbc/oid4vci_metadata/dbc.json @@ -1,9 +1,9 @@ { - "correlationId": "https://ssi.dutchblockchaincoalition.org/agent", + "correlationId": "${AGENT_ENDPOINT_DBC ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://ssi.dutchblockchaincoalition.org/agent", - "credential_endpoint": "https://ssi.dutchblockchaincoalition.org/agent/credentials", + "credential_issuer": "${AGENT_ENDPOINT_DBC ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_DBC ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}/credentials", "display": [ { "name": "Dutch Blockchain Coalition", diff --git a/packages/agent/conf/demos/dbc/oid4vci_options/dbc.json b/packages/agent/conf/demos/dbc/oid4vci_options/dbc.json index 852bd8c7..8c7226d4 100644 --- a/packages/agent/conf/demos/dbc/oid4vci_options/dbc.json +++ b/packages/agent/conf/demos/dbc/oid4vci_options/dbc.json @@ -1,6 +1,6 @@ { "definitionId": "dbc2023", - "correlationId": "https://ssi.dutchblockchaincoalition.org/agent", + "correlationId": "${AGENT_ENDPOINT_DBC ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/energy-shr/oid4vci_metadata/energyshr.json b/packages/agent/conf/demos/energy-shr/oid4vci_metadata/energyshr.json index 2225060e..06e100b3 100644 --- a/packages/agent/conf/demos/energy-shr/oid4vci_metadata/energyshr.json +++ b/packages/agent/conf/demos/energy-shr/oid4vci_metadata/energyshr.json @@ -1,9 +1,9 @@ { - "correlationId": "https://ssi.energyshr.test.sphereon.com/issuer", + "correlationId": "${AGENT_ENDPOINT_ESHR ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://ssi.energyshr.test.sphereon.com/issuer", - "credential_endpoint": "https://ssi.energyshr.test.sphereon.com/issuer/credentials", + "credential_issuer": "${AGENT_ENDPOINT_ESHR ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_ESHR ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}/credentials", "display": [ { "name": "EnergySHR", diff --git a/packages/agent/conf/demos/energy-shr/oid4vci_options/energyshr.json b/packages/agent/conf/demos/energy-shr/oid4vci_options/energyshr.json index a94962b0..f1db7c57 100644 --- a/packages/agent/conf/demos/energy-shr/oid4vci_options/energyshr.json +++ b/packages/agent/conf/demos/energy-shr/oid4vci_options/energyshr.json @@ -1,6 +1,6 @@ { "definitionId": "energySHR", - "correlationId": "https://ssi.energyshr.test.sphereon.com/issuer", + "correlationId": "${AGENT_ENDPOINT_ESHR ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/fmdm/oid4vci_metadata/fmdm.json b/packages/agent/conf/demos/fmdm/oid4vci_metadata/fmdm.json index 15769e53..869b46bf 100644 --- a/packages/agent/conf/demos/fmdm/oid4vci_metadata/fmdm.json +++ b/packages/agent/conf/demos/fmdm/oid4vci_metadata/fmdm.json @@ -1,9 +1,9 @@ { - "correlationId": "https://ssi.future-mobility-alliance.org/issuer", + "correlationId": "${AGENT_ENDPOINT_FMDM ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://ssi.future-mobility-alliance.org/issuer", - "credential_endpoint": "https://ssi.future-mobility-alliance.org/issuer/credentials", + "credential_issuer": "${AGENT_ENDPOINT_FMDM ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_FMDM ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}/credentials", "display": [ { "name": "Future Mobility Alliance", diff --git a/packages/agent/conf/demos/fmdm/oid4vci_options/fmdm.json b/packages/agent/conf/demos/fmdm/oid4vci_options/fmdm.json index 06577f8b..ba115bea 100644 --- a/packages/agent/conf/demos/fmdm/oid4vci_options/fmdm.json +++ b/packages/agent/conf/demos/fmdm/oid4vci_options/fmdm.json @@ -1,6 +1,6 @@ { "definitionId": "fmdm2023", - "correlationId": "https://ssi.future-mobility-alliance.org/issuer", + "correlationId": "${AGENT_ENDPOINT_FMDM ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/knb/auckland/oid4vci_metadata/knb_van_auckland.json b/packages/agent/conf/demos/knb/auckland/oid4vci_metadata/knb_van_auckland.json index 66c1e1c1..ed5f7b61 100644 --- a/packages/agent/conf/demos/knb/auckland/oid4vci_metadata/knb_van_auckland.json +++ b/packages/agent/conf/demos/knb/auckland/oid4vci_metadata/knb_van_auckland.json @@ -1,9 +1,9 @@ { - "correlationId": "https://notary.demo.sphereon.com/agent", + "correlationId": "${AGENT_ENDPOINT_NOTARY ?? AGENT_ENDPOINT ?? http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://notary.demo.sphereon.com/agent", - "credential_endpoint": "https://notary.demo.sphereon.com/agent/credentials", + "credential_issuer": "${AGENT_ENDPOINT_NOTARY ?? AGENT_ENDPOINT ?? http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_NOTARY ?? AGENT_ENDPOINT ?? http://localhost:5000'}/credentials", "display": [ { "name": "Van Auckland notaries", diff --git a/packages/agent/conf/demos/knb/auckland/oid4vci_options/knb_van_auckland.json b/packages/agent/conf/demos/knb/auckland/oid4vci_options/knb_van_auckland.json index c7eb05c6..67c48aed 100644 --- a/packages/agent/conf/demos/knb/auckland/oid4vci_options/knb_van_auckland.json +++ b/packages/agent/conf/demos/knb/auckland/oid4vci_options/knb_van_auckland.json @@ -1,6 +1,6 @@ { "definitionId": "knb-auckland", - "correlationId": "https://notary.demo.sphereon.com/agent", + "correlationId": "${AGENT_ENDPOINT_NOTARY ?? AGENT_ENDPOINT ?? http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/knb/babylon/dids/jwk-es256k.json b/packages/agent/conf/demos/knb/bank/dids/jwk-es256k.json similarity index 100% rename from packages/agent/conf/demos/knb/babylon/dids/jwk-es256k.json rename to packages/agent/conf/demos/knb/bank/dids/jwk-es256k.json diff --git a/packages/agent/conf/demos/knb/babylon/oid4vci_metadata/knb_babylon.json b/packages/agent/conf/demos/knb/bank/oid4vci_metadata/knb_bank.json similarity index 93% rename from packages/agent/conf/demos/knb/babylon/oid4vci_metadata/knb_babylon.json rename to packages/agent/conf/demos/knb/bank/oid4vci_metadata/knb_bank.json index e59c0a28..58ab2516 100644 --- a/packages/agent/conf/demos/knb/babylon/oid4vci_metadata/knb_babylon.json +++ b/packages/agent/conf/demos/knb/bank/oid4vci_metadata/knb_bank.json @@ -1,9 +1,9 @@ { - "correlationId": "https://bank.demo.sphereon.com/agent", + "correlationId": "${AGENT_ENDPOINT_BANK ?? AGENT_ENDPOINT ?? http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://bank.demo.sphereon.com/agent", - "credential_endpoint": "https://bank.demo.sphereon.com/agent/credentials", + "credential_issuer": "${AGENT_ENDPOINT_BANK ?? AGENT_ENDPOINT ?? http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_BANK ?? AGENT_ENDPOINT ?? http://localhost:5000'}/credentials", "display": [ { "name": "Babylon Bank", diff --git a/packages/agent/conf/demos/knb/babylon/oid4vp_options/knb_bank.json b/packages/agent/conf/demos/knb/bank/oid4vci_options/knb_bank.json similarity index 57% rename from packages/agent/conf/demos/knb/babylon/oid4vp_options/knb_bank.json rename to packages/agent/conf/demos/knb/bank/oid4vci_options/knb_bank.json index 06232a50..7ee87920 100644 --- a/packages/agent/conf/demos/knb/babylon/oid4vp_options/knb_bank.json +++ b/packages/agent/conf/demos/knb/bank/oid4vci_options/knb_bank.json @@ -1,6 +1,6 @@ { "definitionId": "knb-bank", - "correlationId": "https://bank.demo.sphereon.com/agent", + "correlationId": "${AGENT_ENDPOINT_BANK ?? AGENT_ENDPOINT ?? http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/knb/babylon/oid4vci_options/knb_van_auckland.json b/packages/agent/conf/demos/knb/bank/oid4vp_options/knb_bank.json similarity index 57% rename from packages/agent/conf/demos/knb/babylon/oid4vci_options/knb_van_auckland.json rename to packages/agent/conf/demos/knb/bank/oid4vp_options/knb_bank.json index 06232a50..7ee87920 100644 --- a/packages/agent/conf/demos/knb/babylon/oid4vci_options/knb_van_auckland.json +++ b/packages/agent/conf/demos/knb/bank/oid4vp_options/knb_bank.json @@ -1,6 +1,6 @@ { "definitionId": "knb-bank", - "correlationId": "https://bank.demo.sphereon.com/agent", + "correlationId": "${AGENT_ENDPOINT_BANK ?? AGENT_ENDPOINT ?? http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/knb/babylon/presentation_definitions/knb_bank.json b/packages/agent/conf/demos/knb/bank/presentation_definitions/knb_bank.json similarity index 100% rename from packages/agent/conf/demos/knb/babylon/presentation_definitions/knb_bank.json rename to packages/agent/conf/demos/knb/bank/presentation_definitions/knb_bank.json diff --git a/packages/agent/conf/demos/knb/babylon/templates/knb_bank/BankAccount.hbs b/packages/agent/conf/demos/knb/bank/templates/knb_bank/BankAccount.hbs similarity index 100% rename from packages/agent/conf/demos/knb/babylon/templates/knb_bank/BankAccount.hbs rename to packages/agent/conf/demos/knb/bank/templates/knb_bank/BankAccount.hbs diff --git a/packages/agent/conf/demos/knb/kvk/oid4vci_metadata/knb_kvk.json b/packages/agent/conf/demos/knb/kvk/oid4vci_metadata/knb_kvk.json index 0e90a906..bc4f4cb6 100644 --- a/packages/agent/conf/demos/knb/kvk/oid4vci_metadata/knb_kvk.json +++ b/packages/agent/conf/demos/knb/kvk/oid4vci_metadata/knb_kvk.json @@ -1,9 +1,9 @@ { - "correlationId": "https://kvk.demo.sphereon.com/agent", + "correlationId": "${AGENT_ENDPOINT_KVK ?? AGENT_ENDPOINT ?? http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://kvk.demo.sphereon.com/agent", - "credential_endpoint": "https://kvk.demo.sphereon.com/agent/credentials", + "credential_issuer": "${AGENT_ENDPOINT_KVK ?? AGENT_ENDPOINT ?? http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_KVK ?? AGENT_ENDPOINT ?? http://localhost:5000'}/credentials", "display": [ { "name": "Kamer van koophandel", diff --git a/packages/agent/conf/demos/knb/kvk/oid4vci_options/knb_kvk.json b/packages/agent/conf/demos/knb/kvk/oid4vci_options/knb_kvk.json index 20e5c3c7..5a5c0050 100644 --- a/packages/agent/conf/demos/knb/kvk/oid4vci_options/knb_kvk.json +++ b/packages/agent/conf/demos/knb/kvk/oid4vci_options/knb_kvk.json @@ -1,6 +1,6 @@ { "definitionId": "knb-kvk", - "correlationId": "https://kvk.demo.sphereon.com/agent", + "correlationId": "${AGENT_ENDPOINT_KVK ?? AGENT_ENDPOINT ?? http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/pf3/oid4vci_metadata/pf3.json b/packages/agent/conf/demos/pf3/oid4vci_metadata/pf3.json index 49eff990..7bff0229 100644 --- a/packages/agent/conf/demos/pf3/oid4vci_metadata/pf3.json +++ b/packages/agent/conf/demos/pf3/oid4vci_metadata/pf3.json @@ -1,9 +1,9 @@ { - "correlationId": "https://ssi.sphereon.com/pf3", + "correlationId": "${AGENT_ENDPOINT_PF3 ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://ssi.sphereon.com/pf3", - "credential_endpoint": "https://ssi.sphereon.com/pf3/credentials", + "credential_issuer": "${AGENT_ENDPOINT_PF3 ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_PF3 ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}/credentials", "display": [ { "name": "Sphereon", diff --git a/packages/agent/conf/demos/pf3/oid4vci_options/pf3.json b/packages/agent/conf/demos/pf3/oid4vci_options/pf3.json index 2c785a88..0a6da9c1 100644 --- a/packages/agent/conf/demos/pf3/oid4vci_options/pf3.json +++ b/packages/agent/conf/demos/pf3/oid4vci_options/pf3.json @@ -1,6 +1,6 @@ { "definitionId": "pf3", - "correlationId": "https://ssi.sphereon.com/pf3", + "correlationId": "${AGENT_ENDPOINT_PF3 ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/sphereonGuest/oid4vci_metadata/sphereonGuest.json b/packages/agent/conf/demos/sphereonGuest/oid4vci_metadata/sphereonGuest.json index 6e4c4ab9..18b95cd9 100644 --- a/packages/agent/conf/demos/sphereonGuest/oid4vci_metadata/sphereonGuest.json +++ b/packages/agent/conf/demos/sphereonGuest/oid4vci_metadata/sphereonGuest.json @@ -1,9 +1,9 @@ { - "correlationId": "http://internet.or.LAN.host:5000/sphereonGuest", + "correlationId": "${AGENT_ENDPOINT_SPHEREONGUEST ?? AGENT_ENDPOINT ?? 'http://localhost:5000' }", "overwriteExisting": true, "metadata": { - "credential_issuer": "http://internet.or.LAN.host:5000/sphereonGuest", - "credential_endpoint": "http://internet.or.LAN.host:5000/sphereonGuest/credentials", + "credential_issuer": "${AGENT_ENDPOINT_SPHEREONGUEST ?? AGENT_ENDPOINT ?? 'http://localhost:5000' }", + "credential_endpoint": "${AGENT_ENDPOINT_SPHEREONGUEST ?? AGENT_ENDPOINT ?? 'http://localhost:5000' }/credentials", "display": [ { "name": "Sphereon International", diff --git a/packages/agent/conf/demos/sphereonGuest/oid4vci_options/sphereonGuest.json b/packages/agent/conf/demos/sphereonGuest/oid4vci_options/sphereonGuest.json index 08d9b1a7..5cff49a5 100644 --- a/packages/agent/conf/demos/sphereonGuest/oid4vci_options/sphereonGuest.json +++ b/packages/agent/conf/demos/sphereonGuest/oid4vci_options/sphereonGuest.json @@ -1,6 +1,6 @@ { "definitionId": "sphereonGuest", - "correlationId": "http://internet.or.LAN.host:5000/sphereonGuest", + "correlationId": "${AGENT_ENDPOINT_SPHEREONGUEST ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/triall/oid4vci_metadata/triall.json b/packages/agent/conf/demos/triall/oid4vci_metadata/triall.json index e7940363..3a819f97 100644 --- a/packages/agent/conf/demos/triall/oid4vci_metadata/triall.json +++ b/packages/agent/conf/demos/triall/oid4vci_metadata/triall.json @@ -1,9 +1,9 @@ { - "correlationId": "https://ssi.triall.io/issuer", + "correlationId": "${AGENT_ENDPOINT_TRIALL ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://ssi.triall.io/issuer", - "credential_endpoint": "https://ssi.triall.io/issuer/credentials", + "credential_issuer": "${AGENT_ENDPOINT_TRIALL ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_TRIALL ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}/credentials", "display": [ { "name": "Triall", diff --git a/packages/agent/conf/demos/triall/oid4vci_options/triall.json b/packages/agent/conf/demos/triall/oid4vci_options/triall.json index b8ce071b..a1fed586 100644 --- a/packages/agent/conf/demos/triall/oid4vci_options/triall.json +++ b/packages/agent/conf/demos/triall/oid4vci_options/triall.json @@ -1,6 +1,6 @@ { "definitionId": "triall2023", - "correlationId": "https://ssi.triall.io/issuer", + "correlationId": "${AGENT_ENDPOINT_TRIALL ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/conf/demos/unified-post/banqup/oid4vci_metadata/banqup.json b/packages/agent/conf/demos/unified-post/banqup/oid4vci_metadata/banqup.json index 2e44c185..037c7ca5 100644 --- a/packages/agent/conf/demos/unified-post/banqup/oid4vci_metadata/banqup.json +++ b/packages/agent/conf/demos/unified-post/banqup/oid4vci_metadata/banqup.json @@ -1,9 +1,9 @@ { - "correlationId": "https://agent.banqup.demo.sphereon.com", + "correlationId": "${AGENT_ENDPOINT_BANQUP ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "overwriteExisting": true, "metadata": { - "credential_issuer": "https://agent.banqup.demo.sphereon.com", - "credential_endpoint": "https://agent.banqup.demo.sphereon.com/credentials", + "credential_issuer": "${AGENT_ENDPOINT_BANQUP ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", + "credential_endpoint": "${AGENT_ENDPOINT_BANQUP ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}/credentials", "display": [ { "name": "Banqup", diff --git a/packages/agent/conf/demos/unified-post/banqup/oid4vci_options/banqup.json b/packages/agent/conf/demos/unified-post/banqup/oid4vci_options/banqup.json index c45dfbe0..eaa3d64d 100644 --- a/packages/agent/conf/demos/unified-post/banqup/oid4vci_options/banqup.json +++ b/packages/agent/conf/demos/unified-post/banqup/oid4vci_options/banqup.json @@ -1,6 +1,6 @@ { "definitionId": "banqup", - "correlationId": "https://agent.banqup.demo.sphereon.com", + "correlationId": "${AGENT_ENDPOINT_BANQUP ?? AGENT_ENDPOINT ?? 'http://localhost:5000'}", "issuerOpts": { "didOpts": { "checkLinkedDomains": "if_present" diff --git a/packages/agent/src/utils/generic.ts b/packages/agent/src/utils/generic.ts index 6147920c..6fab983f 100644 --- a/packages/agent/src/utils/generic.ts +++ b/packages/agent/src/utils/generic.ts @@ -1,11 +1,10 @@ -import fs from "fs"; +import fs from 'fs' export function loadJsonFiles({path}: { path: string }): { names: string[], fileNames: string[], - asObject: Record + asObject: Record, asArray: T[] - } { const fileNames = fs.readdirSync(path).filter(file => file.match(/\.json$/)) const names: string[] = [] @@ -20,8 +19,12 @@ export function loadJsonFiles({path}: { path: string }): { names.push(name) files.push(fileName) const jsonFilePath = `${path}/${fileName}` + try { - const object = JSON.parse(fs.readFileSync(jsonFilePath, 'utf8').toString()) as T + let content = fs.readFileSync(jsonFilePath, 'utf8').toString() + content = substituteEnvVars(content) + + const object = JSON.parse(content) as T asObject[name] = object asArray.push(object) } catch (e) { @@ -32,28 +35,46 @@ export function loadJsonFiles({path}: { path: string }): { } } }) + return {names, fileNames: files, asObject, asArray} } +function substituteEnvVars(content: string): string { + const envVarRegex = /\$\{([^}]+)}/g; + return content.replace(envVarRegex, (_, vars) => { + const options = vars.split(/(?:\|\|)|(?:\?\?)/).map((opt: string) => opt.trim()).filter(Boolean); + for (const option of options) { + if (option.startsWith("'") && option.endsWith("'")) { + return option.slice(1, -1); + } + const envValue = process.env[option]; + if (envValue !== undefined && envValue !== null && envValue.trim() !== '') { + return envValue; + } + } + return ''; + }); +} + /** * The function builds a file path without missing or excess slashes * @param segments */ export function normalizeFilePath(...segments: (string | null | undefined)[]): string { - let result = ''; + let result = '' for (let i = 0; i < segments.length; i++) { - const segment = segments[i]; + const segment = segments[i] if (segment !== null && segment !== undefined && segment !== '') { if (i === 0) { // For the first non-null and non-empty segment, remove the trailing slash if it exists - result += segment.replace(/\/$/, ''); + result += segment.replace(/\/$/, '') } else { // For subsequent segments, ensure all slashes are present - result += `/${segment.replace(/^\//, '').replace(/\/$/, '')}`; + result += `/${segment.replace(/^\//, '').replace(/\/$/, '')}` } } } - return result; + return result }