@twin.org/node-core 0.0.3-next.1 → 0.0.3-next.10

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 (141) hide show
  1. package/dist/es/builders/engineEnvBuilder.js +155 -74
  2. package/dist/es/builders/engineEnvBuilder.js.map +1 -1
  3. package/dist/es/builders/engineServerEnvBuilder.js +24 -15
  4. package/dist/es/builders/engineServerEnvBuilder.js.map +1 -1
  5. package/dist/es/builders/extensionsBuilder.js +26 -17
  6. package/dist/es/builders/extensionsBuilder.js.map +1 -1
  7. package/dist/es/cli.js +255 -0
  8. package/dist/es/cli.js.map +1 -0
  9. package/dist/es/commands/bootstrapLegacy.js +175 -0
  10. package/dist/es/commands/bootstrapLegacy.js.map +1 -0
  11. package/dist/es/commands/help.js +85 -0
  12. package/dist/es/commands/help.js.map +1 -0
  13. package/dist/es/commands/identityCreate.js +310 -0
  14. package/dist/es/commands/identityCreate.js.map +1 -0
  15. package/dist/es/commands/identityImports.js +76 -0
  16. package/dist/es/commands/identityImports.js.map +1 -0
  17. package/dist/es/commands/identityVerifiableCredentialCreate.js +140 -0
  18. package/dist/es/commands/identityVerifiableCredentialCreate.js.map +1 -0
  19. package/dist/es/commands/identityVerificationMethodCreate.js +208 -0
  20. package/dist/es/commands/identityVerificationMethodCreate.js.map +1 -0
  21. package/dist/es/commands/identityVerificationMethodImport.js +120 -0
  22. package/dist/es/commands/identityVerificationMethodImport.js.map +1 -0
  23. package/dist/es/commands/nodeSetIdentity.js +51 -0
  24. package/dist/es/commands/nodeSetIdentity.js.map +1 -0
  25. package/dist/es/commands/nodeSetTenant.js +49 -0
  26. package/dist/es/commands/nodeSetTenant.js.map +1 -0
  27. package/dist/es/commands/tenantCreate.js +120 -0
  28. package/dist/es/commands/tenantCreate.js.map +1 -0
  29. package/dist/es/commands/tenantImport.js +78 -0
  30. package/dist/es/commands/tenantImport.js.map +1 -0
  31. package/dist/es/commands/userCreate.js +197 -0
  32. package/dist/es/commands/userCreate.js.map +1 -0
  33. package/dist/es/commands/vaultKeyCreate.js +185 -0
  34. package/dist/es/commands/vaultKeyCreate.js.map +1 -0
  35. package/dist/es/commands/vaultKeyImport.js +98 -0
  36. package/dist/es/commands/vaultKeyImport.js.map +1 -0
  37. package/dist/es/defaults.js +20 -1
  38. package/dist/es/defaults.js.map +1 -1
  39. package/dist/es/index.js +7 -3
  40. package/dist/es/index.js.map +1 -1
  41. package/dist/es/models/ICliArgs.js +4 -0
  42. package/dist/es/models/ICliArgs.js.map +1 -0
  43. package/dist/es/models/ICliCommand.js +2 -0
  44. package/dist/es/models/ICliCommand.js.map +1 -0
  45. package/dist/es/models/ICliCommandDefinition.js +2 -0
  46. package/dist/es/models/ICliCommandDefinition.js.map +1 -0
  47. package/dist/es/models/ICliCommandDefinitionParam.js +2 -0
  48. package/dist/es/models/ICliCommandDefinitionParam.js.map +1 -0
  49. package/dist/es/models/IEngineEnvironmentVariables.js.map +1 -1
  50. package/dist/es/models/INodeEngineState.js.map +1 -1
  51. package/dist/es/models/INodeEnvironmentVariables.js.map +1 -1
  52. package/dist/es/models/cliCommandParamType.js +4 -0
  53. package/dist/es/models/cliCommandParamType.js.map +1 -0
  54. package/dist/es/node.js +55 -35
  55. package/dist/es/node.js.map +1 -1
  56. package/dist/es/start.js +128 -0
  57. package/dist/es/start.js.map +1 -0
  58. package/dist/es/utils.js +1 -22
  59. package/dist/es/utils.js.map +1 -1
  60. package/dist/types/builders/engineEnvBuilder.d.ts +4 -1
  61. package/dist/types/builders/engineServerEnvBuilder.d.ts +5 -2
  62. package/dist/types/cli.d.ts +66 -0
  63. package/dist/types/commands/bootstrapLegacy.d.ts +66 -0
  64. package/dist/types/commands/help.d.ts +23 -0
  65. package/dist/types/commands/identityCreate.d.ts +39 -0
  66. package/dist/types/commands/identityImports.d.ts +24 -0
  67. package/dist/types/commands/identityVerifiableCredentialCreate.d.ts +43 -0
  68. package/dist/types/commands/identityVerificationMethodCreate.d.ts +47 -0
  69. package/dist/types/commands/identityVerificationMethodImport.d.ts +31 -0
  70. package/dist/types/commands/nodeSetIdentity.d.ts +22 -0
  71. package/dist/types/commands/nodeSetTenant.d.ts +22 -0
  72. package/dist/types/commands/tenantCreate.d.ts +35 -0
  73. package/dist/types/commands/tenantImport.d.ts +24 -0
  74. package/dist/types/commands/userCreate.d.ts +46 -0
  75. package/dist/types/commands/vaultKeyCreate.d.ts +43 -0
  76. package/dist/types/commands/vaultKeyImport.d.ts +28 -0
  77. package/dist/types/defaults.d.ts +11 -1
  78. package/dist/types/index.d.ts +7 -3
  79. package/dist/types/models/ICliArgs.d.ts +20 -0
  80. package/dist/types/models/ICliCommand.d.ts +17 -0
  81. package/dist/types/models/ICliCommandDefinition.d.ts +46 -0
  82. package/dist/types/models/ICliCommandDefinitionParam.d.ts +35 -0
  83. package/dist/types/models/IEngineEnvironmentVariables.d.ts +51 -42
  84. package/dist/types/models/INodeEngineState.d.ts +0 -8
  85. package/dist/types/models/INodeEnvironmentVariables.d.ts +0 -38
  86. package/dist/types/models/cliCommandParamType.d.ts +4 -0
  87. package/dist/types/node.d.ts +6 -2
  88. package/dist/types/{server.d.ts → start.d.ts} +7 -2
  89. package/dist/types/utils.d.ts +0 -8
  90. package/docs/changelog.md +63 -0
  91. package/docs/reference/functions/buildConfiguration.md +2 -2
  92. package/docs/reference/functions/buildEngineConfiguration.md +1 -1
  93. package/docs/reference/functions/buildEngineServerConfiguration.md +3 -3
  94. package/docs/reference/functions/constructCliCommand.md +27 -0
  95. package/docs/reference/functions/executeCommand.md +29 -0
  96. package/docs/reference/functions/getEnvDefaults.md +19 -0
  97. package/docs/reference/functions/initCli.md +27 -0
  98. package/docs/reference/functions/parseCommandLineArgs.md +19 -0
  99. package/docs/reference/functions/processEnvOptions.md +27 -0
  100. package/docs/reference/functions/registerCommands.md +9 -0
  101. package/docs/reference/functions/run.md +7 -1
  102. package/docs/reference/functions/start.md +10 -4
  103. package/docs/reference/functions/substituteEnvOptions.md +25 -0
  104. package/docs/reference/index.md +15 -12
  105. package/docs/reference/interfaces/ICliArgs.md +35 -0
  106. package/docs/reference/interfaces/ICliCommand.md +23 -0
  107. package/docs/reference/interfaces/ICliCommandDefinition.md +101 -0
  108. package/docs/reference/interfaces/ICliCommandDefinitionParam.md +65 -0
  109. package/docs/reference/interfaces/IEngineEnvironmentVariables.md +90 -65
  110. package/docs/reference/interfaces/IEngineServerEnvironmentVariables.md +129 -88
  111. package/docs/reference/interfaces/INodeEngineState.md +0 -16
  112. package/docs/reference/interfaces/INodeEnvironmentVariables.md +129 -172
  113. package/docs/reference/type-aliases/CliCommandParamType.md +5 -0
  114. package/docs/reference/variables/CONTEXT_ID_HANDLER_FEATURE_DID.md +3 -0
  115. package/docs/reference/variables/CONTEXT_ID_HANDLER_FEATURE_TENANT.md +3 -0
  116. package/docs/reference/variables/VC_AUTHENTICATION_VERIFICATION_METHOD_ID.md +1 -1
  117. package/locales/en.json +463 -30
  118. package/package.json +3 -1
  119. package/dist/es/bootstrap.js +0 -374
  120. package/dist/es/bootstrap.js.map +0 -1
  121. package/dist/es/identity.js +0 -169
  122. package/dist/es/identity.js.map +0 -1
  123. package/dist/es/models/nodeFeatures.js +0 -21
  124. package/dist/es/models/nodeFeatures.js.map +0 -1
  125. package/dist/es/server.js +0 -74
  126. package/dist/es/server.js.map +0 -1
  127. package/dist/types/bootstrap.d.ts +0 -76
  128. package/dist/types/identity.d.ts +0 -14
  129. package/dist/types/models/nodeFeatures.d.ts +0 -21
  130. package/docs/reference/functions/bootstrap.md +0 -29
  131. package/docs/reference/functions/bootstrapAuth.md +0 -35
  132. package/docs/reference/functions/bootstrapBlobEncryption.md +0 -35
  133. package/docs/reference/functions/bootstrapContextIdHandlers.md +0 -35
  134. package/docs/reference/functions/bootstrapImmutableProofMethod.md +0 -35
  135. package/docs/reference/functions/bootstrapNodeAdminUser.md +0 -35
  136. package/docs/reference/functions/bootstrapNodeId.md +0 -35
  137. package/docs/reference/functions/bootstrapSynchronisedStorage.md +0 -35
  138. package/docs/reference/functions/bootstrapTenantId.md +0 -35
  139. package/docs/reference/functions/getFeatures.md +0 -19
  140. package/docs/reference/type-aliases/NodeFeatures.md +0 -5
  141. package/docs/reference/variables/NodeFeatures.md +0 -25
