@twin.org/engine-core 0.0.1-next.5 → 0.0.1-next.7
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/cjs/index.cjs +527 -0
- package/dist/esm/index.mjs +527 -2
- package/dist/types/index.d.ts +3 -0
- package/dist/types/models/IEngineCoreEnvironmentVariables.d.ts +265 -0
- package/dist/types/utils/engineCoreEnvBuilder.d.ts +8 -0
- package/dist/types/utils/envHelper.d.ts +15 -0
- package/docs/changelog.md +1 -1
- package/docs/reference/classes/EnvHelper.md +41 -0
- package/docs/reference/functions/buildEngineCoreConfiguration.md +17 -0
- package/docs/reference/index.md +3 -0
- package/docs/reference/interfaces/IEngineCoreEnvironmentVariables.md +523 -0
- package/package.json +2 -2
package/dist/cjs/index.cjs
CHANGED
|
@@ -1659,7 +1659,534 @@ class MemoryStateStorage {
|
|
|
1659
1659
|
}
|
|
1660
1660
|
}
|
|
1661
1661
|
|
|
1662
|
+
// Copyright 2024 IOTA Stiftung.
|
|
1663
|
+
// SPDX-License-Identifier: Apache-2.0.
|
|
1664
|
+
/**
|
|
1665
|
+
* Build the engine core configuration from environment variables.
|
|
1666
|
+
* @param envVars The environment variables.
|
|
1667
|
+
* @returns The config for the core.
|
|
1668
|
+
*/
|
|
1669
|
+
function buildEngineCoreConfiguration(envVars) {
|
|
1670
|
+
envVars.stateFilename ??= "engine-state.json";
|
|
1671
|
+
envVars.storageFileRoot = path.resolve(envVars.storageFileRoot);
|
|
1672
|
+
envVars.stateFilename = path.join(envVars.storageFileRoot, envVars.stateFilename);
|
|
1673
|
+
envVars.attestationAssertionMethodId ??= "attestation-assertion";
|
|
1674
|
+
envVars.immutableProofHashKeyId ??= "immutable-proof-hash";
|
|
1675
|
+
envVars.immutableProofAssertionMethodId ??= "immutable-proof-assertion";
|
|
1676
|
+
envVars.blobStorageEnableEncryption ??= "false";
|
|
1677
|
+
envVars.blobStorageEncryptionKey ??= "blob-encryption";
|
|
1678
|
+
const coreConfig = {
|
|
1679
|
+
debug: core.Coerce.boolean(envVars.debug) ?? false,
|
|
1680
|
+
loggingConnector: [],
|
|
1681
|
+
loggingComponent: [{ type: engineModels.LoggingComponentType.Service }],
|
|
1682
|
+
entityStorageConnector: [],
|
|
1683
|
+
blobStorageConnector: [],
|
|
1684
|
+
blobStorageComponent: [
|
|
1685
|
+
{
|
|
1686
|
+
type: engineModels.BlobStorageComponentType.Service,
|
|
1687
|
+
options: {
|
|
1688
|
+
config: {
|
|
1689
|
+
vaultKeyId: envVars.blobStorageEncryptionKey
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
],
|
|
1694
|
+
backgroundTaskConnector: [],
|
|
1695
|
+
telemetryConnector: [],
|
|
1696
|
+
telemetryComponent: [{ type: engineModels.TelemetryComponentType.Service }],
|
|
1697
|
+
vaultConnector: [],
|
|
1698
|
+
walletConnector: [],
|
|
1699
|
+
faucetConnector: [],
|
|
1700
|
+
immutableStorageConnector: [],
|
|
1701
|
+
nftConnector: [],
|
|
1702
|
+
nftComponent: [{ type: engineModels.NftComponentType.Service }],
|
|
1703
|
+
identityConnector: [],
|
|
1704
|
+
identityComponent: [{ type: engineModels.IdentityComponentType.Service }],
|
|
1705
|
+
identityProfileConnector: [],
|
|
1706
|
+
identityProfileComponent: [{ type: engineModels.IdentityProfileComponentType.Service }],
|
|
1707
|
+
immutableProofComponent: [
|
|
1708
|
+
{
|
|
1709
|
+
type: engineModels.ImmutableProofComponentType.Service,
|
|
1710
|
+
options: {
|
|
1711
|
+
config: {
|
|
1712
|
+
assertionMethodId: envVars.immutableProofAssertionMethodId,
|
|
1713
|
+
proofHashKeyId: envVars.immutableProofHashKeyId
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
],
|
|
1718
|
+
attestationConnector: [],
|
|
1719
|
+
attestationComponent: [
|
|
1720
|
+
{
|
|
1721
|
+
type: engineModels.AttestationComponentType.Service
|
|
1722
|
+
}
|
|
1723
|
+
],
|
|
1724
|
+
auditableItemGraphComponent: [{ type: engineModels.AuditableItemGraphComponentType.Service }],
|
|
1725
|
+
auditableItemStreamComponent: [{ type: engineModels.AuditableItemStreamComponentType.Service }]
|
|
1726
|
+
};
|
|
1727
|
+
configureEntityStorageConnectors(coreConfig, envVars);
|
|
1728
|
+
configureBlobStorageConnectors(coreConfig, envVars);
|
|
1729
|
+
configureVaultConnectors(coreConfig, envVars);
|
|
1730
|
+
configureLogging(coreConfig, envVars);
|
|
1731
|
+
configureBackgroundTaskConnectors(coreConfig, envVars);
|
|
1732
|
+
configureTelemetryConnectors(coreConfig, envVars);
|
|
1733
|
+
configureFaucetConnectors(coreConfig, envVars);
|
|
1734
|
+
configureWalletConnectors(coreConfig, envVars);
|
|
1735
|
+
configureNftConnectors(coreConfig, envVars);
|
|
1736
|
+
configureImmutableStorageConnectors(coreConfig, envVars);
|
|
1737
|
+
configureIdentityConnectors(coreConfig, envVars);
|
|
1738
|
+
configureIdentityProfileConnectors(coreConfig, envVars);
|
|
1739
|
+
configureAttestationConnectors(coreConfig, envVars);
|
|
1740
|
+
return coreConfig;
|
|
1741
|
+
}
|
|
1742
|
+
/**
|
|
1743
|
+
* Configures the entity storage connectors for the core.
|
|
1744
|
+
* @param coreConfig The core config.
|
|
1745
|
+
* @param envVars The environment variables.
|
|
1746
|
+
*/
|
|
1747
|
+
function configureEntityStorageConnectors(coreConfig, envVars) {
|
|
1748
|
+
coreConfig.entityStorageConnector ??= [];
|
|
1749
|
+
if ((core.Coerce.boolean(envVars.entityMemoryEnable) ?? false) ||
|
|
1750
|
+
envVars.blobStorageConnectorType === engineModels.EntityStorageConnectorType.Memory) {
|
|
1751
|
+
coreConfig.entityStorageConnector.push({
|
|
1752
|
+
type: engineModels.EntityStorageConnectorType.Memory
|
|
1753
|
+
});
|
|
1754
|
+
}
|
|
1755
|
+
if ((core.Coerce.boolean(envVars.entityFileEnable) ?? false) ||
|
|
1756
|
+
envVars.entityStorageConnectorType === engineModels.EntityStorageConnectorType.File) {
|
|
1757
|
+
coreConfig.entityStorageConnector.push({
|
|
1758
|
+
type: engineModels.EntityStorageConnectorType.File,
|
|
1759
|
+
options: { config: { directory: envVars.storageFileRoot } }
|
|
1760
|
+
});
|
|
1761
|
+
}
|
|
1762
|
+
if (core.Is.stringValue(envVars.awsDynamodbAccessKeyId)) {
|
|
1763
|
+
coreConfig.entityStorageConnector.push({
|
|
1764
|
+
type: engineModels.EntityStorageConnectorType.AwsDynamoDb,
|
|
1765
|
+
options: {
|
|
1766
|
+
config: {
|
|
1767
|
+
region: envVars.awsDynamodbRegion,
|
|
1768
|
+
accessKeyId: envVars.awsDynamodbAccessKeyId,
|
|
1769
|
+
secretAccessKey: envVars.awsDynamodbSecretAccessKey,
|
|
1770
|
+
endpoint: envVars.awsDynamodbEndpoint
|
|
1771
|
+
},
|
|
1772
|
+
tablePrefix: envVars.entityStorageTablePrefix
|
|
1773
|
+
}
|
|
1774
|
+
});
|
|
1775
|
+
}
|
|
1776
|
+
if (core.Is.stringValue(envVars.azureCosmosdbKey)) {
|
|
1777
|
+
coreConfig.entityStorageConnector.push({
|
|
1778
|
+
type: engineModels.EntityStorageConnectorType.AzureCosmosDb,
|
|
1779
|
+
options: {
|
|
1780
|
+
config: {
|
|
1781
|
+
endpoint: envVars.azureCosmosdbEndpoint,
|
|
1782
|
+
key: envVars.azureCosmosdbKey,
|
|
1783
|
+
databaseId: envVars.azureCosmosdbDatabaseId,
|
|
1784
|
+
containerId: envVars.azureCosmosdbContainerId
|
|
1785
|
+
},
|
|
1786
|
+
tablePrefix: envVars.entityStorageTablePrefix
|
|
1787
|
+
}
|
|
1788
|
+
});
|
|
1789
|
+
}
|
|
1790
|
+
if (core.Is.stringValue(envVars.gcpFirestoreCredentials)) {
|
|
1791
|
+
coreConfig.entityStorageConnector.push({
|
|
1792
|
+
type: engineModels.EntityStorageConnectorType.GcpFirestoreDb,
|
|
1793
|
+
options: {
|
|
1794
|
+
config: {
|
|
1795
|
+
projectId: envVars.gcpFirestoreProjectId,
|
|
1796
|
+
credentials: envVars.gcpFirestoreCredentials,
|
|
1797
|
+
databaseId: envVars.gcpFirestoreDatabaseId,
|
|
1798
|
+
collectionName: envVars.gcpFirestoreCollectionName,
|
|
1799
|
+
endpoint: envVars.gcpFirestoreApiEndpoint
|
|
1800
|
+
},
|
|
1801
|
+
tablePrefix: envVars.entityStorageTablePrefix
|
|
1802
|
+
}
|
|
1803
|
+
});
|
|
1804
|
+
}
|
|
1805
|
+
if (core.Is.stringValue(envVars.scylladbHosts)) {
|
|
1806
|
+
coreConfig.entityStorageConnector.push({
|
|
1807
|
+
type: engineModels.EntityStorageConnectorType.ScyllaDb,
|
|
1808
|
+
options: {
|
|
1809
|
+
config: {
|
|
1810
|
+
hosts: envVars.scylladbHosts.split(","),
|
|
1811
|
+
localDataCenter: envVars.scylladbLocalDataCenter,
|
|
1812
|
+
keyspace: envVars.scylladbKeyspace
|
|
1813
|
+
},
|
|
1814
|
+
tablePrefix: envVars.entityStorageTablePrefix
|
|
1815
|
+
}
|
|
1816
|
+
});
|
|
1817
|
+
}
|
|
1818
|
+
const defaultStorageConnector = envVars.entityStorageConnectorType;
|
|
1819
|
+
if (core.Is.stringValue(defaultStorageConnector)) {
|
|
1820
|
+
for (const config of coreConfig.entityStorageConnector) {
|
|
1821
|
+
if (config.type === defaultStorageConnector) {
|
|
1822
|
+
config.isDefault = true;
|
|
1823
|
+
}
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
/**
|
|
1828
|
+
* Configures the blob storage connectors for the core.
|
|
1829
|
+
* @param coreConfig The core config.
|
|
1830
|
+
* @param envVars The environment variables.
|
|
1831
|
+
*/
|
|
1832
|
+
function configureBlobStorageConnectors(coreConfig, envVars) {
|
|
1833
|
+
coreConfig.blobStorageConnector ??= [];
|
|
1834
|
+
if ((core.Coerce.boolean(envVars.blobMemoryEnable) ?? false) ||
|
|
1835
|
+
envVars.blobStorageConnectorType === engineModels.BlobStorageConnectorType.Memory) {
|
|
1836
|
+
coreConfig.blobStorageConnector.push({
|
|
1837
|
+
type: engineModels.BlobStorageConnectorType.Memory
|
|
1838
|
+
});
|
|
1839
|
+
}
|
|
1840
|
+
if ((core.Coerce.boolean(envVars.blobFileEnable) ?? false) ||
|
|
1841
|
+
envVars.blobStorageConnectorType === engineModels.BlobStorageConnectorType.File) {
|
|
1842
|
+
coreConfig.blobStorageConnector.push({
|
|
1843
|
+
type: engineModels.BlobStorageConnectorType.File,
|
|
1844
|
+
options: {
|
|
1845
|
+
config: { directory: envVars.storageFileRoot },
|
|
1846
|
+
storagePrefix: envVars.blobStoragePrefix
|
|
1847
|
+
}
|
|
1848
|
+
});
|
|
1849
|
+
}
|
|
1850
|
+
if (core.Is.stringValue(envVars.ipfsApiUrl)) {
|
|
1851
|
+
coreConfig.blobStorageConnector.push({
|
|
1852
|
+
type: engineModels.BlobStorageConnectorType.Ipfs,
|
|
1853
|
+
options: {
|
|
1854
|
+
config: {
|
|
1855
|
+
apiUrl: envVars.ipfsApiUrl,
|
|
1856
|
+
bearerToken: envVars.ipfsBearerToken
|
|
1857
|
+
}
|
|
1858
|
+
}
|
|
1859
|
+
});
|
|
1860
|
+
}
|
|
1861
|
+
if (core.Is.stringValue(envVars.awsS3AccessKeyId)) {
|
|
1862
|
+
coreConfig.blobStorageConnector.push({
|
|
1863
|
+
type: engineModels.BlobStorageConnectorType.AwsS3,
|
|
1864
|
+
options: {
|
|
1865
|
+
config: {
|
|
1866
|
+
region: envVars.awsS3Region,
|
|
1867
|
+
bucketName: envVars.awsS3BucketName,
|
|
1868
|
+
accessKeyId: envVars.awsS3AccessKeyId,
|
|
1869
|
+
secretAccessKey: envVars.awsS3SecretAccessKey,
|
|
1870
|
+
endpoint: envVars.awsS3Endpoint
|
|
1871
|
+
},
|
|
1872
|
+
storagePrefix: envVars.blobStoragePrefix
|
|
1873
|
+
}
|
|
1874
|
+
});
|
|
1875
|
+
}
|
|
1876
|
+
if (core.Is.stringValue(envVars.azureStorageAccountKey)) {
|
|
1877
|
+
coreConfig.blobStorageConnector.push({
|
|
1878
|
+
type: engineModels.BlobStorageConnectorType.AzureStorage,
|
|
1879
|
+
options: {
|
|
1880
|
+
config: {
|
|
1881
|
+
accountName: envVars.azureStorageAccountName,
|
|
1882
|
+
accountKey: envVars.azureStorageAccountKey,
|
|
1883
|
+
containerName: envVars.azureStorageContainerName,
|
|
1884
|
+
endpoint: envVars.azureStorageEndpoint
|
|
1885
|
+
},
|
|
1886
|
+
storagePrefix: envVars.blobStoragePrefix
|
|
1887
|
+
}
|
|
1888
|
+
});
|
|
1889
|
+
}
|
|
1890
|
+
if (core.Is.stringValue(envVars.gcpStorageCredentials)) {
|
|
1891
|
+
coreConfig.blobStorageConnector.push({
|
|
1892
|
+
type: engineModels.BlobStorageConnectorType.GcpStorage,
|
|
1893
|
+
options: {
|
|
1894
|
+
config: {
|
|
1895
|
+
projectId: envVars.gcpStorageProjectId,
|
|
1896
|
+
credentials: envVars.gcpStorageCredentials,
|
|
1897
|
+
bucketName: envVars.gcpStorageBucketName,
|
|
1898
|
+
apiEndpoint: envVars.gcpFirestoreApiEndpoint
|
|
1899
|
+
},
|
|
1900
|
+
storagePrefix: envVars.blobStoragePrefix
|
|
1901
|
+
}
|
|
1902
|
+
});
|
|
1903
|
+
}
|
|
1904
|
+
const defaultStorageConnectorType = envVars.blobStorageConnectorType;
|
|
1905
|
+
if (core.Is.stringValue(defaultStorageConnectorType)) {
|
|
1906
|
+
for (const config of coreConfig.blobStorageConnector) {
|
|
1907
|
+
if (config.type === defaultStorageConnectorType) {
|
|
1908
|
+
config.isDefault = true;
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
}
|
|
1913
|
+
/**
|
|
1914
|
+
* Configures the logging connectors for the core.
|
|
1915
|
+
* @param coreConfig The core config.
|
|
1916
|
+
* @param envVars The environment variables.
|
|
1917
|
+
*/
|
|
1918
|
+
function configureLogging(coreConfig, envVars) {
|
|
1919
|
+
const loggingConnectors = (envVars.loggingConnector ?? "").split(",");
|
|
1920
|
+
for (const loggingConnector of loggingConnectors) {
|
|
1921
|
+
if (loggingConnector === engineModels.LoggingConnectorType.Console) {
|
|
1922
|
+
coreConfig.loggingConnector?.push({
|
|
1923
|
+
type: engineModels.LoggingConnectorType.Console,
|
|
1924
|
+
options: {
|
|
1925
|
+
config: {
|
|
1926
|
+
translateMessages: true,
|
|
1927
|
+
hideGroups: true
|
|
1928
|
+
}
|
|
1929
|
+
}
|
|
1930
|
+
});
|
|
1931
|
+
}
|
|
1932
|
+
else if (loggingConnector === engineModels.LoggingConnectorType.EntityStorage) {
|
|
1933
|
+
coreConfig.loggingConnector?.push({
|
|
1934
|
+
type: engineModels.LoggingConnectorType.EntityStorage
|
|
1935
|
+
});
|
|
1936
|
+
}
|
|
1937
|
+
}
|
|
1938
|
+
if (loggingConnectors.length > 1) {
|
|
1939
|
+
coreConfig.loggingConnector?.push({
|
|
1940
|
+
type: engineModels.LoggingConnectorType.Multi,
|
|
1941
|
+
isDefault: true,
|
|
1942
|
+
options: {
|
|
1943
|
+
loggingConnectorTypes: loggingConnectors
|
|
1944
|
+
}
|
|
1945
|
+
});
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
/**
|
|
1949
|
+
* Configures the vault connectors for the core.
|
|
1950
|
+
* @param coreConfig The core config.
|
|
1951
|
+
* @param envVars The environment variables.
|
|
1952
|
+
*/
|
|
1953
|
+
function configureVaultConnectors(coreConfig, envVars) {
|
|
1954
|
+
coreConfig.vaultConnector ??= [];
|
|
1955
|
+
if (envVars.vaultConnector === engineModels.VaultConnectorType.EntityStorage) {
|
|
1956
|
+
coreConfig.vaultConnector.push({
|
|
1957
|
+
type: engineModels.VaultConnectorType.EntityStorage
|
|
1958
|
+
});
|
|
1959
|
+
}
|
|
1960
|
+
else if (envVars.vaultConnector === engineModels.VaultConnectorType.Hashicorp) {
|
|
1961
|
+
coreConfig.vaultConnector.push({
|
|
1962
|
+
type: engineModels.VaultConnectorType.Hashicorp,
|
|
1963
|
+
options: {
|
|
1964
|
+
config: { endpoint: envVars.hashicorpVaultEndpoint, token: envVars.hashicorpVaultToken }
|
|
1965
|
+
}
|
|
1966
|
+
});
|
|
1967
|
+
}
|
|
1968
|
+
}
|
|
1969
|
+
/**
|
|
1970
|
+
* Configures the background task connectors for the core.
|
|
1971
|
+
* @param coreConfig The core config.
|
|
1972
|
+
* @param envVars The environment variables.
|
|
1973
|
+
*/
|
|
1974
|
+
function configureBackgroundTaskConnectors(coreConfig, envVars) {
|
|
1975
|
+
coreConfig.backgroundTaskConnector ??= [];
|
|
1976
|
+
if (envVars.backgroundTaskConnector === engineModels.BackgroundTaskConnectorType.EntityStorage) {
|
|
1977
|
+
coreConfig.backgroundTaskConnector.push({
|
|
1978
|
+
type: engineModels.BackgroundTaskConnectorType.EntityStorage
|
|
1979
|
+
});
|
|
1980
|
+
}
|
|
1981
|
+
}
|
|
1982
|
+
/**
|
|
1983
|
+
* Configures the telemetry connectors for the core.
|
|
1984
|
+
* @param coreConfig The core config.
|
|
1985
|
+
* @param envVars The environment variables.
|
|
1986
|
+
*/
|
|
1987
|
+
function configureTelemetryConnectors(coreConfig, envVars) {
|
|
1988
|
+
coreConfig.telemetryConnector ??= [];
|
|
1989
|
+
if (envVars.telemetryConnector === engineModels.TelemetryConnectorType.EntityStorage) {
|
|
1990
|
+
coreConfig.telemetryConnector.push({
|
|
1991
|
+
type: engineModels.TelemetryConnectorType.EntityStorage
|
|
1992
|
+
});
|
|
1993
|
+
}
|
|
1994
|
+
}
|
|
1995
|
+
/**
|
|
1996
|
+
* Configures the faucet connectors for the core.
|
|
1997
|
+
* @param coreConfig The core config.
|
|
1998
|
+
* @param envVars The environment variables.
|
|
1999
|
+
*/
|
|
2000
|
+
function configureFaucetConnectors(coreConfig, envVars) {
|
|
2001
|
+
coreConfig.faucetConnector ??= [];
|
|
2002
|
+
if (envVars.faucetConnector === engineModels.FaucetConnectorType.EntityStorage) {
|
|
2003
|
+
coreConfig.faucetConnector.push({
|
|
2004
|
+
type: engineModels.FaucetConnectorType.EntityStorage
|
|
2005
|
+
});
|
|
2006
|
+
}
|
|
2007
|
+
else if (envVars.faucetConnector === engineModels.FaucetConnectorType.Iota) {
|
|
2008
|
+
coreConfig.faucetConnector.push({
|
|
2009
|
+
type: engineModels.FaucetConnectorType.Iota,
|
|
2010
|
+
options: {
|
|
2011
|
+
config: {
|
|
2012
|
+
endpoint: envVars.iotaFaucetEndpoint,
|
|
2013
|
+
clientOptions: {
|
|
2014
|
+
nodes: [envVars.iotaNodeEndpoint]
|
|
2015
|
+
},
|
|
2016
|
+
bech32Hrp: envVars.iotaBech32Hrp,
|
|
2017
|
+
coinType: core.Coerce.number(envVars.iotaCoinType)
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
2020
|
+
});
|
|
2021
|
+
}
|
|
2022
|
+
}
|
|
2023
|
+
/**
|
|
2024
|
+
* Configures the wallet connectors for the core.
|
|
2025
|
+
* @param coreConfig The core config.
|
|
2026
|
+
* @param envVars The environment variables.
|
|
2027
|
+
*/
|
|
2028
|
+
function configureWalletConnectors(coreConfig, envVars) {
|
|
2029
|
+
coreConfig.walletConnector ??= [];
|
|
2030
|
+
if (envVars.walletConnector === engineModels.WalletConnectorType.EntityStorage) {
|
|
2031
|
+
coreConfig.walletConnector.push({
|
|
2032
|
+
type: engineModels.WalletConnectorType.EntityStorage
|
|
2033
|
+
});
|
|
2034
|
+
}
|
|
2035
|
+
else if (envVars.walletConnector === engineModels.WalletConnectorType.Iota) {
|
|
2036
|
+
coreConfig.walletConnector.push({
|
|
2037
|
+
type: engineModels.WalletConnectorType.Iota,
|
|
2038
|
+
options: {
|
|
2039
|
+
config: {
|
|
2040
|
+
clientOptions: {
|
|
2041
|
+
nodes: [envVars.iotaNodeEndpoint]
|
|
2042
|
+
},
|
|
2043
|
+
bech32Hrp: envVars.iotaBech32Hrp,
|
|
2044
|
+
coinType: core.Coerce.number(envVars.iotaCoinType)
|
|
2045
|
+
}
|
|
2046
|
+
}
|
|
2047
|
+
});
|
|
2048
|
+
}
|
|
2049
|
+
}
|
|
2050
|
+
/**
|
|
2051
|
+
* Configures the NFT connectors for the core.
|
|
2052
|
+
* @param coreConfig The core config.
|
|
2053
|
+
* @param envVars The environment variables.
|
|
2054
|
+
*/
|
|
2055
|
+
function configureNftConnectors(coreConfig, envVars) {
|
|
2056
|
+
coreConfig.nftConnector ??= [];
|
|
2057
|
+
if (envVars.nftConnector === engineModels.NftConnectorType.EntityStorage) {
|
|
2058
|
+
coreConfig.nftConnector.push({
|
|
2059
|
+
type: engineModels.NftConnectorType.EntityStorage
|
|
2060
|
+
});
|
|
2061
|
+
}
|
|
2062
|
+
else if (envVars.nftConnector === engineModels.NftConnectorType.Iota) {
|
|
2063
|
+
coreConfig.nftConnector.push({
|
|
2064
|
+
type: engineModels.NftConnectorType.Iota,
|
|
2065
|
+
options: {
|
|
2066
|
+
config: {
|
|
2067
|
+
clientOptions: {
|
|
2068
|
+
nodes: [envVars.iotaNodeEndpoint]
|
|
2069
|
+
},
|
|
2070
|
+
bech32Hrp: envVars.iotaBech32Hrp,
|
|
2071
|
+
coinType: core.Coerce.number(envVars.iotaCoinType)
|
|
2072
|
+
}
|
|
2073
|
+
}
|
|
2074
|
+
});
|
|
2075
|
+
}
|
|
2076
|
+
}
|
|
2077
|
+
/**
|
|
2078
|
+
* Configures the immutable storage connectors for the core.
|
|
2079
|
+
* @param coreConfig The core config.
|
|
2080
|
+
* @param envVars The environment variables.
|
|
2081
|
+
*/
|
|
2082
|
+
function configureImmutableStorageConnectors(coreConfig, envVars) {
|
|
2083
|
+
coreConfig.immutableStorageConnector ??= [];
|
|
2084
|
+
if (envVars.immutableStorageConnector === engineModels.ImmutableStorageConnectorType.EntityStorage) {
|
|
2085
|
+
coreConfig.immutableStorageConnector.push({
|
|
2086
|
+
type: engineModels.ImmutableStorageConnectorType.EntityStorage
|
|
2087
|
+
});
|
|
2088
|
+
}
|
|
2089
|
+
else if (envVars.immutableStorageConnector === engineModels.ImmutableStorageConnectorType.Iota) {
|
|
2090
|
+
coreConfig.immutableStorageConnector.push({
|
|
2091
|
+
type: engineModels.ImmutableStorageConnectorType.Iota,
|
|
2092
|
+
options: {
|
|
2093
|
+
config: {
|
|
2094
|
+
clientOptions: {
|
|
2095
|
+
nodes: [envVars.iotaNodeEndpoint]
|
|
2096
|
+
},
|
|
2097
|
+
bech32Hrp: envVars.iotaBech32Hrp,
|
|
2098
|
+
coinType: core.Coerce.number(envVars.iotaCoinType)
|
|
2099
|
+
}
|
|
2100
|
+
}
|
|
2101
|
+
});
|
|
2102
|
+
}
|
|
2103
|
+
}
|
|
2104
|
+
/**
|
|
2105
|
+
* Configures the identity connectors for the core.
|
|
2106
|
+
* @param coreConfig The core config.
|
|
2107
|
+
* @param envVars The environment variables.
|
|
2108
|
+
*/
|
|
2109
|
+
function configureIdentityConnectors(coreConfig, envVars) {
|
|
2110
|
+
coreConfig.identityConnector ??= [];
|
|
2111
|
+
if (envVars.identityConnector === engineModels.IdentityConnectorType.EntityStorage) {
|
|
2112
|
+
coreConfig.identityConnector.push({
|
|
2113
|
+
type: engineModels.IdentityConnectorType.EntityStorage
|
|
2114
|
+
});
|
|
2115
|
+
}
|
|
2116
|
+
else if (envVars.identityConnector === engineModels.IdentityConnectorType.Iota) {
|
|
2117
|
+
coreConfig.identityConnector.push({
|
|
2118
|
+
type: engineModels.IdentityConnectorType.Iota,
|
|
2119
|
+
options: {
|
|
2120
|
+
config: {
|
|
2121
|
+
clientOptions: {
|
|
2122
|
+
nodes: [envVars.iotaNodeEndpoint]
|
|
2123
|
+
},
|
|
2124
|
+
bech32Hrp: envVars.iotaBech32Hrp,
|
|
2125
|
+
coinType: core.Coerce.number(envVars.iotaCoinType)
|
|
2126
|
+
}
|
|
2127
|
+
}
|
|
2128
|
+
});
|
|
2129
|
+
}
|
|
2130
|
+
}
|
|
2131
|
+
/**
|
|
2132
|
+
* Configures the identity profile connectors for the core.
|
|
2133
|
+
* @param coreConfig The core config.
|
|
2134
|
+
* @param envVars The environment variables.
|
|
2135
|
+
*/
|
|
2136
|
+
function configureIdentityProfileConnectors(coreConfig, envVars) {
|
|
2137
|
+
coreConfig.identityProfileConnector ??= [];
|
|
2138
|
+
if (envVars.identityProfileConnector === engineModels.IdentityConnectorType.EntityStorage) {
|
|
2139
|
+
coreConfig.identityProfileConnector.push({
|
|
2140
|
+
type: engineModels.IdentityProfileConnectorType.EntityStorage
|
|
2141
|
+
});
|
|
2142
|
+
}
|
|
2143
|
+
}
|
|
2144
|
+
/**
|
|
2145
|
+
* Configures the attestation connectors for the core.
|
|
2146
|
+
* @param coreConfig The core config.
|
|
2147
|
+
* @param envVars The environment variables.
|
|
2148
|
+
*/
|
|
2149
|
+
function configureAttestationConnectors(coreConfig, envVars) {
|
|
2150
|
+
coreConfig.attestationConnector ??= [];
|
|
2151
|
+
if (envVars.attestationConnector === engineModels.AttestationConnectorType.EntityStorage) {
|
|
2152
|
+
coreConfig.attestationConnector.push({
|
|
2153
|
+
type: engineModels.AttestationConnectorType.EntityStorage
|
|
2154
|
+
});
|
|
2155
|
+
}
|
|
2156
|
+
else if (envVars.attestationConnector === engineModels.AttestationConnectorType.Iota) {
|
|
2157
|
+
coreConfig.attestationConnector.push({
|
|
2158
|
+
type: engineModels.AttestationConnectorType.Iota
|
|
2159
|
+
});
|
|
2160
|
+
}
|
|
2161
|
+
}
|
|
2162
|
+
|
|
2163
|
+
// Copyright 2024 IOTA Stiftung.
|
|
2164
|
+
// SPDX-License-Identifier: Apache-2.0.
|
|
2165
|
+
/**
|
|
2166
|
+
* Environment variable helper.
|
|
2167
|
+
*/
|
|
2168
|
+
class EnvHelper {
|
|
2169
|
+
/**
|
|
2170
|
+
* Get the environment variable as an object with camel cased names.
|
|
2171
|
+
* @param envVars The environment variables.
|
|
2172
|
+
* @param prefix The prefix of the environment variables.
|
|
2173
|
+
* @returns The object with camel cased names.
|
|
2174
|
+
*/
|
|
2175
|
+
static envToJson(envVars, prefix) {
|
|
2176
|
+
const result = {};
|
|
2177
|
+
for (const envVar in envVars) {
|
|
2178
|
+
if (envVar.startsWith(prefix) && core.Is.stringValue(process.env[envVar])) {
|
|
2179
|
+
const camelCaseName = core.StringHelper.camelCase(envVar.replace(prefix, "").toLowerCase());
|
|
2180
|
+
core.ObjectHelper.propertySet(result, camelCaseName, process.env[envVar]);
|
|
2181
|
+
}
|
|
2182
|
+
}
|
|
2183
|
+
return result;
|
|
2184
|
+
}
|
|
2185
|
+
}
|
|
2186
|
+
|
|
1662
2187
|
exports.EngineCore = EngineCore;
|
|
2188
|
+
exports.EnvHelper = EnvHelper;
|
|
1663
2189
|
exports.FileStateStorage = FileStateStorage;
|
|
1664
2190
|
exports.MemoryStateStorage = MemoryStateStorage;
|
|
2191
|
+
exports.buildEngineCoreConfiguration = buildEngineCoreConfiguration;
|
|
1665
2192
|
exports.initialiseEntityStorageConnector = initialiseEntityStorageConnector;
|