@twin.org/node-core 0.0.2-next.9 → 0.0.3-next.2

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.
Files changed (126) hide show
  1. package/README.md +1 -1
  2. package/dist/es/bootstrap.js +374 -0
  3. package/dist/es/bootstrap.js.map +1 -0
  4. package/dist/es/builders/engineEnvBuilder.js +1051 -0
  5. package/dist/es/builders/engineEnvBuilder.js.map +1 -0
  6. package/dist/es/builders/engineServerEnvBuilder.js +197 -0
  7. package/dist/es/builders/engineServerEnvBuilder.js.map +1 -0
  8. package/dist/es/builders/extensionsBuilder.js +109 -0
  9. package/dist/es/builders/extensionsBuilder.js.map +1 -0
  10. package/dist/es/defaults.js +9 -0
  11. package/dist/es/defaults.js.map +1 -0
  12. package/dist/es/identity.js +169 -0
  13. package/dist/es/identity.js.map +1 -0
  14. package/dist/es/index.js +23 -0
  15. package/dist/es/index.js.map +1 -0
  16. package/dist/es/models/ICacheMetadata.js +4 -0
  17. package/dist/es/models/ICacheMetadata.js.map +1 -0
  18. package/dist/es/models/IEngineEnvironmentVariables.js +4 -0
  19. package/dist/es/models/IEngineEnvironmentVariables.js.map +1 -0
  20. package/dist/es/models/IEngineServerEnvironmentVariables.js +2 -0
  21. package/dist/es/models/IEngineServerEnvironmentVariables.js.map +1 -0
  22. package/dist/es/models/IModuleProtocol.js +2 -0
  23. package/dist/es/models/IModuleProtocol.js.map +1 -0
  24. package/dist/es/models/INodeEngineConfig.js +2 -0
  25. package/dist/es/models/INodeEngineConfig.js.map +1 -0
  26. package/dist/es/models/INodeEngineState.js +2 -0
  27. package/dist/es/models/INodeEngineState.js.map +1 -0
  28. package/dist/es/models/INodeEnvironmentVariables.js +2 -0
  29. package/dist/es/models/INodeEnvironmentVariables.js.map +1 -0
  30. package/dist/es/models/INodeOptions.js +2 -0
  31. package/dist/es/models/INodeOptions.js.map +1 -0
  32. package/dist/es/models/IProtocolHandlerResult.js +4 -0
  33. package/dist/es/models/IProtocolHandlerResult.js.map +1 -0
  34. package/dist/es/models/moduleProtocol.js +29 -0
  35. package/dist/es/models/moduleProtocol.js.map +1 -0
  36. package/dist/es/models/nodeExtensionMethods.js +2 -0
  37. package/dist/es/models/nodeExtensionMethods.js.map +1 -0
  38. package/dist/es/models/nodeFeatures.js +21 -0
  39. package/dist/es/models/nodeFeatures.js.map +1 -0
  40. package/dist/es/node.js +265 -0
  41. package/dist/es/node.js.map +1 -0
  42. package/dist/es/server.js +78 -0
  43. package/dist/es/server.js.map +1 -0
  44. package/dist/es/utils.js +418 -0
  45. package/dist/es/utils.js.map +1 -0
  46. package/dist/types/bootstrap.d.ts +27 -10
  47. package/dist/types/builders/engineEnvBuilder.d.ts +3 -2
  48. package/dist/types/builders/engineServerEnvBuilder.d.ts +4 -3
  49. package/dist/types/builders/extensionsBuilder.d.ts +32 -0
  50. package/dist/types/defaults.d.ts +6 -0
  51. package/dist/types/identity.d.ts +14 -0
  52. package/dist/types/index.d.ts +20 -11
  53. package/dist/types/models/ICacheMetadata.d.ts +17 -0
  54. package/dist/types/models/IEngineEnvironmentVariables.d.ts +132 -24
  55. package/dist/types/models/IEngineServerEnvironmentVariables.d.ts +12 -3
  56. package/dist/types/models/IModuleProtocol.d.ts +18 -0
  57. package/dist/types/models/INodeEngineConfig.d.ts +6 -0
  58. package/dist/types/models/INodeEngineState.d.ts +22 -0
  59. package/dist/types/models/INodeEnvironmentVariables.d.ts +50 -10
  60. package/dist/types/models/INodeOptions.d.ts +14 -3
  61. package/dist/types/models/IProtocolHandlerResult.d.ts +13 -0
  62. package/dist/types/models/moduleProtocol.d.ts +29 -0
  63. package/dist/types/models/nodeExtensionMethods.d.ts +27 -0
  64. package/dist/types/models/nodeFeatures.d.ts +5 -5
  65. package/dist/types/node.d.ts +17 -7
  66. package/dist/types/server.d.ts +9 -6
  67. package/dist/types/utils.d.ts +87 -2
  68. package/docs/changelog.md +185 -0
  69. package/docs/detailed-guide.md +129 -0
  70. package/docs/reference/functions/bootstrap.md +1 -1
  71. package/docs/reference/functions/bootstrapAuth.md +1 -1
  72. package/docs/reference/functions/bootstrapBlobEncryption.md +1 -1
  73. package/docs/reference/functions/bootstrapContextIdHandlers.md +35 -0
  74. package/docs/reference/functions/bootstrapImmutableProofMethod.md +1 -1
  75. package/docs/reference/functions/{bootstrapNodeUser.md → bootstrapNodeAdminUser.md} +3 -3
  76. package/docs/reference/functions/{bootstrapNodeIdentity.md → bootstrapNodeId.md} +3 -3
  77. package/docs/reference/functions/bootstrapSynchronisedStorage.md +1 -1
  78. package/docs/reference/functions/bootstrapTenantId.md +35 -0
  79. package/docs/reference/functions/buildConfiguration.md +2 -2
  80. package/docs/reference/functions/buildEngineConfiguration.md +8 -2
  81. package/docs/reference/functions/buildEngineServerConfiguration.md +9 -3
  82. package/docs/reference/functions/createModuleImportUrl.md +21 -0
  83. package/docs/reference/functions/directoryExists.md +19 -0
  84. package/docs/reference/functions/extensionsConfiguration.md +25 -0
  85. package/docs/reference/functions/extensionsInitialiseEngine.md +25 -0
  86. package/docs/reference/functions/extensionsInitialiseEngineServer.md +31 -0
  87. package/docs/reference/functions/getExtensionsCacheDir.md +31 -0
  88. package/docs/reference/functions/getFiles.md +19 -0
  89. package/docs/reference/functions/getSubFolders.md +19 -0
  90. package/docs/reference/functions/handleHttpsProtocol.md +49 -0
  91. package/docs/reference/functions/handleNpmProtocol.md +31 -0
  92. package/docs/reference/functions/hashUrl.md +19 -0
  93. package/docs/reference/functions/isCacheExpired.md +31 -0
  94. package/docs/reference/functions/overrideModuleImport.md +8 -2
  95. package/docs/reference/functions/parseModuleProtocol.md +19 -0
  96. package/docs/reference/functions/resolvePackageEntryPoint.md +32 -0
  97. package/docs/reference/functions/run.md +3 -3
  98. package/docs/reference/functions/shutdownExtensions.md +25 -0
  99. package/docs/reference/functions/start.md +11 -5
  100. package/docs/reference/index.md +36 -2
  101. package/docs/reference/interfaces/ICacheMetadata.md +27 -0
  102. package/docs/reference/interfaces/IEngineEnvironmentVariables.md +255 -37
  103. package/docs/reference/interfaces/IEngineServerEnvironmentVariables.md +1696 -5
  104. package/docs/reference/interfaces/IModuleProtocol.md +27 -0
  105. package/docs/reference/interfaces/INodeEngineConfig.md +7 -0
  106. package/docs/reference/interfaces/INodeEngineState.md +39 -0
  107. package/docs/reference/interfaces/INodeEnvironmentVariables.md +609 -165
  108. package/docs/reference/interfaces/INodeOptions.md +27 -3
  109. package/docs/reference/interfaces/IProtocolHandlerResult.md +19 -0
  110. package/docs/reference/type-aliases/ModuleProtocol.md +5 -0
  111. package/docs/reference/type-aliases/NodeExtensionInitialiseEngineMethod.md +18 -0
  112. package/docs/reference/type-aliases/NodeExtensionInitialiseEngineServerMethod.md +24 -0
  113. package/docs/reference/type-aliases/NodeExtensionInitialiseMethod.md +23 -0
  114. package/docs/reference/type-aliases/NodeExtensionShutdownMethod.md +10 -0
  115. package/docs/reference/variables/ATTESTATION_VERIFICATION_METHOD_ID.md +3 -0
  116. package/docs/reference/variables/AUTH_SIGNING_KEY_ID.md +3 -0
  117. package/docs/reference/variables/BLOB_STORAGE_ENCRYPTION_KEY_ID.md +3 -0
  118. package/docs/reference/variables/IMMUTABLE_PROOF_VERIFICATION_METHOD_ID.md +3 -0
  119. package/docs/reference/variables/ModuleProtocol.md +37 -0
  120. package/docs/reference/variables/NodeFeatures.md +7 -7
  121. package/docs/reference/variables/SYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID.md +3 -0
  122. package/docs/reference/variables/VC_AUTHENTICATION_VERIFICATION_METHOD_ID.md +3 -0
  123. package/locales/en.json +27 -9
  124. package/package.json +27 -9
  125. package/dist/cjs/index.cjs +0 -1910
  126. package/dist/esm/index.mjs +0 -1870
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineEnvBuilder.js","sourceRoot":"","sources":["../../../src/builders/engineEnvBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport path from \"node:path\";\nimport { Coerce, Is } from \"@twin.org/core\";\nimport type { IIotaConfig } from \"@twin.org/dlt-iota\";\nimport type { IEngineModuleConfig } from \"@twin.org/engine-models\";\nimport {\n\tAttestationComponentType,\n\tAttestationConnectorType,\n\tAuditableItemGraphComponentType,\n\tAuditableItemStreamComponentType,\n\tAuthenticationGeneratorComponentType,\n\tBackgroundTaskConnectorType,\n\tBlobStorageComponentType,\n\tBlobStorageConnectorType,\n\tDataConverterConnectorType,\n\tDataExtractorConnectorType,\n\tDataProcessingComponentType,\n\tDataSpaceConnectorComponentType,\n\ttype DltConfig,\n\tDltConfigType,\n\tDocumentManagementComponentType,\n\tEngineTypeHelper,\n\tEntityStorageConnectorType,\n\tEventBusComponentType,\n\tEventBusConnectorType,\n\tFaucetConnectorType,\n\tFederatedCatalogueComponentType,\n\tIdentityComponentType,\n\tIdentityConnectorType,\n\tIdentityProfileComponentType,\n\tIdentityProfileConnectorType,\n\tIdentityResolverComponentType,\n\tIdentityResolverConnectorType,\n\ttype IEngineConfig,\n\tImmutableProofComponentType,\n\tLoggingComponentType,\n\tLoggingConnectorType,\n\tMessagingAdminComponentType,\n\tMessagingComponentType,\n\tMessagingEmailConnectorType,\n\tMessagingPushNotificationConnectorType,\n\tMessagingSmsConnectorType,\n\tNftComponentType,\n\tNftConnectorType,\n\tRightsManagementDapComponentType,\n\tRightsManagementDarpComponentType,\n\tRightsManagementPapComponentType,\n\tRightsManagementPdpComponentType,\n\tRightsManagementPepComponentType,\n\tRightsManagementPipComponentType,\n\tRightsManagementPmpComponentType,\n\tRightsManagementPnapComponentType,\n\tRightsManagementPnpComponentType,\n\tRightsManagementPxpComponentType,\n\tSynchronisedStorageComponentType,\n\tTaskSchedulerComponentType,\n\tTelemetryComponentType,\n\tTelemetryConnectorType,\n\tTenantAdminComponentType,\n\tVaultConnectorType,\n\tVerifiableStorageComponentType,\n\tVerifiableStorageConnectorType,\n\tWalletConnectorType\n} from \"@twin.org/engine-types\";\nimport {\n\tDataAccessPointRestClient,\n\tPolicyNegotiationPointRestClient\n} from \"@twin.org/rights-management-rest-client\";\nimport type { IOdrlOffer } from \"@twin.org/standards-w3c-odrl\";\nimport {\n\tATTESTATION_VERIFICATION_METHOD_ID,\n\tBLOB_STORAGE_ENCRYPTION_KEY_ID,\n\tIMMUTABLE_PROOF_VERIFICATION_METHOD_ID,\n\tSYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID,\n\tVC_AUTHENTICATION_VERIFICATION_METHOD_ID\n} from \"../defaults.js\";\nimport type { IEngineEnvironmentVariables } from \"../models/IEngineEnvironmentVariables.js\";\n\n/**\n * Build the engine core configuration from environment variables.\n * @param envVars The environment variables.\n * @param contextIdKeys The context ID keys.\n * @returns The config for the core.\n */\nexport async function buildEngineConfiguration(\n\tenvVars: IEngineEnvironmentVariables,\n\tcontextIdKeys: string[]\n): Promise<IEngineConfig> {\n\tif (Is.stringValue(envVars.storageFileRoot)) {\n\t\tenvVars.stateFilename ??= \"engine-state.json\";\n\t\tenvVars.storageFileRoot = path.resolve(envVars.storageFileRoot);\n\t\tenvVars.stateFilename = path.join(envVars.storageFileRoot, envVars.stateFilename);\n\t}\n\n\tconst coreConfig: IEngineConfig = {\n\t\tdebug: Coerce.boolean(envVars.debug) ?? false,\n\t\ttypes: {}\n\t};\n\n\tawait configureTenant(coreConfig, envVars);\n\n\tawait configureEntityStorage(coreConfig, envVars);\n\tawait configureBlobStorage(coreConfig, envVars);\n\tawait configureVault(coreConfig, envVars);\n\tawait configureDlt(coreConfig, envVars);\n\n\tawait configureLogging(coreConfig, envVars);\n\tawait configureBackgroundTask(coreConfig, envVars);\n\tawait configureTaskScheduler(coreConfig, envVars);\n\tawait configureEventBus(coreConfig, envVars);\n\tawait configureTelemetry(coreConfig, envVars);\n\tawait configureMessaging(coreConfig, envVars);\n\n\tawait configureFaucet(coreConfig, envVars);\n\tawait configureWallet(coreConfig, envVars);\n\tawait configureNft(coreConfig, envVars);\n\tawait configureVerifiableStorage(coreConfig, envVars);\n\tawait configureIdentity(coreConfig, envVars);\n\tawait configureIdentityResolver(coreConfig, envVars);\n\tawait configureIdentityProfile(coreConfig, envVars);\n\tawait configureAttestation(coreConfig, envVars);\n\tawait configureDataProcessing(coreConfig, envVars);\n\n\tawait configureAuditableItemGraph(coreConfig, envVars);\n\tawait configureAuditableItemStream(coreConfig, envVars);\n\tawait configureDocumentManagement(coreConfig, envVars);\n\tawait configureVerifiableCredentialAuthentication(coreConfig, envVars);\n\tawait configureRightsManagement(coreConfig, envVars);\n\tawait configureSynchronisedStorage(coreConfig, envVars);\n\tawait configureFederatedCatalogue(coreConfig, envVars);\n\tawait configureDataSpaceConnector(coreConfig, envVars);\n\n\treturn coreConfig;\n}\n\n/**\n * Configures the entity storage.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureEntityStorage(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types ??= {};\n\tcoreConfig.types.entityStorageConnector ??= [];\n\n\tconst entityStorageConnectorTypes = envVars.entityStorageConnectorType?.split(\",\") ?? [];\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.Memory)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.Memory\n\t\t});\n\t}\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.File)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.File,\n\t\t\toptions: {\n\t\t\t\tconfig: { directory: envVars.storageFileRoot ?? \"\" },\n\t\t\t\tfolderPrefix: envVars.entityStorageTablePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.AwsDynamoDb)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.AwsDynamoDb,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tregion: envVars.awsDynamodbRegion ?? \"\",\n\t\t\t\t\tauthMode: envVars.awsDynamodbAuthMode as \"credentials\" | \"pod\",\n\t\t\t\t\taccessKeyId: envVars.awsDynamodbAccessKeyId,\n\t\t\t\t\tsecretAccessKey: envVars.awsDynamodbSecretAccessKey,\n\t\t\t\t\tendpoint: envVars.awsDynamodbEndpoint\n\t\t\t\t},\n\t\t\t\ttablePrefix: envVars.entityStorageTablePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.AzureCosmosDb)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.AzureCosmosDb,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tendpoint: envVars.azureCosmosdbEndpoint ?? \"\",\n\t\t\t\t\tkey: envVars.azureCosmosdbKey ?? \"\",\n\t\t\t\t\tdatabaseId: envVars.azureCosmosdbDatabaseId ?? \"\",\n\t\t\t\t\tcontainerId: envVars.azureCosmosdbContainerId ?? \"\"\n\t\t\t\t},\n\t\t\t\ttablePrefix: envVars.entityStorageTablePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.GcpFirestoreDb)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.GcpFirestoreDb,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tprojectId: envVars.gcpFirestoreProjectId ?? \"\",\n\t\t\t\t\tcredentials: envVars.gcpFirestoreCredentials ?? \"\",\n\t\t\t\t\tdatabaseId: envVars.gcpFirestoreDatabaseId ?? \"\",\n\t\t\t\t\tcollectionName: envVars.gcpFirestoreCollectionName ?? \"\",\n\t\t\t\t\tendpoint: envVars.gcpFirestoreApiEndpoint ?? \"\"\n\t\t\t\t},\n\t\t\t\ttablePrefix: envVars.entityStorageTablePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.ScyllaDb)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.ScyllaDb,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\thosts: envVars.scylladbHosts?.split(\",\") ?? [],\n\t\t\t\t\tlocalDataCenter: envVars.scylladbLocalDataCenter ?? \"\",\n\t\t\t\t\tkeyspace: envVars.scylladbKeyspace ?? \"\",\n\t\t\t\t\tport: Coerce.integer(envVars.scylladbPort)\n\t\t\t\t},\n\t\t\t\ttablePrefix: envVars.entityStorageTablePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.MySqlDb)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.MySqlDb,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\thost: envVars.mySqlHost ?? \"\",\n\t\t\t\t\tport: Coerce.integer(envVars.mySqlPort),\n\t\t\t\t\tuser: envVars.mySqlUser ?? \"\",\n\t\t\t\t\tpassword: envVars.mySqlPassword ?? \"\",\n\t\t\t\t\tdatabase: envVars.mySqlDatabase ?? \"\"\n\t\t\t\t},\n\t\t\t\ttablePrefix: envVars.entityStorageTablePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.MongoDb)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.MongoDb,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\thost: envVars.mongoDbHost ?? \"\",\n\t\t\t\t\tport: Coerce.integer(envVars.mongoDbPort),\n\t\t\t\t\tuser: envVars.mongoDbUser ?? \"\",\n\t\t\t\t\tpassword: envVars.mongoDbPassword ?? \"\",\n\t\t\t\t\tdatabase: envVars.mongoDbDatabase ?? \"\"\n\t\t\t\t},\n\t\t\t\ttablePrefix: envVars.entityStorageTablePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.PostgreSql)) {\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.PostgreSql,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\thost: envVars.postgreSqlHost ?? \"\",\n\t\t\t\t\tport: Coerce.integer(envVars.postgreSqlPort),\n\t\t\t\t\tuser: envVars.postgreSqlUser ?? \"\",\n\t\t\t\t\tpassword: envVars.postgreSqlPassword ?? \"\",\n\t\t\t\t\tdatabase: envVars.postgreSqlDatabase ?? \"\"\n\t\t\t\t},\n\t\t\t\ttablePrefix: envVars.entityStorageTablePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tconst defaultEntityStorageConnectorType =\n\t\tenvVars.entityStorageConnectorDefault ?? entityStorageConnectorTypes[0];\n\n\tif (entityStorageConnectorTypes.includes(EntityStorageConnectorType.Synchronised)) {\n\t\t// For synchronised storage we use the default connector as the one we wrap for real DB operations\n\t\tcoreConfig.types.entityStorageConnector.push({\n\t\t\ttype: EntityStorageConnectorType.Synchronised,\n\t\t\toptions: {\n\t\t\t\tentityStorageConnectorType: defaultEntityStorageConnectorType\n\t\t\t}\n\t\t});\n\t}\n\n\tif (Is.arrayValue(entityStorageConnectorTypes)) {\n\t\tfor (const config of coreConfig.types.entityStorageConnector) {\n\t\t\tif (config.type === defaultEntityStorageConnectorType) {\n\t\t\t\tconfig.isDefault = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Configures the blob storage.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureBlobStorage(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.blobStorageConnector ??= [];\n\n\tconst blobStorageConnectorTypes = envVars.blobStorageConnectorType?.split(\",\") ?? [];\n\n\tif (blobStorageConnectorTypes.includes(BlobStorageConnectorType.Memory)) {\n\t\tcoreConfig.types.blobStorageConnector.push({\n\t\t\ttype: BlobStorageConnectorType.Memory\n\t\t});\n\t}\n\n\tif (blobStorageConnectorTypes.includes(BlobStorageConnectorType.File)) {\n\t\tcoreConfig.types.blobStorageConnector.push({\n\t\t\ttype: BlobStorageConnectorType.File,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tdirectory: Is.stringValue(envVars.storageFileRoot)\n\t\t\t\t\t\t? path.join(envVars.storageFileRoot, \"blob-storage\")\n\t\t\t\t\t\t: \"\"\n\t\t\t\t},\n\t\t\t\tstoragePrefix: envVars.blobStoragePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (blobStorageConnectorTypes.includes(BlobStorageConnectorType.Ipfs)) {\n\t\tcoreConfig.types.blobStorageConnector.push({\n\t\t\ttype: BlobStorageConnectorType.Ipfs,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tapiUrl: envVars.ipfsApiUrl ?? \"\",\n\t\t\t\t\tbearerToken: envVars.ipfsBearerToken\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (blobStorageConnectorTypes.includes(BlobStorageConnectorType.AwsS3)) {\n\t\tcoreConfig.types.blobStorageConnector.push({\n\t\t\ttype: BlobStorageConnectorType.AwsS3,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tregion: envVars.awsS3Region ?? \"\",\n\t\t\t\t\tbucketName: envVars.awsS3BucketName ?? \"\",\n\t\t\t\t\tauthMode: envVars.awsS3AuthMode as \"credentials\" | \"pod\",\n\t\t\t\t\taccessKeyId: envVars.awsS3AccessKeyId,\n\t\t\t\t\tsecretAccessKey: envVars.awsS3SecretAccessKey,\n\t\t\t\t\tendpoint: envVars.awsS3Endpoint\n\t\t\t\t},\n\t\t\t\tstoragePrefix: envVars.blobStoragePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (blobStorageConnectorTypes.includes(BlobStorageConnectorType.AzureStorage)) {\n\t\tcoreConfig.types.blobStorageConnector.push({\n\t\t\ttype: BlobStorageConnectorType.AzureStorage,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\taccountName: envVars.azureStorageAccountName ?? \"\",\n\t\t\t\t\taccountKey: envVars.azureStorageAccountKey ?? \"\",\n\t\t\t\t\tcontainerName: envVars.azureStorageContainerName ?? \"\",\n\t\t\t\t\tendpoint: envVars.azureStorageEndpoint ?? \"\"\n\t\t\t\t},\n\t\t\t\tstoragePrefix: envVars.blobStoragePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (blobStorageConnectorTypes.includes(BlobStorageConnectorType.GcpStorage)) {\n\t\tcoreConfig.types.blobStorageConnector.push({\n\t\t\ttype: BlobStorageConnectorType.GcpStorage,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tprojectId: envVars.gcpStorageProjectId ?? \"\",\n\t\t\t\t\tcredentials: envVars.gcpStorageCredentials ?? \"\",\n\t\t\t\t\tbucketName: envVars.gcpStorageBucketName ?? \"\",\n\t\t\t\t\tapiEndpoint: envVars.gcpFirestoreApiEndpoint\n\t\t\t\t},\n\t\t\t\tstoragePrefix: envVars.blobStoragePrefix\n\t\t\t}\n\t\t});\n\t}\n\n\tif (Is.arrayValue(blobStorageConnectorTypes)) {\n\t\tconst defaultStorageConnectorType =\n\t\t\tenvVars.blobStorageConnectorDefault ?? blobStorageConnectorTypes[0];\n\t\tfor (const config of coreConfig.types.blobStorageConnector) {\n\t\t\tif (config.type === defaultStorageConnectorType) {\n\t\t\t\tconfig.isDefault = true;\n\t\t\t}\n\t\t\t// If this blob storage connector is the one to use for public access\n\t\t\t// then add it as a feature\n\t\t\tif (\n\t\t\t\tIs.stringValue(envVars.blobStorageConnectorPublic) &&\n\t\t\t\tconfig.type === envVars.blobStorageConnectorPublic\n\t\t\t) {\n\t\t\t\tconfig.features ??= [];\n\t\t\t\tconfig.features.push(\"public\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (coreConfig.types.blobStorageConnector.length > 0) {\n\t\tcoreConfig.types.blobStorageComponent ??= [];\n\t\tcoreConfig.types.blobStorageComponent.push({\n\t\t\ttype: BlobStorageComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tvaultKeyId:\n\t\t\t\t\t\t(envVars.blobStorageEnableEncryption ?? false)\n\t\t\t\t\t\t\t? (envVars.blobStorageEncryptionKeyId ?? BLOB_STORAGE_ENCRYPTION_KEY_ID)\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the logging.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureLogging(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.loggingConnector ??= [];\n\n\tconst loggingConnectorTypes = (envVars.loggingConnector ?? \"\").split(\",\");\n\tlet additionalConnectorCount = 0;\n\n\tfor (const loggingConnector of loggingConnectorTypes) {\n\t\tif (loggingConnector === LoggingConnectorType.Console) {\n\t\t\tcoreConfig.types.loggingConnector.push({\n\t\t\t\ttype: LoggingConnectorType.Console,\n\t\t\t\toptions: {\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\ttranslateMessages: true,\n\t\t\t\t\t\thideGroups: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tadditionalConnectorCount++;\n\t\t} else if (loggingConnector === LoggingConnectorType.EntityStorage) {\n\t\t\tcoreConfig.types.loggingConnector.push({\n\t\t\t\ttype: LoggingConnectorType.EntityStorage\n\t\t\t});\n\t\t\tadditionalConnectorCount++;\n\t\t}\n\t}\n\n\t// If more than one logging connector, then we need to add a multi connector\n\t// and set it as the default one\n\tif (additionalConnectorCount > 1) {\n\t\tcoreConfig.types.loggingConnector.push({\n\t\t\ttype: LoggingConnectorType.Multi,\n\t\t\toptions: {\n\t\t\t\tloggingConnectorTypes\n\t\t\t},\n\t\t\tisDefault: true\n\t\t});\n\t} else if (additionalConnectorCount > 0) {\n\t\t// If only one connector, then we set it as the default one\n\t\tcoreConfig.types.loggingConnector[coreConfig.types.loggingConnector.length - 1].isDefault =\n\t\t\ttrue;\n\t}\n\n\tif (additionalConnectorCount > 0) {\n\t\tcoreConfig.types.loggingComponent ??= [];\n\t\t// We set the isDefault flag so that other components will get this service by default\n\t\t// and not the generic one from the engine core\n\t\tcoreConfig.types.loggingComponent.push({ type: LoggingComponentType.Service, isDefault: true });\n\t}\n}\n\n/**\n * Configures the vault.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureVault(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.vaultConnector ??= [];\n\n\tif (envVars.vaultConnector === VaultConnectorType.EntityStorage) {\n\t\tcoreConfig.types.vaultConnector.push({\n\t\t\ttype: VaultConnectorType.EntityStorage\n\t\t});\n\t} else if (envVars.vaultConnector === VaultConnectorType.Hashicorp) {\n\t\tcoreConfig.types.vaultConnector.push({\n\t\t\ttype: VaultConnectorType.Hashicorp,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tendpoint: envVars.hashicorpVaultEndpoint ?? \"\",\n\t\t\t\t\ttoken: envVars.hashicorpVaultToken ?? \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the background task.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureBackgroundTask(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.backgroundTaskConnector ??= [];\n\n\tif (envVars.backgroundTaskConnector === BackgroundTaskConnectorType.EntityStorage) {\n\t\tcoreConfig.types.backgroundTaskConnector.push({\n\t\t\ttype: BackgroundTaskConnectorType.EntityStorage\n\t\t});\n\t}\n}\n\n/**\n * Configures the event bud.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureEventBus(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.eventBusConnector ??= [];\n\n\tif (envVars.eventBusConnector === EventBusConnectorType.Local) {\n\t\tcoreConfig.types.eventBusConnector.push({\n\t\t\ttype: EventBusConnectorType.Local\n\t\t});\n\t}\n\n\tif (coreConfig.types.eventBusConnector.length > 0) {\n\t\tcoreConfig.types.eventBusComponent ??= [];\n\t\tcoreConfig.types.eventBusComponent.push({ type: EventBusComponentType.Service });\n\t}\n}\n\n/**\n * Configures the telemetry.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureTelemetry(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.telemetryConnector ??= [];\n\n\tif (envVars.telemetryConnector === TelemetryConnectorType.EntityStorage) {\n\t\tcoreConfig.types.telemetryConnector.push({\n\t\t\ttype: TelemetryConnectorType.EntityStorage\n\t\t});\n\t}\n\n\tif (coreConfig.types.telemetryConnector.length > 0) {\n\t\tcoreConfig.types.telemetryComponent ??= [];\n\t\tcoreConfig.types.telemetryComponent.push({ type: TelemetryComponentType.Service });\n\t}\n}\n\n/**\n * Configures the tenant.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureTenant(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.tenantEnabled) ?? false) {\n\t\tcoreConfig.types.tenantAdminComponent ??= [];\n\t\tcoreConfig.types.tenantAdminComponent.push({\n\t\t\ttype: TenantAdminComponentType.Service\n\t\t});\n\n\t\tcoreConfig.types.tenantComponent ??= [];\n\t\tcoreConfig.types.tenantComponent.push({ type: TenantAdminComponentType.Service });\n\t}\n}\n\n/**\n * Configures the messaging.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureMessaging(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.messagingEnabled) ?? false) {\n\t\tcoreConfig.types.messagingEmailConnector ??= [];\n\t\tcoreConfig.types.messagingSmsConnector ??= [];\n\t\tcoreConfig.types.messagingPushNotificationConnector ??= [];\n\n\t\tif (envVars.messagingEmailConnector === MessagingEmailConnectorType.EntityStorage) {\n\t\t\tcoreConfig.types.messagingEmailConnector.push({\n\t\t\t\ttype: MessagingEmailConnectorType.EntityStorage\n\t\t\t});\n\t\t} else if (envVars.messagingEmailConnector === MessagingEmailConnectorType.Aws) {\n\t\t\tcoreConfig.types.messagingEmailConnector.push({\n\t\t\t\ttype: MessagingEmailConnectorType.Aws,\n\t\t\t\toptions: {\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\tregion: envVars.awsSesRegion ?? \"\",\n\t\t\t\t\t\tauthMode: envVars.awsSesAuthMode as \"credentials\" | \"pod\",\n\t\t\t\t\t\taccessKeyId: envVars.awsSesAccessKeyId,\n\t\t\t\t\t\tsecretAccessKey: envVars.awsSesSecretAccessKey,\n\t\t\t\t\t\tendpoint: envVars.awsSesEndpoint\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (envVars.messagingSmsConnector === MessagingSmsConnectorType.EntityStorage) {\n\t\t\tcoreConfig.types.messagingSmsConnector.push({\n\t\t\t\ttype: MessagingSmsConnectorType.EntityStorage\n\t\t\t});\n\t\t} else if (envVars.messagingSmsConnector === MessagingSmsConnectorType.Aws) {\n\t\t\tcoreConfig.types.messagingSmsConnector.push({\n\t\t\t\ttype: MessagingSmsConnectorType.Aws,\n\t\t\t\toptions: {\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\tregion: envVars.awsSesRegion ?? \"\",\n\t\t\t\t\t\tauthMode: envVars.awsSesAuthMode as \"credentials\" | \"pod\",\n\t\t\t\t\t\taccessKeyId: envVars.awsSesAccessKeyId,\n\t\t\t\t\t\tsecretAccessKey: envVars.awsSesSecretAccessKey,\n\t\t\t\t\t\tendpoint: envVars.awsSesEndpoint\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (\n\t\t\tenvVars.messagingPushNotificationConnector ===\n\t\t\tMessagingPushNotificationConnectorType.EntityStorage\n\t\t) {\n\t\t\tcoreConfig.types.messagingPushNotificationConnector.push({\n\t\t\t\ttype: MessagingPushNotificationConnectorType.EntityStorage\n\t\t\t});\n\t\t} else if (\n\t\t\tenvVars.messagingPushNotificationConnector === MessagingPushNotificationConnectorType.Aws\n\t\t) {\n\t\t\tcoreConfig.types.messagingPushNotificationConnector.push({\n\t\t\t\ttype: MessagingPushNotificationConnectorType.Aws,\n\t\t\t\toptions: {\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\tregion: envVars.awsSesRegion ?? \"\",\n\t\t\t\t\t\tauthMode: envVars.awsSesAuthMode as \"credentials\" | \"pod\",\n\t\t\t\t\t\taccessKeyId: envVars.awsSesAccessKeyId,\n\t\t\t\t\t\tsecretAccessKey: envVars.awsSesSecretAccessKey,\n\t\t\t\t\t\tendpoint: envVars.awsSesEndpoint,\n\t\t\t\t\t\tapplicationsSettings: Is.json(envVars.awsMessagingPushNotificationApplications)\n\t\t\t\t\t\t\t? JSON.parse(envVars.awsMessagingPushNotificationApplications)\n\t\t\t\t\t\t\t: []\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tcoreConfig.types.messagingAdminComponent ??= [];\n\t\tcoreConfig.types.messagingAdminComponent.push({\n\t\t\ttype: MessagingAdminComponentType.Service\n\t\t});\n\n\t\tcoreConfig.types.messagingComponent ??= [];\n\t\tcoreConfig.types.messagingComponent.push({ type: MessagingComponentType.Service });\n\t}\n}\n\n/**\n * Configures the faucet.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureFaucet(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.faucetConnector ??= [];\n\n\tif (envVars.faucetConnector === FaucetConnectorType.EntityStorage) {\n\t\tcoreConfig.types.faucetConnector.push({\n\t\t\ttype: FaucetConnectorType.EntityStorage\n\t\t});\n\t} else if (envVars.faucetConnector === FaucetConnectorType.Iota) {\n\t\tconst dltConfig = EngineTypeHelper.getConfigOfType<DltConfig>(\n\t\t\tcoreConfig,\n\t\t\t\"dltConfig\",\n\t\t\tDltConfigType.Iota\n\t\t);\n\t\tcoreConfig.types.faucetConnector.push({\n\t\t\ttype: FaucetConnectorType.Iota,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tendpoint: envVars.iotaFaucetEndpoint ?? \"\",\n\t\t\t\t\tclientOptions: dltConfig?.options?.config?.clientOptions ?? { url: \"\" },\n\t\t\t\t\tnetwork: dltConfig?.options?.config?.network ?? \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the wallet.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureWallet(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.walletConnector ??= [];\n\n\tif (envVars.walletConnector === WalletConnectorType.EntityStorage) {\n\t\tcoreConfig.types.walletConnector.push({\n\t\t\ttype: WalletConnectorType.EntityStorage\n\t\t});\n\t} else if (envVars.walletConnector === WalletConnectorType.Iota) {\n\t\tconst dltConfig = EngineTypeHelper.getConfigOfType<DltConfig>(\n\t\t\tcoreConfig,\n\t\t\t\"dltConfig\",\n\t\t\tDltConfigType.Iota\n\t\t);\n\t\tcoreConfig.types.walletConnector.push({\n\t\t\ttype: WalletConnectorType.Iota,\n\t\t\toptions: {\n\t\t\t\tconfig: dltConfig?.options?.config ?? ({} as IIotaConfig)\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the NFT.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureNft(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.nftConnector ??= [];\n\n\tif (envVars.nftConnector === NftConnectorType.EntityStorage) {\n\t\tcoreConfig.types.nftConnector.push({\n\t\t\ttype: NftConnectorType.EntityStorage\n\t\t});\n\t} else if (envVars.nftConnector === NftConnectorType.Iota) {\n\t\tconst dltConfig = EngineTypeHelper.getConfigOfType<DltConfig>(\n\t\t\tcoreConfig,\n\t\t\t\"dltConfig\",\n\t\t\tDltConfigType.Iota\n\t\t);\n\t\tcoreConfig.types.nftConnector.push({\n\t\t\ttype: NftConnectorType.Iota,\n\t\t\toptions: {\n\t\t\t\tconfig: dltConfig?.options?.config ?? ({} as IIotaConfig)\n\t\t\t}\n\t\t});\n\t}\n\n\tif (coreConfig.types.nftConnector.length > 0) {\n\t\tcoreConfig.types.nftComponent ??= [];\n\t\tcoreConfig.types.nftComponent.push({ type: NftComponentType.Service });\n\t}\n}\n\n/**\n * Configures the verifiable storage.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureVerifiableStorage(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.verifiableStorageConnector ??= [];\n\n\tif (envVars.verifiableStorageConnector === VerifiableStorageConnectorType.EntityStorage) {\n\t\tcoreConfig.types.verifiableStorageConnector.push({\n\t\t\ttype: VerifiableStorageConnectorType.EntityStorage\n\t\t});\n\t} else if (envVars.verifiableStorageConnector === VerifiableStorageConnectorType.Iota) {\n\t\tconst dltConfig = EngineTypeHelper.getConfigOfType<DltConfig>(\n\t\t\tcoreConfig,\n\t\t\t\"dltConfig\",\n\t\t\tDltConfigType.Iota\n\t\t);\n\t\tcoreConfig.types.verifiableStorageConnector.push({\n\t\t\ttype: VerifiableStorageConnectorType.Iota,\n\t\t\toptions: {\n\t\t\t\tconfig: dltConfig?.options?.config ?? ({} as IIotaConfig)\n\t\t\t}\n\t\t});\n\t}\n\n\tif (coreConfig.types.verifiableStorageConnector.length > 0) {\n\t\tcoreConfig.types.verifiableStorageComponent ??= [];\n\t\tcoreConfig.types.verifiableStorageComponent.push({\n\t\t\ttype: VerifiableStorageComponentType.Service\n\t\t});\n\n\t\tcoreConfig.types.immutableProofComponent ??= [];\n\t\tcoreConfig.types.immutableProofComponent.push({\n\t\t\ttype: ImmutableProofComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tverificationMethodId:\n\t\t\t\t\t\tenvVars.immutableProofVerificationMethodId ?? IMMUTABLE_PROOF_VERIFICATION_METHOD_ID\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the identity.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureIdentity(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.identityConnector ??= [];\n\n\tif (envVars.identityConnector === IdentityConnectorType.EntityStorage) {\n\t\tcoreConfig.types.identityConnector.push({\n\t\t\ttype: IdentityConnectorType.EntityStorage\n\t\t});\n\t} else if (envVars.identityConnector === IdentityConnectorType.Iota) {\n\t\tconst dltConfig = EngineTypeHelper.getConfigOfType<DltConfig>(\n\t\t\tcoreConfig,\n\t\t\t\"dltConfig\",\n\t\t\tDltConfigType.Iota\n\t\t);\n\t\tcoreConfig.types.identityConnector.push({\n\t\t\ttype: IdentityConnectorType.Iota,\n\t\t\toptions: {\n\t\t\t\tconfig: dltConfig?.options?.config ?? ({} as IIotaConfig)\n\t\t\t}\n\t\t});\n\t}\n\n\tif (coreConfig.types.identityConnector.length > 0) {\n\t\tcoreConfig.types.identityComponent ??= [];\n\t\tcoreConfig.types.identityComponent.push({ type: IdentityComponentType.Service });\n\t}\n}\n\n/**\n * Configures the identity resolver.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureIdentityResolver(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.identityResolverConnector ??= [];\n\n\tif (envVars.identityResolverConnector === IdentityResolverConnectorType.EntityStorage) {\n\t\tcoreConfig.types.identityResolverConnector.push({\n\t\t\ttype: IdentityResolverConnectorType.EntityStorage\n\t\t});\n\t} else if (envVars.identityResolverConnector === IdentityResolverConnectorType.Iota) {\n\t\tconst dltConfig = EngineTypeHelper.getConfigOfType<DltConfig>(\n\t\t\tcoreConfig,\n\t\t\t\"dltConfig\",\n\t\t\tDltConfigType.Iota\n\t\t);\n\t\tcoreConfig.types.identityResolverConnector.push({\n\t\t\ttype: IdentityResolverConnectorType.Iota,\n\t\t\toptions: {\n\t\t\t\tconfig: dltConfig?.options?.config ?? ({} as IIotaConfig)\n\t\t\t}\n\t\t});\n\t} else if (envVars.identityResolverConnector === IdentityResolverConnectorType.Universal) {\n\t\tcoreConfig.types.identityResolverConnector.push({\n\t\t\ttype: IdentityResolverConnectorType.Universal,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tendpoint: envVars.universalResolverEndpoint ?? \"\"\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (coreConfig.types.identityResolverConnector.length > 0) {\n\t\tcoreConfig.types.identityResolverComponent ??= [];\n\t\tcoreConfig.types.identityResolverComponent.push({\n\t\t\ttype: IdentityResolverComponentType.Service\n\t\t});\n\t}\n}\n\n/**\n * Configures the identity profile.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureIdentityProfile(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.identityProfileConnector ??= [];\n\n\tif (envVars.identityProfileConnector === IdentityConnectorType.EntityStorage) {\n\t\tcoreConfig.types.identityProfileConnector.push({\n\t\t\ttype: IdentityProfileConnectorType.EntityStorage\n\t\t});\n\t}\n\n\tif (coreConfig.types.identityProfileConnector.length > 0) {\n\t\tcoreConfig.types.identityProfileComponent ??= [];\n\t\tcoreConfig.types.identityProfileComponent.push({ type: IdentityProfileComponentType.Service });\n\t}\n}\n\n/**\n * Configures the attestation.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureAttestation(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tcoreConfig.types.attestationConnector ??= [];\n\n\tif (envVars.attestationConnector === AttestationConnectorType.Nft) {\n\t\tcoreConfig.types.attestationConnector.push({\n\t\t\ttype: AttestationConnectorType.Nft\n\t\t});\n\t}\n\n\tif (coreConfig.types.attestationConnector.length > 0) {\n\t\tcoreConfig.types.attestationComponent ??= [];\n\t\tcoreConfig.types.attestationComponent.push({\n\t\t\ttype: AttestationComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tverificationMethodId:\n\t\t\t\t\t\tenvVars.attestationVerificationMethodId ?? ATTESTATION_VERIFICATION_METHOD_ID\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the auditable item graph.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureAuditableItemGraph(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.auditableItemGraphEnabled) ?? false) {\n\t\tcoreConfig.types.auditableItemGraphComponent ??= [];\n\t\tcoreConfig.types.auditableItemGraphComponent.push({\n\t\t\ttype: AuditableItemGraphComponentType.Service\n\t\t});\n\t}\n}\n\n/**\n * Configures the auditable item stream.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureAuditableItemStream(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.auditableItemStreamEnabled) ?? false) {\n\t\tcoreConfig.types.auditableItemStreamComponent ??= [];\n\t\tcoreConfig.types.auditableItemStreamComponent.push({\n\t\t\ttype: AuditableItemStreamComponentType.Service\n\t\t});\n\t}\n}\n\n/**\n * Configures the data processing.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureDataProcessing(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.dataProcessingEnabled) ?? false) {\n\t\tcoreConfig.types.dataProcessingComponent ??= [];\n\t\tcoreConfig.types.dataProcessingComponent.push({ type: DataProcessingComponentType.Service });\n\n\t\tcoreConfig.types.dataConverterConnector ??= [];\n\n\t\tconst converterConnectors = envVars.dataConverterConnectors?.split(\",\") ?? [];\n\t\tfor (const converterConnector of converterConnectors) {\n\t\t\tif (converterConnector === DataConverterConnectorType.Json) {\n\t\t\t\tcoreConfig.types.dataConverterConnector.push({\n\t\t\t\t\ttype: DataConverterConnectorType.Json\n\t\t\t\t});\n\t\t\t} else if (converterConnector === DataConverterConnectorType.Xml) {\n\t\t\t\tcoreConfig.types.dataConverterConnector.push({\n\t\t\t\t\ttype: DataConverterConnectorType.Xml\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tcoreConfig.types.dataExtractorConnector ??= [];\n\t\tconst extractorConnectors = envVars.dataExtractorConnectors?.split(\",\") ?? [];\n\t\tfor (const extractorConnector of extractorConnectors) {\n\t\t\tif (extractorConnector === DataExtractorConnectorType.JsonPath) {\n\t\t\t\tcoreConfig.types.dataExtractorConnector.push({\n\t\t\t\t\ttype: DataExtractorConnectorType.JsonPath\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Configures the document management.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureDocumentManagement(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.documentManagementEnabled) ?? false) {\n\t\tcoreConfig.types.documentManagementComponent ??= [];\n\t\tcoreConfig.types.documentManagementComponent.push({\n\t\t\ttype: DocumentManagementComponentType.Service\n\t\t});\n\t}\n}\n\n/**\n * Configures the verifiable credential authentication.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureVerifiableCredentialAuthentication(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.vcAuthenticationEnabled) ?? false) {\n\t\t// Can only perform VC authentication if identity component is available\n\t\tcoreConfig.types.authenticationGeneratorComponent ??= [];\n\t\tcoreConfig.types.authenticationGeneratorComponent.push({\n\t\t\ttype: AuthenticationGeneratorComponentType.VerifiableCredential,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tverificationMethodId:\n\t\t\t\t\t\tenvVars.vcAuthenticationVerificationMethodId ?? VC_AUTHENTICATION_VERIFICATION_METHOD_ID\n\t\t\t\t}\n\t\t\t},\n\t\t\tfeatures: [\"verifiable-credential\"]\n\t\t});\n\t}\n}\n\n/**\n * Configures the rights management.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureRightsManagement(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.rightsManagementEnabled) ?? false) {\n\t\tcoreConfig.types.rightsManagementPapComponent ??= [];\n\t\tcoreConfig.types.rightsManagementPapComponent.push({\n\t\t\ttype: RightsManagementPapComponentType.Service\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementPmpComponent ??= [];\n\t\tcoreConfig.types.rightsManagementPmpComponent.push({\n\t\t\ttype: RightsManagementPmpComponentType.Service\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementPipComponent ??= [];\n\t\tcoreConfig.types.rightsManagementPipComponent.push({\n\t\t\ttype: RightsManagementPipComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tinformationModulesConfig: Is.arrayValue<IEngineModuleConfig>(\n\t\t\t\t\tenvVars.rightsManagementInformationSources\n\t\t\t\t)\n\t\t\t\t\t? envVars.rightsManagementInformationSources\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementPxpComponent ??= [];\n\t\tcoreConfig.types.rightsManagementPxpComponent.push({\n\t\t\ttype: RightsManagementPxpComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tactionModulesConfig: Is.arrayValue<IEngineModuleConfig>(\n\t\t\t\t\tenvVars.rightsManagementExecutionActions\n\t\t\t\t)\n\t\t\t\t\t? envVars.rightsManagementExecutionActions\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementPdpComponent ??= [];\n\t\tcoreConfig.types.rightsManagementPdpComponent.push({\n\t\t\ttype: RightsManagementPdpComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tarbiterModulesConfig: Is.arrayValue<IEngineModuleConfig>(envVars.rightsManagementArbiters)\n\t\t\t\t\t? envVars.rightsManagementArbiters\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementPepComponent ??= [];\n\t\tcoreConfig.types.rightsManagementPepComponent.push({\n\t\t\ttype: RightsManagementPepComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tprocessorModulesConfig: Is.arrayValue<IEngineModuleConfig>(\n\t\t\t\t\tenvVars.rightsManagementEnforcementProcessors\n\t\t\t\t)\n\t\t\t\t\t? envVars.rightsManagementEnforcementProcessors\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementPnpComponent ??= [];\n\t\tcoreConfig.types.rightsManagementPnpComponent.push({\n\t\t\ttype: RightsManagementPnpComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tnegotiatorModulesConfig: Is.arrayValue<IEngineModuleConfig>(\n\t\t\t\t\tenvVars.rightsManagementNegotiators\n\t\t\t\t)\n\t\t\t\t\t? envVars.rightsManagementNegotiators\n\t\t\t\t\t: undefined,\n\t\t\t\trequesterModulesConfig: Is.arrayValue<IEngineModuleConfig>(\n\t\t\t\t\tenvVars.rightsManagementRequesters\n\t\t\t\t)\n\t\t\t\t\t? envVars.rightsManagementRequesters\n\t\t\t\t\t: undefined,\n\t\t\t\tconfig: {\n\t\t\t\t\tbaseCallbackUrl: envVars.rightsManagementBaseCallbackUrl ?? \"\",\n\t\t\t\t\toffers: Is.arrayValue<IOdrlOffer>(envVars.rightsManagementOffers)\n\t\t\t\t\t\t? envVars.rightsManagementOffers\n\t\t\t\t\t\t: [],\n\t\t\t\t\tnegotiationComponentCreator: async url =>\n\t\t\t\t\t\tnew PolicyNegotiationPointRestClient({ endpoint: url })\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementPnapComponent ??= [];\n\t\tcoreConfig.types.rightsManagementPnapComponent.push({\n\t\t\ttype: RightsManagementPnapComponentType.Service\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementDapComponent ??= [];\n\t\tcoreConfig.types.rightsManagementDapComponent.push({\n\t\t\ttype: RightsManagementDapComponentType.Service\n\t\t});\n\n\t\tcoreConfig.types.rightsManagementDarpComponent ??= [];\n\t\tcoreConfig.types.rightsManagementDarpComponent.push({\n\t\t\ttype: RightsManagementDarpComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tdataAccessComponentCreator: async url => new DataAccessPointRestClient({ endpoint: url })\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the task scheduler.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureTaskScheduler(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.taskSchedulerEnabled) ?? false) {\n\t\tcoreConfig.types.taskSchedulerComponent ??= [];\n\t\tcoreConfig.types.taskSchedulerComponent.push({\n\t\t\ttype: TaskSchedulerComponentType.Service\n\t\t});\n\t}\n}\n\n/**\n * Configures the synchronised storage.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureSynchronisedStorage(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (\n\t\tIs.arrayValue(coreConfig.types.identityResolverComponent) &&\n\t\t(Coerce.boolean(envVars.synchronisedStorageEnabled) ?? false)\n\t) {\n\t\t// Check if the config provides a custom verifiable storage key id\n\t\tlet verifiableStorageKeyId = Coerce.string(envVars.synchronisedStorageVerifiableStorageKeyId);\n\n\t\tif (!Is.stringValue(verifiableStorageKeyId)) {\n\t\t\t// No custom key so default to the network setting\n\t\t\tverifiableStorageKeyId = envVars.iotaNetwork;\n\t\t}\n\t\tcoreConfig.types.synchronisedStorageComponent ??= [];\n\t\tcoreConfig.types.synchronisedStorageComponent.push({\n\t\t\ttype: SynchronisedStorageComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tverifiableStorageKeyId: verifiableStorageKeyId ?? \"\",\n\t\t\t\t\tblobStorageEncryptionKeyId:\n\t\t\t\t\t\tenvVars.synchronisedStorageBlobStorageEncryptionKeyId ??\n\t\t\t\t\t\tSYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID,\n\t\t\t\t\tentityUpdateIntervalMinutes: Coerce.number(\n\t\t\t\t\t\tenvVars.synchronisedStorageEntityUpdateIntervalMinutes\n\t\t\t\t\t),\n\t\t\t\t\tconsolidationIntervalMinutes: Coerce.number(\n\t\t\t\t\t\tenvVars.synchronisedStorageConsolidationIntervalMinutes\n\t\t\t\t\t),\n\t\t\t\t\tconsolidationBatchSize: Coerce.number(envVars.synchronisedStorageConsolidationBatchSize),\n\t\t\t\t\tmaxConsolidations: Coerce.number(envVars.synchronisedStorageMaxConsolidations)\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// If there is a trusted url set, we need to add a client\n\t\t// and give it a feature of trusted so that when the synchronised\n\t\t// storage is created it can pickup the correct component\n\t\tif (Is.stringValue(envVars.synchronisedStorageTrustedUrl)) {\n\t\t\tcoreConfig.types.synchronisedStorageComponent.push({\n\t\t\t\ttype: SynchronisedStorageComponentType.RestClient,\n\t\t\t\toptions: {\n\t\t\t\t\tendpoint: envVars.synchronisedStorageTrustedUrl\n\t\t\t\t},\n\t\t\t\tfeatures: [\"trusted\"]\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * Configures the federated catalogue.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureFederatedCatalogue(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.federatedCatalogueEnabled) ?? false) {\n\t\tcoreConfig.types.federatedCatalogueComponent ??= [];\n\t\tcoreConfig.types.federatedCatalogueComponent.push({\n\t\t\ttype: FederatedCatalogueComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsubResourceCacheTtlMs: Coerce.number(envVars.federatedCatalogueCacheTtlMs),\n\t\t\t\t\tclearingHouseApproverList:\n\t\t\t\t\t\tCoerce.object<string[]>(envVars.federatedCatalogueClearingHouseApproverList) ?? []\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the data space connector.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureDataSpaceConnector(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\tif (Coerce.boolean(envVars.dataSpaceConnectorEnabled) ?? false) {\n\t\tcoreConfig.types.dataSpaceConnectorComponent ??= [];\n\t\tcoreConfig.types.dataSpaceConnectorComponent.push({\n\t\t\ttype: DataSpaceConnectorComponentType.Service,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tretainActivityLogsFor: Coerce.number(envVars.dataSpaceConnectorRetainActivityLogsFor),\n\t\t\t\t\tactivityLogsCleanUpInterval: Coerce.number(\n\t\t\t\t\t\tenvVars.dataSpaceConnectorActivityLogsCleanUpInterval\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * Configures the DLT.\n * @param coreConfig The core config.\n * @param envVars The environment variables.\n */\nasync function configureDlt(\n\tcoreConfig: IEngineConfig,\n\tenvVars: IEngineEnvironmentVariables\n): Promise<void> {\n\t// Create centralized DLT configuration for IOTA if essential IOTA variables are set\n\tif (Is.stringValue(envVars.iotaNodeEndpoint) && Is.stringValue(envVars.iotaNetwork)) {\n\t\tcoreConfig.types.dltConfig ??= [];\n\n\t\tconst gasStationConfig =\n\t\t\tIs.stringValue(envVars.iotaGasStationEndpoint) &&\n\t\t\tIs.stringValue(envVars.iotaGasStationAuthToken)\n\t\t\t\t? {\n\t\t\t\t\t\tgasStationUrl: envVars.iotaGasStationEndpoint,\n\t\t\t\t\t\tgasStationAuthToken: envVars.iotaGasStationAuthToken\n\t\t\t\t\t}\n\t\t\t\t: undefined;\n\n\t\tcoreConfig.types.dltConfig.push({\n\t\t\ttype: DltConfigType.Iota,\n\t\t\tisDefault: true,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tclientOptions: {\n\t\t\t\t\t\turl: envVars.iotaNodeEndpoint ?? \"\"\n\t\t\t\t\t},\n\t\t\t\t\tnetwork: envVars.iotaNetwork ?? \"\",\n\t\t\t\t\tcoinType: Coerce.number(envVars.iotaCoinType),\n\t\t\t\t\tgasStation: gasStationConfig\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n"]}
@@ -0,0 +1,197 @@
1
+ import { ContextIdKeys } from "@twin.org/context";
2
+ import { Coerce, Is } from "@twin.org/core";
3
+ import { addDefaultRestPaths, addDefaultSocketPaths } from "@twin.org/engine-server";
4
+ import { AuthenticationAdminComponentType, AuthenticationComponentType, InformationComponentType, RestRouteProcessorType, SocketRouteProcessorType } from "@twin.org/engine-server-types";
5
+ import { AUTH_SIGNING_KEY_ID } from "../defaults.js";
6
+ import { NodeFeatures } from "../models/nodeFeatures.js";
7
+ import { getFeatures } from "../utils.js";
8
+ /**
9
+ * Handles the configuration of the server.
10
+ * @param envVars The environment variables for the engine server.
11
+ * @param contextIdKeys The context ID keys.
12
+ * @param coreEngineConfig The core engine config.
13
+ * @param serverInfo The server information.
14
+ * @param openApiSpecPath The path to the open api spec.
15
+ * @param favIconPath The path to the favicon.
16
+ * @returns The config for the core and the server.
17
+ */
18
+ export async function buildEngineServerConfiguration(envVars, contextIdKeys, coreEngineConfig, serverInfo, openApiSpecPath, favIconPath) {
19
+ const webServerOptions = {
20
+ port: Coerce.number(envVars.port),
21
+ host: Coerce.string(envVars.host),
22
+ methods: Is.stringValue(envVars.httpMethods)
23
+ ? envVars.httpMethods.split(",")
24
+ : undefined,
25
+ allowedHeaders: Is.stringValue(envVars.httpAllowedHeaders)
26
+ ? envVars.httpAllowedHeaders.split(",")
27
+ : undefined,
28
+ exposedHeaders: Is.stringValue(envVars.httpExposedHeaders)
29
+ ? envVars.httpExposedHeaders.split(",")
30
+ : undefined,
31
+ corsOrigins: Is.stringValue(envVars.corsOrigins) ? envVars.corsOrigins.split(",") : undefined
32
+ };
33
+ const tenantEnabled = Coerce.boolean(envVars.tenantEnabled) ?? false;
34
+ if (tenantEnabled) {
35
+ webServerOptions.allowedHeaders ??= [];
36
+ if (!webServerOptions.allowedHeaders.includes("x-api-key")) {
37
+ webServerOptions.allowedHeaders.push("x-api-key");
38
+ }
39
+ }
40
+ const serverConfig = {
41
+ ...coreEngineConfig,
42
+ web: webServerOptions,
43
+ types: {
44
+ ...coreEngineConfig.types,
45
+ informationComponent: [
46
+ {
47
+ type: InformationComponentType.Service,
48
+ options: {
49
+ config: {
50
+ serverInfo,
51
+ openApiSpecPath,
52
+ favIconPath
53
+ }
54
+ }
55
+ }
56
+ ]
57
+ }
58
+ };
59
+ if (Is.stringValue(envVars.mimeTypeProcessors)) {
60
+ const mimeTypeProcessors = envVars.mimeTypeProcessors.split(",");
61
+ if (Is.arrayValue(mimeTypeProcessors)) {
62
+ serverConfig.types.mimeTypeProcessor ??= [];
63
+ for (const mimeTypeProcessor of mimeTypeProcessors) {
64
+ serverConfig.types.mimeTypeProcessor.push({
65
+ type: mimeTypeProcessor
66
+ });
67
+ }
68
+ }
69
+ }
70
+ serverConfig.types.restRouteProcessor ??= [];
71
+ serverConfig.types.socketRouteProcessor ??= [];
72
+ const features = getFeatures(envVars);
73
+ const hasNodeId = features.includes(NodeFeatures.NodeId);
74
+ if (hasNodeId) {
75
+ contextIdKeys.push(ContextIdKeys.Node);
76
+ serverConfig.types.restRouteProcessor.push({
77
+ type: RestRouteProcessorType.ContextId,
78
+ options: {
79
+ config: {
80
+ key: ContextIdKeys.Node
81
+ }
82
+ }
83
+ });
84
+ serverConfig.types.socketRouteProcessor.push({
85
+ type: SocketRouteProcessorType.ContextId,
86
+ options: {
87
+ config: {
88
+ key: ContextIdKeys.Node
89
+ }
90
+ }
91
+ });
92
+ }
93
+ if (tenantEnabled) {
94
+ contextIdKeys.push(ContextIdKeys.Tenant);
95
+ serverConfig.types.restRouteProcessor.push({
96
+ type: RestRouteProcessorType.Tenant
97
+ });
98
+ serverConfig.types.socketRouteProcessor.push({
99
+ type: SocketRouteProcessorType.Tenant
100
+ });
101
+ }
102
+ if (!coreEngineConfig.silent) {
103
+ const includeBody = Coerce.boolean(envVars.routeLoggingIncludeBody) ?? coreEngineConfig.debug;
104
+ const fullBase64 = Coerce.boolean(envVars.routeLoggingFullBase64) ?? false;
105
+ const obfuscateProperties = Is.stringValue(envVars.routeLoggingObfuscateProperties)
106
+ ? envVars.routeLoggingObfuscateProperties.split(",")
107
+ : undefined;
108
+ serverConfig.types.restRouteProcessor.push({
109
+ type: RestRouteProcessorType.Logging,
110
+ options: {
111
+ config: {
112
+ includeBody,
113
+ fullBase64,
114
+ obfuscateProperties
115
+ }
116
+ }
117
+ });
118
+ serverConfig.types.socketRouteProcessor.push({
119
+ type: SocketRouteProcessorType.Logging,
120
+ options: {
121
+ config: {
122
+ includeBody,
123
+ fullBase64,
124
+ obfuscateProperties
125
+ }
126
+ }
127
+ });
128
+ }
129
+ serverConfig.types.restRouteProcessor.push({
130
+ type: RestRouteProcessorType.RestRoute,
131
+ options: {
132
+ config: {
133
+ includeErrorStack: coreEngineConfig.debug
134
+ }
135
+ }
136
+ });
137
+ serverConfig.types.socketRouteProcessor.push({
138
+ type: SocketRouteProcessorType.SocketRoute,
139
+ options: {
140
+ config: {
141
+ includeErrorStack: coreEngineConfig.debug
142
+ }
143
+ }
144
+ });
145
+ const authAdminProcessorType = envVars.authAdminProcessorType;
146
+ if (authAdminProcessorType === AuthenticationAdminComponentType.EntityStorage) {
147
+ serverConfig.types.authenticationAdminComponent ??= [];
148
+ serverConfig.types.authenticationAdminComponent.push({
149
+ type: AuthenticationAdminComponentType.EntityStorage,
150
+ options: {
151
+ config: {}
152
+ }
153
+ });
154
+ }
155
+ const authProcessorType = envVars.authProcessorType;
156
+ if (authProcessorType === AuthenticationComponentType.EntityStorage) {
157
+ contextIdKeys.push(ContextIdKeys.Organization);
158
+ contextIdKeys.push(ContextIdKeys.User);
159
+ serverConfig.types.authenticationComponent ??= [];
160
+ serverConfig.types.authenticationComponent.push({
161
+ type: AuthenticationComponentType.EntityStorage,
162
+ options: {
163
+ config: {
164
+ signingKeyName: envVars.authSigningKeyId ?? AUTH_SIGNING_KEY_ID
165
+ }
166
+ }
167
+ });
168
+ serverConfig.types.restRouteProcessor.push({
169
+ type: RestRouteProcessorType.AuthHeader,
170
+ options: {
171
+ config: {
172
+ signingKeyName: envVars.authSigningKeyId ?? AUTH_SIGNING_KEY_ID
173
+ }
174
+ }
175
+ });
176
+ serverConfig.types.socketRouteProcessor.push({
177
+ type: SocketRouteProcessorType.AuthHeader,
178
+ options: {
179
+ config: {
180
+ signingKeyName: envVars.authSigningKeyId ?? AUTH_SIGNING_KEY_ID
181
+ }
182
+ }
183
+ });
184
+ }
185
+ if (Coerce.boolean(envVars.vcAuthenticationEnabled) ?? false) {
186
+ serverConfig.types.restRouteProcessor.push({
187
+ type: RestRouteProcessorType.AuthVerifiableCredential
188
+ });
189
+ serverConfig.types.socketRouteProcessor.push({
190
+ type: SocketRouteProcessorType.AuthVerifiableCredential
191
+ });
192
+ }
193
+ addDefaultRestPaths(serverConfig);
194
+ addDefaultSocketPaths(serverConfig);
195
+ return serverConfig;
196
+ }
197
+ //# sourceMappingURL=engineServerEnvBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engineServerEnvBuilder.js","sourceRoot":"","sources":["../../../src/builders/engineServerEnvBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IServerInfo, IWebServerOptions } from \"@twin.org/api-models\";\nimport { ContextIdKeys } from \"@twin.org/context\";\nimport { Coerce, Is } from \"@twin.org/core\";\nimport type { IEngineCoreConfig } from \"@twin.org/engine-models\";\nimport { addDefaultRestPaths, addDefaultSocketPaths } from \"@twin.org/engine-server\";\nimport {\n\tAuthenticationAdminComponentType,\n\tAuthenticationComponentType,\n\ttype IEngineServerConfig,\n\tInformationComponentType,\n\ttype MimeTypeProcessorType,\n\tRestRouteProcessorType,\n\tSocketRouteProcessorType\n} from \"@twin.org/engine-server-types\";\nimport type { HttpMethod } from \"@twin.org/web\";\nimport { AUTH_SIGNING_KEY_ID } from \"../defaults.js\";\nimport type { IEngineServerEnvironmentVariables } from \"../models/IEngineServerEnvironmentVariables.js\";\nimport { NodeFeatures } from \"../models/nodeFeatures.js\";\nimport { getFeatures } from \"../utils.js\";\n\n/**\n * Handles the configuration of the server.\n * @param envVars The environment variables for the engine server.\n * @param contextIdKeys The context ID keys.\n * @param coreEngineConfig The core engine config.\n * @param serverInfo The server information.\n * @param openApiSpecPath The path to the open api spec.\n * @param favIconPath The path to the favicon.\n * @returns The config for the core and the server.\n */\nexport async function buildEngineServerConfiguration(\n\tenvVars: IEngineServerEnvironmentVariables,\n\tcontextIdKeys: string[],\n\tcoreEngineConfig: IEngineCoreConfig,\n\tserverInfo: IServerInfo,\n\topenApiSpecPath?: string,\n\tfavIconPath?: string\n): Promise<IEngineServerConfig> {\n\tconst webServerOptions: IWebServerOptions = {\n\t\tport: Coerce.number(envVars.port),\n\t\thost: Coerce.string(envVars.host),\n\t\tmethods: Is.stringValue(envVars.httpMethods)\n\t\t\t? (envVars.httpMethods.split(\",\") as HttpMethod[])\n\t\t\t: undefined,\n\t\tallowedHeaders: Is.stringValue(envVars.httpAllowedHeaders)\n\t\t\t? envVars.httpAllowedHeaders.split(\",\")\n\t\t\t: undefined,\n\t\texposedHeaders: Is.stringValue(envVars.httpExposedHeaders)\n\t\t\t? envVars.httpExposedHeaders.split(\",\")\n\t\t\t: undefined,\n\t\tcorsOrigins: Is.stringValue(envVars.corsOrigins) ? envVars.corsOrigins.split(\",\") : undefined\n\t};\n\n\tconst tenantEnabled = Coerce.boolean(envVars.tenantEnabled) ?? false;\n\tif (tenantEnabled) {\n\t\twebServerOptions.allowedHeaders ??= [];\n\t\tif (!webServerOptions.allowedHeaders.includes(\"x-api-key\")) {\n\t\t\twebServerOptions.allowedHeaders.push(\"x-api-key\");\n\t\t}\n\t}\n\n\tconst serverConfig: IEngineServerConfig = {\n\t\t...coreEngineConfig,\n\t\tweb: webServerOptions,\n\t\ttypes: {\n\t\t\t...coreEngineConfig.types,\n\t\t\tinformationComponent: [\n\t\t\t\t{\n\t\t\t\t\ttype: InformationComponentType.Service,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tserverInfo,\n\t\t\t\t\t\t\topenApiSpecPath,\n\t\t\t\t\t\t\tfavIconPath\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t};\n\n\tif (Is.stringValue(envVars.mimeTypeProcessors)) {\n\t\tconst mimeTypeProcessors = envVars.mimeTypeProcessors.split(\",\");\n\n\t\tif (Is.arrayValue(mimeTypeProcessors)) {\n\t\t\tserverConfig.types.mimeTypeProcessor ??= [];\n\t\t\tfor (const mimeTypeProcessor of mimeTypeProcessors) {\n\t\t\t\tserverConfig.types.mimeTypeProcessor.push({\n\t\t\t\t\ttype: mimeTypeProcessor as MimeTypeProcessorType\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tserverConfig.types.restRouteProcessor ??= [];\n\tserverConfig.types.socketRouteProcessor ??= [];\n\n\tconst features = getFeatures(envVars);\n\tconst hasNodeId = features.includes(NodeFeatures.NodeId);\n\n\tif (hasNodeId) {\n\t\tcontextIdKeys.push(ContextIdKeys.Node);\n\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.ContextId,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tkey: ContextIdKeys.Node\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.ContextId,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tkey: ContextIdKeys.Node\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (tenantEnabled) {\n\t\tcontextIdKeys.push(ContextIdKeys.Tenant);\n\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.Tenant\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.Tenant\n\t\t});\n\t}\n\n\tif (!coreEngineConfig.silent) {\n\t\tconst includeBody = Coerce.boolean(envVars.routeLoggingIncludeBody) ?? coreEngineConfig.debug;\n\t\tconst fullBase64 = Coerce.boolean(envVars.routeLoggingFullBase64) ?? false;\n\t\tconst obfuscateProperties = Is.stringValue(envVars.routeLoggingObfuscateProperties)\n\t\t\t? envVars.routeLoggingObfuscateProperties.split(\",\")\n\t\t\t: undefined;\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.Logging,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tincludeBody,\n\t\t\t\t\tfullBase64,\n\t\t\t\t\tobfuscateProperties\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.Logging,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tincludeBody,\n\t\t\t\t\tfullBase64,\n\t\t\t\t\tobfuscateProperties\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tserverConfig.types.restRouteProcessor.push({\n\t\ttype: RestRouteProcessorType.RestRoute,\n\t\toptions: {\n\t\t\tconfig: {\n\t\t\t\tincludeErrorStack: coreEngineConfig.debug\n\t\t\t}\n\t\t}\n\t});\n\tserverConfig.types.socketRouteProcessor.push({\n\t\ttype: SocketRouteProcessorType.SocketRoute,\n\t\toptions: {\n\t\t\tconfig: {\n\t\t\t\tincludeErrorStack: coreEngineConfig.debug\n\t\t\t}\n\t\t}\n\t});\n\n\tconst authAdminProcessorType = envVars.authAdminProcessorType;\n\tif (authAdminProcessorType === AuthenticationAdminComponentType.EntityStorage) {\n\t\tserverConfig.types.authenticationAdminComponent ??= [];\n\t\tserverConfig.types.authenticationAdminComponent.push({\n\t\t\ttype: AuthenticationAdminComponentType.EntityStorage,\n\t\t\toptions: {\n\t\t\t\tconfig: {}\n\t\t\t}\n\t\t});\n\t}\n\n\tconst authProcessorType = envVars.authProcessorType;\n\tif (authProcessorType === AuthenticationComponentType.EntityStorage) {\n\t\tcontextIdKeys.push(ContextIdKeys.Organization);\n\t\tcontextIdKeys.push(ContextIdKeys.User);\n\n\t\tserverConfig.types.authenticationComponent ??= [];\n\t\tserverConfig.types.authenticationComponent.push({\n\t\t\ttype: AuthenticationComponentType.EntityStorage,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId ?? AUTH_SIGNING_KEY_ID\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.AuthHeader,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId ?? AUTH_SIGNING_KEY_ID\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.AuthHeader,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId ?? AUTH_SIGNING_KEY_ID\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (Coerce.boolean(envVars.vcAuthenticationEnabled) ?? false) {\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.AuthVerifiableCredential\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.AuthVerifiableCredential\n\t\t});\n\t}\n\n\taddDefaultRestPaths(serverConfig);\n\taddDefaultSocketPaths(serverConfig);\n\n\treturn serverConfig;\n}\n"]}
@@ -0,0 +1,109 @@
1
+ // Copyright 2024 IOTA Stiftung.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ import { CLIDisplay } from "@twin.org/cli-core";
4
+ import { GeneralError, I18n, Is } from "@twin.org/core";
5
+ import { ModuleHelper } from "@twin.org/modules";
6
+ const extensionState = {};
7
+ /**
8
+ * Handles the configuration of the extensions.
9
+ * @param envVars The environment variables for the node.
10
+ * @param nodeEngineConfig The node engine config.
11
+ * @returns The config for the core and the server.
12
+ */
13
+ export async function extensionsConfiguration(envVars, nodeEngineConfig) {
14
+ if (Is.stringValue(envVars.extensions)) {
15
+ const extensions = envVars.extensions.split(",");
16
+ for (const extension of extensions) {
17
+ let initialiseConfigMethod;
18
+ try {
19
+ CLIDisplay.value(I18n.formatMessage("node.extensionLoading"), extension);
20
+ initialiseConfigMethod = await ModuleHelper.getModuleMethod(extension, "extensionInitialise");
21
+ }
22
+ catch (err) {
23
+ throw new GeneralError("node", "extensionLoadingError", { extension }, err);
24
+ }
25
+ if (Is.function(initialiseConfigMethod)) {
26
+ await initialiseConfigMethod(envVars, nodeEngineConfig);
27
+ }
28
+ }
29
+ }
30
+ return nodeEngineConfig;
31
+ }
32
+ /**
33
+ * Handles the initialisation of the extensions when the engine has been constructed.
34
+ * @param envVars The environment variables for the node.
35
+ * @param engineCore The engine core instance.
36
+ * @returns Nothing.
37
+ */
38
+ export async function extensionsInitialiseEngine(envVars, engineCore) {
39
+ if (Is.stringValue(envVars.extensions)) {
40
+ const extensions = envVars.extensions.split(",");
41
+ for (const extension of extensions) {
42
+ extensionState[extension] ??= { initialised: false };
43
+ if (!extensionState[extension].initialised) {
44
+ extensionState[extension].initialised = true;
45
+ let initialiseEngineMethod;
46
+ try {
47
+ engineCore.logInfo(I18n.formatMessage("node.extensionInitialisingEngine", { extension }));
48
+ initialiseEngineMethod =
49
+ await ModuleHelper.getModuleMethod(extension, "extensionInitialiseEngine");
50
+ }
51
+ catch { }
52
+ if (Is.function(initialiseEngineMethod)) {
53
+ await initialiseEngineMethod(engineCore);
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ /**
60
+ * Handles the initialisation of the extensions when the engine server has been constructed.
61
+ * @param envVars The environment variables for the node.
62
+ * @param engineCore The engine core instance.
63
+ * @param engineServer The engine server instance.
64
+ * @returns Nothing.
65
+ */
66
+ export async function extensionsInitialiseEngineServer(envVars, engineCore, engineServer) {
67
+ if (Is.stringValue(envVars.extensions)) {
68
+ const extensions = envVars.extensions.split(",");
69
+ for (const extension of extensions) {
70
+ let initialiseEngineServerMethod;
71
+ try {
72
+ engineCore.logInfo(I18n.formatMessage("node.extensionInitialisingEngineServer", { extension }));
73
+ initialiseEngineServerMethod =
74
+ await ModuleHelper.getModuleMethod(extension, "extensionInitialiseEngineServer");
75
+ }
76
+ catch { }
77
+ if (Is.function(initialiseEngineServerMethod)) {
78
+ await initialiseEngineServerMethod(engineCore, engineServer);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ /**
84
+ * Handles the shutdown of the extensions.
85
+ * @param envVars The environment variables for the node.
86
+ * @param engineCore The engine core instance.
87
+ * @returns Nothing.
88
+ */
89
+ export async function shutdownExtensions(envVars, engineCore) {
90
+ if (Is.stringValue(envVars.extensions)) {
91
+ const extensions = envVars.extensions.split(",");
92
+ for (const extension of extensions) {
93
+ extensionState[extension] ??= { initialised: false };
94
+ if (extensionState[extension].initialised) {
95
+ extensionState[extension].initialised = false;
96
+ let shutdownMethod;
97
+ try {
98
+ engineCore.logInfo(I18n.formatMessage("node.extensionShutdown", { extension }));
99
+ shutdownMethod = await ModuleHelper.getModuleMethod(extension, "extensionShutdown");
100
+ }
101
+ catch { }
102
+ if (Is.function(shutdownMethod)) {
103
+ await shutdownMethod();
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ //# sourceMappingURL=extensionsBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensionsBuilder.js","sourceRoot":"","sources":["../../../src/builders/extensionsBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { CLIDisplay } from \"@twin.org/cli-core\";\nimport { GeneralError, I18n, Is } from \"@twin.org/core\";\nimport type { IEngineCore, IEngineServer } from \"@twin.org/engine-models\";\nimport { ModuleHelper } from \"@twin.org/modules\";\nimport type { INodeEngineConfig } from \"../models/INodeEngineConfig.js\";\nimport type { INodeEnvironmentVariables } from \"../models/INodeEnvironmentVariables.js\";\nimport type {\n\tNodeExtensionInitialiseMethod,\n\tNodeExtensionInitialiseEngineMethod,\n\tNodeExtensionInitialiseEngineServerMethod,\n\tNodeExtensionShutdownMethod\n} from \"../models/nodeExtensionMethods.js\";\n\nconst extensionState: { [id: string]: { initialised: boolean } } = {};\n\n/**\n * Handles the configuration of the extensions.\n * @param envVars The environment variables for the node.\n * @param nodeEngineConfig The node engine config.\n * @returns The config for the core and the server.\n */\nexport async function extensionsConfiguration(\n\tenvVars: INodeEnvironmentVariables,\n\tnodeEngineConfig: INodeEngineConfig\n): Promise<INodeEngineConfig> {\n\tif (Is.stringValue(envVars.extensions)) {\n\t\tconst extensions = envVars.extensions.split(\",\");\n\n\t\tfor (const extension of extensions) {\n\t\t\tlet initialiseConfigMethod: NodeExtensionInitialiseMethod | undefined;\n\t\t\ttry {\n\t\t\t\tCLIDisplay.value(I18n.formatMessage(\"node.extensionLoading\"), extension);\n\n\t\t\t\tinitialiseConfigMethod = await ModuleHelper.getModuleMethod<NodeExtensionInitialiseMethod>(\n\t\t\t\t\textension,\n\t\t\t\t\t\"extensionInitialise\"\n\t\t\t\t);\n\t\t\t} catch (err) {\n\t\t\t\tthrow new GeneralError(\"node\", \"extensionLoadingError\", { extension }, err);\n\t\t\t}\n\n\t\t\tif (Is.function(initialiseConfigMethod)) {\n\t\t\t\tawait initialiseConfigMethod(envVars, nodeEngineConfig);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nodeEngineConfig;\n}\n\n/**\n * Handles the initialisation of the extensions when the engine has been constructed.\n * @param envVars The environment variables for the node.\n * @param engineCore The engine core instance.\n * @returns Nothing.\n */\nexport async function extensionsInitialiseEngine(\n\tenvVars: INodeEnvironmentVariables,\n\tengineCore: IEngineCore\n): Promise<void> {\n\tif (Is.stringValue(envVars.extensions)) {\n\t\tconst extensions = envVars.extensions.split(\",\");\n\n\t\tfor (const extension of extensions) {\n\t\t\textensionState[extension] ??= { initialised: false };\n\n\t\t\tif (!extensionState[extension].initialised) {\n\t\t\t\textensionState[extension].initialised = true;\n\n\t\t\t\tlet initialiseEngineMethod: NodeExtensionInitialiseEngineMethod | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tengineCore.logInfo(I18n.formatMessage(\"node.extensionInitialisingEngine\", { extension }));\n\t\t\t\t\tinitialiseEngineMethod =\n\t\t\t\t\t\tawait ModuleHelper.getModuleMethod<NodeExtensionInitialiseEngineMethod>(\n\t\t\t\t\t\t\textension,\n\t\t\t\t\t\t\t\"extensionInitialiseEngine\"\n\t\t\t\t\t\t);\n\t\t\t\t} catch {}\n\n\t\t\t\tif (Is.function(initialiseEngineMethod)) {\n\t\t\t\t\tawait initialiseEngineMethod(engineCore);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Handles the initialisation of the extensions when the engine server has been constructed.\n * @param envVars The environment variables for the node.\n * @param engineCore The engine core instance.\n * @param engineServer The engine server instance.\n * @returns Nothing.\n */\nexport async function extensionsInitialiseEngineServer(\n\tenvVars: INodeEnvironmentVariables,\n\tengineCore: IEngineCore,\n\tengineServer: IEngineServer\n): Promise<void> {\n\tif (Is.stringValue(envVars.extensions)) {\n\t\tconst extensions = envVars.extensions.split(\",\");\n\n\t\tfor (const extension of extensions) {\n\t\t\tlet initialiseEngineServerMethod: NodeExtensionInitialiseEngineServerMethod | undefined;\n\t\t\ttry {\n\t\t\t\tengineCore.logInfo(\n\t\t\t\t\tI18n.formatMessage(\"node.extensionInitialisingEngineServer\", { extension })\n\t\t\t\t);\n\t\t\t\tinitialiseEngineServerMethod =\n\t\t\t\t\tawait ModuleHelper.getModuleMethod<NodeExtensionInitialiseEngineServerMethod>(\n\t\t\t\t\t\textension,\n\t\t\t\t\t\t\"extensionInitialiseEngineServer\"\n\t\t\t\t\t);\n\t\t\t} catch {}\n\n\t\t\tif (Is.function(initialiseEngineServerMethod)) {\n\t\t\t\tawait initialiseEngineServerMethod(engineCore, engineServer);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Handles the shutdown of the extensions.\n * @param envVars The environment variables for the node.\n * @param engineCore The engine core instance.\n * @returns Nothing.\n */\nexport async function shutdownExtensions(\n\tenvVars: INodeEnvironmentVariables,\n\tengineCore: IEngineCore\n): Promise<void> {\n\tif (Is.stringValue(envVars.extensions)) {\n\t\tconst extensions = envVars.extensions.split(\",\");\n\n\t\tfor (const extension of extensions) {\n\t\t\textensionState[extension] ??= { initialised: false };\n\n\t\t\tif (extensionState[extension].initialised) {\n\t\t\t\textensionState[extension].initialised = false;\n\t\t\t\tlet shutdownMethod: NodeExtensionShutdownMethod | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tengineCore.logInfo(I18n.formatMessage(\"node.extensionShutdown\", { extension }));\n\t\t\t\t\tshutdownMethod = await ModuleHelper.getModuleMethod<NodeExtensionShutdownMethod>(\n\t\t\t\t\t\textension,\n\t\t\t\t\t\t\"extensionShutdown\"\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\n\t\t\t\tif (Is.function(shutdownMethod)) {\n\t\t\t\t\tawait shutdownMethod();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,9 @@
1
+ // Copyright 2024 IOTA Stiftung.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ export const ATTESTATION_VERIFICATION_METHOD_ID = "attestation-assertion";
4
+ export const IMMUTABLE_PROOF_VERIFICATION_METHOD_ID = "immutable-proof-assertion";
5
+ export const BLOB_STORAGE_ENCRYPTION_KEY_ID = "blob-encryption";
6
+ export const SYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID = "synchronised-storage-blob-encryption";
7
+ export const VC_AUTHENTICATION_VERIFICATION_METHOD_ID = "node-authentication-assertion";
8
+ export const AUTH_SIGNING_KEY_ID = "auth-signing";
9
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AAEvC,MAAM,CAAC,MAAM,kCAAkC,GAAG,uBAAuB,CAAC;AAC1E,MAAM,CAAC,MAAM,sCAAsC,GAAG,2BAA2B,CAAC;AAClF,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;AAChE,MAAM,CAAC,MAAM,mDAAmD,GAC/D,sCAAsC,CAAC;AACxC,MAAM,CAAC,MAAM,wCAAwC,GAAG,+BAA+B,CAAC;AACxF,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\nexport const ATTESTATION_VERIFICATION_METHOD_ID = \"attestation-assertion\";\nexport const IMMUTABLE_PROOF_VERIFICATION_METHOD_ID = \"immutable-proof-assertion\";\nexport const BLOB_STORAGE_ENCRYPTION_KEY_ID = \"blob-encryption\";\nexport const SYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID =\n\t\"synchronised-storage-blob-encryption\";\nexport const VC_AUTHENTICATION_VERIFICATION_METHOD_ID = \"node-authentication-assertion\";\nexport const AUTH_SIGNING_KEY_ID = \"auth-signing\";\n"]}