@twin.org/node-core 0.0.2-next.4 → 0.0.2-next.6

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.
@@ -485,8 +485,7 @@ async function bootstrapSynchronisedStorage(engineCore, context, envVars, featur
485
485
  await addVerificationMethod(engineCore, context, "synchronised storage", envVars.synchronisedStorageVerificationMethodId);
486
486
  // If this is a trusted node we need to add the blob encryption key pair
487
487
  if (core.Is.stringValue(envVars.synchronisedStorageBlobStorageEncryptionKeyId) &&
488
- core.Is.stringBase64(envVars.synchronisedStorageBlobStoragePrivateKey) &&
489
- core.Is.stringBase64(envVars.synchronisedStorageBlobStoragePublicKey)) {
488
+ core.Is.stringBase64(envVars.synchronisedStorageBlobStorageKey)) {
490
489
  const defaultVaultConnectorType = engineCore.getRegisteredInstanceType("vaultConnector");
491
490
  const vaultConnector = vaultModels.VaultConnectorFactory.get(defaultVaultConnectorType);
492
491
  const keyName = envVars.synchronisedStorageBlobStorageEncryptionKeyId;
@@ -497,7 +496,7 @@ async function bootstrapSynchronisedStorage(engineCore, context, envVars, featur
497
496
  catch { }
498
497
  if (core.Is.empty(existingKey)) {
499
498
  engineCore.logInfo(core.I18n.formatMessage("node.addingSynchronisedStorageBlobEncryptionKey", { keyName }));
500
- await vaultConnector.addKey(keyName, vaultModels.VaultKeyType.Rsa2048, core.Converter.base64ToBytes(envVars.synchronisedStorageBlobStoragePrivateKey), core.Converter.base64ToBytes(envVars.synchronisedStorageBlobStoragePublicKey));
499
+ await vaultConnector.addKey(keyName, vaultModels.VaultKeyType.ChaCha20Poly1305, core.Converter.base64ToBytes(envVars.synchronisedStorageBlobStorageKey));
501
500
  }
502
501
  else {
503
502
  engineCore.logInfo(core.I18n.formatMessage("node.existingSynchronisedStorageBlobEncryptionKey", { keyName }));
@@ -1355,6 +1354,26 @@ function configureRightsManagement(coreConfig, envVars) {
1355
1354
  coreConfig.types.rightsManagementPapComponent.push({
1356
1355
  type: engineTypes.RightsManagementPapComponentType.Service
1357
1356
  });
1357
+ coreConfig.types.rightsManagementPmpComponent ??= [];
1358
+ coreConfig.types.rightsManagementPmpComponent.push({
1359
+ type: engineTypes.RightsManagementPmpComponentType.Service
1360
+ });
1361
+ coreConfig.types.rightsManagementPipComponent ??= [];
1362
+ coreConfig.types.rightsManagementPipComponent.push({
1363
+ type: engineTypes.RightsManagementPipComponentType.Service
1364
+ });
1365
+ coreConfig.types.rightsManagementPxpComponent ??= [];
1366
+ coreConfig.types.rightsManagementPxpComponent.push({
1367
+ type: engineTypes.RightsManagementPxpComponentType.Service
1368
+ });
1369
+ coreConfig.types.rightsManagementPdpComponent ??= [];
1370
+ coreConfig.types.rightsManagementPdpComponent.push({
1371
+ type: engineTypes.RightsManagementPdpComponentType.Service
1372
+ });
1373
+ coreConfig.types.rightsManagementPepComponent ??= [];
1374
+ coreConfig.types.rightsManagementPepComponent.push({
1375
+ type: engineTypes.RightsManagementPepComponentType.Service
1376
+ });
1358
1377
  coreConfig.types.rightsManagementComponent ??= [];
1359
1378
  coreConfig.types.rightsManagementComponent.push({
1360
1379
  type: engineTypes.RightsManagementComponentType.Service
@@ -1476,9 +1495,10 @@ function configureDlt(coreConfig, envVars) {
1476
1495
  * @param coreEngineConfig The core engine config.
1477
1496
  * @param serverInfo The server information.
1478
1497
  * @param openApiSpecPath The path to the open api spec.
1498
+ * @param favIconPath The path to the favicon.
1479
1499
  * @returns The the config for the core and the server.
1480
1500
  */
1481
- function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, openApiSpecPath) {
1501
+ function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, openApiSpecPath, favIconPath) {
1482
1502
  envVars.authSigningKeyId ??= "auth-signing";
1483
1503
  const webServerOptions = {
1484
1504
  port: core.Coerce.number(envVars.port),
@@ -1505,7 +1525,8 @@ function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, o
1505
1525
  options: {
1506
1526
  config: {
1507
1527
  serverInfo,
1508
- openApiSpecPath
1528
+ openApiSpecPath,
1529
+ favIconPath
1509
1530
  }
1510
1531
  }
1511
1532
  }
@@ -1678,7 +1699,7 @@ async function run(nodeOptions) {
1678
1699
  nodeOptions ??= {};
1679
1700
  const serverInfo = {
1680
1701
  name: nodeOptions?.serverName ?? "TWIN Node Server",
1681
- version: nodeOptions?.serverVersion ?? "0.0.2-next.4" // x-release-please-version
1702
+ version: nodeOptions?.serverVersion ?? "0.0.2-next.6" // x-release-please-version
1682
1703
  };
1683
1704
  console.log(`\u001B[4m🌩️ ${serverInfo.name} v${serverInfo.version}\u001B[24m\n`);
1684
1705
  if (!core.Is.stringValue(nodeOptions?.executionDirectory)) {
@@ -1691,13 +1712,21 @@ async function run(nodeOptions) {
1691
1712
  console.info("Locales Directory:", nodeOptions.localesDirectory);
1692
1713
  await initialiseLocales(nodeOptions.localesDirectory);
1693
1714
  if (core.Is.empty(nodeOptions?.openApiSpecFile)) {
1694
- const specFile = path.resolve(path.join(nodeOptions.executionDirectory, "docs", "open-api", "spec.json"));
1715
+ const specFile = path.resolve(path.join(nodeOptions.executionDirectory ?? "", "docs", "open-api", "spec.json"));
1695
1716
  console.info("Default OpenAPI Spec File:", specFile);
1696
1717
  if (await fileExists(specFile)) {
1697
1718
  nodeOptions ??= {};
1698
1719
  nodeOptions.openApiSpecFile = specFile;
1699
1720
  }
1700
1721
  }
1722
+ if (core.Is.empty(nodeOptions?.favIconFile)) {
1723
+ const favIconFile = path.resolve(path.join(nodeOptions.executionDirectory ?? "", "static", "favicon.png"));
1724
+ console.info("Default Favicon File:", favIconFile);
1725
+ if (await fileExists(favIconFile)) {
1726
+ nodeOptions ??= {};
1727
+ nodeOptions.favIconFile = favIconFile;
1728
+ }
1729
+ }
1701
1730
  nodeOptions.envPrefix ??= "TWIN_NODE_";
1702
1731
  console.info("Environment Prefix:", nodeOptions.envPrefix);
1703
1732
  const { engineServerConfig, nodeEnvVars: envVars } = await buildConfiguration(process.env, nodeOptions, serverInfo);
@@ -1767,7 +1796,7 @@ async function buildConfiguration(processEnv, options, serverInfo) {
1767
1796
  }
1768
1797
  // Build the engine configuration from the environment variables.
1769
1798
  const coreConfig = buildEngineConfiguration(envVars);
1770
- const engineServerConfig = buildEngineServerConfiguration(envVars, coreConfig, serverInfo, options?.openApiSpecFile);
1799
+ const engineServerConfig = buildEngineServerConfiguration(envVars, coreConfig, serverInfo, options?.openApiSpecFile, options?.favIconFile);
1771
1800
  // Merge any custom configuration provided in the options.
1772
1801
  if (core.Is.arrayValue(options?.configFilenames)) {
1773
1802
  for (const configFile of options.configFilenames) {
@@ -2,7 +2,7 @@ import { PasswordHelper } from '@twin.org/api-auth-entity-storage-service';
2
2
  import { I18n, Is, Converter, RandomHelper, StringHelper, Coerce, Urn, GeneralError, ErrorHelper, EnvHelper } from '@twin.org/core';
3
3
  import { PasswordGenerator, Bip39 } from '@twin.org/crypto';
4
4
  import { AuthenticationComponentType, InformationComponentType, RestRouteProcessorType, SocketRouteProcessorType, AuthenticationAdminComponentType } from '@twin.org/engine-server-types';
5
- import { WalletConnectorType, IdentityConnectorType, EntityStorageConnectorType, BlobStorageConnectorType, BlobStorageComponentType, VaultConnectorType, DltConfigType, LoggingConnectorType, LoggingComponentType, BackgroundTaskConnectorType, EventBusConnectorType, EventBusComponentType, TelemetryConnectorType, TelemetryComponentType, MessagingEmailConnectorType, MessagingSmsConnectorType, MessagingPushNotificationConnectorType, MessagingComponentType, FaucetConnectorType, NftConnectorType, NftComponentType, VerifiableStorageConnectorType, VerifiableStorageComponentType, ImmutableProofComponentType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, IdentityComponentType, IdentityResolverConnectorType, IdentityResolverComponentType, IdentityProfileConnectorType, IdentityProfileComponentType, AttestationConnectorType, AttestationComponentType, DataConverterConnectorType, DataExtractorConnectorType, DataProcessingComponentType, DocumentManagementComponentType, RightsManagementPapComponentType, RightsManagementComponentType, TaskSchedulerComponentType, SynchronisedStorageComponentType, FederatedCatalogueComponentType } from '@twin.org/engine-types';
5
+ import { WalletConnectorType, IdentityConnectorType, EntityStorageConnectorType, BlobStorageConnectorType, BlobStorageComponentType, VaultConnectorType, DltConfigType, LoggingConnectorType, LoggingComponentType, BackgroundTaskConnectorType, EventBusConnectorType, EventBusComponentType, TelemetryConnectorType, TelemetryComponentType, MessagingEmailConnectorType, MessagingSmsConnectorType, MessagingPushNotificationConnectorType, MessagingComponentType, FaucetConnectorType, NftConnectorType, NftComponentType, VerifiableStorageConnectorType, VerifiableStorageComponentType, ImmutableProofComponentType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, IdentityComponentType, IdentityResolverConnectorType, IdentityResolverComponentType, IdentityProfileConnectorType, IdentityProfileComponentType, AttestationConnectorType, AttestationComponentType, DataConverterConnectorType, DataExtractorConnectorType, DataProcessingComponentType, DocumentManagementComponentType, RightsManagementPapComponentType, RightsManagementPmpComponentType, RightsManagementPipComponentType, RightsManagementPxpComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementComponentType, TaskSchedulerComponentType, SynchronisedStorageComponentType, FederatedCatalogueComponentType } from '@twin.org/engine-types';
6
6
  import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
7
7
  import { IdentityProfileConnectorFactory, IdentityConnectorFactory, IdentityResolverConnectorFactory, DocumentHelper } from '@twin.org/identity-models';
8
8
  import { VaultConnectorFactory, VaultKeyType } from '@twin.org/vault-models';
@@ -464,8 +464,7 @@ async function bootstrapSynchronisedStorage(engineCore, context, envVars, featur
464
464
  await addVerificationMethod(engineCore, context, "synchronised storage", envVars.synchronisedStorageVerificationMethodId);
465
465
  // If this is a trusted node we need to add the blob encryption key pair
466
466
  if (Is.stringValue(envVars.synchronisedStorageBlobStorageEncryptionKeyId) &&
467
- Is.stringBase64(envVars.synchronisedStorageBlobStoragePrivateKey) &&
468
- Is.stringBase64(envVars.synchronisedStorageBlobStoragePublicKey)) {
467
+ Is.stringBase64(envVars.synchronisedStorageBlobStorageKey)) {
469
468
  const defaultVaultConnectorType = engineCore.getRegisteredInstanceType("vaultConnector");
470
469
  const vaultConnector = VaultConnectorFactory.get(defaultVaultConnectorType);
471
470
  const keyName = envVars.synchronisedStorageBlobStorageEncryptionKeyId;
@@ -476,7 +475,7 @@ async function bootstrapSynchronisedStorage(engineCore, context, envVars, featur
476
475
  catch { }
477
476
  if (Is.empty(existingKey)) {
478
477
  engineCore.logInfo(I18n.formatMessage("node.addingSynchronisedStorageBlobEncryptionKey", { keyName }));
479
- await vaultConnector.addKey(keyName, VaultKeyType.Rsa2048, Converter.base64ToBytes(envVars.synchronisedStorageBlobStoragePrivateKey), Converter.base64ToBytes(envVars.synchronisedStorageBlobStoragePublicKey));
478
+ await vaultConnector.addKey(keyName, VaultKeyType.ChaCha20Poly1305, Converter.base64ToBytes(envVars.synchronisedStorageBlobStorageKey));
480
479
  }
481
480
  else {
482
481
  engineCore.logInfo(I18n.formatMessage("node.existingSynchronisedStorageBlobEncryptionKey", { keyName }));
@@ -1334,6 +1333,26 @@ function configureRightsManagement(coreConfig, envVars) {
1334
1333
  coreConfig.types.rightsManagementPapComponent.push({
1335
1334
  type: RightsManagementPapComponentType.Service
1336
1335
  });
1336
+ coreConfig.types.rightsManagementPmpComponent ??= [];
1337
+ coreConfig.types.rightsManagementPmpComponent.push({
1338
+ type: RightsManagementPmpComponentType.Service
1339
+ });
1340
+ coreConfig.types.rightsManagementPipComponent ??= [];
1341
+ coreConfig.types.rightsManagementPipComponent.push({
1342
+ type: RightsManagementPipComponentType.Service
1343
+ });
1344
+ coreConfig.types.rightsManagementPxpComponent ??= [];
1345
+ coreConfig.types.rightsManagementPxpComponent.push({
1346
+ type: RightsManagementPxpComponentType.Service
1347
+ });
1348
+ coreConfig.types.rightsManagementPdpComponent ??= [];
1349
+ coreConfig.types.rightsManagementPdpComponent.push({
1350
+ type: RightsManagementPdpComponentType.Service
1351
+ });
1352
+ coreConfig.types.rightsManagementPepComponent ??= [];
1353
+ coreConfig.types.rightsManagementPepComponent.push({
1354
+ type: RightsManagementPepComponentType.Service
1355
+ });
1337
1356
  coreConfig.types.rightsManagementComponent ??= [];
1338
1357
  coreConfig.types.rightsManagementComponent.push({
1339
1358
  type: RightsManagementComponentType.Service
@@ -1455,9 +1474,10 @@ function configureDlt(coreConfig, envVars) {
1455
1474
  * @param coreEngineConfig The core engine config.
1456
1475
  * @param serverInfo The server information.
1457
1476
  * @param openApiSpecPath The path to the open api spec.
1477
+ * @param favIconPath The path to the favicon.
1458
1478
  * @returns The the config for the core and the server.
1459
1479
  */
1460
- function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, openApiSpecPath) {
1480
+ function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, openApiSpecPath, favIconPath) {
1461
1481
  envVars.authSigningKeyId ??= "auth-signing";
1462
1482
  const webServerOptions = {
1463
1483
  port: Coerce.number(envVars.port),
@@ -1484,7 +1504,8 @@ function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, o
1484
1504
  options: {
1485
1505
  config: {
1486
1506
  serverInfo,
1487
- openApiSpecPath
1507
+ openApiSpecPath,
1508
+ favIconPath
1488
1509
  }
1489
1510
  }
1490
1511
  }
@@ -1657,7 +1678,7 @@ async function run(nodeOptions) {
1657
1678
  nodeOptions ??= {};
1658
1679
  const serverInfo = {
1659
1680
  name: nodeOptions?.serverName ?? "TWIN Node Server",
1660
- version: nodeOptions?.serverVersion ?? "0.0.2-next.4" // x-release-please-version
1681
+ version: nodeOptions?.serverVersion ?? "0.0.2-next.6" // x-release-please-version
1661
1682
  };
1662
1683
  console.log(`\u001B[4m🌩️ ${serverInfo.name} v${serverInfo.version}\u001B[24m\n`);
1663
1684
  if (!Is.stringValue(nodeOptions?.executionDirectory)) {
@@ -1670,13 +1691,21 @@ async function run(nodeOptions) {
1670
1691
  console.info("Locales Directory:", nodeOptions.localesDirectory);
1671
1692
  await initialiseLocales(nodeOptions.localesDirectory);
1672
1693
  if (Is.empty(nodeOptions?.openApiSpecFile)) {
1673
- const specFile = path.resolve(path.join(nodeOptions.executionDirectory, "docs", "open-api", "spec.json"));
1694
+ const specFile = path.resolve(path.join(nodeOptions.executionDirectory ?? "", "docs", "open-api", "spec.json"));
1674
1695
  console.info("Default OpenAPI Spec File:", specFile);
1675
1696
  if (await fileExists(specFile)) {
1676
1697
  nodeOptions ??= {};
1677
1698
  nodeOptions.openApiSpecFile = specFile;
1678
1699
  }
1679
1700
  }
1701
+ if (Is.empty(nodeOptions?.favIconFile)) {
1702
+ const favIconFile = path.resolve(path.join(nodeOptions.executionDirectory ?? "", "static", "favicon.png"));
1703
+ console.info("Default Favicon File:", favIconFile);
1704
+ if (await fileExists(favIconFile)) {
1705
+ nodeOptions ??= {};
1706
+ nodeOptions.favIconFile = favIconFile;
1707
+ }
1708
+ }
1680
1709
  nodeOptions.envPrefix ??= "TWIN_NODE_";
1681
1710
  console.info("Environment Prefix:", nodeOptions.envPrefix);
1682
1711
  const { engineServerConfig, nodeEnvVars: envVars } = await buildConfiguration(process.env, nodeOptions, serverInfo);
@@ -1746,7 +1775,7 @@ async function buildConfiguration(processEnv, options, serverInfo) {
1746
1775
  }
1747
1776
  // Build the engine configuration from the environment variables.
1748
1777
  const coreConfig = buildEngineConfiguration(envVars);
1749
- const engineServerConfig = buildEngineServerConfiguration(envVars, coreConfig, serverInfo, options?.openApiSpecFile);
1778
+ const engineServerConfig = buildEngineServerConfiguration(envVars, coreConfig, serverInfo, options?.openApiSpecFile, options?.favIconFile);
1750
1779
  // Merge any custom configuration provided in the options.
1751
1780
  if (Is.arrayValue(options?.configFilenames)) {
1752
1781
  for (const configFile of options.configFilenames) {
@@ -8,6 +8,7 @@ import type { IEngineServerEnvironmentVariables } from "../models/IEngineServerE
8
8
  * @param coreEngineConfig The core engine config.
9
9
  * @param serverInfo The server information.
10
10
  * @param openApiSpecPath The path to the open api spec.
11
+ * @param favIconPath The path to the favicon.
11
12
  * @returns The the config for the core and the server.
12
13
  */
13
- export declare function buildEngineServerConfiguration(envVars: IEngineServerEnvironmentVariables, coreEngineConfig: IEngineCoreConfig, serverInfo: IServerInfo, openApiSpecPath?: string): IEngineServerConfig;
14
+ export declare function buildEngineServerConfiguration(envVars: IEngineServerEnvironmentVariables, coreEngineConfig: IEngineCoreConfig, serverInfo: IServerInfo, openApiSpecPath?: string, favIconPath?: string): IEngineServerConfig;
@@ -402,15 +402,10 @@ export interface IEngineEnvironmentVariables {
402
402
  */
403
403
  synchronisedStorageBlobStorageEncryptionKeyId?: string;
404
404
  /**
405
- * The private key used for blob encryption, should be RSA-2048 DER format encoded as base64.
405
+ * The key used for blob encryption, should be ChaCha20Poly1305 encoded as base64.
406
406
  * Only required for trusted nodes, as regular nodes will not write encrypted data.
407
407
  */
408
- synchronisedStorageBlobStoragePrivateKey?: string;
409
- /**
410
- * The public key used for blob decryption, should be RSA-2048 DER format encoded as base64.
411
- * Only required for trusted nodes, as regular nodes will request the key from trusted nodes.
412
- */
413
- synchronisedStorageBlobStoragePublicKey?: string;
408
+ synchronisedStorageBlobStorageKey?: string;
414
409
  /**
415
410
  * How often to check for entity updates in minutes.
416
411
  * @default 5
@@ -45,6 +45,10 @@ export interface INodeOptions {
45
45
  * The path to the OpenAPI spec file, defaults to docs/open-api/spec.json.
46
46
  */
47
47
  openApiSpecFile?: string;
48
+ /**
49
+ * The path to the favicon, defaults to static/favicon.png.
50
+ */
51
+ favIconFile?: string;
48
52
  /**
49
53
  * Method to extend the engine environment variables with any additional custom configuration.
50
54
  */
package/docs/changelog.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @twin.org/node-core - Changelog
2
2
 
3
+ ## [0.0.2-next.6](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.5...node-core-v0.0.2-next.6) (2025-08-22)
4
+
5
+
6
+ ### Features
7
+
8
+ * add rights management ([78fba62](https://github.com/twinfoundation/node/commit/78fba62f82afdbe615d55dd90eca8ee70ea62fc0))
9
+ * remove unused properties ([d8344b5](https://github.com/twinfoundation/node/commit/d8344b5aee5dc1c8104d75fad5093097f6530168))
10
+
11
+ ## [0.0.2-next.5](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.4...node-core-v0.0.2-next.5) (2025-08-21)
12
+
13
+
14
+ ### Features
15
+
16
+ * update framework core ([8bd769a](https://github.com/twinfoundation/node/commit/8bd769a4451f5f1f6be3f115a5e94eeb05bce7f1))
17
+
3
18
  ## [0.0.2-next.4](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.3...node-core-v0.0.2-next.4) (2025-08-14)
4
19
 
5
20
 
@@ -1,6 +1,6 @@
1
1
  # Function: buildEngineServerConfiguration()
2
2
 
3
- > **buildEngineServerConfiguration**(`envVars`, `coreEngineConfig`, `serverInfo`, `openApiSpecPath?`): `IEngineServerConfig`
3
+ > **buildEngineServerConfiguration**(`envVars`, `coreEngineConfig`, `serverInfo`, `openApiSpecPath?`, `favIconPath?`): `IEngineServerConfig`
4
4
 
5
5
  Handles the configuration of the server.
6
6
 
@@ -30,6 +30,12 @@ The server information.
30
30
 
31
31
  The path to the open api spec.
32
32
 
33
+ ### favIconPath?
34
+
35
+ `string`
36
+
37
+ The path to the favicon.
38
+
33
39
  ## Returns
34
40
 
35
41
  `IEngineServerConfig`
@@ -799,24 +799,15 @@ Defaults to synchronised-storage-blob-encryption
799
799
 
800
800
  ***
801
801
 
802
- ### synchronisedStorageBlobStoragePrivateKey?
802
+ ### synchronisedStorageBlobStorageKey?
803
803
 
804
- > `optional` **synchronisedStorageBlobStoragePrivateKey**: `string`
804
+ > `optional` **synchronisedStorageBlobStorageKey**: `string`
805
805
 
806
- The private key used for blob encryption, should be RSA-2048 DER format encoded as base64.
806
+ The key used for blob encryption, should be ChaCha20Poly1305 encoded as base64.
807
807
  Only required for trusted nodes, as regular nodes will not write encrypted data.
808
808
 
809
809
  ***
810
810
 
811
- ### synchronisedStorageBlobStoragePublicKey?
812
-
813
- > `optional` **synchronisedStorageBlobStoragePublicKey**: `string`
814
-
815
- The public key used for blob decryption, should be RSA-2048 DER format encoded as base64.
816
- Only required for trusted nodes, as regular nodes will request the key from trusted nodes.
817
-
818
- ***
819
-
820
811
  ### synchronisedStorageEntityUpdateIntervalMinutes?
821
812
 
822
813
  > `optional` **synchronisedStorageEntityUpdateIntervalMinutes**: `string`
@@ -1191,29 +1191,16 @@ Defaults to synchronised-storage-blob-encryption
1191
1191
 
1192
1192
  ***
1193
1193
 
1194
- ### synchronisedStorageBlobStoragePrivateKey?
1194
+ ### synchronisedStorageBlobStorageKey?
1195
1195
 
1196
- > `optional` **synchronisedStorageBlobStoragePrivateKey**: `string`
1196
+ > `optional` **synchronisedStorageBlobStorageKey**: `string`
1197
1197
 
1198
- The private key used for blob encryption, should be RSA-2048 DER format encoded as base64.
1198
+ The key used for blob encryption, should be ChaCha20Poly1305 encoded as base64.
1199
1199
  Only required for trusted nodes, as regular nodes will not write encrypted data.
1200
1200
 
1201
1201
  #### Inherited from
1202
1202
 
1203
- [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`synchronisedStorageBlobStoragePrivateKey`](IEngineEnvironmentVariables.md#synchronisedstorageblobstorageprivatekey)
1204
-
1205
- ***
1206
-
1207
- ### synchronisedStorageBlobStoragePublicKey?
1208
-
1209
- > `optional` **synchronisedStorageBlobStoragePublicKey**: `string`
1210
-
1211
- The public key used for blob decryption, should be RSA-2048 DER format encoded as base64.
1212
- Only required for trusted nodes, as regular nodes will request the key from trusted nodes.
1213
-
1214
- #### Inherited from
1215
-
1216
- [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`synchronisedStorageBlobStoragePublicKey`](IEngineEnvironmentVariables.md#synchronisedstorageblobstoragepublickey)
1203
+ [`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`synchronisedStorageBlobStorageKey`](IEngineEnvironmentVariables.md#synchronisedstorageblobstoragekey)
1217
1204
 
1218
1205
  ***
1219
1206
 
@@ -85,6 +85,14 @@ The path to the OpenAPI spec file, defaults to docs/open-api/spec.json.
85
85
 
86
86
  ***
87
87
 
88
+ ### favIconFile?
89
+
90
+ > `optional` **favIconFile**: `string`
91
+
92
+ The path to the favicon, defaults to static/favicon.png.
93
+
94
+ ***
95
+
88
96
  ### extendEnvVars()?
89
97
 
90
98
  > `optional` **extendEnvVars**: (`envVars`) => `Promise`\<`void`\>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/node-core",
3
- "version": "0.0.2-next.4",
3
+ "version": "0.0.2-next.6",
4
4
  "description": "TWIN Node Core for serving APIs using the specified configuration",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,7 +28,7 @@
28
28
  "@twin.org/identity-models": "next",
29
29
  "@twin.org/vault-models": "next",
30
30
  "@twin.org/wallet-models": "next",
31
- "dotenv": "17.2.0",
31
+ "dotenv": "17.2.1",
32
32
  "schema-dts": "1.1.5"
33
33
  },
34
34
  "main": "./dist/cjs/index.cjs",