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

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 (151) hide show
  1. package/dist/es/builders/engineEnvBuilder.js +168 -105
  2. package/dist/es/builders/engineEnvBuilder.js.map +1 -1
  3. package/dist/es/builders/engineServerEnvBuilder.js +49 -25
  4. package/dist/es/builders/engineServerEnvBuilder.js.map +1 -1
  5. package/dist/es/cli.js +247 -0
  6. package/dist/es/cli.js.map +1 -0
  7. package/dist/es/commands/bootstrapLegacy.js +183 -0
  8. package/dist/es/commands/bootstrapLegacy.js.map +1 -0
  9. package/dist/es/commands/help.js +85 -0
  10. package/dist/es/commands/help.js.map +1 -0
  11. package/dist/es/commands/identityCreate.js +316 -0
  12. package/dist/es/commands/identityCreate.js.map +1 -0
  13. package/dist/es/commands/identityImports.js +82 -0
  14. package/dist/es/commands/identityImports.js.map +1 -0
  15. package/dist/es/commands/identityVerifiableCredentialCreate.js +146 -0
  16. package/dist/es/commands/identityVerifiableCredentialCreate.js.map +1 -0
  17. package/dist/es/commands/identityVerificationMethodCreate.js +214 -0
  18. package/dist/es/commands/identityVerificationMethodCreate.js.map +1 -0
  19. package/dist/es/commands/identityVerificationMethodImport.js +126 -0
  20. package/dist/es/commands/identityVerificationMethodImport.js.map +1 -0
  21. package/dist/es/commands/nodeSetIdentity.js +64 -0
  22. package/dist/es/commands/nodeSetIdentity.js.map +1 -0
  23. package/dist/es/commands/nodeSetTenant.js +68 -0
  24. package/dist/es/commands/nodeSetTenant.js.map +1 -0
  25. package/dist/es/commands/tenantCreate.js +139 -0
  26. package/dist/es/commands/tenantCreate.js.map +1 -0
  27. package/dist/es/commands/tenantImport.js +97 -0
  28. package/dist/es/commands/tenantImport.js.map +1 -0
  29. package/dist/es/commands/tenantUpdate.js +94 -0
  30. package/dist/es/commands/tenantUpdate.js.map +1 -0
  31. package/dist/es/commands/userCreate.js +212 -0
  32. package/dist/es/commands/userCreate.js.map +1 -0
  33. package/dist/es/commands/userUpdate.js +132 -0
  34. package/dist/es/commands/userUpdate.js.map +1 -0
  35. package/dist/es/commands/vaultKeyCreate.js +191 -0
  36. package/dist/es/commands/vaultKeyCreate.js.map +1 -0
  37. package/dist/es/commands/vaultKeyImport.js +104 -0
  38. package/dist/es/commands/vaultKeyImport.js.map +1 -0
  39. package/dist/es/defaults.js +19 -1
  40. package/dist/es/defaults.js.map +1 -1
  41. package/dist/es/index.js +7 -3
  42. package/dist/es/index.js.map +1 -1
  43. package/dist/es/models/ICliArgs.js +4 -0
  44. package/dist/es/models/ICliArgs.js.map +1 -0
  45. package/dist/es/models/ICliCommand.js +2 -0
  46. package/dist/es/models/ICliCommand.js.map +1 -0
  47. package/dist/es/models/ICliCommandDefinition.js +2 -0
  48. package/dist/es/models/ICliCommandDefinition.js.map +1 -0
  49. package/dist/es/models/ICliCommandDefinitionParam.js +2 -0
  50. package/dist/es/models/ICliCommandDefinitionParam.js.map +1 -0
  51. package/dist/es/models/IEngineEnvironmentVariables.js.map +1 -1
  52. package/dist/es/models/IEngineServerEnvironmentVariables.js.map +1 -1
  53. package/dist/es/models/INodeEngineState.js.map +1 -1
  54. package/dist/es/models/INodeEnvironmentVariables.js.map +1 -1
  55. package/dist/es/models/INodeOptions.js.map +1 -1
  56. package/dist/es/models/cliCommandParamType.js +4 -0
  57. package/dist/es/models/cliCommandParamType.js.map +1 -0
  58. package/dist/es/node.js +78 -41
  59. package/dist/es/node.js.map +1 -1
  60. package/dist/es/start.js +139 -0
  61. package/dist/es/start.js.map +1 -0
  62. package/dist/es/utils.js +11 -21
  63. package/dist/es/utils.js.map +1 -1
  64. package/dist/types/builders/engineEnvBuilder.d.ts +4 -1
  65. package/dist/types/builders/engineServerEnvBuilder.d.ts +5 -2
  66. package/dist/types/cli.d.ts +56 -0
  67. package/dist/types/commands/bootstrapLegacy.d.ts +66 -0
  68. package/dist/types/commands/help.d.ts +23 -0
  69. package/dist/types/commands/identityCreate.d.ts +39 -0
  70. package/dist/types/commands/identityImports.d.ts +24 -0
  71. package/dist/types/commands/identityVerifiableCredentialCreate.d.ts +43 -0
  72. package/dist/types/commands/identityVerificationMethodCreate.d.ts +47 -0
  73. package/dist/types/commands/identityVerificationMethodImport.d.ts +31 -0
  74. package/dist/types/commands/nodeSetIdentity.d.ts +22 -0
  75. package/dist/types/commands/nodeSetTenant.d.ts +22 -0
  76. package/dist/types/commands/tenantCreate.d.ts +38 -0
  77. package/dist/types/commands/tenantImport.d.ts +26 -0
  78. package/dist/types/commands/tenantUpdate.d.ts +26 -0
  79. package/dist/types/commands/userCreate.d.ts +49 -0
  80. package/dist/types/commands/userUpdate.d.ts +38 -0
  81. package/dist/types/commands/vaultKeyCreate.d.ts +43 -0
  82. package/dist/types/commands/vaultKeyImport.d.ts +28 -0
  83. package/dist/types/defaults.d.ts +11 -1
  84. package/dist/types/index.d.ts +7 -3
  85. package/dist/types/models/ICliArgs.d.ts +20 -0
  86. package/dist/types/models/ICliCommand.d.ts +17 -0
  87. package/dist/types/models/ICliCommandDefinition.d.ts +46 -0
  88. package/dist/types/models/ICliCommandDefinitionParam.d.ts +35 -0
  89. package/dist/types/models/IEngineEnvironmentVariables.d.ts +62 -53
  90. package/dist/types/models/IEngineServerEnvironmentVariables.d.ts +4 -0
  91. package/dist/types/models/INodeEngineState.d.ts +0 -8
  92. package/dist/types/models/INodeEnvironmentVariables.d.ts +0 -38
  93. package/dist/types/models/INodeOptions.d.ts +6 -2
  94. package/dist/types/models/cliCommandParamType.d.ts +4 -0
  95. package/dist/types/node.d.ts +8 -4
  96. package/dist/types/{server.d.ts → start.d.ts} +7 -2
  97. package/dist/types/utils.d.ts +6 -8
  98. package/docs/changelog.md +136 -0
  99. package/docs/reference/functions/buildConfiguration.md +3 -3
  100. package/docs/reference/functions/buildEngineConfiguration.md +1 -1
  101. package/docs/reference/functions/buildEngineServerConfiguration.md +3 -3
  102. package/docs/reference/functions/constructCliCommand.md +27 -0
  103. package/docs/reference/functions/executeCommand.md +29 -0
  104. package/docs/reference/functions/getEnvDefaults.md +19 -0
  105. package/docs/reference/functions/getScriptDirectory.md +19 -0
  106. package/docs/reference/functions/parseCommandLineArgs.md +19 -0
  107. package/docs/reference/functions/processEnvOptions.md +27 -0
  108. package/docs/reference/functions/registerCommands.md +9 -0
  109. package/docs/reference/functions/run.md +8 -2
  110. package/docs/reference/functions/start.md +10 -4
  111. package/docs/reference/functions/substituteEnvOptions.md +25 -0
  112. package/docs/reference/index.md +16 -13
  113. package/docs/reference/interfaces/ICliArgs.md +35 -0
  114. package/docs/reference/interfaces/ICliCommand.md +23 -0
  115. package/docs/reference/interfaces/ICliCommandDefinition.md +101 -0
  116. package/docs/reference/interfaces/ICliCommandDefinitionParam.md +65 -0
  117. package/docs/reference/interfaces/IEngineEnvironmentVariables.md +110 -85
  118. package/docs/reference/interfaces/IEngineServerEnvironmentVariables.md +166 -117
  119. package/docs/reference/interfaces/INodeEngineState.md +0 -16
  120. package/docs/reference/interfaces/INodeEnvironmentVariables.md +170 -201
  121. package/docs/reference/interfaces/INodeOptions.md +10 -2
  122. package/docs/reference/type-aliases/CliCommandParamType.md +5 -0
  123. package/docs/reference/variables/CONTEXT_ID_HANDLER_FEATURE_DID.md +3 -0
  124. package/docs/reference/variables/CONTEXT_ID_HANDLER_FEATURE_TENANT.md +3 -0
  125. package/docs/reference/variables/TRUST_VERIFICATION_METHOD_ID.md +3 -0
  126. package/locales/en.json +589 -30
  127. package/package.json +3 -1
  128. package/dist/es/bootstrap.js +0 -374
  129. package/dist/es/bootstrap.js.map +0 -1
  130. package/dist/es/identity.js +0 -169
  131. package/dist/es/identity.js.map +0 -1
  132. package/dist/es/models/nodeFeatures.js +0 -21
  133. package/dist/es/models/nodeFeatures.js.map +0 -1
  134. package/dist/es/server.js +0 -78
  135. package/dist/es/server.js.map +0 -1
  136. package/dist/types/bootstrap.d.ts +0 -76
  137. package/dist/types/identity.d.ts +0 -14
  138. package/dist/types/models/nodeFeatures.d.ts +0 -21
  139. package/docs/reference/functions/bootstrap.md +0 -29
  140. package/docs/reference/functions/bootstrapAuth.md +0 -35
  141. package/docs/reference/functions/bootstrapBlobEncryption.md +0 -35
  142. package/docs/reference/functions/bootstrapContextIdHandlers.md +0 -35
  143. package/docs/reference/functions/bootstrapImmutableProofMethod.md +0 -35
  144. package/docs/reference/functions/bootstrapNodeAdminUser.md +0 -35
  145. package/docs/reference/functions/bootstrapNodeId.md +0 -35
  146. package/docs/reference/functions/bootstrapSynchronisedStorage.md +0 -35
  147. package/docs/reference/functions/bootstrapTenantId.md +0 -35
  148. package/docs/reference/functions/getFeatures.md +0 -19
  149. package/docs/reference/type-aliases/NodeFeatures.md +0 -5
  150. package/docs/reference/variables/NodeFeatures.md +0 -25
  151. package/docs/reference/variables/VC_AUTHENTICATION_VERIFICATION_METHOD_ID.md +0 -3
