@twin.org/engine-types 0.0.2-next.13 → 0.0.2-next.15

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.
Files changed (38) hide show
  1. package/dist/cjs/index.cjs +276 -112
  2. package/dist/esm/index.mjs +263 -103
  3. package/dist/types/components/authenticationGenerator.d.ts +13 -0
  4. package/dist/types/components/rightsManagementDap.d.ts +13 -0
  5. package/dist/types/components/{rightsManagementPnrp.d.ts → rightsManagementDarp.d.ts} +3 -3
  6. package/dist/types/index.d.ts +10 -4
  7. package/dist/types/models/IEngineConfig.d.ts +13 -3
  8. package/dist/types/models/config/authenticationGeneratorComponentConfig.d.ts +9 -0
  9. package/dist/types/models/config/rightsManagementDapComponentConfig.d.ts +16 -0
  10. package/dist/types/models/config/rightsManagementDarpComponentConfig.d.ts +12 -0
  11. package/dist/types/models/config/rightsManagementPdpComponentConfig.d.ts +4 -1
  12. package/dist/types/models/config/rightsManagementPnpComponentConfig.d.ts +2 -1
  13. package/dist/types/models/types/authenticationGeneratorComponentType.d.ts +13 -0
  14. package/dist/types/models/types/rightsManagementDapComponentType.d.ts +17 -0
  15. package/dist/types/models/types/rightsManagementDarpComponentType.d.ts +13 -0
  16. package/docs/changelog.md +30 -0
  17. package/docs/reference/functions/initialiseAuthenticationGeneratorComponent.md +41 -0
  18. package/docs/reference/functions/initialiseRightsManagementDapComponent.md +41 -0
  19. package/docs/reference/functions/{initialiseRightsManagementPnrpComponent.md → initialiseRightsManagementDarpComponent.md} +4 -4
  20. package/docs/reference/index.md +12 -4
  21. package/docs/reference/interfaces/IEngineConfig.md +15 -3
  22. package/docs/reference/type-aliases/AuthenticationGeneratorComponentConfig.md +17 -0
  23. package/docs/reference/type-aliases/AuthenticationGeneratorComponentType.md +5 -0
  24. package/docs/reference/type-aliases/RightsManagementDapComponentConfig.md +5 -0
  25. package/docs/reference/type-aliases/RightsManagementDapComponentType.md +5 -0
  26. package/docs/reference/type-aliases/RightsManagementDarpComponentConfig.md +23 -0
  27. package/docs/reference/type-aliases/RightsManagementDarpComponentType.md +5 -0
  28. package/docs/reference/type-aliases/RightsManagementPdpComponentConfig.md +7 -1
  29. package/docs/reference/type-aliases/RightsManagementPnpComponentConfig.md +1 -1
  30. package/docs/reference/variables/AuthenticationGeneratorComponentType.md +13 -0
  31. package/docs/reference/variables/RightsManagementDapComponentType.md +19 -0
  32. package/docs/reference/variables/RightsManagementDarpComponentType.md +13 -0
  33. package/package.json +6 -3
  34. package/dist/types/models/config/rightsManagementPnrpComponentConfig.d.ts +0 -9
  35. package/dist/types/models/types/rightsManagementPnrpComponentType.d.ts +0 -13
  36. package/docs/reference/type-aliases/RightsManagementPnrpComponentConfig.md +0 -17
  37. package/docs/reference/type-aliases/RightsManagementPnrpComponentType.md +0 -5
  38. package/docs/reference/variables/RightsManagementPnrpComponentType.md +0 -13
@@ -21,6 +21,8 @@ import { EntityStorageClient } from '@twin.org/entity-storage-rest-client';
21
21
  import { EntityStorageService } from '@twin.org/entity-storage-service';
22
22
  import { AuditableItemStreamClient } from '@twin.org/auditable-item-stream-rest-client';
23
23
  import { initSchema as initSchema$1, AuditableItemStreamService } from '@twin.org/auditable-item-stream-service';
24
+ import { AuthenticationGeneratorFactory } from '@twin.org/api-models';
25
+ import { VerifiableCredentialAuthenticationGenerator } from '@twin.org/identity-authentication';
24
26
  import { initSchema as initSchema$2, EntityStorageBackgroundTaskConnector } from '@twin.org/background-task-connector-entity-storage';
25
27
  import { BackgroundTaskConnectorFactory } from '@twin.org/background-task-models';
26
28
  import { S3BlobStorageConnector } from '@twin.org/blob-storage-connector-aws-s3';
@@ -73,14 +75,15 @@ import { IotaNftConnector } from '@twin.org/nft-connector-iota';
73
75
  import { NftConnectorFactory } from '@twin.org/nft-models';
74
76
  import { NftClient } from '@twin.org/nft-rest-client';
75
77
  import { NftService } from '@twin.org/nft-service';
78
+ import { DataAccessPointService, DataAccessRequestPointService } from '@twin.org/rights-management-dap-service';
79
+ import { DataAccessPointClient, PolicyAdministrationPointClient, PolicyNegotiationAdminPointClient, PolicyNegotiationPointClient } from '@twin.org/rights-management-rest-client';
76
80
  import { initSchema as initSchema$d, PolicyAdministrationPointService } from '@twin.org/rights-management-pap-service';
77
- import { PolicyAdministrationPointClient, PolicyNegotiationPointClient, PolicyNegotiationAdminPointClient } from '@twin.org/rights-management-rest-client';
78
- import { PolicyDecisionPointService } from '@twin.org/rights-management-pdp-service';
79
81
  import { EngineModuleHelper } from '@twin.org/engine-core';
82
+ import { PolicyDecisionPointService } from '@twin.org/rights-management-pdp-service';
80
83
  import { PolicyEnforcementPointService } from '@twin.org/rights-management-pep-service';
