@nmshd/consumption 2.0.0-alpha.23 → 2.0.0-alpha.27

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/README.md +2 -2
  2. package/dist/buildInformation.js +4 -4
  3. package/dist/modules/attributes/LocalAttributesController.d.ts +3 -4
  4. package/dist/modules/attributes/LocalAttributesController.js +11 -12
  5. package/dist/modules/attributes/LocalAttributesController.js.map +1 -1
  6. package/dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.d.ts +6 -3
  7. package/dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.js +6 -1
  8. package/dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.js.map +1 -1
  9. package/dist/modules/attributes/local/LocalAttribute.d.ts +4 -2
  10. package/dist/modules/attributes/local/LocalAttribute.js +8 -2
  11. package/dist/modules/attributes/local/LocalAttribute.js.map +1 -1
  12. package/dist/modules/attributes/local/QueryTranslator.d.ts +9 -3
  13. package/dist/modules/attributes/local/QueryTranslator.js +31 -20
  14. package/dist/modules/attributes/local/QueryTranslator.js.map +1 -1
  15. package/dist/modules/index.d.ts +1 -3
  16. package/dist/modules/index.js +0 -3
  17. package/dist/modules/index.js.map +1 -1
  18. package/dist/modules/requests/incoming/IncomingRequestsController.js.map +1 -1
  19. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts +1 -1
  20. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js +25 -8
  21. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js.map +1 -1
  22. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js +2 -2
  23. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js.map +1 -1
  24. package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.d.ts +13 -4
  25. package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js +13 -6
  26. package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js.map +1 -1
  27. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js +5 -5
  28. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js.map +1 -1
  29. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js +3 -2
  30. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js.map +1 -1
  31. package/lib-web/nmshd.consumption.js +108 -137
  32. package/lib-web/nmshd.consumption.js.map +1 -1
  33. package/lib-web/nmshd.consumption.min.js +1 -1
  34. package/lib-web/nmshd.consumption.min.js.map +1 -1
  35. package/package.json +2 -2
  36. package/dist/modules/attributes/local/GetIdentityAttributesParams.d.ts +0 -12
  37. package/dist/modules/attributes/local/GetIdentityAttributesParams.js +0 -26
  38. package/dist/modules/attributes/local/GetIdentityAttributesParams.js.map +0 -1
  39. package/dist/modules/attributes/local/GetRelationshipAttributesParams.d.ts +0 -12
  40. package/dist/modules/attributes/local/GetRelationshipAttributesParams.js +0 -26
  41. package/dist/modules/attributes/local/GetRelationshipAttributesParams.js.map +0 -1
@@ -2,13 +2,22 @@ import { Serializable } from "@js-soft/ts-serval";
2
2
  import { IdentityAttribute, IdentityAttributeJSON, RelationshipAttribute, RelationshipAttributeJSON } from "@nmshd/content";
3
3
  import { CoreId } from "@nmshd/transport";
4
4
  import { AcceptRequestItemParametersJSON } from "../../incoming/decide/AcceptRequestItemParameters";
5
- export interface AcceptReadAttributeRequestItemParametersJSON extends AcceptRequestItemParametersJSON {
6
- attributeId?: string;
7
- attribute?: IdentityAttributeJSON | RelationshipAttributeJSON;
5
+ export interface AcceptReadAttributeRequestItemParametersWithExistingAttributeJSON extends AcceptRequestItemParametersJSON {
6
+ attributeId: string;
8
7
  }
8
+ export interface AcceptReadAttributeRequestItemParametersWithNewAttributeJSON extends AcceptRequestItemParametersJSON {
9
+ newAttributeValue: IdentityAttributeJSON | RelationshipAttributeJSON;
10
+ }
11
+ export declare type AcceptReadAttributeRequestItemParametersJSON = AcceptReadAttributeRequestItemParametersWithExistingAttributeJSON | AcceptReadAttributeRequestItemParametersWithNewAttributeJSON;
9
12
  export declare class AcceptReadAttributeRequestItemParameters extends Serializable {
10
13
  attributeId?: CoreId;
11
- attribute?: IdentityAttribute | RelationshipAttribute;
14
+ newAttributeValue?: IdentityAttribute | RelationshipAttribute;
15
+ isWithExistingAttribute(): this is {
16
+ attributeId: CoreId;
17
+ };
18
+ isWithNewAttribute(): this is {
19
+ newAttributeValue: IdentityAttribute | RelationshipAttribute;
20
+ };
12
21
  static from(value: AcceptReadAttributeRequestItemParametersJSON): AcceptReadAttributeRequestItemParameters;
13
22
  protected static postFrom<T extends Serializable>(value: T): T;
14
23
  }
@@ -16,16 +16,23 @@ const content_1 = require("@nmshd/content");
16
16
  const transport_1 = require("@nmshd/transport");
17
17
  const ts_simple_nameof_1 = require("ts-simple-nameof");
18
18
  let AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters_1 = class AcceptReadAttributeRequestItemParameters extends ts_serval_1.Serializable {
19
+ isWithExistingAttribute() {
20
+ return this.attributeId !== undefined;
21
+ }
22
+ isWithNewAttribute() {
23
+ return this.newAttributeValue !== undefined;
24
+ }
19
25
  static from(value) {
20
26
  return this.fromAny(value);
21
27
  }
22
28
  static postFrom(value) {
23
- const typedValue = value;
24
- if (typedValue.attributeId && typedValue.attribute) {
25
- throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_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)}.`);
29
+ if (!(value instanceof AcceptReadAttributeRequestItemParameters_1))
30
+ throw new Error("this should never happen");
31
+ if (value.attributeId && value.newAttributeValue) {
32
+ throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.newAttributeValue), `You cannot specify both ${(0, ts_simple_nameof_1.nameof)((x) => x.newAttributeValue)} and ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
26
33
  }
27
- if (!typedValue.attributeId && !typedValue.attribute) {
28
- throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_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)}.`);
34
+ if (!value.attributeId && !value.newAttributeValue) {
35
+ throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.newAttributeValue), `You have to specify either ${(0, ts_simple_nameof_1.nameof)((x) => x.newAttributeValue)} or ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
29
36
  }
