@nmshd/consumption 2.0.0-beta.21 → 2.0.0-beta.22

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.
@@ -6,10 +6,10 @@ const content_1 = require("@nmshd/content");
6
6
  const crypto_1 = require("@nmshd/crypto");
7
7
  const transport_1 = require("@nmshd/transport");
8
8
  exports.buildInformation = {
9
- version: "2.0.0-beta.21",
10
- build: "73",
11
- date: "2022-09-20T13:25:15+00:00",
12
- commit: "79868cf6eb51c013e5c41ecd77b3d12d8cfd1b0c",
9
+ version: "2.0.0-beta.22",
10
+ build: "74",
11
+ date: "2022-09-22T05:16:48+00:00",
12
+ commit: "15f78921febb56c45bf0ed874f4dce0e7accb7ce",
13
13
  dependencies: {"@js-soft/docdb-querytranslator":"^1.1.0","ts-simple-nameof":"^1.3.1"},
14
14
  libraries: {
15
15
  transport: transport_1.buildInformation,
@@ -1,8 +1,9 @@
1
1
  import { ApplicationError } from "@js-soft/ts-utils";
2
- import { CoreError } from "@nmshd/transport";
2
+ import { CoreError, CoreId } from "@nmshd/transport";
3
3
  declare class Attributes {
4
4
  attributeExists(id: string): CoreError;
5
5
  predecessorNotFound(id: string): CoreError;
6
+ cannotSucceedAttributesWithAParent(parentId: string | CoreId): CoreError;
6
7
  }
7
8
  declare class Requests {
8
9
  requestExists(id: string): CoreError;
@@ -10,6 +10,9 @@ class Attributes {
10
10
  predecessorNotFound(id) {
11
11
  return new transport_1.CoreError("error.consumption.attributes.predecessorNotFound", `Attribute with id '${id}' does not exist. Please use create instead.`);
12
12
  }
13
+ cannotSucceedAttributesWithAParent(parentId) {
14
+ return new transport_1.CoreError("error.consumption.attributes.cannotSucceedAttributesWithAParent", `The Attribute you want to succeed has a parent (id: ${parentId.toString()}). You cannot succeed Attributes with a parent. Instead, succeed the parent, which will implicitly succeed all its children.`);
15
+ }
13
16
  }
14
17
  class Requests {
15
18
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"ConsumptionErrors.js","sourceRoot":"","sources":["../../src/consumption/ConsumptionErrors.ts"],"names":[],"mappings":";;;AAAA,gDAAoD;AACpD,gDAA4C;AAE5C,MAAM,UAAU;IACL,eAAe,CAAC,EAAU;QAC7B,OAAO,IAAI,qBAAS,CAChB,8CAA8C,EAC9C,sBAAsB,EAAE,+CAA+C,CAC1E,CAAA;IACL,CAAC;IACM,mBAAmB,CAAC,EAAU;QACjC,OAAO,IAAI,qBAAS,CAChB,kDAAkD,EAClD,sBAAsB,EAAE,8CAA8C,CACzE,CAAA;IACL,CAAC;CACJ;AAED,MAAM,QAAQ;IAAd;QAmEoB,qBAAgB,GAAG,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAA;IACvE,CAAC;IAnEU,aAAa,CAAC,EAAU;QAC3B,OAAO,IAAI,qBAAS,CAChB,0CAA0C,EAC1C,mBAAmB,EAAE,uCAAuC,CAC/D,CAAA;IACL,CAAC;IAEM,0CAA0C,CAAC,KAAU;QACxD,OAAO,IAAI,qBAAS,CAChB,uEAAuE,EACvE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sCAAsC,EAC/E,SAAS,EACT,SAAS,EACT,KAAK,CACR,CAAA;IACL,CAAC;IAEM,sCAAsC,CAAC,KAAU;QACpD,OAAO,IAAI,qBAAS,CAChB,mEAAmE,EACnE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC,EAC9E,SAAS,EACT,SAAS,EACT,KAAK,CACR,CAAA;IACL,CAAC;IAEM,kBAAkB,CAAC,OAAe;QACrC,OAAO,IAAI,qBAAS,CAAC,+CAA+C,EAAE,OAAO,CAAC,CAAA;IAClF,CAAC;;AAEuB,0BAAiB,GAAG;IACjC,gBAAgB;QACnB,OAAO,IAAI,2BAAgB,CACvB,mDAAmD,EACnD,6DAA6D,CAChE,CAAA;IACL,CAAC;IAEM,oBAAoB,CAAC,OAAe;QACvC,OAAO,IAAI,2BAAgB,CAAC,uDAAuD,EAAE,OAAO,CAAC,CAAA;IACjG,CAAC;IAEM,gCAAgC,CAAC,OAAe;QACnD,OAAO,IAAI,2BAAgB,CAAC,mEAAmE,EAAE,OAAO,CAAC,CAAA;IAC7G,CAAC;IAEM,6BAA6B,CAAC,OAAe;QAChD,OAAO,IAAI,2BAAgB,CAAC,gEAAgE,EAAE,OAAO,CAAC,CAAA;IAC1G,CAAC;IAEM,qCAAqC;QACxC,OAAO,IAAI,2BAAgB,CACvB,wEAAwE,EACxE,qDAAqD,CACxD,CAAA;IACL,CAAC;IAEM,qCAAqC;QACxC,OAAO,IAAI,2BAAgB,CACvB,wEAAwE,EACxE,qDAAqD,CACxD,CAAA;IACL,CAAC;CACJ,CAAA;AAKL,MAAM,gBAAgB;IACX,sBAAsB,CAAC,cAAsB;QAChD,OAAO,IAAI,qBAAS,CAChB,4DAA4D,EAC5D,qCAAqC,cAAc,kBAAkB,CACxE,CAAA;IACL,CAAC;CACJ;AAED,MAAM,UAAU;IACL,eAAe,CAAC,aAAqB;QACxC,OAAO,IAAI,qBAAS,CAChB,8CAA8C,EAC9C,0BAA0B,aAAa,qCAAqC,CAC/E,CAAA;IACL,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,qBAAS,CAAC,4CAA4C,EAAE,4CAA4C,CAAC,CAAA;IACpH,CAAC;CACJ;AAED,MAAa,iBAAiB;;AAA9B,8CAKC;AAJiB,4BAAU,GAAG,IAAI,UAAU,EAAE,CAAA;AAC7B,0BAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;AACzB,kCAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAA;AACzC,4BAAU,GAAG,IAAI,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"ConsumptionErrors.js","sourceRoot":"","sources":["../../src/consumption/ConsumptionErrors.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export declare class AttributesController extends ConsumptionBaseController {
27
27
  executeThirdPartyRelationshipAttributeQuery(query: IThirdPartyRelationshipAttributeQuery): Promise<LocalAttribute | undefined>;
28
28
  executeIdentityAttributeQuery(query: IIdentityAttributeQuery): Promise<LocalAttribute[]>;
29
29
  createLocalAttribute(params: ICreateLocalAttributeParams): Promise<LocalAttribute>;
30
+ private createLocalAttributesForNestedAttributeValues;
30
31
  succeedLocalAttribute(params: ISucceedLocalAttributeParams): Promise<LocalAttribute>;
31
32
  createSharedLocalAttributeCopy(params: ICreateSharedLocalAttributeCopyParams): Promise<LocalAttribute>;
32
33
  createPeerLocalAttribute(params: ICreatePeerLocalAttributeParams): Promise<LocalAttribute>;
@@ -111,26 +111,54 @@ class AttributesController extends consumption_1.ConsumptionBaseController {
111
111
  return this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
112
112
  }
113
113
  async createLocalAttribute(params) {
114
- const localAttribute = await LocalAttribute_1.LocalAttribute.fromAttribute(params.content);
114
+ const localAttribute = LocalAttribute_1.LocalAttribute.from({
115
+ id: await consumption_1.ConsumptionIds.attribute.generate(),
116
+ createdAt: transport_1.CoreDate.utc(),
117
+ content: params.content,
118
+ parentId: params.parentId
119
+ });
115
120
  await this.attributes.create(localAttribute);
121
+ if (localAttribute.content instanceof content_1.IdentityAttribute && // nested Local Attributes should only be created for Identity Attributes
122
+ localAttribute.content.value instanceof content_1.AbstractComplexValue) {
123
+ await this.createLocalAttributesForNestedAttributeValues(localAttribute);
124
+ }
116
125
  this.eventBus.publish(new events_1.AttributeCreatedEvent(this.identity.address.toString(), localAttribute));
117
126
  return localAttribute;
118
127
  }
128
+ async createLocalAttributesForNestedAttributeValues(localAttribute) {
129
+ if (!(localAttribute.content instanceof content_1.IdentityAttribute)) {
130
+ throw new Error("Only Identity Attributes are allowed here");
131
+ }
132
+ const attributeValueAsAny = localAttribute.content.value;
133
+ const nestedAttributeValues = Object.keys(localAttribute.content.value)
134
+ .map((k) => attributeValueAsAny[k])
135
+ .filter((p) => p instanceof content_1.AbstractAttributeValue);
136
+ for (const propertyValue of nestedAttributeValues) {
137
+ const nestedAttribute = content_1.IdentityAttribute.from({
138
+ ...localAttribute.content.toJSON(),
139
+ value: propertyValue.toJSON()
140
+ });
141
+ await this.createLocalAttribute({ content: nestedAttribute, parentId: localAttribute.id });
142
+ }
143
+ }
119
144
  async succeedLocalAttribute(params) {
120
145
  const parsedParams = SucceedLocalAttributeParams_1.SucceedLocalAttributeParams.from(params);
121
- const current = await this.attributes.findOne({
146
+ const currentAttributeDoc = await this.attributes.findOne({
122
147
  [(0, ts_simple_nameof_1.nameof)((c) => c.id)]: params.succeeds.toString()
123
148
  });
124
- if (!current) {
149
+ const currentAttribute = LocalAttribute_1.LocalAttribute.from(currentAttributeDoc);
150
+ if (currentAttribute.parentId) {
151
+ throw consumption_1.ConsumptionErrors.attributes.cannotSucceedAttributesWithAParent(parsedParams.succeeds.toString());
152
+ }
153
+ if (!currentAttributeDoc) {
125
154
  throw consumption_1.ConsumptionErrors.attributes.predecessorNotFound(parsedParams.succeeds.toString());
126
155
  }
127
156
  if (!parsedParams.successorContent.validFrom) {
128
157
  parsedParams.successorContent.validFrom = transport_1.CoreDate.utc();
129
158
  }
130
159
  const validFrom = parsedParams.successorContent.validFrom;
131
- const currentUpdated = LocalAttribute_1.LocalAttribute.from(current);
132
- currentUpdated.content.validTo = validFrom.subtract(1);
133
- await this.attributes.update(current, currentUpdated);
160
+ currentAttribute.content.validTo = validFrom.subtract(1);
161
+ await this.attributes.update(currentAttributeDoc, currentAttribute);
134
162
  const successor = await LocalAttribute_1.LocalAttribute.fromAttribute(parsedParams.successorContent, parsedParams.succeeds);
135
163
  await this.attributes.create(successor);
136
164
  this.eventBus.publish(new events_1.AttributeSucceededEvent(this.identity.address.toString(), successor));
@@ -1 +1 @@
1
- {"version":3,"file":"AttributesController.js","sourceRoot":"","sources":["../../../src/modules/attributes/AttributesController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AttributesController.js","sourceRoot":"","sources":["../../../src/modules/attributes/AttributesController.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
1
  import { ISerializable, Serializable } from "@js-soft/ts-serval";
2
2
  import { IdentityAttribute, IdentityAttributeJSON, IIdentityAttribute, IRelationshipAttribute, RelationshipAttribute, RelationshipAttributeJSON } from "@nmshd/content";
3
+ import { CoreId, ICoreId } from "@nmshd/transport";
3
4
  export interface CreateLocalAttributeParamsJSON {
4
5
  content: IdentityAttributeJSON | RelationshipAttributeJSON;
5
6
  }
6
7
  export interface ICreateLocalAttributeParams extends ISerializable {
7
8
  content: IIdentityAttribute | IRelationshipAttribute;
9
+ parentId?: ICoreId;
8
10
  }
9
11
  export declare class CreateLocalAttributeParams extends Serializable implements ICreateLocalAttributeParams {
10
12
  content: IdentityAttribute | RelationshipAttribute;
13
+ parentId?: CoreId;
11
14
  static from(value: ICreateLocalAttributeParams | CreateLocalAttributeParamsJSON): CreateLocalAttributeParams;
12
15
  }
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CreateLocalAttributeParams = void 0;
13
13
  const ts_serval_1 = require("@js-soft/ts-serval");
14
14
  const content_1 = require("@nmshd/content");
15
+ const transport_1 = require("@nmshd/transport");
15
16
  class CreateLocalAttributeParams extends ts_serval_1.Serializable {
16
17
  static from(value) {
17
18
  return this.fromAny(value);
@@ -22,5 +23,10 @@ __decorate([
22
23
  (0, ts_serval_1.validate)(),
23
24
  __metadata("design:type", Object)
24
25
  ], CreateLocalAttributeParams.prototype, "content", void 0);
26
+ __decorate([
27
+ (0, ts_serval_1.serialize)({ optional: true }),
28
+ (0, ts_serval_1.validate)(),
29
+ __metadata("design:type", transport_1.CoreId)
30
+ ], CreateLocalAttributeParams.prototype, "parentId", void 0);
25
31
  exports.CreateLocalAttributeParams = CreateLocalAttributeParams;
26
32
  //# sourceMappingURL=CreateLocalAttributeParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateLocalAttributeParams.js","sourceRoot":"","sources":["../../../../src/modules/attributes/local/CreateLocalAttributeParams.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAqF;AACrF,4CAOuB;AAUvB,MAAa,0BAA2B,SAAQ,wBAAY;IAKjD,MAAM,CAAC,IAAI,CACd,KAAmE;QAEnE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;CACJ;AATG;IAAC,IAAA,qBAAS,EAAC,EAAE,UAAU,EAAE,CAAC,2BAAiB,EAAE,+BAAqB,CAAC,EAAE,CAAC;IACrE,IAAA,oBAAQ,GAAE;;2DAC8C;AAH7D,gEAUC"}
1
+ {"version":3,"file":"CreateLocalAttributeParams.js","sourceRoot":"","sources":["../../../../src/modules/attributes/local/CreateLocalAttributeParams.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAqF;AACrF,4CAOuB;AACvB,gDAAkD;AAWlD,MAAa,0BAA2B,SAAQ,wBAAY;IASjD,MAAM,CAAC,IAAI,CACd,KAAmE;QAEnE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;CACJ;AAbG;IAAC,IAAA,qBAAS,EAAC,EAAE,UAAU,EAAE,CAAC,2BAAiB,EAAE,+BAAqB,CAAC,EAAE,CAAC;IACrE,IAAA,oBAAQ,GAAE;;2DAC8C;AAEzD;IAAC,IAAA,qBAAS,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAA,oBAAQ,GAAE;8BACO,kBAAM;4DAAA;AAP5B,gEAcC"}
@@ -7,6 +7,7 @@ export interface LocalAttributeJSON {
7
7
  succeeds: string;
8
8
  succeededBy: string;
9
9
  shareInfo: LocalAttributeShareInfoJSON;
10
+ parentId?: string;
10
11
  }
11
12
  export interface ILocalAttribute extends ICoreSynchronizable {
12
13
  content: IIdentityAttribute | IRelationshipAttribute;
@@ -14,6 +15,7 @@ export interface ILocalAttribute extends ICoreSynchronizable {
14
15
  succeeds?: ICoreId;
15
16
  succeededBy?: ICoreId;
16
17
  shareInfo?: ILocalAttributeShareInfo;
18
+ parentId?: ICoreId;
17
19
  }
18
20
  export declare class LocalAttribute extends CoreSynchronizable implements ILocalAttribute {
19
21
  readonly technicalProperties: string[];
@@ -23,8 +25,19 @@ export declare class LocalAttribute extends CoreSynchronizable implements ILocal
23
25
  succeeds?: CoreId;
24
26
  succeededBy?: CoreId;
25
27
  shareInfo?: LocalAttributeShareInfo;
26
- isIdentityAttribute(): boolean;
28
+ parentId?: CoreId;
29
+ isIdentityAttribute(): this is IdentityAttribute;
30
+ isRelationshipAttribute(): this is RelationshipAttribute;
27
31
  isOwnedBy(identity: CoreAddress): boolean;
32
+ isRepositoryAttribute(): this is IdentityAttribute & {
33
+ shareInfo: LocalAttributeShareInfo;
34
+ };
35
+ isShared(): this is {
36
+ shareInfo: LocalAttributeShareInfo;
37
+ };
38
+ isSharedWith(address: CoreAddress): this is {
39
+ shareInfo: LocalAttributeShareInfo;
40
+ };
28
41
  static from(value: ILocalAttribute): LocalAttribute;
29
- static fromAttribute(attribute: IIdentityAttribute | IRelationshipAttribute, succeeds?: ICoreId, shareInfo?: ILocalAttributeShareInfo, id?: CoreId): Promise<LocalAttribute>;
42
+ static fromAttribute(content: IIdentityAttribute | IRelationshipAttribute, succeeds?: ICoreId, shareInfo?: ILocalAttributeShareInfo, id?: CoreId, parentId?: CoreId): Promise<LocalAttribute>;
30
43
  }
@@ -31,19 +31,35 @@ let LocalAttribute = class LocalAttribute extends transport_1.CoreSynchronizable
31
31
  isIdentityAttribute() {
32
32
  return this.content instanceof content_1.IdentityAttribute;
33
33
  }
34
+ isRelationshipAttribute() {
35
+ return this.content instanceof content_1.RelationshipAttribute;
36
+ }
34
37
  isOwnedBy(identity) {
35
38
  return this.content.owner.equals(identity);
36
39
  }
40
+ isRepositoryAttribute() {
41
+ return this.isIdentityAttribute() && !this.isShared();
42
+ }
43
+ isShared() {
44
+ return this.shareInfo !== undefined;
45
+ }
46
+ isSharedWith(address) {
47
+ if (!this.isShared()) {
48
+ return false;
49
+ }
50
+ return this.shareInfo.peer === address;
51
+ }
37
52
  static from(value) {
38
53
  return this.fromAny(value);
39
54
  }
40
- static async fromAttribute(attribute, succeeds, shareInfo, id) {
55
+ static async fromAttribute(content, succeeds, shareInfo, id, parentId) {
41
56
  return this.from({
42
57
  id: id ?? (await consumption_1.ConsumptionIds.attribute.generate()),
43
- content: attribute,
44
58
  createdAt: transport_1.CoreDate.utc(),
45
- succeeds: succeeds,
46
- shareInfo: shareInfo
59
+ content,
60
+ succeeds,
61
+ shareInfo,
62
+ parentId
47
63
  });
48
64
  }
49
65
  };
@@ -72,6 +88,11 @@ __decorate([
72
88
  (0, ts_serval_1.serialize)(),
73
89
  __metadata("design:type", LocalAttributeShareInfo_1.LocalAttributeShareInfo)
74
90
  ], LocalAttribute.prototype, "shareInfo", void 0);
91
+ __decorate([
92
+ (0, ts_serval_1.validate)({ nullable: true }),
93
+ (0, ts_serval_1.serialize)(),
94
+ __metadata("design:type", transport_1.CoreId)
95
+ ], LocalAttribute.prototype, "parentId", void 0);
75
96
  LocalAttribute = __decorate([
76
97
  (0, ts_serval_1.type)("LocalAttribute")
77
98
  ], LocalAttribute);
@@ -1 +1 @@
1
- {"version":3,"file":"LocalAttribute.js","sourceRoot":"","sources":["../../../../src/modules/attributes/local/LocalAttribute.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA8D;AAC9D,4CAOuB;AACvB,gDAQyB;AACzB,uDAAyC;AACzC,sDAAqD;AACrD,uEAIkC;AAmB3B,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAAkB;IAA/C;;QACsB,wBAAmB,GAAG;YAC3C,OAAO;YACP,UAAU;YACV,IAAA,yBAAM,EAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1C,IAAA,yBAAM,EAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzC,IAAA,yBAAM,EAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC7C,CAAA;QAEwB,uBAAkB,GAAG,CAAC,IAAA,yBAAM,EAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IAgD5F,CAAC;IA1BU,mBAAmB;QACtB,OAAO,IAAI,CAAC,OAAO,YAAY,2BAAiB,CAAA;IACpD,CAAC;IAEM,SAAS,CAAC,QAAqB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,KAAsB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,aAAa,CAC7B,SAAsD,EACtD,QAAkB,EAClB,SAAoC,EACpC,EAAW;QAEX,OAAO,IAAI,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,4BAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACrD,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,oBAAQ,CAAC,GAAG,EAAE;YACzB,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,SAAS;SACvB,CAAC,CAAA;IACN,CAAC;CACJ,CAAA;AA9CG;IAAC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,EAAC,EAAE,UAAU,EAAE,CAAC,2BAAiB,EAAE,+BAAqB,CAAC,EAAE,CAAC;;+CACb;AAEzD;IAAC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;8BACM,oBAAQ;iDAAA;AAE1B;IAAC,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,IAAA,qBAAS,GAAE;8BACM,kBAAM;gDAAA;AAExB;IAAC,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,IAAA,qBAAS,GAAE;8BACS,kBAAM;mDAAA;AAE3B;IAAC,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,IAAA,qBAAS,GAAE;8BACO,iDAAuB;iDAAA;AA7BjC,cAAc;IAD1B,IAAA,gBAAI,EAAC,gBAAgB,CAAC;GACV,cAAc,CAyD1B;AAzDY,wCAAc"}
1
+ {"version":3,"file":"LocalAttribute.js","sourceRoot":"","sources":["../../../../src/modules/attributes/local/LocalAttribute.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-beta.21",
21
- build: "73",
22
- date: "2022-09-20T13:25:15+00:00",
23
- commit: "79868cf6eb51c013e5c41ecd77b3d12d8cfd1b0c",
20
+ version: "2.0.0-beta.22",
21
+ build: "74",
22
+ date: "2022-09-22T05:16:48+00:00",
23
+ commit: "15f78921febb56c45bf0ed874f4dce0e7accb7ce",
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,
@@ -178,6 +178,9 @@ class Attributes {
178
178
  predecessorNotFound(id) {
179
179
  return new transport_1.CoreError("error.consumption.attributes.predecessorNotFound", `Attribute with id '${id}' does not exist. Please use create instead.`);
180
180
  }
181
+ cannotSucceedAttributesWithAParent(parentId) {
182
+ return new transport_1.CoreError("error.consumption.attributes.cannotSucceedAttributesWithAParent", `The Attribute you want to succeed has a parent (id: ${parentId.toString()}). You cannot succeed Attributes with a parent. Instead, succeed the parent, which will implicitly succeed all its children.`);
183
+ }
181
184
  }
182
185
  class Requests {
183
186
  constructor() {
@@ -681,26 +684,54 @@ class AttributesController extends consumption_1.ConsumptionBaseController {
681
684
  return this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
682
685
  }
683
686
  async createLocalAttribute(params) {
684
- const localAttribute = await LocalAttribute_1.LocalAttribute.fromAttribute(params.content);
687
+ const localAttribute = LocalAttribute_1.LocalAttribute.from({
688
+ id: await consumption_1.ConsumptionIds.attribute.generate(),
689
+ createdAt: transport_1.CoreDate.utc(),
690
+ content: params.content,
691
+ parentId: params.parentId
692
+ });
685
693
  await this.attributes.create(localAttribute);
694
+ if (localAttribute.content instanceof content_1.IdentityAttribute && // nested Local Attributes should only be created for Identity Attributes
695
+ localAttribute.content.value instanceof content_1.AbstractComplexValue) {
696
+ await this.createLocalAttributesForNestedAttributeValues(localAttribute);
697
+ }
686
698
  this.eventBus.publish(new events_1.AttributeCreatedEvent(this.identity.address.toString(), localAttribute));
687
699
  return localAttribute;
688
700
  }
701
+ async createLocalAttributesForNestedAttributeValues(localAttribute) {
702
+ if (!(localAttribute.content instanceof content_1.IdentityAttribute)) {
703
+ throw new Error("Only Identity Attributes are allowed here");
704
+ }
705
+ const attributeValueAsAny = localAttribute.content.value;
706
+ const nestedAttributeValues = Object.keys(localAttribute.content.value)
707
+ .map((k) => attributeValueAsAny[k])
708
+ .filter((p) => p instanceof content_1.AbstractAttributeValue);
709
+ for (const propertyValue of nestedAttributeValues) {
710
+ const nestedAttribute = content_1.IdentityAttribute.from({
711
+ ...localAttribute.content.toJSON(),
712
+ value: propertyValue.toJSON()
713
+ });
714
+ await this.createLocalAttribute({ content: nestedAttribute, parentId: localAttribute.id });
715
+ }
716
+ }
689
717
  async succeedLocalAttribute(params) {
690
718
  const parsedParams = SucceedLocalAttributeParams_1.SucceedLocalAttributeParams.from(params);
691
- const current = await this.attributes.findOne({
719
+ const currentAttributeDoc = await this.attributes.findOne({
692
720
  [(0, ts_simple_nameof_1.nameof)((c) => c.id)]: params.succeeds.toString()
693
721
  });
694
- if (!current) {
722
+ const currentAttribute = LocalAttribute_1.LocalAttribute.from(currentAttributeDoc);
723
+ if (currentAttribute.parentId) {
724
+ throw consumption_1.ConsumptionErrors.attributes.cannotSucceedAttributesWithAParent(parsedParams.succeeds.toString());
725
+ }
726
+ if (!currentAttributeDoc) {
695
727
  throw consumption_1.ConsumptionErrors.attributes.predecessorNotFound(parsedParams.succeeds.toString());
696
728
  }
697
729
  if (!parsedParams.successorContent.validFrom) {
698
730
  parsedParams.successorContent.validFrom = transport_1.CoreDate.utc();
699
731
  }
700
732
  const validFrom = parsedParams.successorContent.validFrom;
701
- const currentUpdated = LocalAttribute_1.LocalAttribute.from(current);
702
- currentUpdated.content.validTo = validFrom.subtract(1);
703
- await this.attributes.update(current, currentUpdated);
733
+ currentAttribute.content.validTo = validFrom.subtract(1);
734
+ await this.attributes.update(currentAttributeDoc, currentAttribute);
704
735
  const successor = await LocalAttribute_1.LocalAttribute.fromAttribute(parsedParams.successorContent, parsedParams.succeeds);
705
736
  await this.attributes.create(successor);
706
737
  this.eventBus.publish(new events_1.AttributeSucceededEvent(this.identity.address.toString(), successor));
@@ -965,6 +996,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
965
996
  exports.CreateLocalAttributeParams = void 0;
966
997
  const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
967
998
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
999
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
968
1000
  class CreateLocalAttributeParams extends ts_serval_1.Serializable {
969
1001
  static from(value) {
970
1002
  return this.fromAny(value);
@@ -975,6 +1007,11 @@ __decorate([
975
1007
  (0, ts_serval_1.validate)(),
976
1008
  __metadata("design:type", Object)
977
1009
  ], CreateLocalAttributeParams.prototype, "content", void 0);
1010
+ __decorate([
1011
+ (0, ts_serval_1.serialize)({ optional: true }),
1012
+ (0, ts_serval_1.validate)(),
1013
+ __metadata("design:type", transport_1.CoreId)
1014
+ ], CreateLocalAttributeParams.prototype, "parentId", void 0);
978
1015
  exports.CreateLocalAttributeParams = CreateLocalAttributeParams;
979
1016
  //# sourceMappingURL=CreateLocalAttributeParams.js.map
980
1017
 
@@ -1123,19 +1160,35 @@ let LocalAttribute = class LocalAttribute extends transport_1.CoreSynchronizable
1123
1160
  isIdentityAttribute() {
1124
1161
  return this.content instanceof content_1.IdentityAttribute;
1125
1162
  }
1163
+ isRelationshipAttribute() {
1164
+ return this.content instanceof content_1.RelationshipAttribute;
1165
+ }
1126
1166
  isOwnedBy(identity) {
1127
1167
  return this.content.owner.equals(identity);
1128
1168
  }
1169
+ isRepositoryAttribute() {
1170
+ return this.isIdentityAttribute() && !this.isShared();
1171
+ }
1172
+ isShared() {
1173
+ return this.shareInfo !== undefined;
1174
+ }
1175
+ isSharedWith(address) {
1176
+ if (!this.isShared()) {
1177
+ return false;
1178
+ }
1179
+ return this.shareInfo.peer === address;
1180
+ }
1129
1181
  static from(value) {
1130
1182
  return this.fromAny(value);
1131
1183
  }
1132
- static async fromAttribute(attribute, succeeds, shareInfo, id) {
1184
+ static async fromAttribute(content, succeeds, shareInfo, id, parentId) {
1133
1185
  return this.from({
1134
1186
  id: id ?? (await consumption_1.ConsumptionIds.attribute.generate()),
1135
- content: attribute,
1136
1187
  createdAt: transport_1.CoreDate.utc(),
1137
- succeeds: succeeds,
1138
- shareInfo: shareInfo
1188
+ content,
1189
+ succeeds,
1190
+ shareInfo,
1191
+ parentId
1139
1192
  });
1140
1193
  }
1141
1194
  };
@@ -1164,6 +1217,11 @@ __decorate([
1164
1217
  (0, ts_serval_1.serialize)(),
1165
1218
  __metadata("design:type", LocalAttributeShareInfo_1.LocalAttributeShareInfo)
1166
1219
  ], LocalAttribute.prototype, "shareInfo", void 0);
1220
+ __decorate([
1221
+ (0, ts_serval_1.validate)({ nullable: true }),
1222
+ (0, ts_serval_1.serialize)(),
1223
+ __metadata("design:type", transport_1.CoreId)
1224
+ ], LocalAttribute.prototype, "parentId", void 0);
1167
1225
  LocalAttribute = __decorate([
1168
1226
  (0, ts_serval_1.type)("LocalAttribute")
1169
1227
  ], LocalAttribute);