81
84
  import { PolicyInformationPointService } from '@twin.org/rights-management-pip-service';
82
85
  import { PolicyManagementPointService } from '@twin.org/rights-management-pmp-service';
83
- import { PolicyNegotiationPointService, initSchema as initSchema$e, PolicyNegotiationAdminPointService, PolicyNegotiationRequestPointService } from '@twin.org/rights-management-pnp-service';
86
+ import { initSchema as initSchema$e, PolicyNegotiationAdminPointService, PolicyNegotiationPointService } from '@twin.org/rights-management-pnp-service';
84
87
  import { PolicyExecutionPointService } from '@twin.org/rights-management-pxp-service';
85
88
  import { SynchronisedStorageClient } from '@twin.org/synchronised-storage-rest-client';
86
89
  import { initSchema as initSchema$f, SynchronisedStorageService } from '@twin.org/synchronised-storage-service';
@@ -613,6 +616,60 @@ async function initialiseAuditableItemStreamComponent(engineCore, context, insta
613
616
  return finalInstanceType;
614
617
  }
615
618
 
619
+ // Copyright 2024 IOTA Stiftung.
620
+ // SPDX-License-Identifier: Apache-2.0.
621
+ /**
622
+ * Authentication generator component types.
623
+ */
624
+ // eslint-disable-next-line @typescript-eslint/naming-convention
625
+ const AuthenticationGeneratorComponentType = {
626
+ /**
627
+ * Verifiable Credential.
628
+ */
629
+ VerifiableCredential: "verifiable-credential"
630
+ };
631
+
632
+ // Copyright 2024 IOTA Stiftung.
633
+ // SPDX-License-Identifier: Apache-2.0.
634
+ /**
635
+ * Initialise the authentication generator component.
636
+ * @param engineCore The engine core.
637
+ * @param context The context for the engine.
638
+ * @param instanceConfig The instance config.
639
+ * @param overrideInstanceType The instance type to override the default.
640
+ * @returns The name of the instance created.
641
+ * @throws GeneralError if the component type is unknown.
642
+ */
643
+ async function initialiseAuthenticationGeneratorComponent(engineCore, context, instanceConfig, overrideInstanceType) {
644
+ engineCore.logInfo(I18n.formatMessage("engineCore.configuring", {
645
+ element: `Authentication Generator Component: ${instanceConfig.type}`
646
+ }));
647
+ const type = instanceConfig.type;
648
+ let component;
649
+ let instanceType;
650
+ if (type === AuthenticationGeneratorComponentType.VerifiableCredential) {
651
+ component = new VerifiableCredentialAuthenticationGenerator({
652
+ loggingComponentType: engineCore.getRegisteredInstanceType("loggingComponent"),
653
+ identityConnectorType: engineCore.getRegisteredInstanceType("identityConnector"),
654
+ ...instanceConfig.options
655
+ });
656
+ instanceType = StringHelper.kebabCase("VerifiableCredentialAuthenticationGenerator");
657
+ }
658
+ else {
659
+ throw new GeneralError("engineCore", "componentUnknownType", {
660
+ type,
661
+ componentType: "AuthenticationGeneratorComponent"
662
+ });
663
+ }
664
+ const finalInstanceType = overrideInstanceType ?? instanceType;
665
+ context.componentInstances.push({
666
+ instanceType: finalInstanceType,
667
+ component
668
+ });
669
+ AuthenticationGeneratorFactory.register(finalInstanceType, () => component);
670
+ return finalInstanceType;
671
+ }
672
+
616
673
  // Copyright 2024 IOTA Stiftung.
617
674
  // SPDX-License-Identifier: Apache-2.0.
