@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.
@@ -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;