@nmshd/consumption 2.0.0-beta.6 → 2.0.0-beta.9

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 (41) hide show
  1. package/dist/buildInformation.js +4 -4
  2. package/dist/consumption/ConsumptionController.js +4 -3
  3. package/dist/consumption/ConsumptionController.js.map +1 -1
  4. package/dist/modules/index.d.ts +2 -2
  5. package/dist/modules/index.js +2 -2
  6. package/dist/modules/index.js.map +1 -1
  7. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.d.ts +1 -1
  8. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js.map +1 -1
  9. package/dist/modules/requests/itemProcessors/IRequestItemProcessor.d.ts +1 -1
  10. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.d.ts +7 -0
  11. package/dist/modules/requests/itemProcessors/{createAttribute/AcceptCreateAttributeRequestItemParameters.js → createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js} +7 -7
  12. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js.map +1 -0
  13. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.d.ts +11 -0
  14. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js +44 -0
  15. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js.map +1 -0
  16. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.d.ts +1 -1
  17. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js.map +1 -1
  18. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.d.ts +1 -1
  19. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js +2 -1
  20. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js.map +1 -1
  21. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.d.ts +6 -8
  22. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js +34 -72
  23. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js.map +1 -1
  24. package/dist/modules/requests/itemProcessors/utility/validateQuery.d.ts +1 -1
  25. package/dist/modules/requests/itemProcessors/utility/validateQuery.js.map +1 -1
  26. package/dist/modules/requests/outgoing/OutgoingRequestsController.d.ts +2 -1
  27. package/dist/modules/requests/outgoing/OutgoingRequestsController.js +2 -1
  28. package/dist/modules/requests/outgoing/OutgoingRequestsController.js.map +1 -1
  29. package/dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.d.ts +13 -0
  30. package/dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js +35 -0
  31. package/dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js.map +1 -0
  32. package/lib-web/nmshd.consumption.js +124 -130
  33. package/lib-web/nmshd.consumption.js.map +1 -1
  34. package/lib-web/nmshd.consumption.min.js +1 -1
  35. package/lib-web/nmshd.consumption.min.js.map +1 -1
  36. package/package.json +8 -8
  37. package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.d.ts +0 -7
  38. package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js.map +0 -1
  39. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts +0 -12
  40. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js +0 -60
  41. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js.map +0 -1
@@ -0,0 +1,35 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CanCreateOutgoingRequestParameters = void 0;
13
+ const ts_serval_1 = require("@js-soft/ts-serval");
14
+ const content_1 = require("@nmshd/content");
15
+ const transport_1 = require("@nmshd/transport");
16
+ let CanCreateOutgoingRequestParameters = class CanCreateOutgoingRequestParameters extends ts_serval_1.Serializable {
17
+ static from(value) {
18
+ return this.fromAny(value);
19
+ }
20
+ };
21
+ __decorate([
22
+ (0, ts_serval_1.serialize)(),
23
+ (0, ts_serval_1.validate)(),
24
+ __metadata("design:type", content_1.Request)
25
+ ], CanCreateOutgoingRequestParameters.prototype, "content", void 0);
26
+ __decorate([
27
+ (0, ts_serval_1.serialize)(),
28
+ (0, ts_serval_1.validate)({ nullable: true }),
29
+ __metadata("design:type", transport_1.CoreAddress)
30
+ ], CanCreateOutgoingRequestParameters.prototype, "peer", void 0);
31
+ CanCreateOutgoingRequestParameters = __decorate([
32
+ (0, ts_serval_1.type)("CanCreateOutgoingRequestParameters")
33
+ ], CanCreateOutgoingRequestParameters);
34
+ exports.CanCreateOutgoingRequestParameters = CanCreateOutgoingRequestParameters;
35
+ //# sourceMappingURL=CanCreateOutgoingRequestParameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanCreateOutgoingRequestParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA2F;AAC3F,4CAAwC;AACxC,gDAA4D;AAS5D,IAAa,kCAAkC,GAA/C,MAAa,kCAAmC,SAAQ,wBAAY;IASzD,MAAM,CAAC,IAAI,CAAC,KAA0C;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;CACJ,CAAA;AATG;IAFC,IAAA,qBAAS,GAAE;IACX,IAAA,oBAAQ,GAAE;8BACK,iBAAO;mEAAA;AAIvB;IAFC,IAAA,qBAAS,GAAE;IACX,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACf,uBAAW;gEAAA;AAPhB,kCAAkC;IAD9C,IAAA,gBAAI,EAAC,oCAAoC,CAAC;GAC9B,kCAAkC,CAY9C;AAZY,gFAAkC"}
@@ -17,10 +17,10 @@ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
17
17
  const crypto_1 = __webpack_require__(/*! @nmshd/crypto */ "@nmshd/crypto");
