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

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 +151 -104
  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 +71 -39
  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 +58 -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 +129 -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 +102 -85
  118. package/docs/reference/interfaces/IEngineServerEnvironmentVariables.md +154 -117
  119. package/docs/reference/interfaces/INodeEngineState.md +0 -16
  120. package/docs/reference/interfaces/INodeEnvironmentVariables.md +158 -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,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";
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 { PolicyNegotiationPointRestClient } from "@twin.org/rights-management-rest-client";
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);
@@ -44,7 +46,7 @@ export async function buildEngineConfiguration(envVars, contextIdKeys) {
44
46
  await configureAuditableItemGraph(coreConfig, envVars);
45
47
  await configureAuditableItemStream(coreConfig, envVars);
46
48
  await configureDocumentManagement(coreConfig, envVars);
47
- await configureVerifiableCredentialAuthentication(coreConfig, envVars);
49
+ await configureTrust(coreConfig, envVars);
48
50
  await configureRightsManagement(coreConfig, envVars);
49
51
  await configureSynchronisedStorage(coreConfig, envVars);
50
52
  await configureFederatedCatalogue(coreConfig, envVars);
@@ -59,7 +61,7 @@ export async function buildEngineConfiguration(envVars, contextIdKeys) {
59
61
  async function configureEntityStorage(coreConfig, envVars) {
60
62
  coreConfig.types ??= {};
61
63
  coreConfig.types.entityStorageConnector ??= [];
62
- const entityStorageConnectorTypes = envVars.entityStorageConnectorType?.split(",") ?? [];
64
+ const entityStorageConnectorTypes = commaSeparatedListToArray(envVars.entityStorageConnectorType);
63
65
  if (entityStorageConnectorTypes.includes(EntityStorageConnectorType.Memory)) {
64
66
  coreConfig.types.entityStorageConnector.push({
65
67
  type: EntityStorageConnectorType.Memory
@@ -83,7 +85,8 @@ async function configureEntityStorage(coreConfig, envVars) {
83
85
  authMode: envVars.awsDynamodbAuthMode,
84
86
  accessKeyId: envVars.awsDynamodbAccessKeyId,
85
87
  secretAccessKey: envVars.awsDynamodbSecretAccessKey,
86
- endpoint: envVars.awsDynamodbEndpoint
88
+ endpoint: envVars.awsDynamodbEndpoint,
89
+ connectionTimeoutMs: Coerce.integer(envVars.awsDynamodbConnectionTimeoutMs)
87
90
  },
88
91
  tablePrefix: envVars.entityStorageTablePrefix
89
92
  }
@@ -123,7 +126,7 @@ async function configureEntityStorage(coreConfig, envVars) {
123
126
  type: EntityStorageConnectorType.ScyllaDb,
124
127
  options: {
125
128
  config: {
126
- hosts: envVars.scylladbHosts?.split(",") ?? [],
129
+ hosts: commaSeparatedListToArray(envVars.scylladbHosts),
127
130
  localDataCenter: envVars.scylladbLocalDataCenter ?? "",
128
131
  keyspace: envVars.scylladbKeyspace ?? "",
129
132
  port: Coerce.integer(envVars.scylladbPort)
@@ -203,7 +206,7 @@ async function configureEntityStorage(coreConfig, envVars) {
203
206
  */
204
207
  async function configureBlobStorage(coreConfig, envVars) {
205
208
  coreConfig.types.blobStorageConnector ??= [];
206
- const blobStorageConnectorTypes = envVars.blobStorageConnectorType?.split(",") ?? [];
209
+ const blobStorageConnectorTypes = commaSeparatedListToArray(envVars.blobStorageConnectorType);
207
210
  if (blobStorageConnectorTypes.includes(BlobStorageConnectorType.Memory)) {
208
211
  coreConfig.types.blobStorageConnector.push({
209
212
  type: BlobStorageConnectorType.Memory
@@ -300,7 +303,7 @@ async function configureBlobStorage(coreConfig, envVars) {
300
303
  options: {
301
304
  config: {
302
305
  vaultKeyId: (envVars.blobStorageEnableEncryption ?? false)
303
- ? (envVars.blobStorageEncryptionKeyId ?? BLOB_STORAGE_ENCRYPTION_KEY_ID)
306
+ ? envVars.blobStorageEncryptionKeyId
304
307
  : undefined
305
308
  }
306
309
  }
@@ -314,7 +317,7 @@ async function configureBlobStorage(coreConfig, envVars) {
314
317
  */
315
318
  async function configureLogging(coreConfig, envVars) {
316
319
  coreConfig.types.loggingConnector ??= [];
317
- const loggingConnectorTypes = (envVars.loggingConnector ?? "").split(",");
320
+ const loggingConnectorTypes = commaSeparatedListToArray(envVars.loggingConnector);
318
321
  let additionalConnectorCount = 0;
319
322
  for (const loggingConnector of loggingConnectorTypes) {
320
323
  if (loggingConnector === LoggingConnectorType.Console) {
@@ -368,7 +371,12 @@ async function configureVault(coreConfig, envVars) {
368
371
  coreConfig.types.vaultConnector ??= [];
369
372
  if (envVars.vaultConnector === VaultConnectorType.EntityStorage) {
370
373
  coreConfig.types.vaultConnector.push({
371
- type: VaultConnectorType.EntityStorage
374
+ type: VaultConnectorType.EntityStorage,
375
+ options: {
376
+ config: {
377
+ prefix: envVars.vaultPrefix
378
+ }
379
+ }
372
380
  });
373
381
  }
374
382
  else if (envVars.vaultConnector === VaultConnectorType.Hashicorp) {
@@ -377,7 +385,8 @@ async function configureVault(coreConfig, envVars) {
377
385
  options: {
378
386
  config: {
379
387
  endpoint: envVars.hashicorpVaultEndpoint ?? "",
380
- token: envVars.hashicorpVaultToken ?? ""
388
+ token: envVars.hashicorpVaultToken ?? "",
389
+ prefix: envVars.vaultPrefix
381
390
  }
382
391
  }
383
392
  });
@@ -389,10 +398,10 @@ async function configureVault(coreConfig, envVars) {
389
398
  * @param envVars The environment variables.
390
399
  */
391
400
  async function configureBackgroundTask(coreConfig, envVars) {
392
- coreConfig.types.backgroundTaskConnector ??= [];
393
- if (envVars.backgroundTaskConnector === BackgroundTaskConnectorType.EntityStorage) {
394
- coreConfig.types.backgroundTaskConnector.push({
395
- type: BackgroundTaskConnectorType.EntityStorage
401
+ coreConfig.types.backgroundTaskComponent ??= [];
402
+ if (Coerce.boolean(envVars.backgroundTasksEnabled) ?? false) {
403
+ coreConfig.types.backgroundTaskComponent.push({
404
+ type: BackgroundTaskComponentType.Service
396
405
  });
397
406
  }
398
407
  }
@@ -445,6 +454,24 @@ async function configureTenant(coreConfig, envVars) {
445
454
  coreConfig.types.tenantComponent.push({ type: TenantAdminComponentType.Service });
446
455
  }
447
456
  }
457
+ /**
458
+ * Configures the context id handlers.
459
+ * @param coreConfig The core config.
460
+ * @param envVars The environment variables.
461
+ */
462
+ async function configureContextIdHandlers(coreConfig, envVars) {
463
+ coreConfig.types.contextIdHandlerComponent ??= [];
464
+ coreConfig.types.contextIdHandlerComponent.push({
465
+ type: ContextIdHandlerComponentType.Did,
466
+ features: [CONTEXT_ID_HANDLER_FEATURE_DID]
467
+ });
468
+ if (Coerce.boolean(envVars.tenantEnabled) ?? false) {
469
+ coreConfig.types.contextIdHandlerComponent.push({
470
+ type: ContextIdHandlerComponentType.Tenant,
471
+ features: [CONTEXT_ID_HANDLER_FEATURE_TENANT]
472
+ });
473
+ }
474
+ }
448
475
  /**
449
476
  * Configures the messaging.
450
477
  * @param coreConfig The core config.
@@ -629,7 +656,7 @@ async function configureVerifiableStorage(coreConfig, envVars) {
629
656
  type: ImmutableProofComponentType.Service,
630
657
  options: {
631
658
  config: {
632
- verificationMethodId: envVars.immutableProofVerificationMethodId ?? IMMUTABLE_PROOF_VERIFICATION_METHOD_ID
659
+ verificationMethodId: envVars.immutableProofVerificationMethodId
633
660
  }
634
661
  }
635
662
  });
@@ -652,7 +679,10 @@ async function configureIdentity(coreConfig, envVars) {
652
679
  coreConfig.types.identityConnector.push({
653
680
  type: IdentityConnectorType.Iota,
654
681
  options: {
655
- config: dltConfig?.options?.config ?? {}
682
+ config: {
683
+ ...(dltConfig?.options?.config ?? {}),
684
+ walletAddressIndex: Coerce.integer(envVars.identityWalletAddressIndex) ?? 0
685
+ }
656
686
  }
657
687
  });
658
688
  }
@@ -734,7 +764,7 @@ async function configureAttestation(coreConfig, envVars) {
734
764
  type: AttestationComponentType.Service,
735
765
  options: {
736
766
  config: {
737
- verificationMethodId: envVars.attestationVerificationMethodId ?? ATTESTATION_VERIFICATION_METHOD_ID
767
+ verificationMethodId: envVars.attestationVerificationMethodId
738
768
  }
739
769
  }
740
770
  });
@@ -776,27 +806,18 @@ async function configureDataProcessing(coreConfig, envVars) {
776
806
  coreConfig.types.dataProcessingComponent ??= [];
777
807
  coreConfig.types.dataProcessingComponent.push({ type: DataProcessingComponentType.Service });
778
808
  coreConfig.types.dataConverterConnector ??= [];
779
- const converterConnectors = envVars.dataConverterConnectors?.split(",") ?? [];
809
+ const converterConnectors = commaSeparatedListToArray(envVars.dataConverterConnectors);
780
810
  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
- }
811
+ coreConfig.types.dataConverterConnector.push({
812
+ type: converterConnector
813
+ });
791
814
  }
792
815
  coreConfig.types.dataExtractorConnector ??= [];
793
- const extractorConnectors = envVars.dataExtractorConnectors?.split(",") ?? [];
816
+ const extractorConnectors = commaSeparatedListToArray(envVars.dataExtractorConnectors);
794
817
  for (const extractorConnector of extractorConnectors) {
795
- if (extractorConnector === DataExtractorConnectorType.JsonPath) {
796
- coreConfig.types.dataExtractorConnector.push({
797
- type: DataExtractorConnectorType.JsonPath
798
- });
799
- }
818
+ coreConfig.types.dataExtractorConnector.push({
819
+ type: extractorConnector
820
+ });
800
821
  }
801
822
  }
802
823
  }
@@ -814,23 +835,36 @@ async function configureDocumentManagement(coreConfig, envVars) {
814
835
  }
815
836
  }
816
837
  /**
817
- * Configures the verifiable credential authentication.
838
+ * Configures the trust components.
818
839
  * @param coreConfig The core config.
819
840
  * @param envVars The environment variables.
820
841
  */
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"]
842
+ async function configureTrust(coreConfig, envVars) {
843
+ if (Coerce.boolean(envVars.trustEnabled) ?? false) {
844
+ coreConfig.types.trustComponent ??= [];
845
+ coreConfig.types.trustComponent.push({
846
+ type: TrustComponentType.Service
833
847
  });
848
+ coreConfig.types.trustGeneratorComponent ??= [];
849
+ const trustGeneratorTypes = commaSeparatedListToArray(envVars.trustGenerators);
850
+ for (const trustGeneratorType of trustGeneratorTypes) {
851
+ coreConfig.types.trustGeneratorComponent.push({
852
+ type: trustGeneratorType,
853
+ options: {
854
+ config: {
855
+ verificationMethodId: envVars.trustVerificationMethodId ?? "",
856
+ tokenTtlInSeconds: Coerce.integer(envVars.trustJwtTtlSeconds)
857
+ }
858
+ }
859
+ });
860
+ }
861
+ coreConfig.types.trustVerifierComponent ??= [];
862
+ const trustVerifierTypes = commaSeparatedListToArray(envVars.trustVerifiers);
863
+ for (const trustVerifierType of trustVerifierTypes) {
864
+ coreConfig.types.trustVerifierComponent.push({
865
+ type: trustVerifierType
866
+ });
867
+ }
834
868
  }
835
869
  }
836
870
  /**
@@ -850,55 +884,26 @@ async function configureRightsManagement(coreConfig, envVars) {
850
884
  });
851
885
  coreConfig.types.rightsManagementPipComponent ??= [];
852
886
  coreConfig.types.rightsManagementPipComponent.push({
853
- type: RightsManagementPipComponentType.Service,
854
- options: {
855
- informationModulesConfig: Is.arrayValue(envVars.rightsManagementInformationSources)
856
- ? envVars.rightsManagementInformationSources
857
- : undefined
858
- }
887
+ type: RightsManagementPipComponentType.Service
859
888
  });
860
889
  coreConfig.types.rightsManagementPxpComponent ??= [];
861
890
  coreConfig.types.rightsManagementPxpComponent.push({
862
- type: RightsManagementPxpComponentType.Service,
863
- options: {
864
- actionModulesConfig: Is.arrayValue(envVars.rightsManagementExecutionActions)
865
- ? envVars.rightsManagementExecutionActions
866
- : undefined
867
- }
891
+ type: RightsManagementPxpComponentType.Service
868
892
  });
869
893
  coreConfig.types.rightsManagementPdpComponent ??= [];
870
894
  coreConfig.types.rightsManagementPdpComponent.push({
871
- type: RightsManagementPdpComponentType.Service,
872
- options: {
873
- arbiterModulesConfig: Is.arrayValue(envVars.rightsManagementArbiters)
874
- ? envVars.rightsManagementArbiters
875
- : undefined
876
- }
895
+ type: RightsManagementPdpComponentType.Service
877
896
  });
878
897
  coreConfig.types.rightsManagementPepComponent ??= [];
879
898
  coreConfig.types.rightsManagementPepComponent.push({
880
- type: RightsManagementPepComponentType.Service,
881
- options: {
882
- processorModulesConfig: Is.arrayValue(envVars.rightsManagementEnforcementProcessors)
883
- ? envVars.rightsManagementEnforcementProcessors
884
- : undefined
885
- }
899
+ type: RightsManagementPepComponentType.Service
886
900
  });
887
901
  coreConfig.types.rightsManagementPnpComponent ??= [];
888
902
  coreConfig.types.rightsManagementPnpComponent.push({
889
903
  type: RightsManagementPnpComponentType.Service,
890
904
  options: {
891
- negotiatorModulesConfig: Is.arrayValue(envVars.rightsManagementNegotiators)
892
- ? envVars.rightsManagementNegotiators
893
- : undefined,
894
- requesterModulesConfig: Is.arrayValue(envVars.rightsManagementRequesters)
895
- ? envVars.rightsManagementRequesters
896
- : undefined,
897
905
  config: {
898
- baseCallbackUrl: envVars.rightsManagementBaseCallbackUrl ?? "",
899
- offers: Is.arrayValue(envVars.rightsManagementOffers)
900
- ? envVars.rightsManagementOffers
901
- : [],
906
+ callbackPath: envVars.rightsManagementCallbackPath ?? "",
902
907
  negotiationComponentCreator: async (url) => new PolicyNegotiationPointRestClient({ endpoint: url })
903
908
  }
904
909
  }
@@ -907,19 +912,48 @@ async function configureRightsManagement(coreConfig, envVars) {
907
912
  coreConfig.types.rightsManagementPnapComponent.push({
908
913
  type: RightsManagementPnapComponentType.Service
909
914
  });
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
- });
915
+ coreConfig.types.rightsManagementPolicyArbiterComponent ??= [];
916
+ const policyArbiterTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyArbiters);
917
+ for (const policyArbiterType of policyArbiterTypes) {
918
+ coreConfig.types.rightsManagementPolicyArbiterComponent.push({
919
+ type: policyArbiterType
920
+ });
921
+ }
922
+ coreConfig.types.rightsManagementPolicyEnforcementProcessorComponent ??= [];
923
+ const policyEnforcementProcessTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyEnforcementProcessors);
924
+ for (const policyEnforcementProcessorType of policyEnforcementProcessTypes) {
925
+ coreConfig.types.rightsManagementPolicyEnforcementProcessorComponent.push({
926
+ type: policyEnforcementProcessorType
927
+ });
928
+ }
929
+ coreConfig.types.rightsManagementPolicyExecutionActionComponent ??= [];
930
+ const policyExecutionActionTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyExecutionActions);
931
+ for (const policyExecutionActionType of policyExecutionActionTypes) {
932
+ coreConfig.types.rightsManagementPolicyExecutionActionComponent.push({
933
+ type: policyExecutionActionType
934
+ });
935
+ }
936
+ coreConfig.types.rightsManagementPolicyInformationSourceComponent ??= [];
937
+ const policyInformationSourceTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyInformationSources);
938
+ for (const policyInformationSourceType of policyInformationSourceTypes) {
939
+ coreConfig.types.rightsManagementPolicyInformationSourceComponent.push({
940
+ type: policyInformationSourceType
941
+ });
942
+ }
943
+ coreConfig.types.rightsManagementPolicyRequesterComponent ??= [];
944
+ const policyRequesterTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyRequesters);
945
+ for (const policyRequesterType of policyRequesterTypes) {
946
+ coreConfig.types.rightsManagementPolicyRequesterComponent.push({
947
+ type: policyRequesterType
948
+ });
949
+ }
950
+ coreConfig.types.rightsManagementPolicyNegotiatorComponent ??= [];
951
+ const policyNegotiatorTypes = commaSeparatedListToArray(envVars.rightsManagementPolicyNegotiators);
952
+ for (const policyNegotiatorType of policyNegotiatorTypes) {
953
+ coreConfig.types.rightsManagementPolicyNegotiatorComponent.push({
954
+ type: policyNegotiatorType
955
+ });
956
+ }
923
957
  }
924
958
  }
925
959
  /**
@@ -955,8 +989,7 @@ async function configureSynchronisedStorage(coreConfig, envVars) {
955
989
  options: {
956
990
  config: {
957
991
  verifiableStorageKeyId: verifiableStorageKeyId ?? "",
958
- blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId ??
959
- SYNCHRONISED_STORAGE_BLOB_STORAGE_ENCRYPTION_KEY_ID,
992
+ blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId,
960
993
  entityUpdateIntervalMinutes: Coerce.number(envVars.synchronisedStorageEntityUpdateIntervalMinutes),
961
994
  consolidationIntervalMinutes: Coerce.number(envVars.synchronisedStorageConsolidationIntervalMinutes),
962
995
  consolidationBatchSize: Coerce.number(envVars.synchronisedStorageConsolidationBatchSize),
@@ -988,13 +1021,16 @@ async function configureFederatedCatalogue(coreConfig, envVars) {
988
1021
  coreConfig.types.federatedCatalogueComponent ??= [];
989
1022
  coreConfig.types.federatedCatalogueComponent.push({
990
1023
  type: FederatedCatalogueComponentType.Service,
991
- options: {
992
- config: {
993
- subResourceCacheTtlMs: Coerce.number(envVars.federatedCatalogueCacheTtlMs),
994
- clearingHouseApproverList: Coerce.object(envVars.federatedCatalogueClearingHouseApproverList) ?? []
995
- }
996
- }
1024
+ options: {}
997
1025
  });
1026
+ coreConfig.types.federatedCatalogueFilterComponent ??= [];
1027
+ const filters = commaSeparatedListToArray(envVars.federatedCatalogueFilters);
1028
+ for (const filter of filters) {
1029
+ coreConfig.types.federatedCatalogueFilterComponent.push({
1030
+ type: filter,
1031
+ options: {}
1032
+ });
1033
+ }
998
1034
  }
999
1035
  }
1000
1036
  /**
@@ -1048,4 +1084,15 @@ async function configureDlt(coreConfig, envVars) {
1048
1084
  });
1049
1085
  }
1050
1086
  }
1087
+ /**
1088
+ * Converts a comma separated list to an array.
1089
+ * @param value The comma separated list.
1090
+ * @returns The array.
1091
+ */
1092
+ function commaSeparatedListToArray(value) {
1093
+ return (value ?? "")
1094
+ .split(",")
1095
+ .map(item => item.trim())
1096
+ .filter(item => item.length > 0);
1097
+ }
1051
1098
  //# sourceMappingURL=engineEnvBuilder.js.map