@@ -2,9 +2,9 @@
2
2
  // SPDX-License-Identifier: Apache-2.0.
3
3
  import path from "node:path";
4
4
  import { Coerce, Is } from "@twin.org/core";
5
- import { AttestationComponentType, AttestationConnectorType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, AuthenticationGeneratorComponentType, BackgroundTaskConnectorType, BlobStorageComponentType, BlobStorageConnectorType, DataConverterConnectorType, DataExtractorConnectorType, DataProcessingComponentType, DataSpaceConnectorComponentType, DltConfigType, DocumentManagementComponentType, EngineTypeHelper, EntityStorageConnectorType, EventBusComponentType, EventBusConnectorType, FaucetConnectorType, FederatedCatalogueComponentType, IdentityComponentType, IdentityConnectorType, IdentityProfileComponentType, IdentityProfileConnectorType, IdentityResolverComponentType, IdentityResolverConnectorType, ImmutableProofComponentType, LoggingComponentType, LoggingConnectorType, MessagingAdminComponentType, MessagingComponentType, MessagingEmailConnectorType, MessagingPushNotificationConnectorType, MessagingSmsConnectorType, NftComponentType, NftConnectorType, RightsManagementDapComponentType, RightsManagementDarpComponentType, RightsManagementPapComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPipComponentType, RightsManagementPmpComponentType, RightsManagementPnapComponentType, RightsManagementPnpComponentType, RightsManagementPxpComponentType, SynchronisedStorageComponentType, TaskSchedulerComponentType, TelemetryComponentType, TelemetryConnectorType, TenantAdminComponentType, VaultConnectorType, VerifiableStorageComponentType, VerifiableStorageConnectorType, WalletConnectorType } from "@twin.org/engine-types";
5
+ import { AttestationComponentType, AttestationConnectorType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, AuthenticationGeneratorComponentType, BackgroundTaskComponentType, BlobStorageComponentType, BlobStorageConnectorType, ContextIdHandlerComponentType, DataProcessingComponentType, DataSpaceConnectorComponentType, DltConfigType, DocumentManagementComponentType, EngineTypeHelper, EntityStorageConnectorType, EventBusComponentType, EventBusConnectorType, FaucetConnectorType, FederatedCatalogueComponentType, IdentityComponentType, IdentityConnectorType, IdentityProfileComponentType, IdentityProfileConnectorType, IdentityResolverComponentType, IdentityResolverConnectorType, ImmutableProofComponentType, LoggingComponentType, LoggingConnectorType, MessagingAdminComponentType, MessagingComponentType, MessagingEmailConnectorType, MessagingPushNotificationConnectorType, MessagingSmsConnectorType, NftComponentType, NftConnectorType, RightsManagementDapComponentType, RightsManagementDarpComponentType, RightsManagementPapComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPipComponentType, RightsManagementPmpComponentType, RightsManagementPnapComponentType, RightsManagementPnpComponentType, RightsManagementPxpComponentType, SynchronisedStorageComponentType, TaskSchedulerComponentType, TelemetryComponentType, TelemetryConnectorType, TenantAdminComponentType, TrustComponentType, VaultConnectorType, VerifiableStorageComponentType, VerifiableStorageConnectorType, WalletConnectorType } from "@twin.org/engine-types";
6
6
  import { DataAccessPointRestClient, PolicyNegotiationPointRestClient } from "@twin.org/rights-management-rest-client";