18
18
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
19
19
  exports.buildInformation = {
20
- version: "2.0.0-beta.6",
21
- build: "56",
22
- date: "2022-08-03T08:10:05+00:00",
23
- commit: "5b68e1cbedaab1e529c76a8afebca1ffccba5cf4",
20
+ version: "2.0.0-beta.9",
21
+ build: "59",
22
+ date: "2022-08-24T11:52:09+00:00",
23
+ commit: "22ab42d566e3d72aa8a0a98d78bd4d9900d6efdc",
24
24
  dependencies: {"@js-soft/docdb-querytranslator":"^1.1.0","ts-simple-nameof":"^1.3.1"},
25
25
  libraries: {
26
26
  transport: transport_1.buildInformation,
@@ -120,11 +120,12 @@ class ConsumptionController {
120
120
  }
121
121
  getDefaultProcessors() {
122
122
  return new Map([
123
- [content_1.CreateAttributeRequestItem, modules_1.CreateAttributeRequestItemProcessor],
123
+ [content_1.ShareAttributeRequestItem, modules_1.ShareAttributeRequestItemProcessor],
124
+ [content_1.CreateRelationshipAttributeRequestItem, modules_1.CreateRelationshipAttributeRequestItemProcessor],
124
125
  [content_1.ReadAttributeRequestItem, modules_1.ReadAttributeRequestItemProcessor],
125
126
  [content_1.ProposeAttributeRequestItem, modules_1.ProposeAttributeRequestItemProcessor],
126
- [content_1.ShareAttributeRequestItem, modules_1.ShareAttributeRequestItemProcessor],
127
- [content_1.ConsentRequestItem, modules_1.GenericRequestItemProcessor]
127
+ [content_1.ConsentRequestItem, modules_1.GenericRequestItemProcessor],
128
+ [content_1.AuthenticationRequestItem, modules_1.GenericRequestItemProcessor]
128
129
  ]);
129
130
  }
130
131
  }
@@ -1335,8 +1336,8 @@ __exportStar(__webpack_require__(/*! ./requests/incoming/IncomingRequestsControl
1335
1336
  __exportStar(__webpack_require__(/*! ./requests/incoming/received/ReceivedIncomingRequestParameters */ "./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js"), exports);
1336
1337
  __exportStar(__webpack_require__(/*! ./requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters */ "./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js"), exports);
1337
1338
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/AbstractRequestItemProcessor */ "./dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js"), exports);
1338
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js"), exports);
1339
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js"), exports);
1339
+ __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js"), exports);
1340
+ __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js"), exports);
1340
1341
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js"), exports);
1341
1342
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/IRequestItemProcessor */ "./dist/modules/requests/itemProcessors/IRequestItemProcessor.js"), exports);
1342
1343
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/ProcessorConstructor */ "./dist/modules/requests/itemProcessors/ProcessorConstructor.js"), exports);
@@ -2379,10 +2380,10 @@ exports.ErrorValidationResult = ErrorValidationResult;
2379
2380
 
2380
2381
  /***/ }),
2381
2382
 
2382
- /***/ "./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js":
2383
- /*!************************************************************************************************************!*\
2384
- !*** ./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js ***!
2385
- \************************************************************************************************************/
2383
+ /***/ "./dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js":
2384
+ /*!************************************************************************************************************************************!*\
2385
+ !*** ./dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js ***!
2386
+ \************************************************************************************************************************************/
2386
2387
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2387
2388
 
2388
2389
  "use strict";
@@ -2394,88 +2395,72 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
2394
2395
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2395
2396
  };
2396
2397
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2397
- exports.AcceptCreateAttributeRequestItemParameters = void 0;
2398
+ exports.AcceptCreateRelationshipAttributeRequestItemParameters = void 0;
2398
2399
  const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