618
675
  /**
@@ -2290,6 +2347,130 @@ async function initialiseNftComponent(engineCore, context, instanceConfig, overr
2290
2347
  return finalInstanceType;
2291
2348
  }
2292
2349
 
2350
+ // Copyright 2024 IOTA Stiftung.
2351
+ // SPDX-License-Identifier: Apache-2.0.
2352
+ /**
2353
+ * Rights management DAP component types.
2354
+ */
2355
+ // eslint-disable-next-line @typescript-eslint/naming-convention
2356
+ const RightsManagementDapComponentType = {
2357
+ /**
2358
+ * Service.
2359
+ */
2360
+ Service: "service",
2361
+ /**
2362
+ * REST client.
2363
+ */
2364
+ RestClient: "rest-client"
2365
+ };
2366
+
2367
+ // Copyright 2024 IOTA Stiftung.
2368
+ // SPDX-License-Identifier: Apache-2.0.
2369
+ /**
2370
+ * Initialise the rights management DAP component.
2371
+ * @param engineCore The engine core.
2372
+ * @param context The context for the engine.
2373
+ * @param instanceConfig The instance config.
2374
+ * @param overrideInstanceType The instance type to override the default.
2375
+ * @returns The name of the instance created.
2376
+ * @throws GeneralError if the component type is unknown.
2377
+ */
2378
+ async function initialiseRightsManagementDapComponent(engineCore, context, instanceConfig, overrideInstanceType) {
2379
+ engineCore.logInfo(I18n.formatMessage("engineCore.configuring", {
2380
+ element: `Rights Management DAP Component: ${instanceConfig.type}`
2381
+ }));
2382
+ const type = instanceConfig.type;
2383
+ let component;
2384
+ let instanceType;
2385
+ if (type === RightsManagementDapComponentType.Service) {
2386
+ component = new DataAccessPointService({
2387
+ loggingComponentType: engineCore.getRegisteredInstanceType("loggingComponent"),
2388
+ policyEnforcementPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPepComponent"),
2389
+ ...instanceConfig.options,
2390
+ config: {
2391
+ ...instanceConfig.options?.config
2392
+ }
2393
+ });
2394
+ instanceType = StringHelper.kebabCase("DataAccessPointService");
2395
+ }
2396
+ else if (type === RightsManagementDapComponentType.RestClient) {
2397
+ component = new DataAccessPointClient({
2398
+ ...instanceConfig.options,
2399
+ authenticationGeneratorType: instanceConfig.options?.authenticationGeneratorType ??
2400
+ engineCore.getRegisteredInstanceType("authenticationGeneratorComponent", [
2401
+ "verifiable-credential"
2402
+ ])
2403
+ });
2404
+ instanceType = StringHelper.kebabCase("DataAccessPointClient");
2405
+ }
2406
+ else {
2407
+ throw new GeneralError("engineCore", "componentUnknownType", {
2408
+ type,
2409
+ componentType: "RightsManagementDapComponent"
2410
+ });
2411
+ }
2412
+ const finalInstanceType = overrideInstanceType ?? instanceType;
2413
+ context.componentInstances.push({
2414
+ instanceType: finalInstanceType,
2415
+ component
2416
+ });
2417
+ ComponentFactory.register(finalInstanceType, () => component);
2418
+ return finalInstanceType;
2419
+ }
2420
+
2421
+ // Copyright 2024 IOTA Stiftung.
2422
+ // SPDX-License-Identifier: Apache-2.0.
2423
+ /**
2424
+ * Rights management DARP component types.
2425
+ */
2426
+ // eslint-disable-next-line @typescript-eslint/naming-convention
2427
+ const RightsManagementDarpComponentType = {
2428
+ /**
2429
+ * Service.
2430
+ */
2431
+ Service: "service"
2432
+ };
2433
+
2434
+ // Copyright 2024 IOTA Stiftung.
2435
+ // SPDX-License-Identifier: Apache-2.0.
2436
+ /**
2437
+ * Initialise the rights management DARP component.
2438
+ * @param engineCore The engine core.
2439
+ * @param context The context for the engine.
2440
+ * @param instanceConfig The instance config.
2441
+ * @param overrideInstanceType The instance type to override the default.
2442
+ * @returns The name of the instance created.
2443
+ * @throws GeneralError if the component type is unknown.
2444
+ */
2445
+ async function initialiseRightsManagementDarpComponent(engineCore, context, instanceConfig, overrideInstanceType) {
2446
+ engineCore.logInfo(I18n.formatMessage("engineCore.configuring", {
2447
+ element: `Rights Management DARP Component: ${instanceConfig.type}`
2448
+ }));
2449
+ const type = instanceConfig.type;
2450
+ let component;
2451
+ let instanceType;
2452
+ if (type === RightsManagementDarpComponentType.Service) {
2453
+ component = new DataAccessRequestPointService({
2454
+ loggingComponentType: engineCore.getRegisteredInstanceType("loggingComponent"),
2455
+ ...instanceConfig.options
2456
+ });
2457
+ instanceType = StringHelper.kebabCase("DataAccessRequestPointService");
2458
+ }
2459
+ else {
2460
+ throw new GeneralError("engineCore", "componentUnknownType", {
2461
+ type,
2462
+ componentType: "RightsManagementDarpComponent"
2463
+ });
2464
+ }
2465
+ const finalInstanceType = overrideInstanceType ?? instanceType;
2466
+ context.componentInstances.push({
2467
+ instanceType: finalInstanceType,
2468
+ component
2469
+ });
2470
+ ComponentFactory.register(finalInstanceType, () => component);
2471
+ return finalInstanceType;
2472
+ }
2473
+
2293
2474
  // Copyright 2024 IOTA Stiftung.
2294
2475
  // SPDX-License-Identifier: Apache-2.0.
