@twin.org/node-core 0.9.2-next.15 → 0.9.2-next.17
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.
- package/dist/es/builders/engineEnvBuilder.js +129 -83
- package/dist/es/builders/engineEnvBuilder.js.map +1 -1
- package/dist/es/builders/engineServerEnvBuilder.js +6 -5
- package/dist/es/builders/engineServerEnvBuilder.js.map +1 -1
- package/dist/es/builders/helper/envHelpers.js +57 -72
- package/dist/es/builders/helper/envHelpers.js.map +1 -1
- package/dist/es/models/IEngineEnvironmentVariables.js.map +1 -1
- package/dist/es/models/IEngineServerEnvironmentVariables.js.map +1 -1
- package/dist/es/models/engineEnvironmentVariableKeys.js +2 -0
- package/dist/es/models/engineEnvironmentVariableKeys.js.map +1 -1
- package/dist/es/models/engineServerEnvironmentVariableKeys.js +1 -0
- package/dist/es/models/engineServerEnvironmentVariableKeys.js.map +1 -1
- package/dist/es/node.js +1 -1
- package/dist/es/node.js.map +1 -1
- package/dist/types/builders/engineEnvBuilder.d.ts +4 -4
- package/dist/types/builders/helper/envHelpers.d.ts +79 -20
- package/dist/types/models/IEngineEnvironmentVariables.d.ts +12 -2
- package/dist/types/models/IEngineServerEnvironmentVariables.d.ts +4 -0
- package/docs/changelog.md +15 -0
- package/docs/reference/functions/{isTelemetryRequired.md → isTelemetryEnabled.md} +3 -3
- package/docs/reference/functions/{isTracingRequired.md → isTracingEnabled.md} +3 -3
- package/docs/reference/index.md +2 -2
- package/docs/reference/interfaces/IEngineEnvironmentVariables.md +30 -2
- package/docs/reference/interfaces/IEngineServerEnvironmentVariables.md +8 -0
- package/locales/en.json +1 -0
- package/package.json +1 -1
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0.
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { Is, Mutex } from "@twin.org/core";
|
|
5
|
+
import { EngineCloneMode } from "@twin.org/engine-models";
|
|
5
6
|
import { AttestationComponentType, AttestationConnectorType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, AutomationComponentType, BackgroundTaskComponentType, BlobStorageComponentType, BlobStorageConnectorType, ContextIdHandlerComponentType, DataProcessingComponentType, DataspaceControlPlaneComponentType, DataspaceDataPlaneComponentType, DltConfigType, DocumentManagementComponentType, EngineTypeHelper, EntityStorageConnectorType, EventBusComponentType, EventBusConnectorType, FaucetConnectorType, FederatedCatalogueComponentType, HealthComponentType, IdentityComponentType, IdentityConnectorType, IdentityProfileComponentType, IdentityProfileConnectorType, IdentityResolverComponentType, IdentityResolverConnectorType, ImmutableProofComponentType, LoggingComponentType, LoggingConnectorType, MessagingAdminComponentType, MessagingComponentType, MessagingEmailConnectorType, MessagingPushNotificationConnectorType, MessagingSmsConnectorType, MetricsCollectorComponentType, MetricsProducerComponentType, NftComponentType, NftConnectorType, NotarizationComponentType, NotarizationConnectorType, PlatformComponentType, RightsManagementPapComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPipComponentType, RightsManagementPmpComponentType, RightsManagementPnapComponentType, RightsManagementPnpComponentType, RightsManagementPxpComponentType, SchemaVersionMigrationComponentType, TaskSchedulerComponentType, TelemetryComponentType, TelemetryConnectorType, TenantAdminComponentType, TracingComponentType, TracingConnectorType, TrustComponentType, TrustVerifierComponentType, VaultConnectorType, WalletConnectorType } from "@twin.org/engine-types";
|
|
6
7
|
import { OpenTelemetryExporterTypes } from "@twin.org/logging-connector-opentelemetry";
|
|
7
8
|
import { OpenTelemetryReaderTypes } from "@twin.org/telemetry-connector-opentelemetry";
|
|
8
9
|
import { OpenTelemetryProcessorTypes } from "@twin.org/tracing-connector-opentelemetry";
|
|
9
10
|
import { CONTEXT_ID_HANDLER_FEATURE_DID, CONTEXT_ID_HANDLER_FEATURE_TENANT } from "../defaults.js";
|
|
10
11
|
import { isAuthEntityStorageRequired } from "./engineServerEnvBuilder.js";
|
|
11
|
-
import { commaSeparatedListToArray, envBoolean, envCount, envDateTime, envInteger, envMinToMs, envMinutes, envMs, envSecToMs, envSeconds } from "./helper/envHelpers.js";
|
|
12
|
+
import { commaSeparatedListToArray, envArray, envBoolean, envCount, envDateTime, envInteger, envMinToMs, envMinutes, envMs, envSecToMs, envSeconds } from "./helper/envHelpers.js";
|
|
12
13
|
/**
|
|
13
14
|
* Build the engine core configuration from environment variables.
|
|
14
15
|
* @param envVars The environment variables.
|
|
@@ -525,45 +526,71 @@ async function configureEventBus(coreConfig, envVars) {
|
|
|
525
526
|
*/
|
|
526
527
|
async function configureTelemetry(coreConfig, envVars) {
|
|
527
528
|
coreConfig.types.telemetryConnector ??= [];
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
529
|
+
const telemetryConnectorTypes = commaSeparatedListToArray(envVars.telemetryConnector);
|
|
530
|
+
let additionalConnectorCount = 0;
|
|
531
|
+
for (const telemetryConnector of telemetryConnectorTypes) {
|
|
532
|
+
if (telemetryConnector === TelemetryConnectorType.Silent) {
|
|
533
|
+
coreConfig.types.telemetryConnector.push({
|
|
534
|
+
type: TelemetryConnectorType.Silent
|
|
535
|
+
});
|
|
536
|
+
additionalConnectorCount++;
|
|
537
|
+
}
|
|
538
|
+
else if (telemetryConnector === TelemetryConnectorType.EntityStorage) {
|
|
539
|
+
coreConfig.types.telemetryConnector.push({
|
|
540
|
+
type: TelemetryConnectorType.EntityStorage,
|
|
541
|
+
options: {
|
|
542
|
+
config: {
|
|
543
|
+
batchSize: envCount(envVars, "telemetryBatchSize"),
|
|
544
|
+
batchIntervalMs: envSecToMs(envVars, "telemetryBatchFlushInterval"),
|
|
545
|
+
maxCacheSize: envCount(envVars, "telemetryMaxCacheSize"),
|
|
546
|
+
mutexTimeoutMs: envMs(envVars, "telemetryMutexTimeout"),
|
|
547
|
+
metricDefinitionCacheCapacity: envCount(envVars, "telemetryMetricDefinitionCacheCapacity"),
|
|
548
|
+
metricDefinitionCacheTtiMs: envMs(envVars, "telemetryMetricDefinitionCacheTtiMs")
|
|
549
|
+
}
|
|
537
550
|
}
|
|
551
|
+
});
|
|
552
|
+
additionalConnectorCount++;
|
|
553
|
+
}
|
|
554
|
+
else if (telemetryConnector === TelemetryConnectorType.OpenTelemetry) {
|
|
555
|
+
let readers;
|
|
556
|
+
if (envVars.openTelemetryReader === OpenTelemetryReaderTypes.Prometheus) {
|
|
557
|
+
readers = {
|
|
558
|
+
prometheus: {
|
|
559
|
+
type: OpenTelemetryReaderTypes.Prometheus,
|
|
560
|
+
port: envCount(envVars, "openTelemetryPrometheusPort")
|
|
561
|
+
}
|
|
562
|
+
};
|
|
538
563
|
}
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
port: envCount(envVars, "openTelemetryPrometheusPort")
|
|
564
|
+
coreConfig.types.telemetryConnector.push({
|
|
565
|
+
type: TelemetryConnectorType.OpenTelemetry,
|
|
566
|
+
options: {
|
|
567
|
+
config: {
|
|
568
|
+
meterName: envVars.openTelemetryMeterName,
|
|
569
|
+
meterVersion: envVars.openTelemetryMeterVersion,
|
|
570
|
+
readers
|
|
571
|
+
}
|
|
548
572
|
}
|
|
549
|
-
};
|
|
573
|
+
});
|
|
574
|
+
additionalConnectorCount++;
|
|
550
575
|
}
|
|
576
|
+
}
|
|
577
|
+
// If more than one telemetry connector, then we need to add a multi connector
|
|
578
|
+
// and set it as the default one
|
|
579
|
+
if (additionalConnectorCount > 1) {
|
|
551
580
|
coreConfig.types.telemetryConnector.push({
|
|
552
|
-
type: TelemetryConnectorType.
|
|
581
|
+
type: TelemetryConnectorType.Multi,
|
|
553
582
|
options: {
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
maxCacheSize: envCount(envVars, "telemetryMaxCacheSize"),
|
|
558
|
-
mutexTimeoutMs: envMs(envVars, "telemetryMutexTimeout"),
|
|
559
|
-
meterName: envVars.openTelemetryMeterName,
|
|
560
|
-
meterVersion: envVars.openTelemetryMeterVersion,
|
|
561
|
-
readers
|
|
562
|
-
}
|
|
563
|
-
}
|
|
583
|
+
telemetryConnectorTypes
|
|
584
|
+
},
|
|
585
|
+
isDefault: true
|
|
564
586
|
});
|
|
565
587
|
}
|
|
566
|
-
if (
|
|
588
|
+
else if (additionalConnectorCount > 0) {
|
|
589
|
+
// If only one connector, then we set it as the default one
|
|
590
|
+
coreConfig.types.telemetryConnector[coreConfig.types.telemetryConnector.length - 1].isDefault =
|
|
591
|
+
true;
|
|
592
|
+
}
|
|
593
|
+
if (additionalConnectorCount > 0) {
|
|
567
594
|
coreConfig.types.telemetryComponent ??= [];
|
|
568
595
|
coreConfig.types.telemetryComponent.push({ type: TelemetryComponentType.Service });
|
|
569
596
|
}
|
|
@@ -575,7 +602,7 @@ async function configureTelemetry(coreConfig, envVars) {
|
|
|
575
602
|
* @returns A promise that resolves when the metrics collector configuration has been applied.
|
|
576
603
|
*/
|
|
577
604
|
async function configureMetricsCollector(coreConfig, envVars) {
|
|
578
|
-
if (
|
|
605
|
+
if (isTelemetryEnabled(envVars)) {
|
|
579
606
|
coreConfig.types.metricsCollectorComponent ??= [];
|
|
580
607
|
coreConfig.types.metricsCollectorComponent.push({
|
|
581
608
|
type: MetricsCollectorComponentType.Service,
|
|
@@ -584,7 +611,7 @@ async function configureMetricsCollector(coreConfig, envVars) {
|
|
|
584
611
|
intervalMs: envSecToMs(envVars, "telemetryMetricsCollectorInterval")
|
|
585
612
|
}
|
|
586
613
|
},
|
|
587
|
-
|
|
614
|
+
cloneMode: EngineCloneMode.Never
|
|
588
615
|
});
|
|
589
616
|
coreConfig.types.metricsProducerComponent ??= [];
|
|
590
617
|
const metricsProducers = commaSeparatedListToArray(envVars.telemetryMetricsProducers ??
|
|
@@ -593,7 +620,7 @@ async function configureMetricsCollector(coreConfig, envVars) {
|
|
|
593
620
|
coreConfig.types.metricsProducerComponent.push({
|
|
594
621
|
type: producerType,
|
|
595
622
|
options: { maxHistory: envCount(envVars, "telemetryMetricsProducerMaxHistory") },
|
|
596
|
-
|
|
623
|
+
cloneMode: EngineCloneMode.Never
|
|
597
624
|
});
|
|
598
625
|
}
|
|
599
626
|
}
|
|
@@ -606,38 +633,66 @@ async function configureMetricsCollector(coreConfig, envVars) {
|
|
|
606
633
|
*/
|
|
607
634
|
async function configureTracing(coreConfig, envVars) {
|
|
608
635
|
coreConfig.types.tracingConnector ??= [];
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
636
|
+
const tracingConnectorTypes = commaSeparatedListToArray(envVars.tracingConnector);
|
|
637
|
+
let additionalConnectorCount = 0;
|
|
638
|
+
for (const tracingConnector of tracingConnectorTypes) {
|
|
639
|
+
if (tracingConnector === TracingConnectorType.Silent) {
|
|
640
|
+
coreConfig.types.tracingConnector.push({
|
|
641
|
+
type: TracingConnectorType.Silent
|
|
642
|
+
});
|
|
643
|
+
additionalConnectorCount++;
|
|
644
|
+
}
|
|
645
|
+
else if (tracingConnector === TracingConnectorType.EntityStorage) {
|
|
646
|
+
coreConfig.types.tracingConnector.push({
|
|
647
|
+
type: TracingConnectorType.EntityStorage,
|
|
648
|
+
options: {
|
|
649
|
+
config: {
|
|
650
|
+
mutexTimeoutMs: envMs(envVars, "tracingMutexTimeout")
|
|
651
|
+
}
|
|
615
652
|
}
|
|
653
|
+
});
|
|
654
|
+
additionalConnectorCount++;
|
|
655
|
+
}
|
|
656
|
+
else if (tracingConnector === TracingConnectorType.OpenTelemetry) {
|
|
657
|
+
const otelTracingConfig = {
|
|
658
|
+
tracerName: envVars.openTelemetryTracingTracerName,
|
|
659
|
+
tracerVersion: envVars.openTelemetryTracingTracerVersion
|
|
660
|
+
};
|
|
661
|
+
if (Is.stringValue(envVars.openTelemetryTracingEndpoint)) {
|
|
662
|
+
otelTracingConfig.exporters = {
|
|
663
|
+
otlp: {
|
|
664
|
+
endpoint: envVars.openTelemetryTracingEndpoint,
|
|
665
|
+
processor: envVars.openTelemetryTracingProcessor ??
|
|
666
|
+
OpenTelemetryProcessorTypes.Batch
|
|
667
|
+
}
|
|
668
|
+
};
|
|
616
669
|
}
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
tracerName: envVars.openTelemetryTracingTracerName,
|
|
622
|
-
tracerVersion: envVars.openTelemetryTracingTracerVersion
|
|
623
|
-
};
|
|
624
|
-
if (Is.stringValue(envVars.openTelemetryTracingEndpoint)) {
|
|
625
|
-
otelTracingConfig.exporters = {
|
|
626
|
-
otlp: {
|
|
627
|
-
endpoint: envVars.openTelemetryTracingEndpoint,
|
|
628
|
-
processor: envVars.openTelemetryTracingProcessor ??
|
|
629
|
-
OpenTelemetryProcessorTypes.Batch
|
|
670
|
+
coreConfig.types.tracingConnector.push({
|
|
671
|
+
type: TracingConnectorType.OpenTelemetry,
|
|
672
|
+
options: {
|
|
673
|
+
config: otelTracingConfig
|
|
630
674
|
}
|
|
631
|
-
};
|
|
675
|
+
});
|
|
676
|
+
additionalConnectorCount++;
|
|
632
677
|
}
|
|
678
|
+
}
|
|
679
|
+
// If more than one tracing connector, then we need to add a multi connector
|
|
680
|
+
// and set it as the default one
|
|
681
|
+
if (additionalConnectorCount > 1) {
|
|
633
682
|
coreConfig.types.tracingConnector.push({
|
|
634
|
-
type: TracingConnectorType.
|
|
683
|
+
type: TracingConnectorType.Multi,
|
|
635
684
|
options: {
|
|
636
|
-
|
|
637
|
-
}
|
|
685
|
+
tracingConnectorTypes
|
|
686
|
+
},
|
|
687
|
+
isDefault: true
|
|
638
688
|
});
|
|
639
689
|
}
|
|
640
|
-
if (
|
|
690
|
+
else if (additionalConnectorCount > 0) {
|
|
691
|
+
// If only one connector, then we set it as the default one
|
|
692
|
+
coreConfig.types.tracingConnector[coreConfig.types.tracingConnector.length - 1].isDefault =
|
|
693
|
+
true;
|
|
694
|
+
}
|
|
695
|
+
if (additionalConnectorCount > 0) {
|
|
641
696
|
coreConfig.types.tracingComponent ??= [];
|
|
642
697
|
coreConfig.types.tracingComponent.push({ type: TracingComponentType.Service });
|
|
643
698
|
}
|
|
@@ -684,7 +739,7 @@ async function configureHealth(coreConfig, envVars) {
|
|
|
684
739
|
initialInterval: envSecToMs(envVars, "healthStartupInterval")
|
|
685
740
|
}
|
|
686
741
|
},
|
|
687
|
-
|
|
742
|
+
cloneMode: EngineCloneMode.Never
|
|
688
743
|
});
|
|
689
744
|
}
|
|
690
745
|
}
|
|
@@ -700,7 +755,7 @@ async function configureSchemaMigration(coreConfig, envVars) {
|
|
|
700
755
|
coreConfig.types.schemaVersionMigrationComponent.push({
|
|
701
756
|
type: SchemaVersionMigrationComponentType.Service,
|
|
702
757
|
options: { config: { enabled: isSchemaMigrationEnabled } },
|
|
703
|
-
|
|
758
|
+
cloneMode: EngineCloneMode.Never
|
|
704
759
|
});
|
|
705
760
|
}
|
|
706
761
|
/**
|
|
@@ -718,7 +773,8 @@ async function configurePlatform(coreConfig, envVars) {
|
|
|
718
773
|
config: {
|
|
719
774
|
isMultiTenant: isTenantEnabled
|
|
720
775
|
}
|
|
721
|
-
}
|
|
776
|
+
},
|
|
777
|
+
cloneMode: EngineCloneMode.Always
|
|
722
778
|
});
|
|
723
779
|
}
|
|
724
780
|
/**
|
|
@@ -746,12 +802,14 @@ async function configureContextIdHandlers(coreConfig, envVars) {
|
|
|
746
802
|
coreConfig.types.contextIdHandlerComponent ??= [];
|
|
747
803
|
coreConfig.types.contextIdHandlerComponent.push({
|
|
748
804
|
type: ContextIdHandlerComponentType.Did,
|
|
749
|
-
features: [CONTEXT_ID_HANDLER_FEATURE_DID]
|
|
805
|
+
features: [CONTEXT_ID_HANDLER_FEATURE_DID],
|
|
806
|
+
cloneMode: EngineCloneMode.Always
|
|
750
807
|
});
|
|
751
808
|
if (envBoolean(envVars, "tenantEnabled", false)) {
|
|
752
809
|
coreConfig.types.contextIdHandlerComponent.push({
|
|
753
810
|
type: ContextIdHandlerComponentType.Tenant,
|
|
754
|
-
features: [CONTEXT_ID_HANDLER_FEATURE_TENANT]
|
|
811
|
+
features: [CONTEXT_ID_HANDLER_FEATURE_TENANT],
|
|
812
|
+
cloneMode: EngineCloneMode.Always
|
|
755
813
|
});
|
|
756
814
|
}
|
|
757
815
|
}
|
|
@@ -811,16 +869,6 @@ async function configureMessaging(coreConfig, envVars) {
|
|
|
811
869
|
});
|
|
812
870
|
}
|
|
813
871
|
else if (envVars.messagingPushNotificationConnector === MessagingPushNotificationConnectorType.Aws) {
|
|
814
|
-
let messagingApps;
|
|
815
|
-
if (Is.stringValue(envVars.awsMessagingPushNotificationApplications)) {
|
|
816
|
-
try {
|
|
817
|
-
messagingApps = JSON.parse(envVars.awsMessagingPushNotificationApplications);
|
|
818
|
-
}
|
|
819
|
-
catch { }
|
|
820
|
-
}
|
|
821
|
-
else if (Is.array(envVars.awsMessagingPushNotificationApplications)) {
|
|
822
|
-
messagingApps = envVars.awsMessagingPushNotificationApplications;
|
|
823
|
-
}
|
|
824
872
|
coreConfig.types.messagingPushNotificationConnector.push({
|
|
825
873
|
type: MessagingPushNotificationConnectorType.Aws,
|
|
826
874
|
options: {
|
|
@@ -830,7 +878,7 @@ async function configureMessaging(coreConfig, envVars) {
|
|
|
830
878
|
accessKeyId: envVars.awsSesAccessKeyId,
|
|
831
879
|
secretAccessKey: envVars.awsSesSecretAccessKey,
|
|
832
880
|
endpoint: envVars.awsSesEndpoint,
|
|
833
|
-
applicationsSettings:
|
|
881
|
+
applicationsSettings: envArray(envVars, "awsMessagingPushNotificationApplications", [])
|
|
834
882
|
}
|
|
835
883
|
}
|
|
836
884
|
});
|
|
@@ -1583,23 +1631,21 @@ export function isAutomationRequired(envVars) {
|
|
|
1583
1631
|
return isRightsManagementRequired(envVars);
|
|
1584
1632
|
}
|
|
1585
1633
|
/**
|
|
1586
|
-
* Checks if the telemetry subsystem is
|
|
1634
|
+
* Checks if the telemetry subsystem is enabled.
|
|
1587
1635
|
* Returns true when any component that depends on the telemetry subsystem is enabled.
|
|
1588
1636
|
* @param envVars The environment variables.
|
|
1589
1637
|
* @returns True if telemetry is enabled.
|
|
1590
1638
|
*/
|
|
1591
|
-
export function
|
|
1592
|
-
return (envVars.telemetryConnector === TelemetryConnectorType.EntityStorage ||
|
|
1593
|
-
envVars.telemetryConnector === TelemetryConnectorType.OpenTelemetry);
|
|
1639
|
+
export function isTelemetryEnabled(envVars) {
|
|
1640
|
+
return commaSeparatedListToArray(envVars.telemetryConnector).some(t => t === TelemetryConnectorType.EntityStorage || t === TelemetryConnectorType.OpenTelemetry);
|
|
1594
1641
|
}
|
|
1595
1642
|
/**
|
|
1596
|
-
* Checks if the tracing subsystem is
|
|
1643
|
+
* Checks if the tracing subsystem is enabled.
|
|
1597
1644
|
* Returns true when any component that depends on the tracing subsystem is enabled.
|
|
1598
1645
|
* @param envVars The environment variables.
|
|
1599
1646
|
* @returns True if tracing is enabled.
|
|
1600
1647
|
*/
|
|
1601
|
-
export function
|
|
1602
|
-
return (envVars.tracingConnector === TracingConnectorType.EntityStorage ||
|
|
1603
|
-
envVars.tracingConnector === TracingConnectorType.OpenTelemetry);
|
|
1648
|
+
export function isTracingEnabled(envVars) {
|
|
1649
|
+
return commaSeparatedListToArray(envVars.tracingConnector).some(t => t === TracingConnectorType.EntityStorage || t === TracingConnectorType.OpenTelemetry);
|
|
1604
1650
|
}
|
|
1605
1651
|
//# sourceMappingURL=engineEnvBuilder.js.map
|