2399
- let AcceptCreateAttributeRequestItemParameters = class AcceptCreateAttributeRequestItemParameters extends ts_serval_1.Serializable {
2400
+ let AcceptCreateRelationshipAttributeRequestItemParameters = class AcceptCreateRelationshipAttributeRequestItemParameters extends ts_serval_1.Serializable {
2400
2401
  static from(value) {
2401
2402
  return this.fromAny(value);
2402
2403
  }
2403
2404
  };
2404
- AcceptCreateAttributeRequestItemParameters = __decorate([
2405
- (0, ts_serval_1.type)("AcceptCreateAttributeRequestItemParameters")
2406
- ], AcceptCreateAttributeRequestItemParameters);
2407
- exports.AcceptCreateAttributeRequestItemParameters = AcceptCreateAttributeRequestItemParameters;
2408
- //# sourceMappingURL=AcceptCreateAttributeRequestItemParameters.js.map
2405
+ AcceptCreateRelationshipAttributeRequestItemParameters = __decorate([
2406
+ (0, ts_serval_1.type)("AcceptCreateRelationshipAttributeRequestItemParameters")
2407
+ ], AcceptCreateRelationshipAttributeRequestItemParameters);
2408
+ exports.AcceptCreateRelationshipAttributeRequestItemParameters = AcceptCreateRelationshipAttributeRequestItemParameters;
2409
+ //# sourceMappingURL=AcceptCreateRelationshipAttributeRequestItemParameters.js.map
2409
2410
 
2410
2411
  /***/ }),
2411
2412
 
2412
- /***/ "./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js":
2413
- /*!*****************************************************************************************************!*\
2414
- !*** ./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js ***!
2415
- \*****************************************************************************************************/
2413
+ /***/ "./dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js":
2414
+ /*!*****************************************************************************************************************************!*\
2415
+ !*** ./dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js ***!
2416
+ \*****************************************************************************************************************************/
2416
2417
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2417
2418
 
2418
2419
  "use strict";
2419
2420
 
2420
2421
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2421
- exports.CreateAttributeRequestItemProcessor = void 0;
2422
+ exports.CreateRelationshipAttributeRequestItemProcessor = void 0;
2422
2423
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
2423
2424
  const consumption_1 = __webpack_require__(/*! ../../../../consumption */ "./dist/consumption/index.js");
2424
2425
  const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js");
2425
2426
  const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
2426
- class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2427
+ class CreateRelationshipAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2427
2428
  canCreateOutgoingRequestItem(requestItem, _request, _recipient) {
2428
2429
  if (requestItem.attribute.owner.toString() !== "" &&
2429
2430
  !requestItem.attribute.owner.equals(this.currentIdentityAddress)) {
2430
2431
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given `attribute` can only be an empty string. This is because you can only send Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2431
2432
  }
2432
- if (requestItem.attribute instanceof content_1.IdentityAttribute) {
2433
- return this.canCreateRequestItemWithIdentityAttribute(requestItem);
2434
- }
2435
- return ValidationResult_1.ValidationResult.success();
2436
- }
2437
- canCreateRequestItemWithIdentityAttribute(requestItem) {
2438
- if (!requestItem.sourceAttributeId) {
2439
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("'sourceAttributeId' cannot be undefined when sending an Identity Attribute."));
2440
- }
2441
2433
  return ValidationResult_1.ValidationResult.success();
2442
2434
  }
2443
2435
  async accept(requestItem, _params, requestInfo) {
2436
+ requestItem.attribute.owner ??= requestInfo.peer;
2444
2437
  const peerLocalAttribute = await this.consumptionController.attributes.createPeerLocalAttribute({
2445
2438
  content: requestItem.attribute,
2446
2439
  peer: requestInfo.peer,
2447
2440
  requestReference: requestInfo.id
2448
2441
  });
2449
- return content_1.CreateAttributeAcceptResponseItem.from({
2450
- attributeId: peerLocalAttribute.id,
2451
- result: content_1.ResponseItemResult.Accepted
2442
+ return content_1.CreateRelationshipAttributeAcceptResponseItem.from({
2443
+ result: content_1.ResponseItemResult.Accepted,
2444
+ attributeId: peerLocalAttribute.id
2452
2445
  });
2453
2446
  }
2454
2447
  async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
2455
- if (!(responseItem instanceof content_1.CreateAttributeAcceptResponseItem)) {
2448
+ if (!(responseItem instanceof content_1.CreateRelationshipAttributeAcceptResponseItem)) {
2456
2449
  return;
2457
2450
  }
2458
- if (requestItem.sourceAttributeId) {
2459
- const sourceAttribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.sourceAttributeId);
2460
- await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2461
- attributeId: responseItem.attributeId,
2462
- sourceAttributeId: sourceAttribute.id,
2463
- peer: requestInfo.peer,
2464
- requestReference: requestInfo.id
2465
- });
2466
- }
2467
- else {
2468
- await this.consumptionController.attributes.createPeerLocalAttribute({
2469
- id: responseItem.attributeId,
2470
- content: requestItem.attribute,
2471
- peer: requestInfo.peer,
2472
- requestReference: requestInfo.id
2473
- });
2451
+ if (requestItem.attribute.owner.toString() === "") {
2452
+ requestItem.attribute.owner = this.currentIdentityAddress;
2474
2453
  }
2454
+ await this.consumptionController.attributes.createPeerLocalAttribute({
2455
+ id: responseItem.attributeId,
2456
+ content: requestItem.attribute,
2457
+ peer: requestInfo.peer,
2458
+ requestReference: requestInfo.id
2459
+ });
2475
2460
  }