30
37
  return value;
31
38
  }
@@ -39,7 +46,7 @@ __decorate([
39
46
  (0, ts_serval_1.serialize)({ unionTypes: [content_1.IdentityAttribute, content_1.RelationshipAttribute] }),
40
47
  (0, ts_serval_1.validate)({ nullable: true }),
41
48
  __metadata("design:type", Object)
42
- ], AcceptReadAttributeRequestItemParameters.prototype, "attribute", void 0);
49
+ ], AcceptReadAttributeRequestItemParameters.prototype, "newAttributeValue", void 0);
43
50
  AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters_1 = __decorate([
44
51
  (0, ts_serval_1.type)("AcceptReadAttributeRequestItemParameters")
45
52
  ], AcceptReadAttributeRequestItemParameters);
@@ -1 +1 @@
1
- {"version":3,"file":"AcceptReadAttributeRequestItemParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAA6F;AAC7F,4CAKuB;AACvB,gDAAyC;AACzC,uDAAyC;AASzC,IAAa,wCAAwC,gDAArD,MAAa,wCAAyC,SAAQ,wBAAY;IAS/D,MAAM,CAAC,IAAI,CAAC,KAAmD;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAES,MAAM,CAAU,QAAQ,CAAyB,KAAQ;QAC/D,MAAM,UAAU,GAAG,KAAiD,CAAA;QAEpE,IAAI,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,SAAS,EAAE;YAChD,MAAM,IAAI,2BAAe,CACrB,0CAAwC,CAAC,IAAI,EAC7C,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACpE,2BAA2B,IAAA,yBAAM,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CACrB,QAAQ,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CACrF,CAAA;SACJ;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YAClD,MAAM,IAAI,2BAAe,CACrB,0CAAwC,CAAC,IAAI,EAC7C,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACpE,8BAA8B,IAAA,yBAAM,EAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CACrB,OAAO,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CACpF,CAAA;SACJ;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;CACJ,CAAA;AAnCG;IAFC,IAAA,qBAAS,GAAE;IACX,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACR,kBAAM;6EAAA;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;;2EAC+B;AAPnD,wCAAwC;IADpD,IAAA,gBAAI,EAAC,0CAA0C,CAAC;GACpC,wCAAwC,CAsCpD;AAtCY,4FAAwC"}
1
+ {"version":3,"file":"AcceptReadAttributeRequestItemParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAA6F;AAC7F,4CAKuB;AACvB,gDAAyC;AACzC,uDAAyC;AAiBzC,IAAa,wCAAwC,gDAArD,MAAa,wCAAyC,SAAQ,wBAAY;IAS/D,uBAAuB;QAC1B,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,CAAA;IACzC,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAA;IAC/C,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,KAAmD;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAES,MAAM,CAAU,QAAQ,CAAyB,KAAQ;QAC/D,IAAI,CAAC,CAAC,KAAK,YAAY,0CAAwC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAE7G,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,iBAAiB,EAAE;YAC9C,MAAM,IAAI,2BAAe,CACrB,0CAAwC,CAAC,IAAI,EAC7C,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAC5E,2BAA2B,IAAA,yBAAM,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAC7B,QAAQ,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CACrF,CAAA;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAChD,MAAM,IAAI,2BAAe,CACrB,0CAAwC,CAAC,IAAI,EAC7C,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAC5E,8BAA8B,IAAA,yBAAM,EAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAC7B,OAAO,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CACpF,CAAA;SACJ;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;CACJ,CAAA;AA3CG;IAFC,IAAA,qBAAS,GAAE;IACX,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACR,kBAAM;6EAAA;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;;mFACuC;AAP3D,wCAAwC;IADpD,IAAA,gBAAI,EAAC,0CAA0C,CAAC;GACpC,wCAAwC,CA8CpD;AA9CY,4FAAwC"}
@@ -22,7 +22,7 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
22
22
  }