@@ -2,9 +2,8 @@
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";
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";
5
+ import { AttestationComponentType, AttestationConnectorType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, 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, RightsManagementPapComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPipComponentType, RightsManagementPmpComponentType, RightsManagementPnapComponentType, RightsManagementPnpComponentType, RightsManagementPxpComponentType, SynchronisedStorageComponentType, TaskSchedulerComponentType, TelemetryComponentType, TelemetryConnectorType, TenantAdminComponentType, TrustComponentType, VaultConnectorType, VerifiableStorageComponentType, VerifiableStorageConnectorType, WalletConnectorType } from "@twin.org/engine-types";
6
+ import { CONTEXT_ID_HANDLER_FEATURE_DID, CONTEXT_ID_HANDLER_FEATURE_TENANT } from "../defaults.js";
8
7
  /**
9
8
  * Build the engine core configuration from environment variables.
10
9
  * @param envVars The environment variables.
@@ -19,9 +18,11 @@ export async function buildEngineConfiguration(envVars, contextIdKeys) {
19
18
  }
20
19
  const coreConfig = {
21
20
  debug: Coerce.boolean(envVars.debug) ?? false,
21
+ silent: Coerce.boolean(envVars.silent) ?? false,
22
22
  types: {}
23
23
  };
24
24
  await configureTenant(coreConfig, envVars);
25
+ await configureContextIdHandlers(coreConfig, envVars);
25
26
  await configureEntityStorage(coreConfig, envVars);
26
27
  await configureBlobStorage(coreConfig, envVars);
27
28
  await configureVault(coreConfig, envVars);
@@ -44,7 +45,7 @@ export async function buildEngineConfiguration(envVars, contextIdKeys) {
44
45
  await configureAuditableItemGraph(coreConfig, envVars);
45
46
  await configureAuditableItemStream(coreConfig, envVars);
46
47
  await configureDocumentManagement(coreConfig, envVars);
47
- await configureVerifiableCredentialAuthentication(coreConfig, envVars);
48
+ await configureTrust(coreConfig, envVars);
48
49
  await configureRightsManagement(coreConfig, envVars);
49
50
  await configureSynchronisedStorage(coreConfig, envVars);
50
51
  await configureFederatedCatalogue(coreConfig, envVars);
@@ -59,7 +60,7 @@ export async function buildEngineConfiguration(envVars, contextIdKeys) {
59
60
  async function configureEntityStorage(coreConfig, envVars) {
60
61
  coreConfig.types ??= {};
61
62
  coreConfig.types.entityStorageConnector ??= [];
62
- const entityStorageConnectorTypes = envVars.entityStorageConnectorType?.split(",") ?? [];
63
+ const entityStorageConnectorTypes = commaSeparatedListToArray(envVars.entityStorageConnectorType);
63
64
  if (entityStorageConnectorTypes.includes(EntityStorageConnectorType.Memory)) {
64
65
  coreConfig.types.entityStorageConnector.push({
65
66
  type: EntityStorageConnectorType.Memory
@@ -83,7 +84,8 @@ async function configureEntityStorage(coreConfig, envVars) {
83
84
  authMode: envVars.awsDynamodbAuthMode,
84
85
  accessKeyId: envVars.awsDynamodbAccessKeyId,
85
86
  secretAccessKey: envVars.awsDynamodbSecretAccessKey,
86
- endpoint: envVars.awsDynamodbEndpoint
87
+ endpoint: envVars.awsDynamodbEndpoint,
88
+ connectionTimeoutMs: Coerce.integer(envVars.awsDynamodbConnectionTimeoutMs)
87
89
  },
88
90
  tablePrefix: envVars.entityStorageTablePrefix
89
91
  }
@@ -123,7 +125,7 @@ async function configureEntityStorage(coreConfig, envVars) {
123
125
  type: EntityStorageConnectorType.ScyllaDb,
124
126
  options: {
125
127
  config: {
126
- hosts: envVars.scylladbHosts?.split(",") ?? [],
128
+ hosts: commaSeparatedListToArray(envVars.scylladbHosts),
127
129
  localDataCenter: envVars.scylladbLocalDataCenter ?? "",
128
130
  keyspace: envVars.scylladbKeyspace ?? "",
129
131
  port: Coerce.integer(envVars.scylladbPort)
@@ -203,7 +205,7 @@ async function configureEntityStorage(coreConfig, envVars) {
203
205
  */
