@twin.org/node-core 0.0.2-next.11 → 0.0.2-next.13
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 +55 -16
- package/dist/esm/index.mjs +58 -19
- package/dist/types/models/IEngineEnvironmentVariables.d.ts +24 -10
- package/dist/types/models/IEngineServerEnvironmentVariables.d.ts +4 -0
- package/docs/changelog.md +14 -0
- package/docs/reference/interfaces/IEngineEnvironmentVariables.md +42 -16
- package/docs/reference/interfaces/IEngineServerEnvironmentVariables.md +8 -0
- package/docs/reference/interfaces/INodeEnvironmentVariables.md +72 -22
- package/package.json +2 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -153,9 +153,7 @@ async function bootstrap(engineCore, context, envVars) {
|
|
|
153
153
|
await bootstrapBlobEncryption(engineCore, context, envVars);
|
|
154
154
|
await addVerificationMethod(engineCore, context, "attestation", envVars.attestationVerificationMethodId);
|
|
155
155
|
await addVerificationMethod(engineCore, context, "immutable proof", envVars.immutableProofVerificationMethodId);
|
|
156
|
-
|
|
157
|
-
await addVerificationMethod(engineCore, context, "rights management", envVars.rightsManagementNegotiationMethodId);
|
|
158
|
-
}
|
|
156
|
+
await addVerificationMethod(engineCore, context, "node to node authentication", envVars.vcAuthenticationVerificationMethodId);
|
|
159
157
|
await bootstrapSynchronisedStorage(engineCore, context, envVars);
|
|
160
158
|
}
|
|
161
159
|
/**
|
|
@@ -494,8 +492,6 @@ async function bootstrapAuth(engineCore, context, envVars, features) {
|
|
|
494
492
|
*/
|
|
495
493
|
async function bootstrapSynchronisedStorage(engineCore, context, envVars, features) {
|
|
496
494
|
if (core.Coerce.boolean(envVars.synchronisedStorageEnabled) ?? false) {
|
|
497
|
-
// Add the verification method to the identity if it doesn't exist
|
|
498
|
-
await addVerificationMethod(engineCore, context, "synchronised storage", envVars.synchronisedStorageVerificationMethodId);
|
|
499
495
|
// If this is a trusted node we need to add the blob encryption key pair
|
|
500
496
|
if (core.Is.stringValue(envVars.synchronisedStorageBlobStorageEncryptionKeyId) &&
|
|
501
497
|
core.Is.stringBase64(envVars.synchronisedStorageBlobStorageKey)) {
|
|
@@ -574,8 +570,7 @@ function buildEngineConfiguration(envVars) {
|
|
|
574
570
|
envVars.blobStorageEnableEncryption ??= "false";
|
|
575
571
|
envVars.blobStorageEncryptionKeyId ??= "blob-encryption";
|
|
576
572
|
envVars.synchronisedStorageBlobStorageEncryptionKeyId ??= "synchronised-storage-blob-encryption";
|
|
577
|
-
envVars.
|
|
578
|
-
envVars.rightsManagementNegotiationMethodId ??= "policy-negotiation-assertion";
|
|
573
|
+
envVars.vcAuthenticationVerificationMethodId ??= "node-authentication-assertion";
|
|
579
574
|
const coreConfig = {
|
|
580
575
|
debug: core.Coerce.boolean(envVars.debug) ?? false,
|
|
581
576
|
types: {}
|
|
@@ -602,6 +597,7 @@ function buildEngineConfiguration(envVars) {
|
|
|
602
597
|
configureAuditableItemGraph(coreConfig);
|
|
603
598
|
configureAuditableItemStream(coreConfig);
|
|
604
599
|
configureDocumentManagement(coreConfig);
|
|
600
|
+
configureNodeToNode(coreConfig, envVars);
|
|
605
601
|
configureRightsManagement(coreConfig, envVars);
|
|
606
602
|
configureSynchronisedStorage(coreConfig, envVars);
|
|
607
603
|
configureFederatedCatalogue(coreConfig, envVars);
|
|
@@ -1358,6 +1354,24 @@ function configureDocumentManagement(coreConfig, envVars) {
|
|
|
1358
1354
|
});
|
|
1359
1355
|
}
|
|
1360
1356
|
}
|
|
1357
|
+
/**
|
|
1358
|
+
* Configures the node to node.
|
|
1359
|
+
* @param coreConfig The core config.
|
|
1360
|
+
* @param envVars The environment variables.
|
|
1361
|
+
*/
|
|
1362
|
+
function configureNodeToNode(coreConfig, envVars) {
|
|
1363
|
+
if (core.Is.arrayValue(coreConfig.types.identityComponent)) {
|
|
1364
|
+
// Can only perform VC authentication if identity component is available
|
|
1365
|
+
coreConfig.types.authenticationGeneratorComponent ??= [];
|
|
1366
|
+
coreConfig.types.authenticationGeneratorComponent.push({
|
|
1367
|
+
type: engineTypes.AuthenticationGeneratorComponentType.VerifiableCredential,
|
|
1368
|
+
options: {
|
|
1369
|
+
config: { verificationMethodId: envVars.vcAuthenticationVerificationMethodId ?? "" }
|
|
1370
|
+
},
|
|
1371
|
+
features: ["verifiable-credential"]
|
|
1372
|
+
});
|
|
1373
|
+
}
|
|
1374
|
+
}
|
|
1361
1375
|
/**
|
|
1362
1376
|
* Configures the rights management.
|
|
1363
1377
|
* @param coreConfig The core config.
|
|
@@ -1393,7 +1407,12 @@ function configureRightsManagement(coreConfig, envVars) {
|
|
|
1393
1407
|
});
|
|
1394
1408
|
coreConfig.types.rightsManagementPdpComponent ??= [];
|
|
1395
1409
|
coreConfig.types.rightsManagementPdpComponent.push({
|
|
1396
|
-
type: engineTypes.RightsManagementPdpComponentType.Service
|
|
1410
|
+
type: engineTypes.RightsManagementPdpComponentType.Service,
|
|
1411
|
+
options: {
|
|
1412
|
+
arbiterModulesConfig: core.Is.arrayValue(envVars.rightsManagementArbiters)
|
|
1413
|
+
? envVars.rightsManagementArbiters
|
|
1414
|
+
: undefined
|
|
1415
|
+
}
|
|
1397
1416
|
});
|
|
1398
1417
|
coreConfig.types.rightsManagementPepComponent ??= [];
|
|
1399
1418
|
coreConfig.types.rightsManagementPepComponent.push({
|
|
@@ -1410,20 +1429,33 @@ function configureRightsManagement(coreConfig, envVars) {
|
|
|
1410
1429
|
options: {
|
|
1411
1430
|
negotiatorModulesConfig: core.Is.arrayValue(envVars.rightsManagementNegotiators)
|
|
1412
1431
|
? envVars.rightsManagementNegotiators
|
|
1413
|
-
: undefined
|
|
1432
|
+
: undefined,
|
|
1433
|
+
requesterModulesConfig: core.Is.arrayValue(envVars.rightsManagementRequesters)
|
|
1434
|
+
? envVars.rightsManagementRequesters
|
|
1435
|
+
: undefined,
|
|
1436
|
+
config: {
|
|
1437
|
+
baseCallbackUrl: envVars.rightsManagementBaseCallbackUrl ?? "",
|
|
1438
|
+
offers: core.Is.arrayValue(envVars.rightsManagementOffers)
|
|
1439
|
+
? envVars.rightsManagementOffers
|
|
1440
|
+
: [],
|
|
1441
|
+
negotiationComponentCreator: async (url) => new rightsManagementRestClient.PolicyNegotiationPointClient({ endpoint: url })
|
|
1442
|
+
}
|
|
1414
1443
|
}
|
|
1415
1444
|
});
|
|
1416
1445
|
coreConfig.types.rightsManagementPnapComponent ??= [];
|
|
1417
1446
|
coreConfig.types.rightsManagementPnapComponent.push({
|
|
1418
1447
|
type: engineTypes.RightsManagementPnapComponentType.Service
|
|
1419
1448
|
});
|
|
1420
|
-
coreConfig.types.
|
|
1421
|
-
coreConfig.types.
|
|
1422
|
-
type: engineTypes.
|
|
1449
|
+
coreConfig.types.rightsManagementDapComponent ??= [];
|
|
1450
|
+
coreConfig.types.rightsManagementDapComponent.push({
|
|
1451
|
+
type: engineTypes.RightsManagementDapComponentType.Service
|
|
1452
|
+
});
|
|
1453
|
+
coreConfig.types.rightsManagementDarpComponent ??= [];
|
|
1454
|
+
coreConfig.types.rightsManagementDarpComponent.push({
|
|
1455
|
+
type: engineTypes.RightsManagementDarpComponentType.Service,
|
|
1423
1456
|
options: {
|
|
1424
1457
|
config: {
|
|
1425
|
-
|
|
1426
|
-
negotiationComponentCreator: async (url) => new rightsManagementRestClient.PolicyNegotiationPointClient({ endpoint: url })
|
|
1458
|
+
dataAccessComponentCreator: async (url) => new rightsManagementRestClient.DataAccessPointClient({ endpoint: url })
|
|
1427
1459
|
}
|
|
1428
1460
|
}
|
|
1429
1461
|
});
|
|
@@ -1462,7 +1494,6 @@ function configureSynchronisedStorage(coreConfig, envVars) {
|
|
|
1462
1494
|
options: {
|
|
1463
1495
|
config: {
|
|
1464
1496
|
verifiableStorageKeyId: verifiableStorageKeyId ?? "",
|
|
1465
|
-
synchronisedStorageMethodId: envVars.synchronisedStorageVerificationMethodId,
|
|
1466
1497
|
blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId,
|
|
1467
1498
|
entityUpdateIntervalMinutes: core.Coerce.number(envVars.synchronisedStorageEntityUpdateIntervalMinutes),
|
|
1468
1499
|
consolidationIntervalMinutes: core.Coerce.number(envVars.synchronisedStorageConsolidationIntervalMinutes),
|
|
@@ -1695,6 +1726,14 @@ function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, o
|
|
|
1695
1726
|
}
|
|
1696
1727
|
});
|
|
1697
1728
|
}
|
|
1729
|
+
if (core.Coerce.boolean(envVars.enableVerifiableCredentialRouteProcessors) ?? false) {
|
|
1730
|
+
serverConfig.types.restRouteProcessor.push({
|
|
1731
|
+
type: engineServerTypes.RestRouteProcessorType.AuthVerifiableCredential
|
|
1732
|
+
});
|
|
1733
|
+
serverConfig.types.socketRouteProcessor.push({
|
|
1734
|
+
type: engineServerTypes.SocketRouteProcessorType.AuthVerifiableCredential
|
|
1735
|
+
});
|
|
1736
|
+
}
|
|
1698
1737
|
engineServer.addDefaultRestPaths(serverConfig);
|
|
1699
1738
|
engineServer.addDefaultSocketPaths(serverConfig);
|
|
1700
1739
|
return serverConfig;
|
|
@@ -1767,7 +1806,7 @@ async function run(nodeOptions) {
|
|
|
1767
1806
|
nodeOptions ??= {};
|
|
1768
1807
|
const serverInfo = {
|
|
1769
1808
|
name: nodeOptions?.serverName ?? "TWIN Node Server",
|
|
1770
|
-
version: nodeOptions?.serverVersion ?? "0.0.2-next.
|
|
1809
|
+
version: nodeOptions?.serverVersion ?? "0.0.2-next.13" // x-release-please-version
|
|
1771
1810
|
};
|
|
1772
1811
|
console.log(`\u001B[4m🌩️ ${serverInfo.name} v${serverInfo.version}\u001B[24m\n`);
|
|
1773
1812
|
if (!core.Is.stringValue(nodeOptions?.executionDirectory)) {
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { PasswordHelper } from '@twin.org/api-auth-entity-storage-service';
|
|
2
|
-
import { I18n, Is,
|
|
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, TaskSchedulerComponentType, 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, RightsManagementPnpComponentType, RightsManagementPnapComponentType,
|
|
5
|
+
import { WalletConnectorType, IdentityConnectorType, EntityStorageConnectorType, BlobStorageConnectorType, BlobStorageComponentType, VaultConnectorType, DltConfigType, LoggingConnectorType, LoggingComponentType, BackgroundTaskConnectorType, TaskSchedulerComponentType, 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, AuthenticationGeneratorComponentType, RightsManagementPapComponentType, RightsManagementPmpComponentType, RightsManagementPipComponentType, RightsManagementPxpComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPnpComponentType, RightsManagementPnapComponentType, RightsManagementDapComponentType, RightsManagementDarpComponentType, SynchronisedStorageComponentType, FederatedCatalogueComponentType, DataSpaceConnectorComponentType } 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';
|
|
9
9
|
import { WalletConnectorFactory } from '@twin.org/wallet-models';
|
|
10
10
|
import { readFile, stat } from 'node:fs/promises';
|
|
11
11
|
import path from 'node:path';
|
|
12
|
-
import { PolicyNegotiationPointClient } from '@twin.org/rights-management-rest-client';
|
|
12
|
+
import { PolicyNegotiationPointClient, DataAccessPointClient } from '@twin.org/rights-management-rest-client';
|
|
13
13
|
import { addDefaultRestPaths, addDefaultSocketPaths, EngineServer } from '@twin.org/engine-server';
|
|
14
14
|
import { ModuleHelper } from '@twin.org/modules';
|
|
15
15
|
import * as dotenv from 'dotenv';
|
|
@@ -132,9 +132,7 @@ async function bootstrap(engineCore, context, envVars) {
|
|
|
132
132
|
await bootstrapBlobEncryption(engineCore, context, envVars);
|
|
133
133
|
await addVerificationMethod(engineCore, context, "attestation", envVars.attestationVerificationMethodId);
|
|
134
134
|
await addVerificationMethod(engineCore, context, "immutable proof", envVars.immutableProofVerificationMethodId);
|
|
135
|
-
|
|
136
|
-
await addVerificationMethod(engineCore, context, "rights management", envVars.rightsManagementNegotiationMethodId);
|
|
137
|
-
}
|
|
135
|
+
await addVerificationMethod(engineCore, context, "node to node authentication", envVars.vcAuthenticationVerificationMethodId);
|
|
138
136
|
await bootstrapSynchronisedStorage(engineCore, context, envVars);
|
|
139
137
|
}
|
|
140
138
|
/**
|
|
@@ -473,8 +471,6 @@ async function bootstrapAuth(engineCore, context, envVars, features) {
|
|
|
473
471
|
*/
|
|
474
472
|
async function bootstrapSynchronisedStorage(engineCore, context, envVars, features) {
|
|
475
473
|
if (Coerce.boolean(envVars.synchronisedStorageEnabled) ?? false) {
|
|
476
|
-
// Add the verification method to the identity if it doesn't exist
|
|
477
|
-
await addVerificationMethod(engineCore, context, "synchronised storage", envVars.synchronisedStorageVerificationMethodId);
|
|
478
474
|
// If this is a trusted node we need to add the blob encryption key pair
|
|
479
475
|
if (Is.stringValue(envVars.synchronisedStorageBlobStorageEncryptionKeyId) &&
|
|
480
476
|
Is.stringBase64(envVars.synchronisedStorageBlobStorageKey)) {
|
|
@@ -553,8 +549,7 @@ function buildEngineConfiguration(envVars) {
|
|
|
553
549
|
envVars.blobStorageEnableEncryption ??= "false";
|
|
554
550
|
envVars.blobStorageEncryptionKeyId ??= "blob-encryption";
|
|
555
551
|
envVars.synchronisedStorageBlobStorageEncryptionKeyId ??= "synchronised-storage-blob-encryption";
|
|
556
|
-
envVars.
|
|
557
|
-
envVars.rightsManagementNegotiationMethodId ??= "policy-negotiation-assertion";
|
|
552
|
+
envVars.vcAuthenticationVerificationMethodId ??= "node-authentication-assertion";
|
|
558
553
|
const coreConfig = {
|
|
559
554
|
debug: Coerce.boolean(envVars.debug) ?? false,
|
|
560
555
|
types: {}
|
|
@@ -581,6 +576,7 @@ function buildEngineConfiguration(envVars) {
|
|
|
581
576
|
configureAuditableItemGraph(coreConfig);
|
|
582
577
|
configureAuditableItemStream(coreConfig);
|
|
583
578
|
configureDocumentManagement(coreConfig);
|
|
579
|
+
configureNodeToNode(coreConfig, envVars);
|
|
584
580
|
configureRightsManagement(coreConfig, envVars);
|
|
585
581
|
configureSynchronisedStorage(coreConfig, envVars);
|
|
586
582
|
configureFederatedCatalogue(coreConfig, envVars);
|
|
@@ -1337,6 +1333,24 @@ function configureDocumentManagement(coreConfig, envVars) {
|
|
|
1337
1333
|
});
|
|
1338
1334
|
}
|
|
1339
1335
|
}
|
|
1336
|
+
/**
|
|
1337
|
+
* Configures the node to node.
|
|
1338
|
+
* @param coreConfig The core config.
|
|
1339
|
+
* @param envVars The environment variables.
|
|
1340
|
+
*/
|
|
1341
|
+
function configureNodeToNode(coreConfig, envVars) {
|
|
1342
|
+
if (Is.arrayValue(coreConfig.types.identityComponent)) {
|
|
1343
|
+
// Can only perform VC authentication if identity component is available
|
|
1344
|
+
coreConfig.types.authenticationGeneratorComponent ??= [];
|
|
1345
|
+
coreConfig.types.authenticationGeneratorComponent.push({
|
|
1346
|
+
type: AuthenticationGeneratorComponentType.VerifiableCredential,
|
|
1347
|
+
options: {
|
|
1348
|
+
config: { verificationMethodId: envVars.vcAuthenticationVerificationMethodId ?? "" }
|
|
1349
|
+
},
|
|
1350
|
+
features: ["verifiable-credential"]
|
|
1351
|
+
});
|
|
1352
|
+
}
|
|
1353
|
+
}
|
|
1340
1354
|
/**
|
|
1341
1355
|
* Configures the rights management.
|
|
1342
1356
|
* @param coreConfig The core config.
|
|
@@ -1372,7 +1386,12 @@ function configureRightsManagement(coreConfig, envVars) {
|
|
|
1372
1386
|
});
|
|
1373
1387
|
coreConfig.types.rightsManagementPdpComponent ??= [];
|
|
1374
1388
|
coreConfig.types.rightsManagementPdpComponent.push({
|
|
1375
|
-
type: RightsManagementPdpComponentType.Service
|
|
1389
|
+
type: RightsManagementPdpComponentType.Service,
|
|
1390
|
+
options: {
|
|
1391
|
+
arbiterModulesConfig: Is.arrayValue(envVars.rightsManagementArbiters)
|
|
1392
|
+
? envVars.rightsManagementArbiters
|
|
1393
|
+
: undefined
|
|
1394
|
+
}
|
|
1376
1395
|
});
|
|
1377
1396
|
coreConfig.types.rightsManagementPepComponent ??= [];
|
|
1378
1397
|
coreConfig.types.rightsManagementPepComponent.push({
|
|
@@ -1389,20 +1408,33 @@ function configureRightsManagement(coreConfig, envVars) {
|
|
|
1389
1408
|
options: {
|
|
1390
1409
|
negotiatorModulesConfig: Is.arrayValue(envVars.rightsManagementNegotiators)
|
|
1391
1410
|
? envVars.rightsManagementNegotiators
|
|
1392
|
-
: undefined
|
|
1411
|
+
: undefined,
|
|
1412
|
+
requesterModulesConfig: Is.arrayValue(envVars.rightsManagementRequesters)
|
|
1413
|
+
? envVars.rightsManagementRequesters
|
|
1414
|
+
: undefined,
|
|
1415
|
+
config: {
|
|
1416
|
+
baseCallbackUrl: envVars.rightsManagementBaseCallbackUrl ?? "",
|
|
1417
|
+
offers: Is.arrayValue(envVars.rightsManagementOffers)
|
|
1418
|
+
? envVars.rightsManagementOffers
|
|
1419
|
+
: [],
|
|
1420
|
+
negotiationComponentCreator: async (url) => new PolicyNegotiationPointClient({ endpoint: url })
|
|
1421
|
+
}
|
|
1393
1422
|
}
|
|
1394
1423
|
});
|
|
1395
1424
|
coreConfig.types.rightsManagementPnapComponent ??= [];
|
|
1396
1425
|
coreConfig.types.rightsManagementPnapComponent.push({
|
|
1397
1426
|
type: RightsManagementPnapComponentType.Service
|
|
1398
1427
|
});
|
|
1399
|
-
coreConfig.types.
|
|
1400
|
-
coreConfig.types.
|
|
1401
|
-
type:
|
|
1428
|
+
coreConfig.types.rightsManagementDapComponent ??= [];
|
|
1429
|
+
coreConfig.types.rightsManagementDapComponent.push({
|
|
1430
|
+
type: RightsManagementDapComponentType.Service
|
|
1431
|
+
});
|
|
1432
|
+
coreConfig.types.rightsManagementDarpComponent ??= [];
|
|
1433
|
+
coreConfig.types.rightsManagementDarpComponent.push({
|
|
1434
|
+
type: RightsManagementDarpComponentType.Service,
|
|
1402
1435
|
options: {
|
|
1403
1436
|
config: {
|
|
1404
|
-
|
|
1405
|
-
negotiationComponentCreator: async (url) => new PolicyNegotiationPointClient({ endpoint: url })
|
|
1437
|
+
dataAccessComponentCreator: async (url) => new DataAccessPointClient({ endpoint: url })
|
|
1406
1438
|
}
|
|
1407
1439
|
}
|
|
1408
1440
|
});
|
|
@@ -1441,7 +1473,6 @@ function configureSynchronisedStorage(coreConfig, envVars) {
|
|
|
1441
1473
|
options: {
|
|
1442
1474
|
config: {
|
|
1443
1475
|
verifiableStorageKeyId: verifiableStorageKeyId ?? "",
|
|
1444
|
-
synchronisedStorageMethodId: envVars.synchronisedStorageVerificationMethodId,
|
|
1445
1476
|
blobStorageEncryptionKeyId: envVars.synchronisedStorageBlobStorageEncryptionKeyId,
|
|
1446
1477
|
entityUpdateIntervalMinutes: Coerce.number(envVars.synchronisedStorageEntityUpdateIntervalMinutes),
|
|
1447
1478
|
consolidationIntervalMinutes: Coerce.number(envVars.synchronisedStorageConsolidationIntervalMinutes),
|
|
@@ -1674,6 +1705,14 @@ function buildEngineServerConfiguration(envVars, coreEngineConfig, serverInfo, o
|
|
|
1674
1705
|
}
|
|
1675
1706
|
});
|
|
1676
1707
|
}
|
|
1708
|
+
if (Coerce.boolean(envVars.enableVerifiableCredentialRouteProcessors) ?? false) {
|
|
1709
|
+
serverConfig.types.restRouteProcessor.push({
|
|
1710
|
+
type: RestRouteProcessorType.AuthVerifiableCredential
|
|
1711
|
+
});
|
|
1712
|
+
serverConfig.types.socketRouteProcessor.push({
|
|
1713
|
+
type: SocketRouteProcessorType.AuthVerifiableCredential
|
|
1714
|
+
});
|
|
1715
|
+
}
|
|
1677
1716
|
addDefaultRestPaths(serverConfig);
|
|
1678
1717
|
addDefaultSocketPaths(serverConfig);
|
|
1679
1718
|
return serverConfig;
|
|
@@ -1746,7 +1785,7 @@ async function run(nodeOptions) {
|
|
|
1746
1785
|
nodeOptions ??= {};
|
|
1747
1786
|
const serverInfo = {
|
|
1748
1787
|
name: nodeOptions?.serverName ?? "TWIN Node Server",
|
|
1749
|
-
version: nodeOptions?.serverVersion ?? "0.0.2-next.
|
|
1788
|
+
version: nodeOptions?.serverVersion ?? "0.0.2-next.13" // x-release-please-version
|
|
1750
1789
|
};
|
|
1751
1790
|
console.log(`\u001B[4m🌩️ ${serverInfo.name} v${serverInfo.version}\u001B[24m\n`);
|
|
1752
1791
|
if (!Is.stringValue(nodeOptions?.executionDirectory)) {
|
|
@@ -390,11 +390,6 @@ export interface IEngineEnvironmentVariables {
|
|
|
390
390
|
* This only required if using a custom verifiable storage item, otherwise it will default the the network name.
|
|
391
391
|
*/
|
|
392
392
|
synchronisedStorageVerifiableStorageKeyId?: string;
|
|
393
|
-
/**
|
|
394
|
-
* The identity verification method id to use with synchronised storage for signing/verifying changesets.
|
|
395
|
-
* Defaults to synchronised-storage-assertion.
|
|
396
|
-
*/
|
|
397
|
-
synchronisedStorageVerificationMethodId?: string;
|
|
398
393
|
/**
|
|
399
394
|
* The key from the vault which is used to encrypt the synchronised storage blobs.
|
|
400
395
|
* Only required for trusted nodes, as regular nodes will request from the trusted nodes.
|
|
@@ -443,20 +438,24 @@ export interface IEngineEnvironmentVariables {
|
|
|
443
438
|
*/
|
|
444
439
|
rightsManagementEnabled?: string;
|
|
445
440
|
/**
|
|
446
|
-
*
|
|
447
|
-
* Defaults to policy-negotiation-assertion.
|
|
441
|
+
* What is the base callback url for rights management negotiations e.g. https://my-node/rights-management.
|
|
448
442
|
*/
|
|
449
|
-
|
|
443
|
+
rightsManagementBaseCallbackUrl?: string;
|
|
444
|
+
/**
|
|
445
|
+
* The rights management configuration which includes the information sources modules to load.
|
|
446
|
+
* Use the @json: prefix to specify the path to the JSON configuration file.
|
|
447
|
+
*/
|
|
448
|
+
rightsManagementInformationSources?: string;
|
|
450
449
|
/**
|
|
451
450
|
* The rights management configuration which includes the negotiator modules to load.
|
|
452
451
|
* Use the @json: prefix to specify the path to the JSON configuration file.
|
|
453
452
|
*/
|
|
454
453
|
rightsManagementNegotiators?: string;
|
|
455
454
|
/**
|
|
456
|
-
* The rights management configuration which includes the
|
|
455
|
+
* The rights management configuration which includes the requester modules to load.
|
|
457
456
|
* Use the @json: prefix to specify the path to the JSON configuration file.
|
|
458
457
|
*/
|
|
459
|
-
|
|
458
|
+
rightsManagementRequesters?: string;
|
|
460
459
|
/**
|
|
461
460
|
* The rights management configuration which includes the execution actions modules to load.
|
|
462
461
|
* Use the @json: prefix to specify the path to the JSON configuration file.
|
|
@@ -467,6 +466,16 @@ export interface IEngineEnvironmentVariables {
|
|
|
467
466
|
* Use the @json: prefix to specify the path to the JSON configuration file.
|
|
468
467
|
*/
|
|
469
468
|
rightsManagementEnforcementProcessors?: string;
|
|
469
|
+
/**
|
|
470
|
+
* The rights management configuration which includes the arbiter modules to load.
|
|
471
|
+
* Use the @json: prefix to specify the path to the JSON configuration file.
|
|
472
|
+
*/
|
|
473
|
+
rightsManagementArbiters?: string;
|
|
474
|
+
/**
|
|
475
|
+
* The rights management configuration which includes the offer modules to load.
|
|
476
|
+
* Use the @json: prefix to specify the path to the JSON configuration file.
|
|
477
|
+
*/
|
|
478
|
+
rightsManagementOffers?: string;
|
|
470
479
|
/**
|
|
471
480
|
* Is the task scheduler enabled, defaults to false.
|
|
472
481
|
*/
|
|
@@ -480,4 +489,9 @@ export interface IEngineEnvironmentVariables {
|
|
|
480
489
|
* Use the @json: prefix to specify the path to the JSON configuration file.
|
|
481
490
|
*/
|
|
482
491
|
dataSpaceConnectorApps?: string;
|
|
492
|
+
/**
|
|
493
|
+
* Verifiable credential assertion for node to node communication.
|
|
494
|
+
* Defaults to node-authentication-assertion.
|
|
495
|
+
*/
|
|
496
|
+
vcAuthenticationVerificationMethodId?: string;
|
|
483
497
|
}
|
|
@@ -42,6 +42,10 @@ export interface IEngineServerEnvironmentVariables {
|
|
|
42
42
|
* Additional MIME type processors to include, comma separated.
|
|
43
43
|
*/
|
|
44
44
|
mimeTypeProcessors?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Enable to the route processor for verifiable credentials.
|
|
47
|
+
*/
|
|
48
|
+
enableVerifiableCredentialRouteProcessors?: string;
|
|
45
49
|
/**
|
|
46
50
|
* Disable Node Identity route processors.
|
|
47
51
|
*/
|
package/docs/changelog.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @twin.org/node-core - Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.2-next.13](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.12...node-core-v0.0.2-next.13) (2025-09-24)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* update to latest engine ([00d4974](https://github.com/twinfoundation/node/commit/00d4974f9cfb02bf48505cfb4af4a7aba1df4b3d))
|
|
9
|
+
|
|
10
|
+
## [0.0.2-next.12](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.11...node-core-v0.0.2-next.12) (2025-09-19)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* update rights management components ([176a0d6](https://github.com/twinfoundation/node/commit/176a0d611f88360fc845ae233b26ee0b43d7cb23))
|
|
16
|
+
|
|
3
17
|
## [0.0.2-next.11](https://github.com/twinfoundation/node/compare/node-core-v0.0.2-next.10...node-core-v0.0.2-next.11) (2025-09-08)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -780,15 +780,6 @@ This only required if using a custom verifiable storage item, otherwise it will
|
|
|
780
780
|
|
|
781
781
|
***
|
|
782
782
|
|
|
783
|
-
### synchronisedStorageVerificationMethodId?
|
|
784
|
-
|
|
785
|
-
> `optional` **synchronisedStorageVerificationMethodId**: `string`
|
|
786
|
-
|
|
787
|
-
The identity verification method id to use with synchronised storage for signing/verifying changesets.
|
|
788
|
-
Defaults to synchronised-storage-assertion.
|
|
789
|
-
|
|
790
|
-
***
|
|
791
|
-
|
|
792
783
|
### synchronisedStorageBlobStorageEncryptionKeyId?
|
|
793
784
|
|
|
794
785
|
> `optional` **synchronisedStorageBlobStorageEncryptionKeyId**: `string`
|
|
@@ -896,12 +887,20 @@ Is the rights management enabled, defaults to false.
|
|
|
896
887
|
|
|
897
888
|
***
|
|
898
889
|
|
|
899
|
-
###
|
|
890
|
+
### rightsManagementBaseCallbackUrl?
|
|
900
891
|
|
|
901
|
-
> `optional` **
|
|
892
|
+
> `optional` **rightsManagementBaseCallbackUrl**: `string`
|
|
902
893
|
|
|
903
|
-
|
|
904
|
-
|
|
894
|
+
What is the base callback url for rights management negotiations e.g. https://my-node/rights-management.
|
|
895
|
+
|
|
896
|
+
***
|
|
897
|
+
|
|
898
|
+
### rightsManagementInformationSources?
|
|
899
|
+
|
|
900
|
+
> `optional` **rightsManagementInformationSources**: `string`
|
|
901
|
+
|
|
902
|
+
The rights management configuration which includes the information sources modules to load.
|
|
903
|
+
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
905
904
|
|
|
906
905
|
***
|
|
907
906
|
|
|
@@ -914,11 +913,11 @@ Use the @json: prefix to specify the path to the JSON configuration file.
|
|
|
914
913
|
|
|
915
914
|
***
|
|
916
915
|
|
|
917
|
-
###
|
|
916
|
+
### rightsManagementRequesters?
|
|
918
917
|
|
|
919
|
-
> `optional` **
|
|
918
|
+
> `optional` **rightsManagementRequesters**: `string`
|
|
920
919
|
|
|
921
|
-
The rights management configuration which includes the
|
|
920
|
+
The rights management configuration which includes the requester modules to load.
|
|
922
921
|
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
923
922
|
|
|
924
923
|
***
|
|
@@ -941,6 +940,24 @@ Use the @json: prefix to specify the path to the JSON configuration file.
|
|
|
941
940
|
|
|
942
941
|
***
|
|
943
942
|
|
|
943
|
+
### rightsManagementArbiters?
|
|
944
|
+
|
|
945
|
+
> `optional` **rightsManagementArbiters**: `string`
|
|
946
|
+
|
|
947
|
+
The rights management configuration which includes the arbiter modules to load.
|
|
948
|
+
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
949
|
+
|
|
950
|
+
***
|
|
951
|
+
|
|
952
|
+
### rightsManagementOffers?
|
|
953
|
+
|
|
954
|
+
> `optional` **rightsManagementOffers**: `string`
|
|
955
|
+
|
|
956
|
+
The rights management configuration which includes the offer modules to load.
|
|
957
|
+
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
958
|
+
|
|
959
|
+
***
|
|
960
|
+
|
|
944
961
|
### taskSchedulerEnabled?
|
|
945
962
|
|
|
946
963
|
> `optional` **taskSchedulerEnabled**: `string`
|
|
@@ -963,3 +980,12 @@ Is the data space connector enabled, defaults to false.
|
|
|
963
980
|
|
|
964
981
|
The application configuration for the data space connector.
|
|
965
982
|
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
983
|
+
|
|
984
|
+
***
|
|
985
|
+
|
|
986
|
+
### vcAuthenticationVerificationMethodId?
|
|
987
|
+
|
|
988
|
+
> `optional` **vcAuthenticationVerificationMethodId**: `string`
|
|
989
|
+
|
|
990
|
+
Verifiable credential assertion for node to node communication.
|
|
991
|
+
Defaults to node-authentication-assertion.
|
|
@@ -88,6 +88,14 @@ Additional MIME type processors to include, comma separated.
|
|
|
88
88
|
|
|
89
89
|
***
|
|
90
90
|
|
|
91
|
+
### enableVerifiableCredentialRouteProcessors?
|
|
92
|
+
|
|
93
|
+
> `optional` **enableVerifiableCredentialRouteProcessors**: `string`
|
|
94
|
+
|
|
95
|
+
Enable to the route processor for verifiable credentials.
|
|
96
|
+
|
|
97
|
+
***
|
|
98
|
+
|
|
91
99
|
### disableNodeIdentity?
|
|
92
100
|
|
|
93
101
|
> `optional` **disableNodeIdentity**: `string`
|
|
@@ -1164,19 +1164,6 @@ This only required if using a custom verifiable storage item, otherwise it will
|
|
|
1164
1164
|
|
|
1165
1165
|
***
|
|
1166
1166
|
|
|
1167
|
-
### synchronisedStorageVerificationMethodId?
|
|
1168
|
-
|
|
1169
|
-
> `optional` **synchronisedStorageVerificationMethodId**: `string`
|
|
1170
|
-
|
|
1171
|
-
The identity verification method id to use with synchronised storage for signing/verifying changesets.
|
|
1172
|
-
Defaults to synchronised-storage-assertion.
|
|
1173
|
-
|
|
1174
|
-
#### Inherited from
|
|
1175
|
-
|
|
1176
|
-
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`synchronisedStorageVerificationMethodId`](IEngineEnvironmentVariables.md#synchronisedstorageverificationmethodid)
|
|
1177
|
-
|
|
1178
|
-
***
|
|
1179
|
-
|
|
1180
1167
|
### synchronisedStorageBlobStorageEncryptionKeyId?
|
|
1181
1168
|
|
|
1182
1169
|
> `optional` **synchronisedStorageBlobStorageEncryptionKeyId**: `string`
|
|
@@ -1324,16 +1311,28 @@ Is the rights management enabled, defaults to false.
|
|
|
1324
1311
|
|
|
1325
1312
|
***
|
|
1326
1313
|
|
|
1327
|
-
###
|
|
1314
|
+
### rightsManagementBaseCallbackUrl?
|
|
1315
|
+
|
|
1316
|
+
> `optional` **rightsManagementBaseCallbackUrl**: `string`
|
|
1317
|
+
|
|
1318
|
+
What is the base callback url for rights management negotiations e.g. https://my-node/rights-management.
|
|
1319
|
+
|
|
1320
|
+
#### Inherited from
|
|
1321
|
+
|
|
1322
|
+
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementBaseCallbackUrl`](IEngineEnvironmentVariables.md#rightsmanagementbasecallbackurl)
|
|
1323
|
+
|
|
1324
|
+
***
|
|
1325
|
+
|
|
1326
|
+
### rightsManagementInformationSources?
|
|
1328
1327
|
|
|
1329
|
-
> `optional` **
|
|
1328
|
+
> `optional` **rightsManagementInformationSources**: `string`
|
|
1330
1329
|
|
|
1331
|
-
The rights management
|
|
1332
|
-
|
|
1330
|
+
The rights management configuration which includes the information sources modules to load.
|
|
1331
|
+
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
1333
1332
|
|
|
1334
1333
|
#### Inherited from
|
|
1335
1334
|
|
|
1336
|
-
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`
|
|
1335
|
+
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementInformationSources`](IEngineEnvironmentVariables.md#rightsmanagementinformationsources)
|
|
1337
1336
|
|
|
1338
1337
|
***
|
|
1339
1338
|
|
|
@@ -1350,16 +1349,16 @@ Use the @json: prefix to specify the path to the JSON configuration file.
|
|
|
1350
1349
|
|
|
1351
1350
|
***
|
|
1352
1351
|
|
|
1353
|
-
###
|
|
1352
|
+
### rightsManagementRequesters?
|
|
1354
1353
|
|
|
1355
|
-
> `optional` **
|
|
1354
|
+
> `optional` **rightsManagementRequesters**: `string`
|
|
1356
1355
|
|
|
1357
|
-
The rights management configuration which includes the
|
|
1356
|
+
The rights management configuration which includes the requester modules to load.
|
|
1358
1357
|
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
1359
1358
|
|
|
1360
1359
|
#### Inherited from
|
|
1361
1360
|
|
|
1362
|
-
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`
|
|
1361
|
+
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementRequesters`](IEngineEnvironmentVariables.md#rightsmanagementrequesters)
|
|
1363
1362
|
|
|
1364
1363
|
***
|
|
1365
1364
|
|
|
@@ -1389,6 +1388,32 @@ Use the @json: prefix to specify the path to the JSON configuration file.
|
|
|
1389
1388
|
|
|
1390
1389
|
***
|
|
1391
1390
|
|
|
1391
|
+
### rightsManagementArbiters?
|
|
1392
|
+
|
|
1393
|
+
> `optional` **rightsManagementArbiters**: `string`
|
|
1394
|
+
|
|
1395
|
+
The rights management configuration which includes the arbiter modules to load.
|
|
1396
|
+
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
1397
|
+
|
|
1398
|
+
#### Inherited from
|
|
1399
|
+
|
|
1400
|
+
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementArbiters`](IEngineEnvironmentVariables.md#rightsmanagementarbiters)
|
|
1401
|
+
|
|
1402
|
+
***
|
|
1403
|
+
|
|
1404
|
+
### rightsManagementOffers?
|
|
1405
|
+
|
|
1406
|
+
> `optional` **rightsManagementOffers**: `string`
|
|
1407
|
+
|
|
1408
|
+
The rights management configuration which includes the offer modules to load.
|
|
1409
|
+
Use the @json: prefix to specify the path to the JSON configuration file.
|
|
1410
|
+
|
|
1411
|
+
#### Inherited from
|
|
1412
|
+
|
|
1413
|
+
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`rightsManagementOffers`](IEngineEnvironmentVariables.md#rightsmanagementoffers)
|
|
1414
|
+
|
|
1415
|
+
***
|
|
1416
|
+
|
|
1392
1417
|
### taskSchedulerEnabled?
|
|
1393
1418
|
|
|
1394
1419
|
> `optional` **taskSchedulerEnabled**: `string`
|
|
@@ -1426,6 +1451,19 @@ Use the @json: prefix to specify the path to the JSON configuration file.
|
|
|
1426
1451
|
|
|
1427
1452
|
***
|
|
1428
1453
|
|
|
1454
|
+
### vcAuthenticationVerificationMethodId?
|
|
1455
|
+
|
|
1456
|
+
> `optional` **vcAuthenticationVerificationMethodId**: `string`
|
|
1457
|
+
|
|
1458
|
+
Verifiable credential assertion for node to node communication.
|
|
1459
|
+
Defaults to node-authentication-assertion.
|
|
1460
|
+
|
|
1461
|
+
#### Inherited from
|
|
1462
|
+
|
|
1463
|
+
[`IEngineEnvironmentVariables`](IEngineEnvironmentVariables.md).[`vcAuthenticationVerificationMethodId`](IEngineEnvironmentVariables.md#vcauthenticationverificationmethodid)
|
|
1464
|
+
|
|
1465
|
+
***
|
|
1466
|
+
|
|
1429
1467
|
### port?
|
|
1430
1468
|
|
|
1431
1469
|
> `optional` **port**: `string`
|
|
@@ -1546,6 +1584,18 @@ Additional MIME type processors to include, comma separated.
|
|
|
1546
1584
|
|
|
1547
1585
|
***
|
|
1548
1586
|
|
|
1587
|
+
### enableVerifiableCredentialRouteProcessors?
|
|
1588
|
+
|
|
1589
|
+
> `optional` **enableVerifiableCredentialRouteProcessors**: `string`
|
|
1590
|
+
|
|
1591
|
+
Enable to the route processor for verifiable credentials.
|
|
1592
|
+
|
|
1593
|
+
#### Inherited from
|
|
1594
|
+
|
|
1595
|
+
[`IEngineServerEnvironmentVariables`](IEngineServerEnvironmentVariables.md).[`enableVerifiableCredentialRouteProcessors`](IEngineServerEnvironmentVariables.md#enableverifiablecredentialrouteprocessors)
|
|
1596
|
+
|
|
1597
|
+
***
|
|
1598
|
+
|
|
1549
1599
|
### disableNodeIdentity?
|
|
1550
1600
|
|
|
1551
1601
|
> `optional` **disableNodeIdentity**: `string`
|
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.13",
|
|
4
4
|
"description": "TWIN Node Core for serving APIs using the specified configuration",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"@twin.org/identity-models": "next",
|
|
30
30
|
"@twin.org/modules": "next",
|
|
31
31
|
"@twin.org/rights-management-rest-client": "next",
|
|
32
|
+
"@twin.org/standards-w3c-odrl": "next",
|
|
32
33
|
"@twin.org/vault-models": "next",
|
|
33
34
|
"@twin.org/wallet-models": "next",
|
|
34
35
|
"dotenv": "17.2.1",
|