23
23
  async canAccept(_requestItem, params, requestInfo) {
24
24
  const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
25
- if (parsedParams.attributeId) {
25
+ if (parsedParams.isWithExistingAttribute()) {
26
26
  const foundAttribute = await this.consumptionController.attributes.getLocalAttribute(parsedParams.attributeId);
27
27
  if (!foundAttribute) {
28
28
  return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, requestInfo.id.toString()));
@@ -36,11 +36,11 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
36
36
  async accept(_requestItem, params, requestInfo) {
37
37
  const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
38
38
  let sharedLocalAttribute;
39
- if (parsedParams.attributeId) {
39
+ if (parsedParams.isWithExistingAttribute()) {
40
40
  sharedLocalAttribute = await this.copyExistingAttribute(parsedParams.attributeId, requestInfo);
41
41
  }
42
42
  else {
43
- sharedLocalAttribute = await this.createNewAttribute(parsedParams.attribute, requestInfo);
43
+ sharedLocalAttribute = await this.createNewAttribute(parsedParams.newAttributeValue, requestInfo);
44
44
  }
45
45
  return content_1.ReadAttributeAcceptResponseItem.from({
46
46
  result: content_1.ResponseItemResult.Accepted,
@@ -50,7 +50,7 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
50
50
  }
51
51
  async copyExistingAttribute(attributeId, requestInfo) {
52
52
  return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
53
- attributeId: transport_1.CoreId.from(attributeId),
53
+ sourceAttributeId: transport_1.CoreId.from(attributeId),
54
54
  peer: transport_1.CoreAddress.from(requestInfo.peer),
55
55
  requestReference: transport_1.CoreId.from(requestInfo.id)
56
56
  });
@@ -61,7 +61,7 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
61
61
  content: attribute
62
62
  });
63
63
  return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
64
- attributeId: transport_1.CoreId.from(repositoryLocalAttribute.id),
64
+ sourceAttributeId: transport_1.CoreId.from(repositoryLocalAttribute.id),
65
65
  peer: transport_1.CoreAddress.from(requestInfo.peer),
66
66
  requestReference: transport_1.CoreId.from(requestInfo.id)
67
67
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ReadAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReadAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.ts"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.G
50
50
  return ValidationResult_1.ValidationResult.success();
51
51
  }
52
52
  async accept(requestItem, _params, _requestInfo) {
53
- const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
53
+ const attribute = (await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId));
54
54
  if (!(await this.isAttributeAlreadyShared(attribute, requestItem.shareWith))) {
55
55
  await this.shareAttribute(attribute, requestItem.shareWith);
56
56
  }
@@ -71,7 +71,8 @@ class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.G
71
71
  async shareAttribute(attribute, shareWith) {
72
72
  const createAttributeRequestItem = content_1.CreateAttributeRequestItem.from({
73
73
  attribute: attribute.content,
74
- mustBeAccepted: true
74
+ mustBeAccepted: true,
75
+ sourceAttributeId: attribute.id
75
76
  });
76
77
  const createAttributeRequest = await this.consumptionController.outgoingRequests.create({
77
78
  peer: shareWith,
@@ -1 +1 @@
1
- {"version":3,"file":"ShareAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.ts"],"names":[],"mappings":";;;AAAA,4CASuB;AACvB,gDAA+D;AAC/D,yDAA2D;AAE3D,gFAA4E;AAE5E,0DAAsD;AAGtD,MAAa,kCAAmC,SAAQ,yDAGvD;IACmB,KAAK,CAAC,4BAA4B,CAC9C,WAAsC,EACtC,QAAiB,EACjB,SAAsB;QAEtB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QACxG,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,mCAAgB,CAAC,KAAK,CACzB,2BAAe,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAS,EAAE,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CACxF,CAAA;SACJ;QAED,MAAM,8BAA8B,GAAG,IAAI,CAAC,sBAAsB,CAC9D,SAAS,CAAC,OAAO,EACjB,IAAI,CAAC,sBAAsB,EAC3B,SAAS,CACZ,CAAA;QACD,IAAI,8BAA8B,CAAC,OAAO,EAAE,EAAE;YAC1C,OAAO,8BAA8B,CAAA;SACxC;QAED,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEe,KAAK,CAAC,uCAAuC,CACzD,WAAsC,EACtC,WAA6B;QAE7B,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,yBAAyB,CAChG,WAAW,CAAC,SAAS,CACxB,CAAA;QAED,IAAI,CAAC,uBAAuB,EAAE;YAC1B,OAAO,KAAK,CAAA,CAAC,qDAAqD;SACrE;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QAExG,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,KAAK,CAAA,CAAC,qDAAqD;SACrE;QAED,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,EAAE;YACzG,OAAO,KAAK,CAAA;SACf;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,sBAAsB,CAC1B,SAAoD,EACpD,MAAmB,EACnB,SAAsB;QAEtB,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAA;QACtC,IAAI,SAAS,YAAY,2BAAiB,EAAE;YACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBACnC,OAAO,mCAAgB,CAAC,KAAK,CACzB,+BAAiB,CAAC,QAAQ,CAAC,kBAAkB,CACzC,yEAAyE,CAC5E,CACJ,CAAA;aACJ;SACJ;QAED,IAAI,SAAS,YAAY,+BAAqB,EAAE;YAC5C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBACrE,OAAO,mCAAgB,CAAC,KAAK,CACzB,+BAAiB,CAAC,QAAQ,CAAC,kBAAkB,CACzC,qFAAqF,CACxF,CACJ,CAAA;aACJ;SACJ;QAED,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEe,SAAS,CACrB,YAAuC,EACvC,OAAsD,EACtD,YAA8B;QAE9B,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAEe,KAAK,CAAC,MAAM,CACxB,WAAsC,EACtC,OAAsD,EACtD,YAA8B;QAE9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QAExG,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE;YAC3E,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;SAC9D;QAED,OAAO,4BAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,4BAAkB,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3E,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,SAAyB,EAAE,SAAsB;QACpF,IAAI,SAAS,CAAC,OAAO,YAAY,2BAAiB,EAAE;YAChD,OAAO,CACH,CACI,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,kBAAkB,CAAC;gBAC3D,2BAA2B,EAAE,SAAS,CAAC,SAAU,CAAC,eAAgB,CAAC,QAAQ,EAAE;gBAC7E,gBAAgB,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,2DAA2D;aACrG,CAAC,CACL,CAAC,MAAM,GAAG,CAAC,CACf,CAAA;SACJ;QACD,OAAO,CACH,CACI,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAC3D,2BAA2B,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE;YACpD,gBAAgB,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,2DAA2D;SACrG,CAAC,CACL,CAAC,MAAM,GAAG,CAAC,CACf,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAqC,EAAE,SAAsB;QACtF,MAAM,0BAA0B,GAAG,oCAA0B,CAAC,IAAI,CAAC;YAC/D,SAAS,EAAE,SAAU,CAAC,OAAO;YAC7B,cAAc,EAAE,IAAI;SACvB,CAAC,CAAA;QAEF,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,MAAM,CAAC;YACpF,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,iBAAO,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,CAAC,0BAA0B,CAAC;aACtC,CAAC;SACL,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC9D,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,OAAO,EAAE,sBAAsB,CAAC,OAAO;SAC1C,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACnD,SAAS,EAAE,sBAAsB,CAAC,EAAE;YACpC,mBAAmB,EAAE,OAAO;SAC/B,CAAC,CAAA;IACN,CAAC;CACJ;AApJD,gFAoJC"}
1
+ {"version":3,"file":"ShareAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.ts"],"names":[],"mappings":"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"}
@@ -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-alpha.23",
21
- build: "42",
22
- date: "2022-07-05T08:52:22+00:00",
23
- commit: "6fb25e99922bec6ff6dbc88d5eed8a6252749a9f",
20
+ version: "2.0.0-alpha.27",
21
+ build: "47",
22
+ date: "2022-07-07T08:22:46+00:00",
23
+ commit: "bffe38f5ede2e159089b02aaba7b18f82831bede",
24
24
  dependencies: {"@js-soft/docdb-querytranslator":"^1.0.1","ts-simple-nameof":"^1.3.1"},
25
25
  libraries: {
26
26
  transport: transport_1.buildInformation,
@@ -306,6 +306,7 @@ __exportStar(__webpack_require__(/*! ./modules */ "./dist/modules/index.js"), ex
306
306
 
307
307
  Object.defineProperty(exports, "__esModule", ({ value: true }));
308
308
  exports.LocalAttributesController = void 0;
309
+ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
309
310
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
310
311
  const ts_simple_nameof_1 = __webpack_require__(/*! ts-simple-nameof */ "./node_modules/ts-simple-nameof/index.js");
311
312
  const consumption_1 = __webpack_require__(/*! ../../consumption */ "./dist/consumption/index.js");
@@ -387,17 +388,15 @@ class LocalAttributesController extends consumption_1.ConsumptionBaseController
387
388
  const items = await this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
388
389
  return this.filterCurrent(items);
389
390
  }
390
- async executeRelationshipAttributeQuery(params) {
391
- const queryWithType = params.query;
392
- queryWithType["attributeType"] = "RelationshipAttribute";
393
- const dbQuery = QueryTranslator_1.relationshipQueryTranslator.parse(queryWithType);
391
+ async executeRelationshipAttributeQuery(query) {
392
+ const parsedQuery = content_1.RelationshipAttributeQuery.from(query);
393
+ const dbQuery = QueryTranslator_1.RelationshipAttributeQueryTranslator.translate(parsedQuery);
394
394
  const attributes = await this.attributes.find(dbQuery);
395
395
  return await this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
396
396
  }
397
- async executeIdentityAttributeQuery(params) {
398
- const queryWithType = params.query;
399
- queryWithType["attributeType"] = "IdentityAttribute";
400
- const dbQuery = QueryTranslator_1.identityQueryTranslator.parse(queryWithType);
397
+ async executeIdentityAttributeQuery(query) {
398
+ const parsedQuery = content_1.IdentityAttributeQuery.from(query);
399
+ const dbQuery = QueryTranslator_1.IdentityAttributeQueryTranslator.translate(parsedQuery);
401
400
  const attributes = await this.attributes.find(dbQuery);
402
401
  return await this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
403
402
  }
@@ -427,16 +426,16 @@ class LocalAttributesController extends consumption_1.ConsumptionBaseController
427
426
  }
428
427
  async createSharedLocalAttributeCopy(params) {
429
428
  const parsedParams = CreateSharedLocalAttributeCopyParams_1.CreateSharedLocalAttributeCopyParams.from(params);
430
- const sourceAttribute = await this.getLocalAttribute(parsedParams.attributeId);
429
+ const sourceAttribute = await this.getLocalAttribute(parsedParams.sourceAttributeId);
431
430
  if (!sourceAttribute) {
432
- throw consumption_1.ConsumptionErrors.attributes.predecessorNotFound(parsedParams.attributeId.toString());
431
+ throw consumption_1.ConsumptionErrors.attributes.predecessorNotFound(parsedParams.sourceAttributeId.toString());
433
432
  }
434
433
  const shareInfo = LocalAttributeShareInfo_1.LocalAttributeShareInfo.from({
435
434
  peer: parsedParams.peer,
436
435
  requestReference: parsedParams.requestReference,
437
- sourceAttribute: parsedParams.attributeId
436
+ sourceAttribute: parsedParams.sourceAttributeId
438
437
  });
439
- const sharedLocalAttributeCopy = await LocalAttribute_1.LocalAttribute.fromAttribute(sourceAttribute.content, undefined, shareInfo);
438
+ const sharedLocalAttributeCopy = await LocalAttribute_1.LocalAttribute.fromAttribute(sourceAttribute.content, undefined, shareInfo, parsedParams.attributeId);
440
439
  await this.attributes.create(sharedLocalAttributeCopy);
441
440
  return sharedLocalAttributeCopy;
442
441
  }
@@ -597,9 +596,14 @@ class CreateSharedLocalAttributeCopyParams extends ts_serval_1.Serializable {
597
596
  }
598
597
  __decorate([
599
598
  (0, ts_serval_1.serialize)(),
600
- (0, ts_serval_1.validate)(),
599
+ (0, ts_serval_1.validate)({ nullable: true }),
601
600
  __metadata("design:type", transport_1.CoreId)
602
601
  ], CreateSharedLocalAttributeCopyParams.prototype, "attributeId", void 0);
602
+ __decorate([
603
+ (0, ts_serval_1.serialize)(),
604
+ (0, ts_serval_1.validate)(),
605
+ __metadata("design:type", transport_1.CoreId)
606
+ ], CreateSharedLocalAttributeCopyParams.prototype, "sourceAttributeId", void 0);
603
607
  __decorate([
604
608
  (0, ts_serval_1.serialize)(),
605
609
  (0, ts_serval_1.validate)(),
@@ -615,78 +619,6 @@ exports.CreateSharedLocalAttributeCopyParams = CreateSharedLocalAttributeCopyPar
615
619
 
616
620
  /***/ }),
617
621
 
618
- /***/ "./dist/modules/attributes/local/GetIdentityAttributesParams.js":
619
- /*!**********************************************************************!*\
620
- !*** ./dist/modules/attributes/local/GetIdentityAttributesParams.js ***!
621
- \**********************************************************************/
622
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
623
-
624
- "use strict";
625
-
626
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
627
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
628
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
629
- 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;
630
- return c > 3 && r && Object.defineProperty(target, key, r), r;
631
- };
632
- var __metadata = (this && this.__metadata) || function (k, v) {
633
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
634
- };
635
- Object.defineProperty(exports, "__esModule", ({ value: true }));
636
- exports.GetIdentityAttributesParams = void 0;
637
- const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
638
- const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
639
- class GetIdentityAttributesParams extends ts_serval_1.Serializable {
640
- static from(value) {
641
- return this.fromAny(value);
642
- }
643
- }
644
- __decorate([
645
- (0, ts_serval_1.serialize)(),
646
- (0, ts_serval_1.validate)(),
647
- __metadata("design:type", content_1.IdentityAttributeQuery)
648
- ], GetIdentityAttributesParams.prototype, "query", void 0);
649
- exports.GetIdentityAttributesParams = GetIdentityAttributesParams;
650
- //# sourceMappingURL=GetIdentityAttributesParams.js.map
651
-
652
- /***/ }),
653
-
654
- /***/ "./dist/modules/attributes/local/GetRelationshipAttributesParams.js":
655
- /*!**************************************************************************!*\
656
- !*** ./dist/modules/attributes/local/GetRelationshipAttributesParams.js ***!
657
- \**************************************************************************/
658
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
659
-
660
- "use strict";
661
-
662
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
663
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
664
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
665
- 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;
666
- return c > 3 && r && Object.defineProperty(target, key, r), r;
667
- };
668
- var __metadata = (this && this.__metadata) || function (k, v) {
669
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
670
- };
671
- Object.defineProperty(exports, "__esModule", ({ value: true }));
672
- exports.GetRelationshipAttributesParams = void 0;
673
- const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
674
- const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
675
- class GetRelationshipAttributesParams extends ts_serval_1.Serializable {
676
- static from(value) {
677
- return this.fromAny(value);
678
- }
679
- }
680
- __decorate([
681
- (0, ts_serval_1.serialize)(),
682
- (0, ts_serval_1.validate)(),
683
- __metadata("design:type", content_1.RelationshipAttributeQuery)
684
- ], GetRelationshipAttributesParams.prototype, "query", void 0);
685
- exports.GetRelationshipAttributesParams = GetRelationshipAttributesParams;
686
- //# sourceMappingURL=GetRelationshipAttributesParams.js.map
687
-
688
- /***/ }),
689
-
690
622
  /***/ "./dist/modules/attributes/local/LocalAttribute.js":