7
- import { ATTESTATION_VERIFICATION_METHOD_ID, BLOB_STORAGE_ENCRYPTION_KEY_ID, IMMUTABLE_PROOF_VERIFICATION_METHOD_ID, SYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID, VC_AUTHENTICATION_VERIFICATION_METHOD_ID } from "../defaults.js";
7
+ import { CONTEXT_ID_HANDLER_FEATURE_DID, CONTEXT_ID_HANDLER_FEATURE_TENANT } from "../defaults.js";
8
8
  /**
9
9
  * Build the engine core configuration from environment variables.
10
10
  * @param envVars The environment variables.
@@ -19,9 +19,11 @@ export async function buildEngineConfiguration(envVars, contextIdKeys) {
19
19
  }
20
20
  const coreConfig = {
21
21
  debug: Coerce.boolean(envVars.debug) ?? false,
22
+ silent: Coerce.boolean(envVars.silent) ?? false,
22
23
  types: {}
23
24
  };
24
25
  await configureTenant(coreConfig, envVars);
26
+ await configureContextIdHandlers(coreConfig, envVars);
25
27
  await configureEntityStorage(coreConfig, envVars);
26
28
  await configureBlobStorage(coreConfig, envVars);
27
29
  await configureVault(coreConfig, envVars);
@@ -45,6 +47,7 @@ export async function buildEngineConfiguration(envVars, contextIdKeys) {
45
47
  await configureAuditableItemStream(coreConfig, envVars);
46
48
  await configureDocumentManagement(coreConfig, envVars);
47
49
  await configureVerifiableCredentialAuthentication(coreConfig, envVars);
50
+ await configureTrust(coreConfig, envVars);
48
51
  await configureRightsManagement(coreConfig, envVars);
49
52
  await configureSynchronisedStorage(coreConfig, envVars);
50
53
  await configureFederatedCatalogue(coreConfig, envVars);
@@ -59,7 +62,7 @@ export async function buildEngineConfiguration(envVars, contextIdKeys) {
59
62
  async function configureEntityStorage(coreConfig, envVars) {
60
63
  coreConfig.types ??= {};
61
64
  coreConfig.types.entityStorageConnector ??= [];
62
- const entityStorageConnectorTypes = envVars.entityStorageConnectorType?.split(",") ?? [];
65
+ const entityStorageConnectorTypes = commaSeparatedListToArray(envVars.entityStorageConnectorType);
63
66
  if (entityStorageConnectorTypes.includes(EntityStorageConnectorType.Memory)) {
64
67
  coreConfig.types.entityStorageConnector.push({
65
68
  type: EntityStorageConnectorType.Memory
@@ -83,7 +86,8 @@ async function configureEntityStorage(coreConfig, envVars) {
83
86
  authMode: envVars.awsDynamodbAuthMode,
84
87
  accessKeyId: envVars.awsDynamodbAccessKeyId,
85
88
  secretAccessKey: envVars.awsDynamodbSecretAccessKey,
86
- endpoint: envVars.awsDynamodbEndpoint
89
+ endpoint: envVars.awsDynamodbEndpoint,
90
+ connectionTimeoutMs: Coerce.integer(envVars.awsDynamodbConnectionTimeoutMs)
87
91
  },
88
92
  tablePrefix: envVars.entityStorageTablePrefix
89
93
  }
@@ -123,7 +127,7 @@ async function configureEntityStorage(coreConfig, envVars) {
123
127
  type: EntityStorageConnectorType.ScyllaDb,
124
128
  options: {
125
129
  config: {
126
- hosts: envVars.scylladbHosts?.split(",") ?? [],
130
+ hosts: commaSeparatedListToArray(envVars.scylladbHosts),
127
131
  localDataCenter: envVars.scylladbLocalDataCenter ?? "",
128
132
  keyspace: envVars.scylladbKeyspace ?? "",
129
133
  port: Coerce.integer(envVars.scylladbPort)
@@ -203,7 +207,7 @@ async function configureEntityStorage(coreConfig, envVars) {
203
207
  */