2476
2461
  }
2477
- exports.CreateAttributeRequestItemProcessor = CreateAttributeRequestItemProcessor;
2478
- //# sourceMappingURL=CreateAttributeRequestItemProcessor.js.map
2462
+ exports.CreateRelationshipAttributeRequestItemProcessor = CreateRelationshipAttributeRequestItemProcessor;
2463
+ //# sourceMappingURL=CreateRelationshipAttributeRequestItemProcessor.js.map
2479
2464
 
2480
2465
  /***/ }),
2481
2466
 
@@ -2756,7 +2741,8 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
2756
2741
  if (!foundAttribute) {
2757
2742
  return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, requestInfo.id.toString()));
2758
2743
  }
2759
- if (!this.accountController.identity.isMe(foundAttribute.content.owner)) {
2744
+ const ownerIsCurrentIdentity = this.accountController.identity.isMe(foundAttribute.content.owner);
2745
+ if (!ownerIsCurrentIdentity) {
2760
2746
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The given Attribute belongs to someone else. You can only share own Attributes."));
2761
2747
  }
2762
2748
  }
@@ -2859,91 +2845,53 @@ exports.AcceptShareAttributeRequestItemParameters = AcceptShareAttributeRequestI
2859
2845
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2860
2846
  exports.ShareAttributeRequestItemProcessor = void 0;
2861
2847
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
2862
- const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
2863
2848
  const consumption_1 = __webpack_require__(/*! ../../../../consumption */ "./dist/consumption/index.js");
2864
2849
  const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js");
2865
2850
  const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
2866
2851
  class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2867