691
623
  /*!*********************************************************!*\
692
624
  !*** ./dist/modules/attributes/local/LocalAttribute.js ***!
@@ -724,13 +656,19 @@ let LocalAttribute = class LocalAttribute extends transport_1.CoreSynchronizable
724
656
  ];
725
657
  this.userdataProperties = [(0, ts_simple_nameof_1.nameof)((r) => r.content)];
726
658
  }
659
+ isIdentityAttribute() {
660
+ return this.content instanceof content_1.IdentityAttribute;
661
+ }
662
+ isOwnedBy(identity) {
663
+ return this.content.owner.equals(identity);
664
+ }
727
665
  static from(value) {
728
666
  return this.fromAny(value);
729
667
  }
730
- static async fromAttribute(attribute, succeeds, shareInfo) {
668
+ static async fromAttribute(attribute, succeeds, shareInfo, id) {
731
669
  return this.from({
670
+ id: id ?? (await consumption_1.ConsumptionIds.attribute.generate()),
732
671
  content: attribute,
733
- id: await consumption_1.ConsumptionIds.attribute.generate(),
734
672
  createdAt: transport_1.CoreDate.utc(),
735
673
  succeeds: succeeds,
736
674
  shareInfo: shareInfo
@@ -825,11 +763,17 @@ exports.LocalAttributeShareInfo = LocalAttributeShareInfo;
825
763
  "use strict";
826
764
 
827
765
  Object.defineProperty(exports, "__esModule", ({ value: true }));
828
- exports.relationshipQueryTranslator = exports.identityQueryTranslator = void 0;
766
+ exports.RelationshipAttributeQueryTranslator = exports.IdentityAttributeQueryTranslator = void 0;
829
767
  const docdb_querytranslator_1 = __webpack_require__(/*! @js-soft/docdb-querytranslator */ "./node_modules/@js-soft/docdb-querytranslator/dist/index.js");