2295
2476
  /**
@@ -2385,12 +2566,25 @@ async function initialiseRightsManagementPdpComponent(engineCore, context, insta
2385
2566
  let component;
2386
2567
  let instanceType;
2387
2568
  if (type === RightsManagementPdpComponentType.Service) {
2569
+ const arbiterModules = [];
2570
+ if (Is.arrayValue(instanceConfig.options?.arbiterModulesConfig)) {
2571
+ for (const moduleConfig of instanceConfig.options.arbiterModulesConfig) {
2572
+ arbiterModules.push({
2573
+ arbiterId: moduleConfig.id,
2574
+ arbiter: await EngineModuleHelper.loadComponent(engineCore, moduleConfig)
2575
+ });
2576
+ }
2577
+ }
2388
2578
  component = new PolicyDecisionPointService({
2389
2579
  loggingComponentType: engineCore.getRegisteredInstanceType("loggingComponent"),
2390
2580
  policyInformationPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPipComponent"),
2391
2581
  policyManagementPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPmpComponent"),
2392
2582
  policyExecutionPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPxpComponent"),
2393
- ...instanceConfig.options
2583
+ ...instanceConfig.options,
2584
+ config: {
2585
+ ...instanceConfig.options?.config,
2586
+ arbiters: instanceConfig.options?.config?.arbiters ?? arbiterModules
2587
+ }
2394
2588
  });
2395
2589
  instanceType = StringHelper.kebabCase("PolicyDecisionPointService");
2396
2590
  }
@@ -2445,10 +2639,10 @@ async function initialiseRightsManagementPepComponent(engineCore, context, insta
2445
2639
  let component;
2446
2640
  let instanceType;
2447
2641
  if (type === RightsManagementPepComponentType.Service) {
2448
- const modules = [];
2642
+ const processorModules = [];
2449
2643
  if (Is.arrayValue(instanceConfig.options?.processorModulesConfig)) {
2450
2644
  for (const moduleConfig of instanceConfig.options.processorModulesConfig) {
2451
- modules.push({
2645
+ processorModules.push({
2452
2646
  processorId: moduleConfig.id,
2453
2647
  processor: await EngineModuleHelper.loadComponent(engineCore, moduleConfig)
2454
2648
  });
@@ -2460,7 +2654,7 @@ async function initialiseRightsManagementPepComponent(engineCore, context, insta
2460
2654
  ...instanceConfig.options,
2461
2655
  config: {
2462
2656
  ...instanceConfig.options?.config,
2463
- processors: instanceConfig.options?.config?.processors ?? modules
2657
+ processors: instanceConfig.options?.config?.processors ?? processorModules
2464
2658
  }
2465
2659
  });
2466
2660
  instanceType = StringHelper.kebabCase("PolicyEnforcementPointService");
@@ -2512,10 +2706,10 @@ async function initialiseRightsManagementPipComponent(engineCore, context, insta
2512
2706
  let component;
2513
2707
  let instanceType;
2514
2708
  if (type === RightsManagementPipComponentType.Service) {
2515
- const modules = [];
2709
+ const informationSourceModules = [];
2516
2710
  if (Is.arrayValue(instanceConfig.options?.informationModulesConfig)) {
2517
2711
  for (const moduleConfig of instanceConfig.options.informationModulesConfig) {
2518
- modules.push({
2712
+ informationSourceModules.push({
2519
2713
  sourceId: moduleConfig.id,
2520
2714
  source: await EngineModuleHelper.loadComponent(engineCore, moduleConfig)
2521
2715
  });
@@ -2526,7 +2720,7 @@ async function initialiseRightsManagementPipComponent(engineCore, context, insta
2526
2720
  ...instanceConfig.options,
2527
2721
  config: {
2528
2722
  ...instanceConfig.options?.config,
2529
- sources: instanceConfig.options?.config?.sources ?? modules
2723
+ sources: instanceConfig.options?.config?.sources ?? informationSourceModules
2530
2724
  }
2531
2725
  });
2532
2726
  instanceType = StringHelper.kebabCase("PolicyInformationPointService");
@@ -2600,84 +2794,6 @@ async function initialiseRightsManagementPmpComponent(engineCore, context, insta
2600
2794
  return finalInstanceType;
2601
2795
  }
2602
2796
 
2603
- // Copyright 2024 IOTA Stiftung.
2604
- // SPDX-License-Identifier: Apache-2.0.
2605
- /**
2606
- * Rights management PNP component types.
2607
- */
2608
- // eslint-disable-next-line @typescript-eslint/naming-convention
2609
- const RightsManagementPnpComponentType = {
2610
- /**
2611
- * Service.
2612
- */
2613
- Service: "service",
2614
- /**
2615
- * REST client.
2616
- */
2617
- RestClient: "rest-client"
2618
- };
2619
-
2620
- // Copyright 2024 IOTA Stiftung.
2621
- // SPDX-License-Identifier: Apache-2.0.
2622
- /**
2623
- * Initialise the rights management PNP component.
2624
- * @param engineCore The engine core.
2625
- * @param context The context for the engine.
2626
- * @param instanceConfig The instance config.
2627
- * @param overrideInstanceType The instance type to override the default.
2628
- * @returns The name of the instance created.
2629
- * @throws GeneralError if the component type is unknown.
2630
- */
2631
- async function initialiseRightsManagementPnpComponent(engineCore, context, instanceConfig, overrideInstanceType) {
2632
- engineCore.logInfo(I18n.formatMessage("engineCore.configuring", {
2633
- element: `Rights Management PNP Component: ${instanceConfig.type}`
2634
- }));
2635
- const type = instanceConfig.type;
2636
- let component;
2637
- let instanceType;
2638
- if (type === RightsManagementPnpComponentType.Service) {
2639
- const modules = [];
2640
- if (Is.arrayValue(instanceConfig.options?.negotiatorModulesConfig)) {
2641
- for (const moduleConfig of instanceConfig.options.negotiatorModulesConfig) {
2642
- modules.push({
2643
- negotiatorId: moduleConfig.id,
2644
- negotiator: await EngineModuleHelper.loadComponent(engineCore, moduleConfig)
2645
- });
2646
- }
2647
- }
2648
- component = new PolicyNegotiationPointService({
2649
- loggingComponentType: engineCore.getRegisteredInstanceType("loggingComponent"),
2650
- identityConnectorType: engineCore.getRegisteredInstanceType("identityConnector"),
2651
- policyNegotiationAdministrationPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPnapComponent"),
2652
- policyAdministrationPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPapComponent"),
2653
- policyInformationPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPipComponent"),
2654
- ...instanceConfig.options,
2655
- config: {
2656
- ...instanceConfig.options?.config,
2657
- negotiators: instanceConfig.options?.config?.negotiators ?? modules
2658
- }
2659
- });
2660
- instanceType = StringHelper.kebabCase("PolicyNegotiationPointService");
2661
- }
2662
- else if (type === RightsManagementPnpComponentType.RestClient) {
2663
- component = new PolicyNegotiationPointClient(instanceConfig.options);
2664
- instanceType = StringHelper.kebabCase("PolicyNegotiationPointClient");
2665
- }
2666
- else {
2667
- throw new GeneralError("engineCore", "componentUnknownType", {
2668
- type,
2669
- componentType: "RightsManagementPnpComponent"
2670
- });
2671
- }
2672
- const finalInstanceType = overrideInstanceType ?? instanceType;
2673
- context.componentInstances.push({
2674
- instanceType: finalInstanceType,
2675
- component
2676
- });
2677
- ComponentFactory.register(finalInstanceType, () => component);
2678
- return finalInstanceType;
2679
- }
2680
-
2681
2797
  // Copyright 2024 IOTA Stiftung.