204
206
  async function configureBlobStorage(coreConfig, envVars) {
205
207
  coreConfig.types.blobStorageConnector ??= [];
206
- const blobStorageConnectorTypes = envVars.blobStorageConnectorType?.split(",") ?? [];
208
+ const blobStorageConnectorTypes = commaSeparatedListToArray(envVars.blobStorageConnectorType);
207
209
  if (blobStorageConnectorTypes.includes(BlobStorageConnectorType.Memory)) {
208
210
  coreConfig.types.blobStorageConnector.push({
209
211
  type: BlobStorageConnectorType.Memory
@@ -300,7 +302,7 @@ async function configureBlobStorage(coreConfig, envVars) {
300
302
  options: {
301
303
  config: {
302
304
  vaultKeyId: (envVars.blobStorageEnableEncryption ?? false)
303
- ? (envVars.blobStorageEncryptionKeyId ?? BLOB_STORAGE_ENCRYPTION_KEY_ID)
305
+ ? envVars.blobStorageEncryptionKeyId
304
306
  : undefined
305
307
  }
306
308
  }
@@ -314,7 +316,7 @@ async function configureBlobStorage(coreConfig, envVars) {
314
316
  */
315
317
  async function configureLogging(coreConfig, envVars) {
316
318
  coreConfig.types.loggingConnector ??= [];
317
- const loggingConnectorTypes = (envVars.loggingConnector ?? "").split(",");
319
+ const loggingConnectorTypes = commaSeparatedListToArray(envVars.loggingConnector);
318
320
  let additionalConnectorCount = 0;
319
321
  for (const loggingConnector of loggingConnectorTypes) {
320
322
  if (loggingConnector === LoggingConnectorType.Console) {
@@ -368,7 +370,12 @@ async function configureVault(coreConfig, envVars) {
368
370
  coreConfig.types.vaultConnector ??= [];
369
371
  if (envVars.vaultConnector === VaultConnectorType.EntityStorage) {
370
372
  coreConfig.types.vaultConnector.push({
371
- type: VaultConnectorType.EntityStorage
373
+ type: VaultConnectorType.EntityStorage,
374
+ options: {
375
+ config: {
376
+ prefix: envVars.vaultPrefix
377
+ }
378
+ }
372
379
  });
373
380
  }
374
381
  else if (envVars.vaultConnector === VaultConnectorType.Hashicorp) {
@@ -377,7 +384,8 @@ async function configureVault(coreConfig, envVars) {
377
384
  options: {
378
385
  config: {
379
386
  endpoint: envVars.hashicorpVaultEndpoint ?? "",
380
- token: envVars.hashicorpVaultToken ?? ""
387
+ token: envVars.hashicorpVaultToken ?? "",
388
+ prefix: envVars.vaultPrefix
381
389
  }
382
390
  }
383
391
  });
@@ -389,10 +397,10 @@ async function configureVault(coreConfig, envVars) {
389
397
  * @param envVars The environment variables.
390
398
  */
391
399
  async function configureBackgroundTask(coreConfig, envVars) {
392
- coreConfig.types.backgroundTaskConnector ??= [];
393
- if (envVars.backgroundTaskConnector === BackgroundTaskConnectorType.EntityStorage) {
394
- coreConfig.types.backgroundTaskConnector.push({
395
- type: BackgroundTaskConnectorType.EntityStorage
400
+ coreConfig.types.backgroundTaskComponent ??= [];
401
+ if (Coerce.boolean(envVars.backgroundTasksEnabled) ?? false) {
402
+ coreConfig.types.backgroundTaskComponent.push({
403
+ type: BackgroundTaskComponentType.Service
396
404
  });
397
405
  }
398
406
  }
@@ -445,6 +453,24 @@ async function configureTenant(coreConfig, envVars) {
445
453
  coreConfig.types.tenantComponent.push({ type: TenantAdminComponentType.Service });
446
454
  }
447
455
  }
456
+ /**
457
+ * Configures the context id handlers.
458
+ * @param coreConfig The core config.
459
+ * @param envVars The environment variables.
460
+ */
461
+ async function configureContextIdHandlers(coreConfig, envVars) {
462
+ coreConfig.types.contextIdHandlerComponent ??= [];
463
+ coreConfig.types.contextIdHandlerComponent.push({
464
+ type: ContextIdHandlerComponentType.Did,
465
+ features: [CONTEXT_ID_HANDLER_FEATURE_DID]
466
+ });
467
+ if (Coerce.boolean(envVars.tenantEnabled) ?? false) {
468
+ coreConfig.types.contextIdHandlerComponent.push({
469
+ type: ContextIdHandlerComponentType.Tenant,
470
+ features: [CONTEXT_ID_HANDLER_FEATURE_TENANT]
471
+ });
472
+ }
473
+ }
448
474
  /**
449
475
  * Configures the messaging.
450
476
  * @param coreConfig The core config.
@@ -629,7 +655,7 @@ async function configureVerifiableStorage(coreConfig, envVars) {
629
655
  type: ImmutableProofComponentType.Service,
630
656
  options: {
631
657
  config: {
632
- verificationMethodId: envVars.immutableProofVerificationMethodId ?? IMMUTABLE_PROOF_VERIFICATION_METHOD_ID
658
+ verificationMethodId: envVars.immutableProofVerificationMethodId
633
659
  }
634
660
  }
635
661
  });
@@ -652,7 +678,10 @@ async function configureIdentity(coreConfig, envVars) {
652
678
  coreConfig.types.identityConnector.push({
653
679
  type: IdentityConnectorType.Iota,
654
680
  options: {
655
- config: dltConfig?.options?.config ?? {}
681
+ config: {
682
+ ...(dltConfig?.options?.config ?? {}),
683
+ walletAddressIndex: Coerce.integer(envVars.identityWalletAddressIndex) ?? 0
684
+ }
656
685
  }
657
686
  });
658
687
  }
@@ -734,7 +763,7 @@ async function configureAttestation(coreConfig, envVars) {
734
763
  type: AttestationComponentType.Service,
735
764
  options: {
736
765
  config: {
737
- verificationMethodId: envVars.attestationVerificationMethodId ?? ATTESTATION_VERIFICATION_METHOD_ID
766
+ verificationMethodId: envVars.attestationVerificationMethodId
738
767
  }
739
768
  }
740
769
  });
@@ -776,27 +805,18 @@ async function configureDataProcessing(coreConfig, envVars) {
776
805
  coreConfig.types.dataProcessingComponent ??= [];
777
806
  coreConfig.types.dataProcessingComponent.push({ type: DataProcessingComponentType.Service });
778
807
  coreConfig.types.dataConverterConnector ??= [];
779
- const converterConnectors = envVars.dataConverterConnectors?.split(",") ?? [];
808
+ const converterConnectors = commaSeparatedListToArray(envVars.dataConverterConnectors);
780
809
  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
- }
810
+ coreConfig.types.dataConverterConnector.push({
811
+ type: converterConnector
812
+ });
791
813
  }
792
814
  coreConfig.types.dataExtractorConnector ??= [];
793
- const extractorConnectors = envVars.dataExtractorConnectors?.split(",") ?? [];
815
+ const extractorConnectors = commaSeparatedListToArray(envVars.dataExtractorConnectors);
794
816
  for (const extractorConnector of extractorConnectors) {
795
- if (extractorConnector === DataExtractorConnectorType.JsonPath) {
796
- coreConfig.types.dataExtractorConnector.push({
797
- type: DataExtractorConnectorType.JsonPath
798
- });
799
- }
817
+ coreConfig.types.dataExtractorConnector.push({
818
+ type: extractorConnector
819
+ });
800
820
  }
801
821
  }
802
822
  }
@@ -814,23 +834,36 @@ async function configureDocumentManagement(coreConfig, envVars) {
814
834
  }
815
835
  }
816
836
  /**
817
- * Configures the verifiable credential authentication.
837
+ * Configures the trust components.
818
838
  * @param coreConfig The core config.
819
839
  * @param envVars The environment variables.
820
840
  */
821
- async function configureVerifiableCredentialAuthentication(coreConfig, envVars) {
822
- if (Coerce.boolean(envVars.vcAuthenticationEnabled) ?? false) {
823
- // Can only perform VC authentication if identity component is available
824
- coreConfig.types.authenticationGeneratorComponent ??= [];
825
- coreConfig.types.authenticationGeneratorComponent.push({
826
- type: AuthenticationGeneratorComponentType.VerifiableCredential,
827
- options: {
828
- config: {
829
- verificationMethodId: envVars.vcAuthenticationVerificationMethodId ?? VC_AUTHENTICATION_VERIFICATION_METHOD_ID
830
- }
831
- },
832
- features: ["verifiable-credential"]
841
+ async function configureTrust(coreConfig, envVars) {
842
+ if (Coerce.boolean(envVars.trustEnabled) ?? false) {
843
+ coreConfig.types.trustComponent ??= [];
844
+ coreConfig.types.trustComponent.push({
845
+ type: TrustComponentType.Service
833
846
  });
847
+ coreConfig.types.trustGeneratorComponent ??= [];
848
+ const trustGeneratorTypes = commaSeparatedListToArray(envVars.trustGenerators);
849
+ for (const trustGeneratorType of trustGeneratorTypes) {
850
+ coreConfig.types.trustGeneratorComponent.push({
851
+ type: trustGeneratorType,
852
+ options: {
853
+ config: {
854
+ verificationMethodId: envVars.trustVerificationMethodId ?? "",
855
+ tokenTtlInSeconds: Coerce.integer(envVars.trustJwtTtlSeconds)
856
+ }
857
+ }
858
+ });
859
+ }
860
+ coreConfig.types.trustVerifierComponent ??= [];
861
+ const trustVerifierTypes = commaSeparatedListToArray(envVars.trustVerifiers);
862
+ for (const trustVerifierType of trustVerifierTypes) {
863
+ coreConfig.types.trustVerifierComponent.push({
864
+ type: trustVerifierType
865
+ });
866
+ }
834
867
  }
835
868
  }
836
869
  /**
@@ -850,56 +883,37 @@ async function configureRightsManagement(coreConfig, envVars) {
850
883
  });
851
884
  coreConfig.types.rightsManagementPipComponent ??= [];
852
885
  coreConfig.types.rightsManagementPipComponent.push({
853
- type: RightsManagementPipComponentType.Service,
854
- options: {
855
- informationModulesConfig: Is.arrayValue(envVars.rightsManagementInformationSources)
856
- ? envVars.rightsManagementInformationSources
857
- : undefined
858
- }
886
+ type: RightsManagementPipComponentType.Service
859
887
  });
860
888
  coreConfig.types.rightsManagementPxpComponent ??= [];
861
889
  coreConfig.types.rightsManagementPxpComponent.push({
862
- type: RightsManagementPxpComponentType.Service,
863
- options: {
864
- actionModulesConfig: Is.arrayValue(envVars.rightsManagementExecutionActions)
865
- ? envVars.rightsManagementExecutionActions
866
- : undefined
867
- }
890
+ type: RightsManagementPxpComponentType.Service
868
891
  });
869
892
  coreConfig.types.rightsManagementPdpComponent ??= [];
870
893
  coreConfig.types.rightsManagementPdpComponent.push({
871
- type: RightsManagementPdpComponentType.Service,
872
- options: {
873
- arbiterModulesConfig: Is.arrayValue(envVars.rightsManagementArbiters)
874
- ? envVars.rightsManagementArbiters
875
- : undefined
876
- }
894
+ type: RightsManagementPdpComponentType.Service
877
895
  });
878
896
  coreConfig.types.rightsManagementPepComponent ??= [];
879
897
  coreConfig.types.rightsManagementPepComponent.push({
880
- type: RightsManagementPepComponentType.Service,
881
- options: {
882
- processorModulesConfig: Is.arrayValue(envVars.rightsManagementEnforcementProcessors)
883
- ? envVars.rightsManagementEnforcementProcessors
884
- : undefined
885
- }
898
+ type: RightsManagementPepComponentType.Service
886
899
  });
887
900
  coreConfig.types.rightsManagementPnpComponent ??= [];
901
+ // We add a multi instance REST client for the remote negotiations
902
+ // use a dummy endpoint for now as the actual endpoint will be provided in the config
903
+ // of the policy negotiator when it is used for remote negotiations
904
+ coreConfig.types.rightsManagementPnpComponent.push({
905
+ type: RightsManagementPnpComponentType.RestClient,
906
+ options: {
907
+ endpoint: "http://localhost"
908
+ },
909
+ isMultiInstance: true,
910
+ features: ["remote"]
911
+ });
888
912
  coreConfig.types.rightsManagementPnpComponent.push({
889
913
  type: RightsManagementPnpComponentType.Service,
890
914
  options: {
891
- negotiatorModulesConfig: Is.arrayValue(envVars.rightsManagementNegotiators)
892
- ? envVars.rightsManagementNegotiators
893
- : undefined,
894
- requesterModulesConfig: Is.arrayValue(envVars.rightsManagementRequesters)
895
- ? envVars.rightsManagementRequesters
896
- : undefined,
897
915
  config: {
898
- baseCallbackUrl: envVars.rightsManagementBaseCallbackUrl ?? "",
899
- offers: Is.arrayValue(envVars.rightsManagementOffers)
900
- ? envVars.rightsManagementOffers
901
- : [],
902
- negotiationComponentCreator: async (url) => new PolicyNegotiationPointRestClient({ endpoint: url })
916
+ callbackPath: envVars.rightsManagementCallbackPath ?? ""
903
917
  }
904
918
  }
905
919
  });
@@ -907,19 +921,55 @@ async function configureRightsManagement(coreConfig, envVars) {
907
921
  coreConfig.types.rightsManagementPnapComponent.push({
908
922
  type: RightsManagementPnapComponentType.Service
909
923
  });
910
- coreConfig.types.rightsManagementDapComponent ??= [];
911
- coreConfig.types.rightsManagementDapComponent.push({
912
- type: RightsManagementDapComponentType.Service
913
- });
914
- coreConfig.types.rightsManagementDarpComponent ??= [];
915
- coreConfig.types.rightsManagementDarpComponent.push({
916
- type: RightsManagementDarpComponentType.Service,
917
- options: {
918
- config: {
919
- dataAccessComponentCreator: async (url) => new DataAccessPointRestClient({ endpoint: url })
920
- }
921
- }
922
- });
924
+ coreConfig.types.rightsManagementPolicyArbiterComponent ??= [];
925
+ const policyArbiterTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyArbiters);
926
+ for (const policyArbiterType of policyArbiterTypes) {
927
+ coreConfig.types.rightsManagementPolicyArbiterComponent.push({
928
+ type: policyArbiterType
929
+ });
930
+ }
931
+ coreConfig.types.rightsManagementPolicyObligationEnforcerComponent ??= [];
932
+ const policyObligationEnforcerTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyObligationEnforcers);
933
+ for (const policyObligationEnforcerType of policyObligationEnforcerTypes) {
934
+ coreConfig.types.rightsManagementPolicyObligationEnforcerComponent.push({
935
+ type: policyObligationEnforcerType
936
+ });
937
+ }
938
+ coreConfig.types.rightsManagementPolicyEnforcementProcessorComponent ??= [];
939
+ const policyEnforcementProcessTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyEnforcementProcessors);
940
+ for (const policyEnforcementProcessorType of policyEnforcementProcessTypes) {
941
+ coreConfig.types.rightsManagementPolicyEnforcementProcessorComponent.push({
942
+ type: policyEnforcementProcessorType
943
+ });
944
+ }
945
+ coreConfig.types.rightsManagementPolicyExecutionActionComponent ??= [];
946
+ const policyExecutionActionTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyExecutionActions);
947
+ for (const policyExecutionActionType of policyExecutionActionTypes) {
948
+ coreConfig.types.rightsManagementPolicyExecutionActionComponent.push({
949
+ type: policyExecutionActionType
950
+ });
951
+ }
952
+ coreConfig.types.rightsManagementPolicyInformationSourceComponent ??= [];
953
+ const policyInformationSourceTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyInformationSources);
954
+ for (const policyInformationSourceType of policyInformationSourceTypes) {
955
+ coreConfig.types.rightsManagementPolicyInformationSourceComponent.push({
956
+ type: policyInformationSourceType
957
+ });
958
+ }
959
+ coreConfig.types.rightsManagementPolicyRequesterComponent ??= [];
960
+ const policyRequesterTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyRequesters);
961
+ for (const policyRequesterType of policyRequesterTypes) {
962
+ coreConfig.types.rightsManagementPolicyRequesterComponent.push({
963
+ type: policyRequesterType
964
+ });
965
+ }
966
+ coreConfig.types.rightsManagementPolicyNegotiatorComponent ??= [];
967
+ const policyNegotiatorTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyNegotiators);
968
+ for (const policyNegotiatorType of policyNegotiatorTypes) {
969
+ coreConfig.types.rightsManagementPolicyNegotiatorComponent.push({
970
+ type: policyNegotiatorType
971
+ });
972
+ }
923
973
  }
924
974
  }
925
975
  /**
@@ -955,8 +1005,7 @@ async function configureSynchronisedStorage(coreConfig, envVars) {
955
1005
  options: {
956
1006
  config: {
957
1007
  verifiableStorageKeyId: verifiableStorageKeyId ?? "",
958
- blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId ??
959
- SYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID,
1008
+ blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId,
960
1009
  entityUpdateIntervalMinutes: Coerce.number(envVars.synchronisedStorageEntityUpdateIntervalMinutes),
961
1010
  consolidationIntervalMinutes: Coerce.number(envVars.synchronisedStorageConsolidationIntervalMinutes),
962
1011
  consolidationBatchSize: Coerce.number(envVars.synchronisedStorageConsolidationBatchSize),
@@ -988,13 +1037,16 @@ async function configureFederatedCatalogue(coreConfig, envVars) {
988
1037
  coreConfig.types.federatedCatalogueComponent ??= [];
989
1038
  coreConfig.types.federatedCatalogueComponent.push({
990
1039
  type: FederatedCatalogueComponentType.Service,
991
- options: {
992
- config: {
993
- subResourceCacheTtlMs: Coerce.number(envVars.federatedCatalogueCacheTtlMs),
994
- clearingHouseApproverList: Coerce.object(envVars.federatedCatalogueClearingHouseApproverList) ?? []
995
- }
996
- }
1040
+ options: {}
997
1041
  });
1042
+ coreConfig.types.federatedCatalogueFilterComponent ??= [];
1043
+ const filters = commaSeparatedListToArray(envVars.federatedCatalogueFilters);
1044
+ for (const filter of filters) {
1045
+ coreConfig.types.federatedCatalogueFilterComponent.push({
1046
+ type: filter,
1047
+ options: {}
1048
+ });
1049
+ }
998
1050
  }
999
1051
  }
1000
1052
  /**
@@ -1048,4 +1100,15 @@ async function configureDlt(coreConfig, envVars) {
1048
1100
  });
1049
1101
  }
1050
1102
  }
1103
+ /**
1104
+ * Converts a comma separated list to an array.
1105
+ * @param value The comma separated list.
1106
+ * @returns The array.
1107
+ */
1108
+ function commaSeparatedListToArray(value) {
1109
+ return (value ?? "")
1110
+ .split(",")
1111
+ .map(item => item.trim())
1112
+ .filter(item => item.length > 0);
1113
+ }
1051
1114
  //# sourceMappingURL=engineEnvBuilder.js.map