830
768
  const luxon_1 = __webpack_require__(/*! luxon */ "./node_modules/luxon/build/cjs-browser/luxon.js");
831
769
  const ts_simple_nameof_1 = __webpack_require__(/*! ts-simple-nameof */ "./node_modules/ts-simple-nameof/index.js");
832
- exports.identityQueryTranslator = new docdb_querytranslator_1.QueryTranslator({
770
+ class IdentityAttributeQueryTranslator {
771
+ static translate(query) {
772
+ return this.translator.parse({ ...query.toJSON(), attributeType: "IdentityAttribute" });
773
+ }
774
+ }
775
+ exports.IdentityAttributeQueryTranslator = IdentityAttributeQueryTranslator;
776
+ IdentityAttributeQueryTranslator.translator = new docdb_querytranslator_1.QueryTranslator({
833
777
  whitelist: {
834
778
  [(0, ts_simple_nameof_1.nameof)((x) => x.tags)]: true,
835
779
  [(0, ts_simple_nameof_1.nameof)((x) => x.valueType)]: true,
@@ -848,16 +792,17 @@ exports.identityQueryTranslator = new docdb_querytranslator_1.QueryTranslator({
848
792
  custom: {
849
793
  // tags
850
794
  [(0, ts_simple_nameof_1.nameof)((x) => x.tags)]: (query, input) => {
851
- const allowedTags = [];
852
- for (const tag of input) {
853
- const tagQuery = {
854
- [`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.tags)}`]: {
855
- $contains: tag
856
- }
857
- };
858
- allowedTags.push(tagQuery);
795
+ if (!input)
796
+ return;
797
+ if (!Array.isArray(input)) {
798
+ throw new Error("Invalid input: 'tags' must be an array");
859
799
  }
860
- query["$or"] = allowedTags;
800
+ const inputAsArray = input;
801
+ query["$or"] = inputAsArray.map((t) => ({
802
+ [`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.tags)}`]: {
803
+ $contains: t
804
+ }
805
+ }));
861
806
  },
862
807
  // validFrom
863
808
  [(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)]: (query, input) => {
@@ -865,10 +810,9 @@ exports.identityQueryTranslator = new docdb_querytranslator_1.QueryTranslator({
865
810
  return;
866
811
  }
867
812
  const validFromUtcString = luxon_1.DateTime.fromISO(input).toUTC().toString();
868
- query[`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)}`] =
869
- {
870
- $gte: validFromUtcString
871
- };
813
+ query[`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)}`] = {
814
+ $gte: validFromUtcString
815
+ };
872
816
  },
873
817
  // validTo
874
818
  [(0, ts_simple_nameof_1.nameof)((x) => x.validTo)]: (query, input) => {
@@ -882,7 +826,13 @@ exports.identityQueryTranslator = new docdb_querytranslator_1.QueryTranslator({
882
826
  }
883
827
  }
884
828
  });
885
- exports.relationshipQueryTranslator = new docdb_querytranslator_1.QueryTranslator({
829
+ class RelationshipAttributeQueryTranslator {
830
+ static translate(query) {
831
+ return this.translator.parse({ ...query.toJSON(), attributeType: "RelationshipAttribute" });
832
+ }
833
+ }
834
+ exports.RelationshipAttributeQueryTranslator = RelationshipAttributeQueryTranslator;
835
+ RelationshipAttributeQueryTranslator.translator = new docdb_querytranslator_1.QueryTranslator({
886
836
  whitelist: {
887
837
  [(0, ts_simple_nameof_1.nameof)((x) => x.key)]: true,
888
838
  [(0, ts_simple_nameof_1.nameof)((x) => x.valueType)]: true,
@@ -919,10 +869,9 @@ exports.relationshipQueryTranslator = new docdb_querytranslator_1.QueryTranslato
919
869
  return;
920
870
  }
921
871
  const validFromUtcString = luxon_1.DateTime.fromISO(input).toUTC().toString();
922
- query[`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)}`] =
923
- {
924
- $gte: validFromUtcString
925
- };
872
+ query[`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)}`] = {
873
+ $gte: validFromUtcString
874
+ };
926
875
  },
927
876
  // validTo
928
877
  [(0, ts_simple_nameof_1.nameof)((x) => x.validTo)]: (query, input) => {
@@ -1187,8 +1136,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
1187
1136
  __exportStar(__webpack_require__(/*! ./attributes/local/CreateLocalAttributeParams */ "./dist/modules/attributes/local/CreateLocalAttributeParams.js"), exports);
1188
1137
  __exportStar(__webpack_require__(/*! ./attributes/local/CreatePeerLocalAttributeParams */ "./dist/modules/attributes/local/CreatePeerLocalAttributeParams.js"), exports);
1189
1138
  __exportStar(__webpack_require__(/*! ./attributes/local/CreateSharedLocalAttributeCopyParams */ "./dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.js"), exports);
1190
- __exportStar(__webpack_require__(/*! ./attributes/local/GetIdentityAttributesParams */ "./dist/modules/attributes/local/GetIdentityAttributesParams.js"), exports);
1191
- __exportStar(__webpack_require__(/*! ./attributes/local/GetRelationshipAttributesParams */ "./dist/modules/attributes/local/GetRelationshipAttributesParams.js"), exports);
1192
1139
  __exportStar(__webpack_require__(/*! ./attributes/local/LocalAttribute */ "./dist/modules/attributes/local/LocalAttribute.js"), exports);
1193
1140
  __exportStar(__webpack_require__(/*! ./attributes/local/LocalAttributeShareInfo */ "./dist/modules/attributes/local/LocalAttributeShareInfo.js"), exports);
1194
1141
  __exportStar(__webpack_require__(/*! ./attributes/local/SucceedLocalAttributeParams */ "./dist/modules/attributes/local/SucceedLocalAttributeParams.js"), exports);
@@ -1215,7 +1162,6 @@ __exportStar(__webpack_require__(/*! ./requests/itemProcessors/IRequestItemProce
1215
1162
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/ProcessorConstructor */ "./dist/modules/requests/itemProcessors/ProcessorConstructor.js"), exports);
1216
1163
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js"), exports);
1217
1164
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js"), exports);
1218
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js"), exports);
1219
1165
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js"), exports);
1220
1166
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/RequestItemConstructor */ "./dist/modules/requests/itemProcessors/RequestItemConstructor.js"), exports);
1221
1167
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/RequestItemProcessorRegistry */ "./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js"), exports);
@@ -2132,7 +2078,14 @@ const consumption_1 = __webpack_require__(/*! ../../../../consumption */ "./dist
2132
2078
  const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js");
2133
2079
  const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
2134
2080
  class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2135
- canCreateOutgoingRequestItem(requestItem, _request, _recipient) {
2081
+ canCreateOutgoingRequestItem(requestItem, _request, recipient) {
2082
+ const recipientIsOwnerOfTheAttribute = requestItem.attribute.owner.equals(recipient);
2083
+ // When the owner of the Attribute is not the recipient of the Request, this means that
2084
+ // we need to set the sourceAttributeId, because we have to set shareInfo as soon as the
2085
+ // RequestItem was accepted.
2086
+ if (!recipientIsOwnerOfTheAttribute && !requestItem.sourceAttributeId) {
2087
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("'sourceAttributeId' cannot be undefined when sending an attribute that is not owned by the recipient."));
2088
+ }
2136
2089
  if (requestItem.attribute instanceof content_1.IdentityAttribute) {
2137
2090
  return this.canCreateRequestItemWithIdentityAttribute(requestItem);
2138
2091
  }
@@ -2167,13 +2120,23 @@ class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.
2167
2120
  if (!(responseItem instanceof content_1.CreateAttributeAcceptResponseItem)) {
2168
2121
  return;
2169
2122
  }
2170
- /* 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 */
2171
- await this.consumptionController.attributes.createPeerLocalAttribute({
2172
- id: responseItem.attributeId,
2173
- content: requestItem.attribute,
2174
- peer: requestInfo.peer,
2175
- requestReference: requestInfo.id
2176
- });
2123
+ if (requestItem.sourceAttributeId) {
2124
+ const sourceAttribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.sourceAttributeId);
2125
+ await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2126
+ attributeId: responseItem.attributeId,
2127
+ sourceAttributeId: sourceAttribute.id,
2128
+ peer: requestInfo.peer,
2129
+ requestReference: requestInfo.id
2130
+ });
2131
+ }
2132
+ else {
2133
+ await this.consumptionController.attributes.createPeerLocalAttribute({
2134
+ id: responseItem.attributeId,
2135
+ content: requestItem.attribute,
2136
+ peer: requestInfo.peer,
2137
+ requestReference: requestInfo.id
2138
+ });
2139
+ }
2177
2140
  }
2178
2141
  }
2179
2142
  exports.CreateAttributeRequestItemProcessor = CreateAttributeRequestItemProcessor;
@@ -2297,7 +2260,7 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
2297
2260
  }
2298
2261
  async copyExistingAttribute(attributeId, requestInfo) {
2299
2262
  return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2300
- attributeId: transport_1.CoreId.from(attributeId),
2263
+ sourceAttributeId: transport_1.CoreId.from(attributeId),
2301
2264
  peer: transport_1.CoreAddress.from(requestInfo.peer),
2302
2265
  requestReference: transport_1.CoreId.from(requestInfo.id)
2303
2266
  });
@@ -2308,7 +2271,7 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
2308
2271
  content: attribute
2309
2272
  });
2310
2273
  return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2311
- attributeId: transport_1.CoreId.from(repositoryLocalAttribute.id),
2274
+ sourceAttributeId: transport_1.CoreId.from(repositoryLocalAttribute.id),
2312
2275
  peer: transport_1.CoreAddress.from(requestInfo.peer),
2313
2276
  requestReference: transport_1.CoreId.from(requestInfo.id)
2314
2277
  });