2682
2798
  // SPDX-License-Identifier: Apache-2.0.
2683
2799
  /**
@@ -2746,20 +2862,24 @@ async function initialiseRightsManagementPnapComponent(engineCore, context, inst
2746
2862
  // Copyright 2024 IOTA Stiftung.
2747
2863
  // SPDX-License-Identifier: Apache-2.0.
2748
2864
  /**
2749
- * Rights management PNRP component types.
2865
+ * Rights management PNP component types.
2750
2866
  */
2751
2867
  // eslint-disable-next-line @typescript-eslint/naming-convention
2752
- const RightsManagementPnrpComponentType = {
2868
+ const RightsManagementPnpComponentType = {
2753
2869
  /**
2754
2870
  * Service.
2755
2871
  */
2756
- Service: "service"
2872
+ Service: "service",
2873
+ /**
2874
+ * REST client.
2875
+ */
2876
+ RestClient: "rest-client"
2757
2877
  };
2758
2878
 
2759
2879
  // Copyright 2024 IOTA Stiftung.
2760
2880
  // SPDX-License-Identifier: Apache-2.0.
2761
2881
  /**
2762
- * Initialise the rights management PNRP component.
2882
+ * Initialise the rights management PNP component.
2763
2883
  * @param engineCore The engine core.
2764
2884
  * @param context The context for the engine.
2765
2885
  * @param instanceConfig The instance config.
@@ -2767,26 +2887,60 @@ const RightsManagementPnrpComponentType = {
2767
2887
  * @returns The name of the instance created.
2768
2888
  * @throws GeneralError if the component type is unknown.
2769
2889
  */
2770
- async function initialiseRightsManagementPnrpComponent(engineCore, context, instanceConfig, overrideInstanceType) {
2890
+ async function initialiseRightsManagementPnpComponent(engineCore, context, instanceConfig, overrideInstanceType) {
2771
2891
  engineCore.logInfo(I18n.formatMessage("engineCore.configuring", {
2772
- element: `Rights Management PNRP Component: ${instanceConfig.type}`
2892
+ element: `Rights Management PNP Component: ${instanceConfig.type}`
2773
2893
  }));
2774
2894
  const type = instanceConfig.type;
2775
2895
  let component;
2776
2896
  let instanceType;
2777
- if (type === RightsManagementPnrpComponentType.Service) {
2778
- component = new PolicyNegotiationRequestPointService({
2897
+ if (type === RightsManagementPnpComponentType.Service) {
2898
+ const negotiatorModules = [];
2899
+ if (Is.arrayValue(instanceConfig.options?.negotiatorModulesConfig)) {
2900
+ for (const moduleConfig of instanceConfig.options.negotiatorModulesConfig) {
2901
+ negotiatorModules.push({
2902
+ negotiatorId: moduleConfig.id,
2903
+ negotiator: await EngineModuleHelper.loadComponent(engineCore, moduleConfig)
2904
+ });
2905
+ }
2906
+ }
2907
+ const requesterModules = [];
2908
+ if (Is.arrayValue(instanceConfig.options?.requesterModulesConfig)) {
2909
+ for (const moduleConfig of instanceConfig.options.requesterModulesConfig) {
2910
+ requesterModules.push({
2911
+ requesterId: moduleConfig.id,
2912
+ requester: await EngineModuleHelper.loadComponent(engineCore, moduleConfig)
2913
+ });
2914
+ }
2915
+ }
2916
+ component = new PolicyNegotiationPointService({
2779
2917
  loggingComponentType: engineCore.getRegisteredInstanceType("loggingComponent"),
2780
- identityConnectorType: engineCore.getRegisteredInstanceType("identityConnector"),
2918
+ policyNegotiationAdministrationPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPnapComponent"),
2919
+ policyAdministrationPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPapComponent"),
2781
2920
  policyInformationPointComponentType: engineCore.getRegisteredInstanceType("rightsManagementPipComponent"),
2782
- ...instanceConfig.options
2921
+ ...instanceConfig.options,
2922
+ config: {
2923
+ ...instanceConfig.options?.config,
2924
+ negotiators: instanceConfig.options?.config?.negotiators ?? negotiatorModules,
2925
+ requesters: instanceConfig.options?.config?.requesters ?? requesterModules
2926
+ }
2927
+ });
2928
+ instanceType = StringHelper.kebabCase("PolicyNegotiationPointService");
2929
+ }
2930
+ else if (type === RightsManagementPnpComponentType.RestClient) {
2931
+ component = new PolicyNegotiationPointClient({
2932
+ ...instanceConfig.options,
2933
+ authenticationGeneratorType: instanceConfig.options?.authenticationGeneratorType ??
2934
+ engineCore.getRegisteredInstanceType("authenticationGeneratorComponent", [
2935
+ "verifiable-credential"
2936
+ ])
2783
2937
  });
2784
- instanceType = StringHelper.kebabCase("PolicyNegotiationRequestPointService");
2938
+ instanceType = StringHelper.kebabCase("PolicyNegotiationPointClient");
2785
2939
  }
2786
2940
  else {
2787
2941
  throw new GeneralError("engineCore", "componentUnknownType", {
2788
2942
  type,
2789
- componentType: "RightsManagementPnrpComponent"
2943
+ componentType: "RightsManagementPnpComponent"
2790
2944
  });
2791
2945
  }
2792
2946
  const finalInstanceType = overrideInstanceType ?? instanceType;
@@ -2907,8 +3061,8 @@ async function initialiseSynchronisedStorageComponent(engineCore, context, insta
2907
3061
  eventBusComponentType: engineCore.getRegisteredInstanceType("eventBusComponent"),
2908
3062
  vaultConnectorType: engineCore.getRegisteredInstanceType("vaultConnector"),
2909
3063
  verifiableStorageConnectorType: engineCore.getRegisteredInstanceType("verifiableStorageConnector"),
2910
- identityConnectorType: engineCore.getRegisteredInstanceType("identityConnector"),
2911
3064
  taskSchedulerComponentType: engineCore.getRegisteredInstanceType("taskSchedulerComponent"),
3065
+ policyEnforcementPointComponentType: engineCore.getRegisteredInstanceTypeOptional("rightsManagementPepComponent"),
2912
3066
  trustedSynchronisedStorageComponentType: engineCore.getRegisteredInstanceTypeOptional("synchronisedStorageComponent", ["trusted"]),
2913
3067
  blobStorageConnectorType: engineCore.getRegisteredInstanceType("blobStorageConnector", [
2914
3068
  "public"
@@ -2918,7 +3072,13 @@ async function initialiseSynchronisedStorageComponent(engineCore, context, insta
2918
3072
  instanceType = StringHelper.kebabCase("SynchronisedStorageService");
2919
3073
  }
2920
3074
  else if (type === SynchronisedStorageComponentType.RestClient) {
2921
- component = new SynchronisedStorageClient(instanceConfig.options);
3075
+ component = new SynchronisedStorageClient({
3076
+ ...instanceConfig.options,
3077
+ authenticationGeneratorType: instanceConfig.options?.authenticationGeneratorType ??
3078
+ engineCore.getRegisteredInstanceType("authenticationGeneratorComponent", [
3079
+ "verifiable-credential"
3080
+ ])
3081
+ });
2922
3082
  instanceType = StringHelper.kebabCase("SynchronisedStorageClient");
2923
3083
  }
2924
3084
  else {
@@ -3388,4 +3548,4 @@ const DltConfigType = {
3388
3548
  Iota: "iota"
3389
3549
  };
3390
3550
 
3391
- export { AttestationComponentType, AttestationConnectorType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, BackgroundTaskConnectorType, BlobStorageComponentType, BlobStorageConnectorType, DataConverterConnectorType, DataExtractorConnectorType, DataProcessingComponentType, DataSpaceConnectorComponentType, DltConfigType, DocumentManagementComponentType, EntityStorageComponentType, EntityStorageConnectorType, EventBusComponentType, EventBusConnectorType, FaucetConnectorType, FederatedCatalogueComponentType, IdentityComponentType, IdentityConnectorType, IdentityProfileComponentType, IdentityProfileConnectorType, IdentityResolverComponentType, IdentityResolverConnectorType, ImmutableProofComponentType, LoggingComponentType, LoggingConnectorType, MessagingComponentType, MessagingEmailConnectorType, MessagingPushNotificationConnectorType, MessagingSmsConnectorType, NftComponentType, NftConnectorType, RightsManagementPapComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPipComponentType, RightsManagementPmpComponentType, RightsManagementPnapComponentType, RightsManagementPnpComponentType, RightsManagementPnrpComponentType, RightsManagementPxpComponentType, SynchronisedStorageComponentType, TaskSchedulerComponentType, TelemetryComponentType, TelemetryConnectorType, VaultConnectorType, VerifiableStorageComponentType, VerifiableStorageConnectorType, WalletConnectorType, initialiseAttestationComponent, initialiseAttestationConnector, initialiseAuditableItemGraphComponent, initialiseAuditableItemStreamComponent, initialiseBackgroundTaskConnector, initialiseBlobStorageComponent, initialiseBlobStorageConnector, initialiseDataConverterConnector, initialiseDataExtractorConnector, initialiseDataProcessingComponent, initialiseDataSpaceConnectorComponent, initialiseDocumentManagementComponent, initialiseEntityStorageComponent, initialiseEntityStorageConnector, initialiseEventBusComponent, initialiseEventBusConnector, initialiseFaucetConnector, initialiseFederatedCatalogueComponent, initialiseIdentityComponent, initialiseIdentityConnector, initialiseIdentityProfileComponent, initialiseIdentityProfileConnector, initialiseIdentityResolverComponent, initialiseIdentityResolverConnector, initialiseImmutableProofComponent, initialiseLoggingComponent, initialiseLoggingConnector, initialiseMessagingComponent, initialiseMessagingEmailConnector, initialiseMessagingPushNotificationConnector, initialiseMessagingSmsConnector, initialiseNftComponent, initialiseNftConnector, initialiseRightsManagementPapComponent, initialiseRightsManagementPdpComponent, initialiseRightsManagementPepComponent, initialiseRightsManagementPipComponent, initialiseRightsManagementPmpComponent, initialiseRightsManagementPnapComponent, initialiseRightsManagementPnpComponent, initialiseRightsManagementPnrpComponent, initialiseRightsManagementPxpComponent, initialiseSynchronisedStorageComponent, initialiseTaskSchedulerComponent, initialiseTelemetryComponent, initialiseTelemetryConnector, initialiseVaultConnector, initialiseVerifiableStorageComponent, initialiseVerifiableStorageConnector, initialiseWalletConnector, initialiseWalletStorage };
3551
+ export { AttestationComponentType, AttestationConnectorType, AuditableItemGraphComponentType, AuditableItemStreamComponentType, AuthenticationGeneratorComponentType, BackgroundTaskConnectorType, BlobStorageComponentType, BlobStorageConnectorType, DataConverterConnectorType, DataExtractorConnectorType, DataProcessingComponentType, DataSpaceConnectorComponentType, DltConfigType, DocumentManagementComponentType, EntityStorageComponentType, EntityStorageConnectorType, EventBusComponentType, EventBusConnectorType, FaucetConnectorType, FederatedCatalogueComponentType, IdentityComponentType, IdentityConnectorType, IdentityProfileComponentType, IdentityProfileConnectorType, IdentityResolverComponentType, IdentityResolverConnectorType, ImmutableProofComponentType, LoggingComponentType, LoggingConnectorType, MessagingComponentType, MessagingEmailConnectorType, MessagingPushNotificationConnectorType, MessagingSmsConnectorType, NftComponentType, NftConnectorType, RightsManagementDapComponentType, RightsManagementDarpComponentType, RightsManagementPapComponentType, RightsManagementPdpComponentType, RightsManagementPepComponentType, RightsManagementPipComponentType, RightsManagementPmpComponentType, RightsManagementPnapComponentType, RightsManagementPnpComponentType, RightsManagementPxpComponentType, SynchronisedStorageComponentType, TaskSchedulerComponentType, TelemetryComponentType, TelemetryConnectorType, VaultConnectorType, VerifiableStorageComponentType, VerifiableStorageConnectorType, WalletConnectorType, initialiseAttestationComponent, initialiseAttestationConnector, initialiseAuditableItemGraphComponent, initialiseAuditableItemStreamComponent, initialiseAuthenticationGeneratorComponent, initialiseBackgroundTaskConnector, initialiseBlobStorageComponent, initialiseBlobStorageConnector, initialiseDataConverterConnector, initialiseDataExtractorConnector, initialiseDataProcessingComponent, initialiseDataSpaceConnectorComponent, initialiseDocumentManagementComponent, initialiseEntityStorageComponent, initialiseEntityStorageConnector, initialiseEventBusComponent, initialiseEventBusConnector, initialiseFaucetConnector, initialiseFederatedCatalogueComponent, initialiseIdentityComponent, initialiseIdentityConnector, initialiseIdentityProfileComponent, initialiseIdentityProfileConnector, initialiseIdentityResolverComponent, initialiseIdentityResolverConnector, initialiseImmutableProofComponent, initialiseLoggingComponent, initialiseLoggingConnector, initialiseMessagingComponent, initialiseMessagingEmailConnector, initialiseMessagingPushNotificationConnector, initialiseMessagingSmsConnector, initialiseNftComponent, initialiseNftConnector, initialiseRightsManagementDapComponent, initialiseRightsManagementDarpComponent, initialiseRightsManagementPapComponent, initialiseRightsManagementPdpComponent, initialiseRightsManagementPepComponent, initialiseRightsManagementPipComponent, initialiseRightsManagementPmpComponent, initialiseRightsManagementPnapComponent, initialiseRightsManagementPnpComponent, initialiseRightsManagementPxpComponent, initialiseSynchronisedStorageComponent, initialiseTaskSchedulerComponent, initialiseTelemetryComponent, initialiseTelemetryConnector, initialiseVaultConnector, initialiseVerifiableStorageComponent, initialiseVerifiableStorageConnector, initialiseWalletConnector, initialiseWalletStorage };
@@ -0,0 +1,13 @@
1
+ import type { IEngineCore, IEngineCoreContext } from "@twin.org/engine-models";
2
+ import type { AuthenticationGeneratorComponentConfig } from "../models/config/authenticationGeneratorComponentConfig";
3
+ import type { IEngineConfig } from "../models/IEngineConfig";
4
+ /**
5
+ * Initialise the authentication generator component.
6
+ * @param engineCore The engine core.
7
+ * @param context The context for the engine.
8
+ * @param instanceConfig The instance config.
9
+ * @param overrideInstanceType The instance type to override the default.
10
+ * @returns The name of the instance created.
11
+ * @throws GeneralError if the component type is unknown.
12
+ */
13
+ export declare function initialiseAuthenticationGeneratorComponent(engineCore: IEngineCore<IEngineConfig>, context: IEngineCoreContext<IEngineConfig>, instanceConfig: AuthenticationGeneratorComponentConfig, overrideInstanceType?: string): Promise<string | undefined>;
@@ -0,0 +1,13 @@
1
+ import type { IEngineCore, IEngineCoreContext } from "@twin.org/engine-models";
2
+ import type { RightsManagementDapComponentConfig } from "../models/config/rightsManagementDapComponentConfig";
3
+ import type { IEngineConfig } from "../models/IEngineConfig";
4
+ /**
5
+ * Initialise the rights management DAP component.
6
+ * @param engineCore The engine core.
7
+ * @param context The context for the engine.
8
+ * @param instanceConfig The instance config.
9
+ * @param overrideInstanceType The instance type to override the default.
10
+ * @returns The name of the instance created.
11
+ * @throws GeneralError if the component type is unknown.
12
+ */
13
+ export declare function initialiseRightsManagementDapComponent(engineCore: IEngineCore<IEngineConfig>, context: IEngineCoreContext<IEngineConfig>, instanceConfig: RightsManagementDapComponentConfig, overrideInstanceType?: string): Promise<string | undefined>;
@@ -1,8 +1,8 @@
1
1
  import type { IEngineCore, IEngineCoreContext } from "@twin.org/engine-models";
2
- import type { RightsManagementPnrpComponentConfig } from "../models/config/rightsManagementPnrpComponentConfig";
2
+ import type { RightsManagementDarpComponentConfig } from "../models/config/rightsManagementDarpComponentConfig";
3
3
  import type { IEngineConfig } from "../models/IEngineConfig";
4
4
  /**
5
- * Initialise the rights management PNRP component.
5
+ * Initialise the rights management DARP component.
6
6
  * @param engineCore The engine core.
7
7
  * @param context The context for the engine.
8
8
  * @param instanceConfig The instance config.
@@ -10,4 +10,4 @@ import type { IEngineConfig } from "../models/IEngineConfig";
10
10
  * @returns The name of the instance created.
11
11
  * @throws GeneralError if the component type is unknown.
12
12
  */
13
- export declare function initialiseRightsManagementPnrpComponent(engineCore: IEngineCore<IEngineConfig>, context: IEngineCoreContext<IEngineConfig>, instanceConfig: RightsManagementPnrpComponentConfig, overrideInstanceType?: string): Promise<string | undefined>;
13
+ export declare function initialiseRightsManagementDarpComponent(engineCore: IEngineCore<IEngineConfig>, context: IEngineCoreContext<IEngineConfig>, instanceConfig: RightsManagementDarpComponentConfig, overrideInstanceType?: string): Promise<string | undefined>;
@@ -1,6 +1,7 @@
1
1
  export * from "./components/attestation";
2
2
  export * from "./components/auditableItemGraph";
3
3
  export * from "./components/auditableItemStream";
4
+ export * from "./components/authenticationGenerator";
4
5
  export * from "./components/backgroundTask";
5
6
  export * from "./components/blobStorage";
6
7
  export * from "./components/dataProcessing";
@@ -17,14 +18,15 @@ export * from "./components/immutableProof";
17
18
  export * from "./components/logging";
18
19
  export * from "./components/messaging";
19
20
  export * from "./components/nft";
21
+ export * from "./components/rightsManagementDap";
22
+ export * from "./components/rightsManagementDarp";
20
23
  export * from "./components/rightsManagementPap";
21
24
  export * from "./components/rightsManagementPdp";
22
25
  export * from "./components/rightsManagementPep";
23
26
  export * from "./components/rightsManagementPip";
24
27
  export * from "./components/rightsManagementPmp";
25
- export * from "./components/rightsManagementPnp";
26
28
  export * from "./components/rightsManagementPnap";
27
- export * from "./components/rightsManagementPnrp";
29
+ export * from "./components/rightsManagementPnp";
28
30
  export * from "./components/rightsManagementPxp";
29
31
  export * from "./components/synchronisedStorage";
30
32
  export * from "./components/taskScheduler";
@@ -36,6 +38,7 @@ export * from "./models/config/attestationComponentConfig";
36
38
  export * from "./models/config/attestationConnectorConfig";
37
39
  export * from "./models/config/auditableItemGraphComponentConfig";
38
40
  export * from "./models/config/auditableItemStreamComponentConfig";
41
+ export * from "./models/config/authenticationGeneratorComponentConfig";
39
42
  export * from "./models/config/backgroundTaskConnectorConfig";
40
43
  export * from "./models/config/blobStorageComponentConfig";
41
44
  export * from "./models/config/blobStorageConnectorConfig";
@@ -66,6 +69,8 @@ export * from "./models/config/messagingPushNotificationConnectorConfig";
66
69
  export * from "./models/config/messagingSmsConnectorConfig";
67
70
  export * from "./models/config/nftComponentConfig";
68
71
  export * from "./models/config/nftConnectorConfig";
72
+ export * from "./models/config/rightsManagementDapComponentConfig";
73
+ export * from "./models/config/rightsManagementDarpComponentConfig";
69
74
  export * from "./models/config/rightsManagementPapComponentConfig";
70
75
  export * from "./models/config/rightsManagementPdpComponentConfig";
71
76
  export * from "./models/config/rightsManagementPepComponentConfig";
@@ -73,7 +78,6 @@ export * from "./models/config/rightsManagementPipComponentConfig";
73
78
  export * from "./models/config/rightsManagementPmpComponentConfig";
74
79
  export * from "./models/config/rightsManagementPnapComponentConfig";
75
80
  export * from "./models/config/rightsManagementPnpComponentConfig";
76
- export * from "./models/config/rightsManagementPnrpComponentConfig";
77
81
  export * from "./models/config/rightsManagementPxpComponentConfig";
78
82
  export * from "./models/config/synchronisedStorageComponentConfig";
79
83
  export * from "./models/config/taskSchedulerComponentConfig";
@@ -88,6 +92,7 @@ export * from "./models/types/attestationComponentType";
88
92
  export * from "./models/types/attestationConnectorType";
89
93
  export * from "./models/types/auditableItemGraphComponentType";
90
94
  export * from "./models/types/auditableItemStreamComponentType";
95
+ export * from "./models/types/authenticationGeneratorComponentType";
91
96
  export * from "./models/types/backgroundTaskConnectorType";
92
97
  export * from "./models/types/blobStorageComponentType";
93
98
  export * from "./models/types/blobStorageConnectorType";
@@ -118,6 +123,8 @@ export * from "./models/types/messagingPushNotificationConnectorType";
118
123
  export * from "./models/types/messagingSmsConnectorType";
119
124
  export * from "./models/types/nftComponentType";
120
125
  export * from "./models/types/nftConnectorType";
126
+ export * from "./models/types/rightsManagementDapComponentType";
127
+ export * from "./models/types/rightsManagementDarpComponentType";
121
128
  export * from "./models/types/rightsManagementPapComponentType";
122
129
  export * from "./models/types/rightsManagementPdpComponentType";
123
130
  export * from "./models/types/rightsManagementPepComponentType";
@@ -125,7 +132,6 @@ export * from "./models/types/rightsManagementPipComponentType";
125
132
  export * from "./models/types/rightsManagementPmpComponentType";
126
133
  export * from "./models/types/rightsManagementPnapComponentType";
127
134
  export * from "./models/types/rightsManagementPnpComponentType";
128
- export * from "./models/types/rightsManagementPnrpComponentType";
129
135
  export * from "./models/types/rightsManagementPxpComponentType";
130
136
  export * from "./models/types/synchronisedStorageComponentType";
131
137
  export * from "./models/types/taskSchedulerComponentType";