204
208
  async function configureBlobStorage(coreConfig, envVars) {
205
209
  coreConfig.types.blobStorageConnector ??= [];
206
- const blobStorageConnectorTypes = envVars.blobStorageConnectorType?.split(",") ?? [];
210
+ const blobStorageConnectorTypes = commaSeparatedListToArray(envVars.blobStorageConnectorType);
207
211
  if (blobStorageConnectorTypes.includes(BlobStorageConnectorType.Memory)) {
208
212
  coreConfig.types.blobStorageConnector.push({
209
213
  type: BlobStorageConnectorType.Memory
@@ -300,7 +304,7 @@ async function configureBlobStorage(coreConfig, envVars) {
300
304
  options: {
301
305
  config: {
302
306
  vaultKeyId: (envVars.blobStorageEnableEncryption ?? false)
303
- ? (envVars.blobStorageEncryptionKeyId ?? BLOB_STORAGE_ENCRYPTION_KEY_ID)
307
+ ? envVars.blobStorageEncryptionKeyId
304
308
  : undefined
305
309
  }
306
310
  }
@@ -314,7 +318,7 @@ async function configureBlobStorage(coreConfig, envVars) {
314
318
  */
315
319
  async function configureLogging(coreConfig, envVars) {
316
320
  coreConfig.types.loggingConnector ??= [];
317
- const loggingConnectorTypes = (envVars.loggingConnector ?? "").split(",");
321
+ const loggingConnectorTypes = commaSeparatedListToArray(envVars.loggingConnector);
318
322
  let additionalConnectorCount = 0;
319
323
  for (const loggingConnector of loggingConnectorTypes) {
320
324
  if (loggingConnector === LoggingConnectorType.Console) {
@@ -389,10 +393,10 @@ async function configureVault(coreConfig, envVars) {
389
393
  * @param envVars The environment variables.
390
394
  */
391
395
  async function configureBackgroundTask(coreConfig, envVars) {
392
- coreConfig.types.backgroundTaskConnector ??= [];
393
- if (envVars.backgroundTaskConnector === BackgroundTaskConnectorType.EntityStorage) {
394
- coreConfig.types.backgroundTaskConnector.push({
395
- type: BackgroundTaskConnectorType.EntityStorage
396
+ coreConfig.types.backgroundTaskComponent ??= [];
397
+ if (Coerce.boolean(envVars.backgroundTasksEnabled) ?? false) {
398
+ coreConfig.types.backgroundTaskComponent.push({
399
+ type: BackgroundTaskComponentType.Service
396
400
  });
397
401
  }
398
402
  }
@@ -445,6 +449,24 @@ async function configureTenant(coreConfig, envVars) {
445
449
  coreConfig.types.tenantComponent.push({ type: TenantAdminComponentType.Service });
446
450
  }
447
451
  }
452
+ /**
453
+ * Configures the context id handlers.
454
+ * @param coreConfig The core config.
455
+ * @param envVars The environment variables.
456
+ */
457
+ async function configureContextIdHandlers(coreConfig, envVars) {
458
+ coreConfig.types.contextIdHandlerComponent ??= [];
459
+ coreConfig.types.contextIdHandlerComponent.push({
460
+ type: ContextIdHandlerComponentType.Did,
461
+ features: [CONTEXT_ID_HANDLER_FEATURE_DID]
462
+ });
463
+ if (Coerce.boolean(envVars.tenantEnabled) ?? false) {
464
+ coreConfig.types.contextIdHandlerComponent.push({
465
+ type: ContextIdHandlerComponentType.Tenant,
466
+ features: [CONTEXT_ID_HANDLER_FEATURE_TENANT]
467
+ });
468
+ }
469
+ }
448
470
  /**
449
471
  * Configures the messaging.
450
472
  * @param coreConfig The core config.
@@ -629,7 +651,7 @@ async function configureVerifiableStorage(coreConfig, envVars) {
629
651
  type: ImmutableProofComponentType.Service,
630
652
  options: {
631
653
  config: {
632
- verificationMethodId: envVars.immutableProofVerificationMethodId ?? IMMUTABLE_PROOF_VERIFICATION_METHOD_ID
654
+ verificationMethodId: envVars.immutableProofVerificationMethodId
633
655
  }
634
656
  }
635
657
  });
@@ -652,7 +674,10 @@ async function configureIdentity(coreConfig, envVars) {
652
674
  coreConfig.types.identityConnector.push({
653
675
  type: IdentityConnectorType.Iota,
654
676
  options: {
655
- config: dltConfig?.options?.config ?? {}
677
+ config: {
678
+ ...(dltConfig?.options?.config ?? {}),
679
+ walletAddressIndex: Coerce.integer(envVars.identityWalletAddressIndex) ?? 0
680
+ }
656
681
  }
657
682
  });
658
683
  }
@@ -734,7 +759,7 @@ async function configureAttestation(coreConfig, envVars) {
734
759
  type: AttestationComponentType.Service,
735
760
  options: {
736
761
  config: {
737
- verificationMethodId: envVars.attestationVerificationMethodId ?? ATTESTATION_VERIFICATION_METHOD_ID
762
+ verificationMethodId: envVars.attestationVerificationMethodId
738
763
  }
739
764
  }
740
765
  });
@@ -776,27 +801,18 @@ async function configureDataProcessing(coreConfig, envVars) {
776
801
  coreConfig.types.dataProcessingComponent ??= [];
777
802
  coreConfig.types.dataProcessingComponent.push({ type: DataProcessingComponentType.Service });
778
803
  coreConfig.types.dataConverterConnector ??= [];
779
- const converterConnectors = envVars.dataConverterConnectors?.split(",") ?? [];
804
+ const converterConnectors = commaSeparatedListToArray(envVars.dataConverterConnectors);
780
805
  for (const converterConnector of converterConnectors) {
781
- if (converterConnector === DataConverterConnectorType.Json) {
782
- coreConfig.types.dataConverterConnector.push({
783
- type: DataConverterConnectorType.Json
784
- });
785
- }
786
- else if (converterConnector === DataConverterConnectorType.Xml) {
787
- coreConfig.types.dataConverterConnector.push({
788
- type: DataConverterConnectorType.Xml
789
- });
790
- }
806
+ coreConfig.types.dataConverterConnector.push({
807
+ type: converterConnector
808
+ });
791
809
  }
792
810
  coreConfig.types.dataExtractorConnector ??= [];
793
- const extractorConnectors = envVars.dataExtractorConnectors?.split(",") ?? [];
811
+ const extractorConnectors = commaSeparatedListToArray(envVars.dataExtractorConnectors);
794
812
  for (const extractorConnector of extractorConnectors) {
795
- if (extractorConnector === DataExtractorConnectorType.JsonPath) {
796
- coreConfig.types.dataExtractorConnector.push({
797
- type: DataExtractorConnectorType.JsonPath
798
- });
799
- }
813
+ coreConfig.types.dataExtractorConnector.push({
814
+ type: extractorConnector
815
+ });
800
816
  }
801
817
  }
802
818
  }
@@ -826,13 +842,45 @@ async function configureVerifiableCredentialAuthentication(coreConfig, envVars)
826
842
  type: AuthenticationGeneratorComponentType.VerifiableCredential,
827
843
  options: {
828
844
  config: {
829
- verificationMethodId: envVars.vcAuthenticationVerificationMethodId ?? VC_AUTHENTICATION_VERIFICATION_METHOD_ID
845
+ verificationMethodId: envVars.vcAuthenticationVerificationMethodId ?? ""
830
846
  }
831
847
  },
832
848
  features: ["verifiable-credential"]
833
849
  });
834
850
  }
835
851
  }
852
+ /**
853
+ * Configures the trust components.
854
+ * @param coreConfig The core config.
855
+ * @param envVars The environment variables.
856
+ */
857
+ async function configureTrust(coreConfig, envVars) {
858
+ if (Coerce.boolean(envVars.trustEnabled) ?? false) {
859
+ coreConfig.types.trustComponent ??= [];
860
+ coreConfig.types.trustComponent.push({
861
+ type: TrustComponentType.Service
862
+ });
863
+ coreConfig.types.trustGeneratorComponent ??= [];
864
+ const trustGeneratorTypes = commaSeparatedListToArray(envVars.trustGenerators);
865
+ for (const trustGeneratorType of trustGeneratorTypes) {
866
+ coreConfig.types.trustGeneratorComponent.push({
867
+ type: trustGeneratorType,
868
+ options: {
869
+ config: {
870
+ verificationMethodId: envVars.trustVerificationMethodId ?? ""
871
+ }
872
+ }
873
+ });
874
+ }
875
+ coreConfig.types.trustVerifierComponent ??= [];
876
+ const trustVerifierTypes = commaSeparatedListToArray(envVars.trustVerifiers);
877
+ for (const trustVerifierType of trustVerifierTypes) {
878
+ coreConfig.types.trustVerifierComponent.push({
879
+ type: trustVerifierType
880
+ });
881
+ }
882
+ }
883
+ }
836
884
  /**
837
885
  * Configures the rights management.
838
886
  * @param coreConfig The core config.
@@ -850,55 +898,26 @@ async function configureRightsManagement(coreConfig, envVars) {
850
898
  });
851
899
  coreConfig.types.rightsManagementPipComponent ??= [];
852
900
  coreConfig.types.rightsManagementPipComponent.push({
853
- type: RightsManagementPipComponentType.Service,
854
- options: {
855
- informationModulesConfig: Is.arrayValue(envVars.rightsManagementInformationSources)
856
- ? envVars.rightsManagementInformationSources
857
- : undefined
858
- }
901
+ type: RightsManagementPipComponentType.Service
859
902
  });
860
903
  coreConfig.types.rightsManagementPxpComponent ??= [];
861
904
  coreConfig.types.rightsManagementPxpComponent.push({
862
- type: RightsManagementPxpComponentType.Service,
863
- options: {
864
- actionModulesConfig: Is.arrayValue(envVars.rightsManagementExecutionActions)
865
- ? envVars.rightsManagementExecutionActions
866
- : undefined
867
- }
905
+ type: RightsManagementPxpComponentType.Service
868
906
  });
869
907
  coreConfig.types.rightsManagementPdpComponent ??= [];
870
908
  coreConfig.types.rightsManagementPdpComponent.push({
871
- type: RightsManagementPdpComponentType.Service,
872
- options: {
873
- arbiterModulesConfig: Is.arrayValue(envVars.rightsManagementArbiters)
874
- ? envVars.rightsManagementArbiters
875
- : undefined
876
- }
909
+ type: RightsManagementPdpComponentType.Service
877
910
  });
878
911
  coreConfig.types.rightsManagementPepComponent ??= [];
879
912
  coreConfig.types.rightsManagementPepComponent.push({
880
- type: RightsManagementPepComponentType.Service,
881
- options: {
882
- processorModulesConfig: Is.arrayValue(envVars.rightsManagementEnforcementProcessors)
883
- ? envVars.rightsManagementEnforcementProcessors
884
- : undefined
885
- }
913
+ type: RightsManagementPepComponentType.Service
886
914
  });
887
915
  coreConfig.types.rightsManagementPnpComponent ??= [];
888
916
  coreConfig.types.rightsManagementPnpComponent.push({
889
917
  type: RightsManagementPnpComponentType.Service,
890
918
  options: {
891
- negotiatorModulesConfig: Is.arrayValue(envVars.rightsManagementNegotiators)
892
- ? envVars.rightsManagementNegotiators
893
- : undefined,
894
- requesterModulesConfig: Is.arrayValue(envVars.rightsManagementRequesters)
895
- ? envVars.rightsManagementRequesters
896
- : undefined,
897
919
  config: {
898
920
  baseCallbackUrl: envVars.rightsManagementBaseCallbackUrl ?? "",
899
- offers: Is.arrayValue(envVars.rightsManagementOffers)
900
- ? envVars.rightsManagementOffers
901
- : [],
902
921
  negotiationComponentCreator: async (url) => new PolicyNegotiationPointRestClient({ endpoint: url })
903
922
  }
904
923
  }
@@ -920,6 +939,55 @@ async function configureRightsManagement(coreConfig, envVars) {
920
939
  }
921
940
  }
922
941
  });
942
+ coreConfig.types.rightsManagementDataAccessHandlerComponent ??= [];
943
+ const dataAccessHandlerTypes = commaSeparatedListToArray(envVars.rightsManagementDataAccessHandlers);
944
+ for (const dataAccessHandlerType of dataAccessHandlerTypes) {
945
+ coreConfig.types.rightsManagementDataAccessHandlerComponent.push({
946
+ type: dataAccessHandlerType
947
+ });
948
+ }
949
+ coreConfig.types.rightsManagementPolicyArbiterComponent ??= [];
950
+ const policyArbiterTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyArbiters);
951
+ for (const policyArbiterType of policyArbiterTypes) {
952
+ coreConfig.types.rightsManagementPolicyArbiterComponent.push({
953
+ type: policyArbiterType
954
+ });
955
+ }
956
+ coreConfig.types.rightsManagementPolicyEnforcementProcessorComponent ??= [];
957
+ const policyEnforcementProcessTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyEnforcementProcessors);
958
+ for (const policyEnforcementProcessorType of policyEnforcementProcessTypes) {
959
+ coreConfig.types.rightsManagementPolicyEnforcementProcessorComponent.push({
960
+ type: policyEnforcementProcessorType
961
+ });
962
+ }
963
+ coreConfig.types.rightsManagementPolicyExecutionActionComponent ??= [];
964
+ const policyExecutionActionTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyExecutionActions);
965
+ for (const policyExecutionActionType of policyExecutionActionTypes) {
966
+ coreConfig.types.rightsManagementPolicyExecutionActionComponent.push({
967
+ type: policyExecutionActionType
968
+ });
969
+ }
970
+ coreConfig.types.rightsManagementPolicyInformationSourceComponent ??= [];
971
+ const policyInformationSourceTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyInformationSources);
972
+ for (const policyInformationSourceType of policyInformationSourceTypes) {
973
+ coreConfig.types.rightsManagementPolicyInformationSourceComponent.push({
974
+ type: policyInformationSourceType
975
+ });
976
+ }
977
+ coreConfig.types.rightsManagementPolicyRequesterComponent ??= [];
978
+ const policyRequesterTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyRequesters);
979
+ for (const policyRequesterType of policyRequesterTypes) {
980
+ coreConfig.types.rightsManagementPolicyRequesterComponent.push({
981
+ type: policyRequesterType
982
+ });
983
+ }
984
+ coreConfig.types.rightsManagementPolicyNegotiatorComponent ??= [];
985
+ const policyNegotiatorTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyNegotiators);
986
+ for (const policyNegotiatorType of policyNegotiatorTypes) {
987
+ coreConfig.types.rightsManagementPolicyNegotiatorComponent.push({
988
+ type: policyNegotiatorType
989
+ });
990
+ }
923
991
  }
924
992
  }
925
993
  /**
@@ -955,8 +1023,7 @@ async function configureSynchronisedStorage(coreConfig, envVars) {
955
1023
  options: {
956
1024
  config: {
957
1025
  verifiableStorageKeyId: verifiableStorageKeyId ?? "",
958
- blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId ??
959
- SYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID,
1026
+ blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId,
960
1027
  entityUpdateIntervalMinutes: Coerce.number(envVars.synchronisedStorageEntityUpdateIntervalMinutes),
961
1028
  consolidationIntervalMinutes: Coerce.number(envVars.synchronisedStorageConsolidationIntervalMinutes),
962
1029
  consolidationBatchSize: Coerce.number(envVars.synchronisedStorageConsolidationBatchSize),
@@ -988,13 +1055,16 @@ async function configureFederatedCatalogue(coreConfig, envVars) {
988
1055
  coreConfig.types.federatedCatalogueComponent ??= [];
989
1056
  coreConfig.types.federatedCatalogueComponent.push({
990
1057
  type: FederatedCatalogueComponentType.Service,
991
- options: {
992
- config: {
993
- subResourceCacheTtlMs: Coerce.number(envVars.federatedCatalogueCacheTtlMs),
994
- clearingHouseApproverList: Coerce.object(envVars.federatedCatalogueClearingHouseApproverList) ?? []
995
- }
996
- }
1058
+ options: {}
997
1059
  });
1060
+ coreConfig.types.federatedCatalogueFilterComponent ??= [];
1061
+ const filters = commaSeparatedListToArray(envVars.federatedCatalogueFilters);
1062
+ for (const filter of filters) {
1063
+ coreConfig.types.federatedCatalogueFilterComponent.push({
1064
+ type: filter,
1065
+ options: {}
1066
+ });
1067
+ }
998
1068
  }
999
1069
  }
1000
1070
  /**
@@ -1048,4 +1118,15 @@ async function configureDlt(coreConfig, envVars) {
1048
1118
  });
1049
1119
  }
1050
1120
  }
1121
+ /**
1122
+ * Converts a comma separated list to an array.
1123
+ * @param value The comma separated list.
1124
+ * @returns The array.
1125
+ */
1126
+ function commaSeparatedListToArray(value) {
1127
+ return (value ?? "")
1128
+ .split(",")
1129
+ .map(item => item.trim())
1130
+ .filter(item => item.length > 0);
1131
+ }
1051
1132
  //# sourceMappingURL=engineEnvBuilder.js.map