@@ -2361,16 +2324,23 @@ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
2361
2324
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
2362
2325
  const ts_simple_nameof_1 = __webpack_require__(/*! ts-simple-nameof */ "./node_modules/ts-simple-nameof/index.js");
2363
2326
  let AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters_1 = class AcceptReadAttributeRequestItemParameters extends ts_serval_1.Serializable {
2327
+ isWithExistingAttribute() {
2328
+ return this.attributeId !== undefined;
2329
+ }
2330
+ isWithNewAttribute() {
2331
+ return this.newAttributeValue !== undefined;
2332
+ }
2364
2333
  static from(value) {
2365
2334
  return this.fromAny(value);
2366
2335
  }
2367
2336
  static postFrom(value) {
2368
- const typedValue = value;
2369
- if (typedValue.attributeId && typedValue.attribute) {
2370
- throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_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)}.`);
2337
+ if (!(value instanceof AcceptReadAttributeRequestItemParameters_1))
2338
+ throw new Error("this should never happen");
2339
+ if (value.attributeId && value.newAttributeValue) {
2340
+ throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.newAttributeValue), `You cannot specify both ${(0, ts_simple_nameof_1.nameof)((x) => x.newAttributeValue)} and ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
2371
2341
  }
2372
- if (!typedValue.attributeId && !typedValue.attribute) {
2373
- throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_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)}.`);
2342
+ if (!value.attributeId && !value.newAttributeValue) {
2343
+ throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.newAttributeValue), `You have to specify either ${(0, ts_simple_nameof_1.nameof)((x) => x.newAttributeValue)} or ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
2374
2344
  }