- async canCreateOutgoingRequestItem(requestItem, _request, recipient) {
2868
- const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
2869
- if (!attribute) {
2870
- return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(content_1.Attribute, requestItem.attributeId.toString()));
2871
- }
2872
- const attributeOwnerValidationResult = this.validateAttributeOwner(attribute.content, this.currentIdentityAddress, recipient);
2873
- if (attributeOwnerValidationResult.isError()) {
2874
- return attributeOwnerValidationResult;
2875
- }
2876
- return ValidationResult_1.ValidationResult.success();
2877
- }
2878
- async checkPrerequisitesOfIncomingRequestItem(requestItem, requestInfo) {
2879
- const relationshipToShareWith = await this.accountController.relationships.getRelationshipToIdentity(requestItem.shareWith);
2880
- if (!relationshipToShareWith) {
2881
- return false; // Should the containing Request move to Error state?
2882
- }
2883
- const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
2884
- if (!attribute) {
2885
- return false; // Should the containing Request move to Error state?
2886
- }
2887
- if (this.validateAttributeOwner(attribute.content, requestInfo.peer, this.currentIdentityAddress).isError()) {
2888
- return false;
2852
+ canCreateOutgoingRequestItem(requestItem, _request, _recipient) {
2853
+ if (requestItem.attribute instanceof content_1.IdentityAttribute) {
2854
+ return this.canCreateWithIdentityAttribute(requestItem);
2889
2855
  }
2890
- return true;
2856
+ return this.canCreateWithRelationshipAttribute(requestItem.attribute);
2891
2857
  }
2892
- validateAttributeOwner(attribute, sender, recipient) {
2893
- const attributeOwner = attribute.owner;
2894
- if (attribute instanceof content_1.IdentityAttribute) {
2895
- if (!attributeOwner.equals(recipient)) {
2896
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Can only request sharing of identity attributes owned by the recipient."));
2897
- }
2898
- }
2899
- if (attribute instanceof content_1.RelationshipAttribute) {
2900
- if (!attributeOwner.equals(recipient) && !attributeOwner.equals(sender)) {
2901
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot request sharing of relationship attributes not owned by recipient or sender."));
2902
- }
2858
+ canCreateWithIdentityAttribute(requestItem) {
2859
+ const ownerIsEmpty = requestItem.attribute.owner.toString() === "";
2860
+ const ownerIsCurrentIdentity = requestItem.attribute.owner.equals(this.currentIdentityAddress);
2861
+ if (!ownerIsEmpty && !ownerIsCurrentIdentity) {
2862
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given `attribute` can only be an empty string. This is because you can only send Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2903
2863
  }
2904
2864
  return ValidationResult_1.ValidationResult.success();
2905
2865
  }
2906
- canAccept(_requestItem, _params, _requestInfo) {
2866
+ canCreateWithRelationshipAttribute(attribute) {
2867
+ if (attribute.confidentiality === content_1.RelationshipAttributeConfidentiality.Private) {
2868
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The confidentiality of the given `attribute` is private. Therefore you are not allowed to share it."));
2869
+ }
2907
2870
  return ValidationResult_1.ValidationResult.success();
2908
2871
  }
2909
- async accept(requestItem, _params, _requestInfo) {
2910
- const attribute = (await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId));
2911
- if (!(await this.isAttributeAlreadyShared(attribute, requestItem.shareWith))) {
2912
- await this.shareAttribute(attribute, requestItem.shareWith);
2872
+ async accept(requestItem, _params, requestInfo) {
2873
+ if (requestItem.attribute.owner.toString() === "") {
2874
+ requestItem.attribute.owner = requestInfo.peer;
2913
2875
  }
2914
- return content_1.AcceptResponseItem.from({ result: content_1.ResponseItemResult.Accepted });
2915
- }
2916
- async isAttributeAlreadyShared(attribute, shareWith) {
2917
- if (attribute.content instanceof content_1.IdentityAttribute) {
2918
- return ((await this.consumptionController.attributes.getLocalAttributes({
2919
- "shareInfo.sourceAttribute": attribute.shareInfo.sourceAttribute.toString(),
2920
- "shareInfo.peer": shareWith.toString()
2921
- })).length > 0);
2922
- }
2923
- return ((await this.consumptionController.attributes.getLocalAttributes({
2924
- "shareInfo.sourceAttribute": attribute.id.toString(),
2925
- "shareInfo.peer": shareWith.toString()
2926
- })).length > 0);
2927
- }
2928
- async shareAttribute(attribute, shareWith) {
2929
- const createAttributeRequestItem = content_1.CreateAttributeRequestItem.from({
2930
- attribute: attribute.content,
2931
- mustBeAccepted: true,
2932
- sourceAttributeId: attribute.id
2933
- });
2934
- const createAttributeRequest = await this.consumptionController.outgoingRequests.create({
2935
- peer: shareWith,
2936
- content: content_1.Request.from({
2937
- items: [createAttributeRequestItem]
2938
- })
2876
+ const localAttribute = await this.consumptionController.attributes.createPeerLocalAttribute({
2877
+ content: requestItem.attribute,
2878
+ peer: requestInfo.peer,
2879
+ requestReference: requestInfo.id
2939
2880
  });
2940
- const message = await this.accountController.messages.sendMessage({
2941
- recipients: [shareWith],
2942
- content: createAttributeRequest.content
2881
+ return content_1.ShareAttributeAcceptResponseItem.from({
2882
+ attributeId: localAttribute.id,
2883
+ result: content_1.ResponseItemResult.Accepted
2943
2884
  });
2944
- await this.consumptionController.outgoingRequests.sent({
2945
- requestId: createAttributeRequest.id,
2946
- requestSourceObject: message
2885
+ }
2886
+ async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
2887
+ if (!(responseItem instanceof content_1.ShareAttributeAcceptResponseItem)) {
2888
+ return;
2889
+ }
2890
+ await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2891
+ attributeId: responseItem.attributeId,
2892
+ sourceAttributeId: requestItem.sourceAttributeId,
2893
+ peer: requestInfo.peer,
2894
+ requestReference: requestInfo.id
2947
2895
  });
2948
2896
  }
2949
2897
  }
@@ -3268,6 +3216,7 @@ const LocalRequestStatus_1 = __webpack_require__(/*! ../local/LocalRequestStatus
3268
3216
  const LocalResponse_1 = __webpack_require__(/*! ../local/LocalResponse */ "./dist/modules/requests/local/LocalResponse.js");
3269
3217
  const CompleteOutgoingRequestParameters_1 = __webpack_require__(/*! ./completeOutgoingRequest/CompleteOutgoingRequestParameters */ "./dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js");
3270
3218
  const CreateOutgoingRequestFromRelationshipCreationChangeParameters_1 = __webpack_require__(/*! ./createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters */ "./dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js");
3219
+ const CanCreateOutgoingRequestParameters_1 = __webpack_require__(/*! ./createOutgoingRequest/CanCreateOutgoingRequestParameters */ "./dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js");
3271
3220
  const CreateOutgoingRequestParameters_1 = __webpack_require__(/*! ./createOutgoingRequest/CreateOutgoingRequestParameters */ "./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js");
3272
3221
  const SentOutgoingRequestParameters_1 = __webpack_require__(/*! ./sentOutgoingRequest/SentOutgoingRequestParameters */ "./dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js");
3273
3222
  class OutgoingRequestsController extends consumption_1.ConsumptionBaseController {
@@ -3279,7 +3228,7 @@ class OutgoingRequestsController extends consumption_1.ConsumptionBaseController
3279
3228
  this.identity = identity;
3280
3229
  }
3281
3230
  async canCreate(params) {
3282
- const parsedParams = CreateOutgoingRequestParameters_1.CreateOutgoingRequestParameters.from(params);
3231
+ const parsedParams = CanCreateOutgoingRequestParameters_1.CanCreateOutgoingRequestParameters.from(params);
3283
3232
  const innerResults = await this.canCreateItems(parsedParams.content, parsedParams.peer);
3284
3233
  const result = ValidationResult_1.ValidationResult.fromItems(innerResults);
3285
3234
  return result;
@@ -3607,6 +3556,51 @@ exports.CreateOutgoingRequestFromRelationshipCreationChangeParameters = CreateOu
3607
3556
 
3608
3557
  /***/ }),
3609
3558
 
3559
+ /***/ "./dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js":
3560
+ /*!****************************************************************************************************!*\
3561
+ !*** ./dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js ***!
3562
+ \****************************************************************************************************/
3563
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
3564
+
3565
+ "use strict";
3566
+
3567
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3568
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3569
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3570
+ 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;
3571
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
3572
+ };
3573
+ var __metadata = (this && this.__metadata) || function (k, v) {
3574
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3575
+ };
3576
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
3577
+ exports.CanCreateOutgoingRequestParameters = void 0;
3578
+ const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
3579
+ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
3580
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
3581
+ let CanCreateOutgoingRequestParameters = class CanCreateOutgoingRequestParameters extends ts_serval_1.Serializable {
3582
+ static from(value) {
3583
+ return this.fromAny(value);
3584
+ }
3585
+ };
3586
+ __decorate([
3587
+ (0, ts_serval_1.serialize)(),
3588
+ (0, ts_serval_1.validate)(),
3589
+ __metadata("design:type", content_1.Request)
3590
+ ], CanCreateOutgoingRequestParameters.prototype, "content", void 0);
3591
+ __decorate([
3592
+ (0, ts_serval_1.serialize)(),
3593
+ (0, ts_serval_1.validate)({ nullable: true }),
3594
+ __metadata("design:type", transport_1.CoreAddress)
3595
+ ], CanCreateOutgoingRequestParameters.prototype, "peer", void 0);
3596
+ CanCreateOutgoingRequestParameters = __decorate([
3597
+ (0, ts_serval_1.type)("CanCreateOutgoingRequestParameters")
3598
+ ], CanCreateOutgoingRequestParameters);
3599
+ exports.CanCreateOutgoingRequestParameters = CanCreateOutgoingRequestParameters;
3600
+ //# sourceMappingURL=CanCreateOutgoingRequestParameters.js.map
3601
+
3602
+ /***/ }),
3603
+
3610
3604
  /***/ "./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js":
3611
3605
  /*!*************************************************************************************************!*\
3612
3606
  !*** ./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js ***!