@nmshd/consumption 2.0.0-alpha.20 → 2.0.0-alpha.21

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 (88) hide show
  1. package/dist/buildInformation.js +4 -4
  2. package/dist/consumption/ConsumptionController.d.ts +2 -4
  3. package/dist/consumption/ConsumptionController.js +15 -2
  4. package/dist/consumption/ConsumptionController.js.map +1 -1
  5. package/dist/consumption/ConsumptionErrors.d.ts +1 -2
  6. package/dist/consumption/ConsumptionErrors.js +2 -5
  7. package/dist/consumption/ConsumptionErrors.js.map +1 -1
  8. package/dist/modules/attributes/ConsumptionAttributesController.d.ts +7 -9
  9. package/dist/modules/attributes/ConsumptionAttributesController.js +3 -14
  10. package/dist/modules/attributes/ConsumptionAttributesController.js.map +1 -1
  11. package/dist/modules/attributes/{CreateConsumptionAttributeParams.d.ts → local/CreateConsumptionAttributeParams.d.ts} +0 -0
  12. package/dist/modules/attributes/{CreateConsumptionAttributeParams.js → local/CreateConsumptionAttributeParams.js} +0 -0
  13. package/dist/modules/attributes/local/CreateConsumptionAttributeParams.js.map +1 -0
  14. package/dist/modules/attributes/{CreatePeerConsumptionAttributeParams.d.ts → local/CreatePeerConsumptionAttributeParams.d.ts} +1 -1
  15. package/dist/modules/attributes/{CreatePeerConsumptionAttributeParams.js → local/CreatePeerConsumptionAttributeParams.js} +0 -0
  16. package/dist/modules/attributes/local/CreatePeerConsumptionAttributeParams.js.map +1 -0
  17. package/dist/modules/attributes/{CreateRelationshipAttributeParams.d.ts → local/CreateRelationshipAttributeParams.d.ts} +0 -0
  18. package/dist/modules/attributes/{CreateRelationshipAttributeParams.js → local/CreateRelationshipAttributeParams.js} +0 -0
  19. package/dist/modules/attributes/local/CreateRelationshipAttributeParams.js.map +1 -0
  20. package/dist/modules/attributes/{CreateSharedConsumptionAttributeCopyParams.d.ts → local/CreateSharedConsumptionAttributeCopyParams.d.ts} +0 -0
  21. package/dist/modules/attributes/{CreateSharedConsumptionAttributeCopyParams.js → local/CreateSharedConsumptionAttributeCopyParams.js} +0 -0
  22. package/dist/modules/attributes/local/CreateSharedConsumptionAttributeCopyParams.js.map +1 -0
  23. package/dist/modules/attributes/{GetIdentityAttributesParams.d.ts → local/GetIdentityAttributesParams.d.ts} +0 -0
  24. package/dist/modules/attributes/{GetIdentityAttributesParams.js → local/GetIdentityAttributesParams.js} +0 -0
  25. package/dist/modules/attributes/local/GetIdentityAttributesParams.js.map +1 -0
  26. package/dist/modules/attributes/{GetRelationshipAttributesParams.d.ts → local/GetRelationshipAttributesParams.d.ts} +0 -0
  27. package/dist/modules/attributes/{GetRelationshipAttributesParams.js → local/GetRelationshipAttributesParams.js} +0 -0
  28. package/dist/modules/attributes/local/GetRelationshipAttributesParams.js.map +1 -0
  29. package/dist/modules/attributes/{SucceedConsumptionAttributeParams.d.ts → local/SucceedConsumptionAttributeParams.d.ts} +0 -0
  30. package/dist/modules/attributes/{SucceedConsumptionAttributeParams.js → local/SucceedConsumptionAttributeParams.js} +0 -0
  31. package/dist/modules/attributes/local/SucceedConsumptionAttributeParams.js.map +1 -0
  32. package/dist/modules/attributes/{UpdateConsumptionAttributeParams.d.ts → local/UpdateConsumptionAttributeParams.d.ts} +0 -0
  33. package/dist/modules/attributes/{UpdateConsumptionAttributeParams.js → local/UpdateConsumptionAttributeParams.js} +0 -0
  34. package/dist/modules/attributes/local/UpdateConsumptionAttributeParams.js.map +1 -0
  35. package/dist/modules/index.d.ts +11 -7
  36. package/dist/modules/index.js +11 -7
  37. package/dist/modules/index.js.map +1 -1
  38. package/dist/modules/requests/incoming/IncomingRequestsController.js +2 -2
  39. package/dist/modules/requests/incoming/IncomingRequestsController.js.map +1 -1
  40. package/dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.d.ts +13 -11
  41. package/dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js +2 -0
  42. package/dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js.map +1 -1
  43. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.d.ts +11 -10
  44. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js +8 -8
  45. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js.map +1 -1
  46. package/dist/modules/requests/itemProcessors/IRequestItemProcessor.d.ts +14 -10
  47. package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.d.ts +4 -7
  48. package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js +8 -11
  49. package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js.map +1 -1
  50. package/dist/modules/requests/itemProcessors/ValidationResult.d.ts +3 -3
  51. package/dist/modules/requests/itemProcessors/ValidationResult.js +5 -5
  52. package/dist/modules/requests/itemProcessors/ValidationResult.js.map +1 -1
  53. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts +8 -5
  54. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js +25 -18
  55. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js.map +1 -1
  56. package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.d.ts +20 -0
  57. package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js +47 -0
  58. package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js.map +1 -0
  59. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.d.ts +14 -0
  60. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js +88 -0
  61. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js.map +1 -0
  62. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.d.ts +7 -5
  63. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js +30 -19
  64. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js.map +1 -1
  65. package/dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.d.ts +7 -0
  66. package/dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js +20 -0
  67. package/dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js.map +1 -0
  68. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.d.ts +15 -0
  69. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js +93 -0
  70. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js.map +1 -0
  71. package/dist/modules/requests/itemProcessors/utility/validateQuery.d.ts +4 -0
  72. package/dist/modules/requests/itemProcessors/utility/validateQuery.js +21 -0
  73. package/dist/modules/requests/itemProcessors/utility/validateQuery.js.map +1 -0
  74. package/dist/modules/requests/outgoing/OutgoingRequestsController.js +9 -9
  75. package/dist/modules/requests/outgoing/OutgoingRequestsController.js.map +1 -1
  76. package/lib-web/nmshd.consumption.js +717 -403
  77. package/lib-web/nmshd.consumption.js.map +1 -1
  78. package/lib-web/nmshd.consumption.min.js +1 -1
  79. package/lib-web/nmshd.consumption.min.js.map +1 -1
  80. package/package.json +10 -10
  81. package/dist/modules/attributes/CreateConsumptionAttributeParams.js.map +0 -1
  82. package/dist/modules/attributes/CreatePeerConsumptionAttributeParams.js.map +0 -1
  83. package/dist/modules/attributes/CreateRelationshipAttributeParams.js.map +0 -1
  84. package/dist/modules/attributes/CreateSharedConsumptionAttributeCopyParams.js.map +0 -1
  85. package/dist/modules/attributes/GetIdentityAttributesParams.js.map +0 -1
  86. package/dist/modules/attributes/GetRelationshipAttributesParams.js.map +0 -1
  87. package/dist/modules/attributes/SucceedConsumptionAttributeParams.js.map +0 -1
  88. package/dist/modules/attributes/UpdateConsumptionAttributeParams.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GenericRequestItemProcessor.js","sourceRoot":"","sources":["../../../../src/modules/requests/itemProcessors/GenericRequestItemProcessor.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,4CAAsH;AAItH,iFAA6E;AAC7E,yDAAqD;AAErD,MAAa,2BAIX,SAAQ,2DAAwE;IACvE,uCAAuC,CAAC,YAA0B;QACrE,OAAO,IAAI,CAAA;IACf,CAAC;IAEM,SAAS,CACZ,WAAyB,EACzB,MAAqB,EACrB,OAA2B;QAE3B,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEM,SAAS,CACZ,WAAyB,EACzB,MAAqB,EACrB,OAA2B;QAE3B,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEM,MAAM,CACT,WAAyB,EACzB,MAAqB,EACrB,OAA2B;QAE3B,OAAO,4BAAkB,CAAC,IAAI,CAAC;YAC3B,MAAM,EAAE,4BAAkB,CAAC,QAAQ;YACnC,QAAQ,EAAE,WAAW,CAAC,gBAAgB;SACzC,CAAC,CAAA;IACN,CAAC;IAEM,MAAM,CACT,WAAyB,EACzB,MAAqB,EACrB,OAA2B;QAE3B,OAAO,4BAAkB,CAAC,IAAI,CAAC;YAC3B,MAAM,EAAE,4BAAkB,CAAC,QAAQ;YACnC,QAAQ,EAAE,WAAW,CAAC,gBAAgB;SACzC,CAAC,CAAA;IACN,CAAC;IAEM,4BAA4B,CAAC,WAAyB;QACzD,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEM,4BAA4B,CAC/B,YAAgC,EAChC,WAAyB,EACzB,OAA2B;QAE3B,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEM,yBAAyB,CAC5B,YAA0B,EAC1B,WAAyB,EACzB,OAA2B;QAE3B,aAAa;IACjB,CAAC;CACJ;AAlED,kEAkEC"}
