@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.
- package/dist/cjs/index.cjs +37 -8
- package/dist/esm/index.mjs +38 -9
- package/dist/types/builders/engineServerEnvBuilder.d.ts +2 -1
- package/dist/types/models/IEngineEnvironmentVariables.d.ts +2 -7
- package/dist/types/models/INodeOptions.d.ts +4 -0
- package/docs/changelog.md +15 -0
- package/docs/reference/functions/buildEngineServerConfiguration.md +7 -1
- package/docs/reference/interfaces/IEngineEnvironmentVariables.md +3 -12
- package/docs/reference/interfaces/INodeEnvironmentVariables.md +4 -17
- package/docs/reference/interfaces/INodeOptions.md +8 -0
- package/package.json +2 -2
package/dist/cjs/index.cjs
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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) {
|
package/dist/esm/index.mjs
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
###
|
|
802
|
+
### synchronisedStorageBlobStorageKey?
|
|
803
803
|
|
|
804
|
-
> `optional` **
|
|
804
|
+
> `optional` **synchronisedStorageBlobStorageKey**: `string`
|
|
805
805
|
|
|
806
|
-
The
|
|
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
|
-
###
|
|
1194
|
+
### synchronisedStorageBlobStorageKey?
|
|
1195
1195
|
|
|
1196
|
-
> `optional` **
|
|
1196
|
+
> `optional` **synchronisedStorageBlobStorageKey**: `string`
|
|
1197
1197
|
|
|
1198
|
-
The
|
|
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).[`
|
|
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.
|
|
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.
|
|
31
|
+
"dotenv": "17.2.1",
|
|
32
32
|
"schema-dts": "1.1.5"
|
|
33
33
|
},
|
|
34
34
|
"main": "./dist/cjs/index.cjs",
|