2375
2345
  return value;
2376
2346
  }
@@ -2384,7 +2354,7 @@ __decorate([
2384
2354
  (0, ts_serval_1.serialize)({ unionTypes: [content_1.IdentityAttribute, content_1.RelationshipAttribute] }),
2385
2355
  (0, ts_serval_1.validate)({ nullable: true }),
2386
2356
  __metadata("design:type", Object)
2387
- ], AcceptReadAttributeRequestItemParameters.prototype, "attribute", void 0);
2357
+ ], AcceptReadAttributeRequestItemParameters.prototype, "newAttributeValue", void 0);
2388
2358
  AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters_1 = __decorate([
2389
2359
  (0, ts_serval_1.type)("AcceptReadAttributeRequestItemParameters")
2390
2360
  ], AcceptReadAttributeRequestItemParameters);
@@ -2424,7 +2394,7 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
2424
2394
  }
2425
2395
  async canAccept(_requestItem, params, requestInfo) {
2426
2396
  const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
2427
- if (parsedParams.attributeId) {
2397
+ if (parsedParams.isWithExistingAttribute()) {
2428
2398
  const foundAttribute = await this.consumptionController.attributes.getLocalAttribute(parsedParams.attributeId);
2429
2399
  if (!foundAttribute) {
2430
2400
  return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, requestInfo.id.toString()));
@@ -2438,11 +2408,11 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
2438
2408
  async accept(_requestItem, params, requestInfo) {
2439
2409
  const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
2440
2410
  let sharedLocalAttribute;
2441
- if (parsedParams.attributeId) {
2411
+ if (parsedParams.isWithExistingAttribute()) {
2442
2412
  sharedLocalAttribute = await this.copyExistingAttribute(parsedParams.attributeId, requestInfo);
2443
2413
  }
2444
2414
  else {
2445
- sharedLocalAttribute = await this.createNewAttribute(parsedParams.attribute, requestInfo);
2415
+ sharedLocalAttribute = await this.createNewAttribute(parsedParams.newAttributeValue, requestInfo);
2446
2416
  }
2447
2417
  return content_1.ReadAttributeAcceptResponseItem.from({
2448
2418
  result: content_1.ResponseItemResult.Accepted,
@@ -2452,7 +2422,7 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
2452
2422
  }
2453
2423
  async copyExistingAttribute(attributeId, requestInfo) {
2454
2424
  return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2455
- attributeId: transport_1.CoreId.from(attributeId),
2425
+ sourceAttributeId: transport_1.CoreId.from(attributeId),
2456
2426
  peer: transport_1.CoreAddress.from(requestInfo.peer),
2457
2427
  requestReference: transport_1.CoreId.from(requestInfo.id)
2458
2428
  });
@@ -2463,7 +2433,7 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
2463
2433
  content: attribute
2464
2434
  });
2465
2435
  return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2466
- attributeId: transport_1.CoreId.from(repositoryLocalAttribute.id),
2436
+ sourceAttributeId: transport_1.CoreId.from(repositoryLocalAttribute.id),
2467
2437
  peer: transport_1.CoreAddress.from(requestInfo.peer),
2468
2438
  requestReference: transport_1.CoreId.from(requestInfo.id)
2469
2439
  });
@@ -2580,7 +2550,7 @@ class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.G
2580
2550
  return ValidationResult_1.ValidationResult.success();
2581
2551
  }
2582
2552
  async accept(requestItem, _params, _requestInfo) {
2583
- const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
2553
+ const attribute = (await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId));
2584
2554
  if (!(await this.isAttributeAlreadyShared(attribute, requestItem.shareWith))) {
2585
2555
  await this.shareAttribute(attribute, requestItem.shareWith);
2586
2556
  }
@@ -2601,7 +2571,8 @@ class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.G
2601
2571
  async shareAttribute(attribute, shareWith) {
2602
2572
  const createAttributeRequestItem = content_1.CreateAttributeRequestItem.from({
2603
2573
  attribute: attribute.content,
2604
- mustBeAccepted: true
2574
+ mustBeAccepted: true,
2575
+ sourceAttributeId: attribute.id
2605
2576
  });
2606
2577
  const createAttributeRequest = await this.consumptionController.outgoingRequests.create({
2607
2578
  peer: shareWith,