1
+ {"version":3,"file":"GenericRequestItemProcessor.js","sourceRoot":"","sources":["../../../../src/modules/requests/itemProcessors/GenericRequestItemProcessor.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,4CAOuB;AAIvB,iFAA6E;AAE7E,yDAAqD;AAErD,MAAa,2BAIX,SAAQ,2DAAwE;IACvE,uCAAuC,CAC1C,WAAyB,EACzB,WAAmC;QAEnC,OAAO,IAAI,CAAA;IACf,CAAC;IAEM,SAAS,CACZ,WAAyB,EACzB,MAAqB,EACrB,WAAmC;QAEnC,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEM,SAAS,CACZ,WAAyB,EACzB,MAAqB,EACrB,WAAmC;QAEnC,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEM,MAAM,CACT,WAAyB,EACzB,MAAqB,EACrB,WAAmC;QAEnC,OAAO,4BAAkB,CAAC,IAAI,CAAC;YAC3B,MAAM,EAAE,4BAAkB,CAAC,QAAQ;YACnC,QAAQ,EAAE,WAAW,CAAC,gBAAgB;SACzC,CAAC,CAAA;IACN,CAAC;IAEM,MAAM,CACT,WAAyB,EACzB,MAAqB,EACrB,WAAmC;QAEnC,OAAO,4BAAkB,CAAC,IAAI,CAAC;YAC3B,MAAM,EAAE,4BAAkB,CAAC,QAAQ;YACnC,QAAQ,EAAE,WAAW,CAAC,gBAAgB;SACzC,CAAC,CAAA;IACN,CAAC;IAEM,4BAA4B,CAC/B,WAAyB,EACzB,OAAgB,EAChB,SAAsB;QAEtB,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEM,4BAA4B,CAC/B,YAAgC,EAChC,WAAyB,EACzB,WAAmC;QAEnC,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEM,yBAAyB,CAC5B,YAA0B,EAC1B,WAAyB,EACzB,WAAmC;QAEnC,aAAa;IACjB,CAAC;CACJ;AAzED,kEAyEC"}
@@ -1,15 +1,19 @@
1
- import { AcceptResponseItem, RejectResponseItem, RequestItem, ResponseItem } from "@nmshd/content";
1
+ import { AcceptResponseItem, RejectResponseItem, Request, RequestItem, ResponseItem } from "@nmshd/content";
2
+ import { CoreAddress, CoreId } from "@nmshd/transport";
2
3
  import { AcceptRequestItemParametersJSON } from "../incoming/decide/AcceptRequestItemParameters";
3
4
  import { RejectRequestItemParametersJSON } from "../incoming/decide/RejectRequestItemParameters";
4
- import { ConsumptionRequest } from "../local/ConsumptionRequest";
5
5
  import { ValidationResult } from "./ValidationResult";
6
+ export interface ConsumptionRequestInfo {
7
+ id: CoreId;
8
+ peer: CoreAddress;
9
+ }
6
10
  export interface IRequestItemProcessor<TRequestItem extends RequestItem = RequestItem, TAcceptParams extends AcceptRequestItemParametersJSON = AcceptRequestItemParametersJSON, TRejectParams extends RejectRequestItemParametersJSON = RejectRequestItemParametersJSON> {
7
- checkPrerequisitesOfIncomingRequestItem(requestItem: TRequestItem): Promise<boolean> | boolean;
8
- canAccept(requestItem: TRequestItem, params: TAcceptParams, request: ConsumptionRequest): Promise<ValidationResult> | ValidationResult;
9
- canReject(requestItem: TRequestItem, params: TRejectParams, request: ConsumptionRequest): Promise<ValidationResult> | ValidationResult;
10
- accept(requestItem: TRequestItem, params: TAcceptParams, request: ConsumptionRequest): Promise<AcceptResponseItem> | AcceptResponseItem;
11
- reject(requestItem: TRequestItem, params: TRejectParams, request: ConsumptionRequest): Promise<RejectResponseItem> | RejectResponseItem;
12
- canCreateOutgoingRequestItem(requestItem: TRequestItem): Promise<ValidationResult> | ValidationResult;
13
- canApplyIncomingResponseItem(responseItem: ResponseItem, requestItem: TRequestItem, request: ConsumptionRequest): Promise<ValidationResult> | ValidationResult;
14
- applyIncomingResponseItem(responseItem: ResponseItem, requestItem: TRequestItem, request: ConsumptionRequest): Promise<void> | void;
11
+ checkPrerequisitesOfIncomingRequestItem(requestItem: TRequestItem, requestInfo: ConsumptionRequestInfo): Promise<boolean> | boolean;
12
+ canAccept(requestItem: TRequestItem, params: TAcceptParams, requestInfo: ConsumptionRequestInfo): Promise<ValidationResult> | ValidationResult;
13
+ canReject(requestItem: TRequestItem, params: TRejectParams, requestInfo: ConsumptionRequestInfo): Promise<ValidationResult> | ValidationResult;
14
+ accept(requestItem: TRequestItem, params: TAcceptParams, requestInfo: ConsumptionRequestInfo): Promise<AcceptResponseItem> | AcceptResponseItem;
15
+ reject(requestItem: TRequestItem, params: TRejectParams, requestInfo: ConsumptionRequestInfo): Promise<RejectResponseItem> | RejectResponseItem;
16
+ canCreateOutgoingRequestItem(requestItem: TRequestItem, request: Request, recipient: CoreAddress): Promise<ValidationResult> | ValidationResult;
17
+ canApplyIncomingResponseItem(responseItem: ResponseItem, requestItem: TRequestItem, requestInfo: ConsumptionRequestInfo): Promise<ValidationResult> | ValidationResult;
18
+ applyIncomingResponseItem(responseItem: ResponseItem, requestItem: TRequestItem, requestInfo: ConsumptionRequestInfo): Promise<void> | void;
15
19
  }
@@ -5,12 +5,9 @@ import { ProcessorConstructor } from "./ProcessorConstructor";
5
5
  import { RequestItemConstructor } from "./RequestItemConstructor";
6
6
  export declare class RequestItemProcessorRegistry {
7
7
  private readonly consumptionController;
8
- private readonly registry;
9
- constructor(consumptionController: ConsumptionController, processors?: {
10
- processorConstructor: ProcessorConstructor;
11
- itemConstructor: RequestItemConstructor;
12
- }[]);
13
- registerProcessor(processorConstructor: ProcessorConstructor, itemConstructor: RequestItemConstructor): void;
14
- replaceProcessor(processorConstructor: ProcessorConstructor, itemConstructor: RequestItemConstructor): void;
8
+ private readonly processors;
9
+ constructor(consumptionController: ConsumptionController, processors?: Map<RequestItemConstructor, ProcessorConstructor | undefined>);
10
+ registerProcessor(itemConstructor: RequestItemConstructor, processorConstructor: ProcessorConstructor): void;
11
+ registerOrReplaceProcessor(itemConstructor: RequestItemConstructor, processorConstructor: ProcessorConstructor): void;
15
12
  getProcessorForItem(item: RequestItem): IRequestItemProcessor;
16
13
  }
@@ -2,24 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RequestItemProcessorRegistry = void 0;
4
4
  class RequestItemProcessorRegistry {
5
- constructor(consumptionController, processors = []) {
5
+ constructor(consumptionController, processors = new Map()) {
6
6
  this.consumptionController = consumptionController;
7
- this.registry = {};
8
- for (const { itemConstructor, processorConstructor } of processors) {
9
- this.registerProcessor(processorConstructor, itemConstructor);
10
- }
7
+ this.processors = processors;
11
8
  }
12
- registerProcessor(processorConstructor, itemConstructor) {
13
- if (this.registry.hasOwnProperty(itemConstructor.name)) {
9
+ registerProcessor(itemConstructor, processorConstructor) {
10
+ if (this.processors.has(itemConstructor)) {
14
11
  throw new Error(`There is already a processor registered for '${itemConstructor.name}''. Use 'replaceProcessorForType' if you want to replace it.`);
15
12
  }
16
- this.registry[itemConstructor.name] = processorConstructor;
13
+ this.processors.set(itemConstructor, processorConstructor);
17
14
  }
18
- replaceProcessor(processorConstructor, itemConstructor) {
19
- this.registry[itemConstructor.name] = processorConstructor;
15
+ registerOrReplaceProcessor(itemConstructor, processorConstructor) {
16
+ this.processors.set(itemConstructor, processorConstructor);
20
17
  }
21
18
  getProcessorForItem(item) {
22
- const constructor = this.registry[item.constructor.name];
19
+ const constructor = this.processors.get(item.constructor);
23
20
  if (!constructor) {
24
21
  throw new Error(`There was no processor registered for '${item.constructor.name}'.`);
25
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RequestItemProcessorRegistry.js","sourceRoot":"","sources":["../../../../src/modules/requests/itemProcessors/RequestItemProcessorRegistry.ts"],"names":[],"mappings":";;;AAMA,MAAa,4BAA4B;IAGrC,YACqB,qBAA4C,EAC7D,aAAwG,EAAE;QADzF,0BAAqB,GAArB,qBAAqB,CAAuB;QAHhD,aAAQ,GAAqD,EAAE,CAAA;QAM5E,KAAK,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,IAAI,UAAU,EAAE;YAChE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAA;SAChE;IACL,CAAC;IAEM,iBAAiB,CACpB,oBAA0C,EAC1C,eAAuC;QAEvC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YACpD,MAAM,IAAI,KAAK,CACX,gDAAgD,eAAe,CAAC,IAAI,8DAA8D,CACrI,CAAA;SACJ;QACD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAA;IAC9D,CAAC;IAEM,gBAAgB,CAAC,oBAA0C,EAAE,eAAuC;QACvG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAA;IAC9D,CAAC;IAEM,mBAAmB,CAAC,IAAiB;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACxD,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAA;SACvF;QACD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACtD,CAAC;CACJ;AAnCD,oEAmCC"}
1
+ {"version":3,"file":"RequestItemProcessorRegistry.js","sourceRoot":"","sources":["../../../../src/modules/requests/itemProcessors/RequestItemProcessorRegistry.ts"],"names":[],"mappings":";;;AAMA,MAAa,4BAA4B;IACrC,YACqB,qBAA4C,EAC5C,aAAa,IAAI,GAAG,EAA4D;QADhF,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,eAAU,GAAV,UAAU,CAAsE;IAClG,CAAC;IAEG,iBAAiB,CACpB,eAAuC,EACvC,oBAA0C;QAE1C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CACX,gDAAgD,eAAe,CAAC,IAAI,8DAA8D,CACrI,CAAA;SACJ;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAA;IAC9D,CAAC;IAEM,0BAA0B,CAC7B,eAAuC,EACvC,oBAA0C;QAE1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAA;IAC9D,CAAC;IAEM,mBAAmB,CAAC,IAAiB;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAqC,CAAC,CAAA;QACnF,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAA;SACvF;QACD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACtD,CAAC;CACJ;AAhCD,oEAgCC"}
@@ -2,13 +2,13 @@ import { ApplicationError } from "@js-soft/ts-utils";
2
2
  export declare abstract class ValidationResult {
3
3
  readonly items: ValidationResult[];
4
4
  protected constructor(items: ValidationResult[]);
5
- isSuccess(): this is SuccessfulValidatonResult;
5
+ isSuccess(): this is SuccessfulValidationResult;
6
6
  isError(): this is ErrorValidationResult;
7
- static success(items?: ValidationResult[]): SuccessfulValidatonResult;
7
+ static success(items?: ValidationResult[]): SuccessfulValidationResult;
8
8
  static error(error: ApplicationError, items?: ValidationResult[]): ErrorValidationResult;
9
9
  static fromItems(items: ValidationResult[]): ValidationResult;
10
10
  }
11
- export declare class SuccessfulValidatonResult extends ValidationResult {
11
+ export declare class SuccessfulValidationResult extends ValidationResult {
12
12
  constructor(items: ValidationResult[]);
13
13
  }
14
14
  export declare class ErrorValidationResult extends ValidationResult {
@@ -1,19 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ErrorValidationResult = exports.SuccessfulValidatonResult = exports.ValidationResult = void 0;
3
+ exports.ErrorValidationResult = exports.SuccessfulValidationResult = exports.ValidationResult = void 0;
4
4
  const ts_utils_1 = require("@js-soft/ts-utils");
5
5
  class ValidationResult {
6
6
  constructor(items) {
7
7
  this.items = items;
8
8
  }
9
9
  isSuccess() {
10
- return this instanceof SuccessfulValidatonResult;
10
+ return this instanceof SuccessfulValidationResult;
11
11
  }
12
12
  isError() {
13
13
  return this instanceof ErrorValidationResult;
14
14
  }
15
15
  static success(items = []) {
16
- return new SuccessfulValidatonResult(items);
16
+ return new SuccessfulValidationResult(items);
17
17
  }
18
18
  static error(error, items = []) {
19
19
  return new ErrorValidationResult(error, items);
@@ -25,12 +25,12 @@ class ValidationResult {
25
25
  }
26
26
  }
27
27
  exports.ValidationResult = ValidationResult;
28
- class SuccessfulValidatonResult extends ValidationResult {
28
+ class SuccessfulValidationResult extends ValidationResult {
29
29
  constructor(items) {
30
30
  super(items);
31
31
  }
32
32
  }
33
- exports.SuccessfulValidatonResult = SuccessfulValidatonResult;
33
+ exports.SuccessfulValidationResult = SuccessfulValidationResult;
34
34
  class ErrorValidationResult extends ValidationResult {
35
35
  constructor(error, items) {
36
36
  super(items);
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationResult.js","sourceRoot":"","sources":["../../../../src/modules/requests/itemProcessors/ValidationResult.ts"],"names":[],"mappings":";;;AAAA,gDAAoD;AAEpD,MAAsB,gBAAgB;IAClC,YAAsC,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;IAAG,CAAC;IAE5D,SAAS;QACZ,OAAO,IAAI,YAAY,yBAAyB,CAAA;IACpD,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,YAAY,qBAAqB,CAAA;IAChD,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,QAA4B,EAAE;QAChD,OAAO,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAuB,EAAE,QAA4B,EAAE;QACvE,OAAO,IAAI,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAyB;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACjC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,2BAAgB,CAAC,mBAAmB,EAAE,+BAA+B,CAAC,EAAE,KAAK,CAAC;YAC3G,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC;CACJ;AAxBD,4CAwBC;AAED,MAAa,yBAA0B,SAAQ,gBAAgB;IAC3D,YAAmB,KAAyB;QACxC,KAAK,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;CACJ;AAJD,8DAIC;AAED,MAAa,qBAAsB,SAAQ,gBAAgB;IACvD,YAAmC,KAAuB,EAAE,KAAyB;QACjF,KAAK,CAAC,KAAK,CAAC,CAAA;QADmB,UAAK,GAAL,KAAK,CAAkB;IAE1D,CAAC;CACJ;AAJD,sDAIC"}
1
+ {"version":3,"file":"ValidationResult.js","sourceRoot":"","sources":["../../../../src/modules/requests/itemProcessors/ValidationResult.ts"],"names":[],"mappings":";;;AAAA,gDAAoD;AAEpD,MAAsB,gBAAgB;IAClC,YAAsC,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;IAAG,CAAC;IAE5D,SAAS;QACZ,OAAO,IAAI,YAAY,0BAA0B,CAAA;IACrD,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,YAAY,qBAAqB,CAAA;IAChD,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,QAA4B,EAAE;QAChD,OAAO,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAuB,EAAE,QAA4B,EAAE;QACvE,OAAO,IAAI,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAyB;QAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACjC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,2BAAgB,CAAC,mBAAmB,EAAE,+BAA+B,CAAC,EAAE,KAAK,CAAC;YAC3G,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC;CACJ;AAxBD,4CAwBC;AAED,MAAa,0BAA2B,SAAQ,gBAAgB;IAC5D,YAAmB,KAAyB;QACxC,KAAK,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;CACJ;AAJD,gEAIC;AAED,MAAa,qBAAsB,SAAQ,gBAAgB;IACvD,YAAmC,KAAuB,EAAE,KAAyB;QACjF,KAAK,CAAC,KAAK,CAAC,CAAA;QADmB,UAAK,GAAL,KAAK,CAAkB;IAE1D,CAAC;CACJ;AAJD,sDAIC"}
@@ -1,10 +1,13 @@
1
- import { CreateAttributeAcceptResponseItem, CreateAttributeRequestItem, RejectResponseItem } from "@nmshd/content";
2
- import { ConsumptionRequest } from "../../local/ConsumptionRequest";
1
+ import { CreateAttributeAcceptResponseItem, CreateAttributeRequestItem, RejectResponseItem, Request } from "@nmshd/content";
2
+ import { CoreAddress } from "@nmshd/transport";
3
3
  import { GenericRequestItemProcessor } from "../GenericRequestItemProcessor";
4
+ import { ConsumptionRequestInfo } from "../IRequestItemProcessor";
4
5
  import { ValidationResult } from "../ValidationResult";
5
6
  import { AcceptCreateAttributeRequestItemParametersJSON } from "./AcceptCreateAttributeRequestItemParameters";
6
7
  export declare class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor<CreateAttributeRequestItem, AcceptCreateAttributeRequestItemParametersJSON> {
7
- canCreateOutgoingRequestItem(requestItem: CreateAttributeRequestItem): ValidationResult | Promise<ValidationResult>;
8
- accept(requestItem: CreateAttributeRequestItem, _params: AcceptCreateAttributeRequestItemParametersJSON, request: ConsumptionRequest): Promise<CreateAttributeAcceptResponseItem>;
9
- applyIncomingResponseItem(responseItem: CreateAttributeAcceptResponseItem | RejectResponseItem, requestItem: CreateAttributeRequestItem, request: ConsumptionRequest): Promise<void>;
8
+ canCreateOutgoingRequestItem(requestItem: CreateAttributeRequestItem, _request: Request, _recipient: CoreAddress): ValidationResult | Promise<ValidationResult>;
9
+ private canCreateRequestItemWithIdentityAttribute;
10
+ private canCreateRequestItemWithRelationshipAttribute;
11
+ accept(requestItem: CreateAttributeRequestItem, _params: AcceptCreateAttributeRequestItemParametersJSON, requestInfo: ConsumptionRequestInfo): Promise<CreateAttributeAcceptResponseItem>;
12
+ applyIncomingResponseItem(responseItem: CreateAttributeAcceptResponseItem | RejectResponseItem, requestItem: CreateAttributeRequestItem, requestInfo: ConsumptionRequestInfo): Promise<void>;
10
13
  }
@@ -6,41 +6,48 @@ const consumption_1 = require("../../../../consumption");
6
6
  const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
7
7
  const ValidationResult_1 = require("../ValidationResult");
8
8
  class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
9
- canCreateOutgoingRequestItem(requestItem) {
10
- // TODO: remove the following if we for sure only allow RelationshipAttributes in a RequestItem
9
+ canCreateOutgoingRequestItem(requestItem, _request, _recipient) {
11
10
  if (requestItem.attribute instanceof content_1.IdentityAttribute) {
12
- // It doesn't make sense to send a CreateAttributeRequestItem with an IdentityAttribute. E.g. the following cases would have to be handled:
13
- // - The RequestItem contains an Attribute (e.g. GivenName) with the same value as an already existing Attribute
14
- // => Should the user reject the request? If not, do we save a new Attribute with the same value?
15
- // - The RequestItem contains an Attribute (e.g. GivenName) with the a different value than an already existing Attribute
16
- // - ...
17
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.cannotSendCreateAttributeRequestItemsWithIdentityAttributes());
11
+ return this.canCreateRequestItemWithIdentityAttribute(requestItem);
12
+ }
13
+ return this.canCreateRequestItemWithRelationshipAttribute(requestItem);
14
+ }
15
+ canCreateRequestItemWithIdentityAttribute(requestItem) {
16
+ const iAmOwnerOfTheAttribute = this.accountController.identity.isMe(requestItem.attribute.owner);
17
+ if (!iAmOwnerOfTheAttribute) {
18
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem(`Cannot send Identity Attributes of which you are not the owner via ${content_1.CreateAttributeRequestItem.name}. Consider using a ${content_1.ProposeAttributeRequestItem.name} instead.`));
18
19
  }
19
20
  return ValidationResult_1.ValidationResult.success();
20
21
  }
21
- async accept(requestItem, _params, request) {
22
- if (requestItem.attribute instanceof content_1.IdentityAttribute) {
23
- throw new Error("IdentityAttribute not supported"); // TODO: allow only Relationship Attributes in RequestItem?
22
+ canCreateRequestItemWithRelationshipAttribute(requestItem) {
23
+ const iAmOwnerOfTheAttribute = this.accountController.identity.isMe(requestItem.attribute.owner);
24
+ if (!iAmOwnerOfTheAttribute) {
25
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot send Relationship Attributes of which you are not the owner."));
24
26
  }
25
- const result = await this.consumptionController.attributes.createRelationshipAttribute({
27
+ return ValidationResult_1.ValidationResult.success();
28
+ }
29
+ async accept(requestItem, _params, requestInfo) {
30
+ const peerConsumptionAttribute = await this.consumptionController.attributes.createPeerConsumptionAttribute({
26
31
  content: requestItem.attribute,
27
- peer: request.peer,
28
- requestReference: request.id
32
+ peer: requestInfo.peer,
33
+ requestReference: requestInfo.id
29
34
  });
30
35
  return content_1.CreateAttributeAcceptResponseItem.from({
36
+ attributeId: peerConsumptionAttribute.id,
31
37
  result: content_1.ResponseItemResult.Accepted,
32
- attributeId: result.id
38
+ metadata: requestItem.responseMetadata
33
39
  });
34
40
  }
35
- async applyIncomingResponseItem(responseItem, requestItem, request) {
41
+ async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
36
42
  if (!(responseItem instanceof content_1.CreateAttributeAcceptResponseItem)) {
37
43
  return;
38
44
  }
45
+ /* TODO: in case of an own IdentityAttribute that was sent to the peer, we need to specify a source attribute; but currently we can't find the source attribute, because we don't know the id the user picked when sending the request */
39
46
  await this.consumptionController.attributes.createPeerConsumptionAttribute({
40
47
  id: responseItem.attributeId,
41
48
  content: requestItem.attribute,
42
- peer: request.peer,
43
- requestReference: request.id
49
+ peer: requestInfo.peer,
50
+ requestReference: requestInfo.id
44
51
  });
45
52
  }
46
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CreateAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.ts"],"names":[],"mappings":";;;AAAA,4CAMuB;AACvB,yDAA2D;AAE3D,gFAA4E;AAC5E,0DAAsD;AAGtD,MAAa,mCAAoC,SAAQ,yDAGxD;IACmB,4BAA4B,CACxC,WAAuC;QAEvC,+FAA+F;QAC/F,IAAI,WAAW,CAAC,SAAS,YAAY,2BAAiB,EAAE;YACpD,2IAA2I;YAC3I,gHAAgH;YAChH,kGAAkG;YAClG,yHAAyH;YACzH,QAAQ;YACR,OAAO,mCAAgB,CAAC,KAAK,CACzB,+BAAiB,CAAC,QAAQ,CAAC,2DAA2D,EAAE,CAC3F,CAAA;SACJ;QAED,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEe,KAAK,CAAC,MAAM,CACxB,WAAuC,EACvC,OAAuD,EACvD,OAA2B;QAE3B,IAAI,WAAW,CAAC,SAAS,YAAY,2BAAiB,EAAE;YACpD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA,CAAC,2DAA2D;SACjH;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,2BAA2B,CAAC;YACnF,OAAO,EAAE,WAAW,CAAC,SAAS;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,gBAAgB,EAAE,OAAO,CAAC,EAAE;SAC/B,CAAC,CAAA;QAEF,OAAO,2CAAiC,CAAC,IAAI,CAAC;YAC1C,MAAM,EAAE,4BAAkB,CAAC,QAAQ;YACnC,WAAW,EAAE,MAAM,CAAC,EAAE;SACzB,CAAC,CAAA;IACN,CAAC;IAEe,KAAK,CAAC,yBAAyB,CAC3C,YAAoE,EACpE,WAAuC,EACvC,OAA2B;QAE3B,IAAI,CAAC,CAAC,YAAY,YAAY,2CAAiC,CAAC,EAAE;YAC9D,OAAM;SACT;QAED,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,8BAA8B,CAAC;YACvE,EAAE,EAAE,YAAY,CAAC,WAAW;YAC5B,OAAO,EAAE,WAAW,CAAC,SAAS;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,gBAAgB,EAAE,OAAO,CAAC,EAAE;SAC/B,CAAC,CAAA;IACN,CAAC;CACJ;AA3DD,kFA2DC"}
1
+ {"version":3,"file":"CreateAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.ts"],"names":[],"mappings":";;;AAAA,4CAQuB;AAEvB,yDAA2D;AAC3D,gFAA4E;AAE5E,0DAAsD;AAGtD,MAAa,mCAAoC,SAAQ,yDAGxD;IACmB,4BAA4B,CACxC,WAAuC,EACvC,QAAiB,EACjB,UAAuB;QAEvB,IAAI,WAAW,CAAC,SAAS,YAAY,2BAAiB,EAAE;YACpD,OAAO,IAAI,CAAC,yCAAyC,CAAC,WAAW,CAAC,CAAA;SACrE;QAED,OAAO,IAAI,CAAC,6CAA6C,CAAC,WAAW,CAAC,CAAA;IAC1E,CAAC;IAEO,yCAAyC,CAAC,WAAuC;QACrF,MAAM,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEhG,IAAI,CAAC,sBAAsB,EAAE;YACzB,OAAO,mCAAgB,CAAC,KAAK,CACzB,+BAAiB,CAAC,QAAQ,CAAC,kBAAkB,CACzC,sEAAsE,oCAA0B,CAAC,IAAI,sBAAsB,qCAA2B,CAAC,IAAI,WAAW,CACzK,CACJ,CAAA;SACJ;QAED,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEO,6CAA6C,CAAC,WAAuC;QACzF,MAAM,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEhG,IAAI,CAAC,sBAAsB,EAAE;YACzB,OAAO,mCAAgB,CAAC,KAAK,CACzB,+BAAiB,CAAC,QAAQ,CAAC,kBAAkB,CACzC,qEAAqE,CACxE,CACJ,CAAA;SACJ;QAED,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEe,KAAK,CAAC,MAAM,CACxB,WAAuC,EACvC,OAAuD,EACvD,WAAmC;QAEnC,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,8BAA8B,CAAC;YACxG,OAAO,EAAE,WAAW,CAAC,SAAS;YAC9B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,gBAAgB,EAAE,WAAW,CAAC,EAAE;SACnC,CAAC,CAAA;QAEF,OAAO,2CAAiC,CAAC,IAAI,CAAC;YAC1C,WAAW,EAAE,wBAAwB,CAAC,EAAE;YACxC,MAAM,EAAE,4BAAkB,CAAC,QAAQ;YACnC,QAAQ,EAAE,WAAW,CAAC,gBAAgB;SACzC,CAAC,CAAA;IACN,CAAC;IAEe,KAAK,CAAC,yBAAyB,CAC3C,YAAoE,EACpE,WAAuC,EACvC,WAAmC;QAEnC,IAAI,CAAC,CAAC,YAAY,YAAY,2CAAiC,CAAC,EAAE;YAC9D,OAAM;SACT;QAED,yOAAyO;QAEzO,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,8BAA8B,CAAC;YACvE,EAAE,EAAE,YAAY,CAAC,WAAW;YAC5B,OAAO,EAAE,WAAW,CAAC,SAAS;YAC9B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,gBAAgB,EAAE,WAAW,CAAC,EAAE;SACnC,CAAC,CAAA;IACN,CAAC;CACJ;AAhFD,kFAgFC"}
@@ -0,0 +1,20 @@
1
+ import { Serializable } from "@js-soft/ts-serval";
2
+ import { IdentityAttribute, IdentityAttributeJSON, RelationshipAttribute, RelationshipAttributeJSON } from "@nmshd/content";
3
+ import { CoreId } from "@nmshd/transport";
4
+ import { AcceptRequestItemParametersJSON } from "../../incoming/decide/AcceptRequestItemParameters";
5
+ export interface AcceptProposeAttributeRequestItemParametersJSON extends AcceptRequestItemParametersJSON {
6
+ /**
7
+ * Pass an `attributeId` to send a copy of an existing attribute to the peer.
8
+ */
9
+ attributeId?: string;
10
+ /**
11
+ * Pass an `attribute` to create a new Consumption Attribute. If you want to use the proposed Attribute, just pass it here.
12
+ */
13
+ attribute?: IdentityAttributeJSON | RelationshipAttributeJSON;
14
+ }
15
+ export declare class AcceptProposeAttributeRequestItemParameters extends Serializable {
16
+ attributeId?: CoreId;
17
+ attribute?: IdentityAttribute | RelationshipAttribute;
18
+ static from(value: AcceptProposeAttributeRequestItemParametersJSON): AcceptProposeAttributeRequestItemParameters;
19
+ protected static postFrom<T extends Serializable>(value: T): T;
20
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var AcceptProposeAttributeRequestItemParameters_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AcceptProposeAttributeRequestItemParameters = void 0;
14
+ const ts_serval_1 = require("@js-soft/ts-serval");
15
+ const content_1 = require("@nmshd/content");
16
+ const transport_1 = require("@nmshd/transport");
17
+ const ts_simple_nameof_1 = require("ts-simple-nameof");
18
+ let AcceptProposeAttributeRequestItemParameters = AcceptProposeAttributeRequestItemParameters_1 = class AcceptProposeAttributeRequestItemParameters extends ts_serval_1.Serializable {
19
+ static from(value) {
20
+ return this.fromAny(value);
21
+ }
22
+ static postFrom(value) {
23
+ const typedValue = value;
24
+ if (typedValue.attributeId && typedValue.attribute) {
25
+ throw new ts_serval_1.ValidationError(AcceptProposeAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.attribute), `You cannot specify both ${(0, ts_simple_nameof_1.nameof)((x) => x.attribute)} and ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
26
+ }
27
+ if (!typedValue.attributeId && !typedValue.attribute) {
28
+ throw new ts_serval_1.ValidationError(AcceptProposeAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.attribute), `You have to specify either ${(0, ts_simple_nameof_1.nameof)((x) => x.attribute)} or ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
29
+ }
30
+ return value;
31
+ }
32
+ };
33
+ __decorate([
34
+ (0, ts_serval_1.serialize)(),
35
+ (0, ts_serval_1.validate)({ nullable: true }),
36
+ __metadata("design:type", transport_1.CoreId)
37
+ ], AcceptProposeAttributeRequestItemParameters.prototype, "attributeId", void 0);
38
+ __decorate([
39
+ (0, ts_serval_1.serialize)({ unionTypes: [content_1.IdentityAttribute, content_1.RelationshipAttribute] }),
40
+ (0, ts_serval_1.validate)({ nullable: true }),
41
+ __metadata("design:type", Object)
42
+ ], AcceptProposeAttributeRequestItemParameters.prototype, "attribute", void 0);
43
+ AcceptProposeAttributeRequestItemParameters = AcceptProposeAttributeRequestItemParameters_1 = __decorate([
44
+ (0, ts_serval_1.type)("AcceptProposeAttributeRequestItemParameters")
45
+ ], AcceptProposeAttributeRequestItemParameters);
46
+ exports.AcceptProposeAttributeRequestItemParameters = AcceptProposeAttributeRequestItemParameters;
47
+ //# sourceMappingURL=AcceptProposeAttributeRequestItemParameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcceptProposeAttributeRequestItemParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAA6F;AAC7F,4CAKuB;AACvB,gDAAyC;AACzC,uDAAyC;AAgBzC,IAAa,2CAA2C,mDAAxD,MAAa,2CAA4C,SAAQ,wBAAY;IASlE,MAAM,CAAC,IAAI,CACd,KAAsD;QAEtD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAES,MAAM,CAAU,QAAQ,CAAyB,KAAQ;QAC/D,MAAM,UAAU,GAAG,KAAoD,CAAA;QAEvE,IAAI,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,SAAS,EAAE;YAChD,MAAM,IAAI,2BAAe,CACrB,6CAA2C,CAAC,IAAI,EAChD,IAAA,yBAAM,EAA8C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACvE,2BAA2B,IAAA,yBAAM,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CACrB,QAAQ,IAAA,yBAAM,EAA8C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CACxF,CAAA;SACJ;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YAClD,MAAM,IAAI,2BAAe,CACrB,6CAA2C,CAAC,IAAI,EAChD,IAAA,yBAAM,EAA8C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACvE,8BAA8B,IAAA,yBAAM,EAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CACrB,OAAO,IAAA,yBAAM,EAA8C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CACvF,CAAA;SACJ;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;CACJ,CAAA;AArCG;IAFC,IAAA,qBAAS,GAAE;IACX,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACR,kBAAM;gFAAA;AAI3B;IAFC,IAAA,qBAAS,EAAC,EAAE,UAAU,EAAE,CAAC,2BAAiB,EAAE,+BAAqB,CAAC,EAAE,CAAC;IACrE,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8EAC+B;AAPnD,2CAA2C;IADvD,IAAA,gBAAI,EAAC,6CAA6C,CAAC;GACvC,2CAA2C,CAwCvD;AAxCY,kGAA2C"}
@@ -0,0 +1,14 @@
1
+ import { ProposeAttributeAcceptResponseItem, ProposeAttributeRequestItem, RejectResponseItem, Request } from "@nmshd/content";
2
+ import { CoreAddress } from "@nmshd/transport";
3
+ import { GenericRequestItemProcessor } from "../GenericRequestItemProcessor";
4
+ import { ConsumptionRequestInfo } from "../IRequestItemProcessor";
5
+ import { ValidationResult } from "../ValidationResult";
6
+ import { AcceptProposeAttributeRequestItemParametersJSON } from "./AcceptProposeAttributeRequestItemParameters";
7
+ export declare class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor<ProposeAttributeRequestItem, AcceptProposeAttributeRequestItemParametersJSON> {
8
+ canCreateOutgoingRequestItem(requestItem: ProposeAttributeRequestItem, _request: Request, recipient: CoreAddress): ValidationResult;
9
+ canAccept(_requestItem: ProposeAttributeRequestItem, params: AcceptProposeAttributeRequestItemParametersJSON, requestInfo: ConsumptionRequestInfo): Promise<ValidationResult>;
10
+ accept(_requestItem: ProposeAttributeRequestItem, params: AcceptProposeAttributeRequestItemParametersJSON, requestInfo: ConsumptionRequestInfo): Promise<ProposeAttributeAcceptResponseItem>;
11
+ private copyExistingAttribute;
12
+ private createNewAttribute;
13
+ applyIncomingResponseItem(responseItem: ProposeAttributeAcceptResponseItem | RejectResponseItem, _requestItem: ProposeAttributeRequestItem, requestInfo: ConsumptionRequestInfo): Promise<void>;
14
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProposeAttributeRequestItemProcessor = void 0;
7
+ const content_1 = require("@nmshd/content");
8
+ const transport_1 = require("@nmshd/transport");
9
+ const consumption_1 = require("../../../../consumption");
10
+ const ConsumptionAttribute_1 = require("../../../attributes/local/ConsumptionAttribute");
11
+ const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
12
+ const validateQuery_1 = __importDefault(require("../utility/validateQuery"));
13
+ const ValidationResult_1 = require("../ValidationResult");
14
+ const AcceptProposeAttributeRequestItemParameters_1 = require("./AcceptProposeAttributeRequestItemParameters");
15
+ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
16
+ canCreateOutgoingRequestItem(requestItem, _request, recipient) {
17
+ const queryValidationResult = (0, validateQuery_1.default)(requestItem.query, this.currentIdentityAddress, recipient);
18
+ if (queryValidationResult.isError()) {
19
+ return queryValidationResult;
20
+ }
21
+ return ValidationResult_1.ValidationResult.success();
22
+ }
23
+ async canAccept(_requestItem, params, requestInfo) {
24
+ const parsedParams = AcceptProposeAttributeRequestItemParameters_1.AcceptProposeAttributeRequestItemParameters.from(params);
25
+ if (parsedParams.attributeId) {
26
+ const foundAttribute = await this.consumptionController.attributes.getConsumptionAttribute(parsedParams.attributeId);
27
+ if (!foundAttribute) {
28
+ return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(ConsumptionAttribute_1.ConsumptionAttribute, requestInfo.id.toString()));
29
+ }
30
+ if (!this.accountController.identity.isMe(foundAttribute.content.owner)) {
31
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The given Attribute belongs to someone else. You can only share own Attributes."));
32
+ }
33
+ }
34
+ return ValidationResult_1.ValidationResult.success();
35
+ }
36
+ async accept(_requestItem, params, requestInfo) {
37
+ const parsedParams = AcceptProposeAttributeRequestItemParameters_1.AcceptProposeAttributeRequestItemParameters.from(params);
38
+ let sharedConsumptionAttribute;
39
+ if (parsedParams.attributeId) {
40
+ sharedConsumptionAttribute = await this.copyExistingAttribute(parsedParams.attributeId, requestInfo);
41
+ }
42
+ else {
43
+ sharedConsumptionAttribute = await this.createNewAttribute(parsedParams.attribute, requestInfo);
44
+ }
45
+ return content_1.ProposeAttributeAcceptResponseItem.from({
46
+ result: content_1.ResponseItemResult.Accepted,
47
+ attributeId: sharedConsumptionAttribute.id,
48
+ attribute: sharedConsumptionAttribute.content
49
+ });
50
+ }
51
+ async copyExistingAttribute(attributeId, requestInfo) {
52
+ return await this.consumptionController.attributes.createSharedConsumptionAttributeCopy({
53
+ attributeId: transport_1.CoreId.from(attributeId),
54
+ peer: transport_1.CoreAddress.from(requestInfo.peer),
55
+ requestReference: transport_1.CoreId.from(requestInfo.id)
56
+ });
57
+ }
58
+ async createNewAttribute(attribute, requestInfo) {
59
+ if (attribute instanceof content_1.IdentityAttribute) {
60
+ const repositoryConsumptionAttribute = await this.consumptionController.attributes.createConsumptionAttribute({
61
+ content: attribute
62
+ });
63
+ return await this.consumptionController.attributes.createSharedConsumptionAttributeCopy({
64
+ attributeId: transport_1.CoreId.from(repositoryConsumptionAttribute.id),
65
+ peer: transport_1.CoreAddress.from(requestInfo.peer),
66
+ requestReference: transport_1.CoreId.from(requestInfo.id)
67
+ });
68
+ }
69
+ return await this.consumptionController.attributes.createPeerConsumptionAttribute({
70
+ content: attribute,
71
+ peer: requestInfo.peer,
72
+ requestReference: transport_1.CoreId.from(requestInfo.id)
73
+ });
74
+ }
75
+ async applyIncomingResponseItem(responseItem, _requestItem, requestInfo) {
76
+ if (!(responseItem instanceof content_1.ProposeAttributeAcceptResponseItem)) {
77
+ return;
78
+ }
79
+ await this.consumptionController.attributes.createPeerConsumptionAttribute({
80
+ id: responseItem.attributeId,
81
+ content: responseItem.attribute,
82
+ peer: requestInfo.peer,
83
+ requestReference: requestInfo.id
84
+ });
85
+ }
86
+ }
87
+ exports.ProposeAttributeRequestItemProcessor = ProposeAttributeRequestItemProcessor;
88
+ //# sourceMappingURL=ProposeAttributeRequestItemProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProposeAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
- import { ReadAttributeAcceptResponseItem, ReadAttributeRequestItem, RejectResponseItem } from "@nmshd/content";
2
- import { ConsumptionRequest } from "../../local/ConsumptionRequest";
1
+ import { ReadAttributeAcceptResponseItem, ReadAttributeRequestItem, RejectResponseItem, Request } from "@nmshd/content";
2
+ import { CoreAddress } from "@nmshd/transport";
3
3
  import { GenericRequestItemProcessor } from "../GenericRequestItemProcessor";
4
+ import { ConsumptionRequestInfo } from "../IRequestItemProcessor";
4
5
  import { ValidationResult } from "../ValidationResult";
5
6
  import { AcceptReadAttributeRequestItemParametersJSON } from "./AcceptReadAttributeRequestItemParameters";
6
7
  export declare class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor<ReadAttributeRequestItem, AcceptReadAttributeRequestItemParametersJSON> {
7
- canAccept(_requestItem: ReadAttributeRequestItem, params: AcceptReadAttributeRequestItemParametersJSON, request: ConsumptionRequest): Promise<ValidationResult>;
8
- accept(_requestItem: ReadAttributeRequestItem, params: AcceptReadAttributeRequestItemParametersJSON, request: ConsumptionRequest): Promise<ReadAttributeAcceptResponseItem>;
8
+ canCreateOutgoingRequestItem(requestItem: ReadAttributeRequestItem, _request: Request, recipient: CoreAddress): ValidationResult;
9
+ canAccept(_requestItem: ReadAttributeRequestItem, params: AcceptReadAttributeRequestItemParametersJSON, requestInfo: ConsumptionRequestInfo): Promise<ValidationResult>;
10
+ accept(_requestItem: ReadAttributeRequestItem, params: AcceptReadAttributeRequestItemParametersJSON, requestInfo: ConsumptionRequestInfo): Promise<ReadAttributeAcceptResponseItem>;
9
11
  private copyExistingAttribute;
10
12
  private createNewAttribute;
11
- applyIncomingResponseItem(responseItem: ReadAttributeAcceptResponseItem | RejectResponseItem, _requestItem: ReadAttributeRequestItem, request: ConsumptionRequest): Promise<void>;
13
+ applyIncomingResponseItem(responseItem: ReadAttributeAcceptResponseItem | RejectResponseItem, _requestItem: ReadAttributeRequestItem, requestInfo: ConsumptionRequestInfo): Promise<void>;
12
14
  }
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ReadAttributeRequestItemProcessor = void 0;
4
7
  const content_1 = require("@nmshd/content");
@@ -6,30 +9,38 @@ const transport_1 = require("@nmshd/transport");
6
9
  const consumption_1 = require("../../../../consumption");
7
10
  const ConsumptionAttribute_1 = require("../../../attributes/local/ConsumptionAttribute");
8
11
  const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
12
+ const validateQuery_1 = __importDefault(require("../utility/validateQuery"));
9
13
  const ValidationResult_1 = require("../ValidationResult");
10
14
  const AcceptReadAttributeRequestItemParameters_1 = require("./AcceptReadAttributeRequestItemParameters");
11
15
  class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
12
- async canAccept(_requestItem, params, request) {
16
+ canCreateOutgoingRequestItem(requestItem, _request, recipient) {
17
+ const queryValidationResult = (0, validateQuery_1.default)(requestItem.query, this.currentIdentityAddress, recipient);
18
+ if (queryValidationResult.isError()) {
19
+ return queryValidationResult;
20
+ }
21
+ return ValidationResult_1.ValidationResult.success();
22
+ }
23
+ async canAccept(_requestItem, params, requestInfo) {
13
24
  const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
14
25
  if (parsedParams.attributeId) {
15
26
  const foundAttribute = await this.consumptionController.attributes.getConsumptionAttribute(parsedParams.attributeId);
16
27
  if (!foundAttribute) {
17
- return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(ConsumptionAttribute_1.ConsumptionAttribute, request.id.toString()));
28
+ return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(ConsumptionAttribute_1.ConsumptionAttribute, requestInfo.id.toString()));
18
29
  }
19
- if (!this.consumptionController.accountController.identity.isMe(foundAttribute.content.owner)) {
20
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.canOnlyShareOwnAttributes());
30
+ if (!this.accountController.identity.isMe(foundAttribute.content.owner)) {
31
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The given Attribute belongs to someone else. You can only share own Attributes."));
21
32
  }
22
33
  }
23
34
  return ValidationResult_1.ValidationResult.success();
24
35
  }
25
- async accept(_requestItem, params, request) {
36
+ async accept(_requestItem, params, requestInfo) {
26
37
  const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
27
38
  let sharedConsumptionAttribute;
28
39
  if (parsedParams.attributeId) {
29
- sharedConsumptionAttribute = await this.copyExistingAttribute(parsedParams.attributeId, request);
40
+ sharedConsumptionAttribute = await this.copyExistingAttribute(parsedParams.attributeId, requestInfo);
30
41
  }
31
42
  else {
32
- sharedConsumptionAttribute = await this.createNewAttribute(parsedParams.attribute, request);
43
+ sharedConsumptionAttribute = await this.createNewAttribute(parsedParams.attribute, requestInfo);
33
44
  }
34
45
  return content_1.ReadAttributeAcceptResponseItem.from({
35
46
  result: content_1.ResponseItemResult.Accepted,
@@ -37,39 +48,39 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
37
48
  attribute: sharedConsumptionAttribute.content
38
49
  });
39
50
  }
40
- async copyExistingAttribute(attributeId, request) {
51
+ async copyExistingAttribute(attributeId, requestInfo) {
41
52
  return await this.consumptionController.attributes.createSharedConsumptionAttributeCopy({
42
53
  attributeId: transport_1.CoreId.from(attributeId),
43
- peer: transport_1.CoreAddress.from(request.peer),
44
- requestReference: transport_1.CoreId.from(request.id)
54
+ peer: transport_1.CoreAddress.from(requestInfo.peer),
55
+ requestReference: transport_1.CoreId.from(requestInfo.id)
45
56
  });
46
57
  }
47
- async createNewAttribute(attribute, request) {
58
+ async createNewAttribute(attribute, requestInfo) {
48
59
  if (attribute instanceof content_1.IdentityAttribute) {
49
60
  const repositoryConsumptionAttribute = await this.consumptionController.attributes.createConsumptionAttribute({
50
61
  content: attribute
51
62
  });
52
63
  return await this.consumptionController.attributes.createSharedConsumptionAttributeCopy({
53
64
  attributeId: transport_1.CoreId.from(repositoryConsumptionAttribute.id),
54
- peer: transport_1.CoreAddress.from(request.peer),
55
- requestReference: transport_1.CoreId.from(request.id)
65
+ peer: transport_1.CoreAddress.from(requestInfo.peer),
66
+ requestReference: transport_1.CoreId.from(requestInfo.id)
56
67
  });
57
68
  }
58
- return await this.consumptionController.attributes.createRelationshipAttribute({
69
+ return await this.consumptionController.attributes.createPeerConsumptionAttribute({
59
70
  content: attribute,
60
- peer: request.peer,
61
- requestReference: transport_1.CoreId.from(request.id)
71
+ peer: requestInfo.peer,
72
+ requestReference: transport_1.CoreId.from(requestInfo.id)
62
73
  });
63
74
  }
64
- async applyIncomingResponseItem(responseItem, _requestItem, request) {
75
+ async applyIncomingResponseItem(responseItem, _requestItem, requestInfo) {
65
76
  if (!(responseItem instanceof content_1.ReadAttributeAcceptResponseItem)) {
66
77
  return;
67
78
  }
68
79
  await this.consumptionController.attributes.createPeerConsumptionAttribute({
69
80
  id: responseItem.attributeId,
70
81
  content: responseItem.attribute,
71
- peer: request.peer,
72
- requestReference: request.id
82
+ peer: requestInfo.peer,
83
+ requestReference: requestInfo.id
73
84
  });
74
85
  }
75
86
  }