@nmshd/runtime 3.0.0 → 3.0.2

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.
@@ -7,10 +7,10 @@ const content_1 = require("@nmshd/content");
7
7
  const crypto_1 = require("@nmshd/crypto");
8
8
  const transport_1 = require("@nmshd/transport");
9
9
  exports.buildInformation = {
10
- version: "3.0.0",
11
- build: "176",
12
- date: "2023-12-04T13:24:23+00:00",
13
- commit: "3828122d5ed75b552ee87bd2780a0dc293c5cf00",
10
+ version: "3.0.2",
11
+ build: "178",
12
+ date: "2023-12-06T12:47:16+00:00",
13
+ commit: "6de01f71ecc145a07497a233fc24216ac36b96f9",
14
14
  dependencies: {"@js-soft/docdb-querytranslator":"1.1.2","@js-soft/logging-abstractions":"1.0.1","@js-soft/ts-serval":"2.0.10","@js-soft/ts-utils":"^2.3.3","@nmshd/consumption":"3.7.4","@nmshd/content":"2.8.1","@nmshd/crypto":"2.0.5","@nmshd/transport":"2.1.4","ajv":"^8.12.0","ajv-errors":"^3.0.0","ajv-formats":"^2.1.1","json-stringify-safe":"^5.0.1","lodash":"^4.17.21","luxon":"^3.4.4","qrcode":"1.5.3","reflect-metadata":"0.1.13","ts-simple-nameof":"1.3.1","typescript-ioc":"3.2.2"},
15
15
  libraries: {
16
16
  serval: ts_serval_1.buildInformation,
@@ -46,7 +46,8 @@ declare class Notifications {
46
46
  }
47
47
  declare class Attributes {
48
48
  isNoIdentityAttribute(attributeId: CoreId | string): ApplicationError;
49
- identityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId: CoreId | string, peer: CoreAddress | string, ownSharedIdentityAttribute: CoreId | string): ApplicationError;
49
+ identityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId: CoreId | string, peer: CoreAddress | string, ownSharedIdentityAttributeId: CoreId | string): ApplicationError;
50
+ anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId: CoreId | string, peer: CoreAddress | string, ownSharedIdentityAttributeId: CoreId | string): ApplicationError;
50
51
  detectedErroneousAttribute(attributeId: CoreId | string, message?: string): ApplicationError;
51
52
  }
52
53
  export declare class RuntimeErrors {
@@ -107,8 +107,11 @@ class Attributes {
107
107
  isNoIdentityAttribute(attributeId) {
108
108
  return new ts_utils_1.ApplicationError("error.runtime.attributes.isNoIdentityAttribute", `Attribute '${attributeId.toString()}' is not an identity attribute.`);
109
109
  }
110
- identityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId, peer, ownSharedIdentityAttribute) {
111
- return new ts_utils_1.ApplicationError("error.runtime.attributes.identityAttributeHasAlreadyBeenSharedWithPeer", `Identity attribute '${repositoryAttributeId.toString()}' has already been shared with peer '${peer.toString()}'. Id of shared identity attribute: ${ownSharedIdentityAttribute.toString}.`);
110
+ identityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId, peer, ownSharedIdentityAttributeId) {
111
+ return new ts_utils_1.ApplicationError("error.runtime.attributes.identityAttributeHasAlreadyBeenSharedWithPeer", `Identity attribute '${repositoryAttributeId.toString()}' has already been shared with peer '${peer.toString()}'. Id of shared identity attribute: ${ownSharedIdentityAttributeId.toString()}.`);
112
+ }
113
+ anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId, peer, ownSharedIdentityAttributeId) {
114
+ return new ts_utils_1.ApplicationError("error.runtime.attributes.anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer", `Another version of identity attribute '${repositoryAttributeId.toString()}' has already been shared with peer '${peer.toString()}'. Id of previously shared identity attribute: ${ownSharedIdentityAttributeId.toString()}.`);
112
115
  }
113
116
  detectedErroneousAttribute(attributeId, message) {
114
117
  let msg = `Detected an error regarding attribute '${attributeId.toString()}'.`;
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeErrors.js","sourceRoot":"","sources":["../../../src/useCases/common/RuntimeErrors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RuntimeErrors.js","sourceRoot":"","sources":["../../../src/useCases/common/RuntimeErrors.ts"],"names":[],"mappings":"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"}
@@ -39,35 +39,30 @@ let NotifyPeerAboutIdentityAttributeSuccessionUseCase = class NotifyPeerAboutIde
39
39
  async executeInternal(request) {
40
40
  const repositoryAttributeSuccessorId = transport_1.CoreId.from(request.attributeId);
41
41
  const repositoryAttributeSuccessor = await this.attributeController.getLocalAttribute(repositoryAttributeSuccessorId);
42
- if (typeof repositoryAttributeSuccessor === "undefined") {
43
- return ts_utils_1.Result.fail(consumption_1.CoreErrors.attributes.invalidSuccessor("Successor repository attribute doesn't exist."));
44
- }
45
- if (!repositoryAttributeSuccessor.isRepositoryAttribute()) {
46
- return ts_utils_1.Result.fail(consumption_1.CoreErrors.attributes.invalidSuccessor("Successor attribute is not a valid repository attribute."));
47
- }
48
- if (typeof repositoryAttributeSuccessor.succeededBy !== "undefined") {
49
- return ts_utils_1.Result.fail(consumption_1.CoreErrors.attributes.invalidSuccessor("Successor repository attribute already has a successor. Can only share latest identity attribute from a succession chain."));
50
- }
51
- const sharedAttributesQuery = {
42
+ if (typeof repositoryAttributeSuccessor === "undefined")
43
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.general.recordNotFound(consumption_1.LocalAttribute.name));
44
+ if (!repositoryAttributeSuccessor.isRepositoryAttribute())
45
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.isNoIdentityAttribute(repositoryAttributeSuccessor.id));
46
+ const query = {
52
47
  "content.owner": this.accountController.identity.address.toString(),
53
48
  "content.@type": "IdentityAttribute",
54
- "shareInfo.sourceAttribute": request.attributeId,
49
+ "shareInfo.sourceAttribute": repositoryAttributeSuccessorId.toString(),
55
50
  "shareInfo.peer": request.peer
56
51
  };
57
- const sharedAttributes = await this.attributeController.getLocalAttributes(sharedAttributesQuery);
58
- if (sharedAttributes.length > 0) {
59
- return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.identityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, sharedAttributes[0].id));
52
+ const ownSharedIdentityAttributesOfRepositoryAttributeSuccessor = await this.attributeController.getLocalAttributes(query);
53
+ if (ownSharedIdentityAttributesOfRepositoryAttributeSuccessor.length > 0) {
54
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.identityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, ownSharedIdentityAttributesOfRepositoryAttributeSuccessor[0].id));
60
55
  }
61
56
  const repositoryAttributeVersions = await this.attributeController.getVersionsOfAttribute(repositoryAttributeSuccessorId);
62
57
  const repositoryAttributeVersionIds = repositoryAttributeVersions.map((x) => x.id.toString());
63
58
  const candidatePredecessorsQuery = {
64
59
  "shareInfo.sourceAttribute": { $in: repositoryAttributeVersionIds },
65
60
  "shareInfo.peer": request.peer,
66
- succededBy: { $exists: false }
61
+ succeededBy: { $exists: false }
67
62
  };
68
63
  const candidatePredecessors = await this.attributeController.getLocalAttributes(candidatePredecessorsQuery);
69
64
  if (candidatePredecessors.length === 0) {
70
- throw common_1.RuntimeErrors.general.recordNotFoundWithMessage("No shared predecessor found. If this is the fist version you want to share with this peer, use `ShareAttribute`.");
65
+ throw common_1.RuntimeErrors.general.recordNotFoundWithMessage("No shared predecessor found. If this is the fist version you want to share with this peer, use `ShareIdentityAttribute`.");
71
66
  }
72
67
  if (candidatePredecessors.length > 1) {
73
68
  throw common_1.RuntimeErrors.attributes.detectedErroneousAttribute(request.attributeId, "The attribute has shared copies of predecessing versions that are not in a succession chain.");
@@ -1 +1 @@
1
- {"version":3,"file":"NotifyPeerAboutIdentityAttributeSuccession.js","sourceRoot":"","sources":["../../../../src/useCases/consumption/attributes/NotifyPeerAboutIdentityAttributeSuccession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotifyPeerAboutIdentityAttributeSuccession.js","sourceRoot":"","sources":["../../../../src/useCases/consumption/attributes/NotifyPeerAboutIdentityAttributeSuccession.ts"],"names":[],"mappings":"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"}
@@ -39,19 +39,47 @@ let ShareIdentityAttributeUseCase = class ShareIdentityAttributeUseCase extends
39
39
  }
40
40
  async executeInternal(request) {
41
41
  const repositoryAttribute = await this.attributeController.getLocalAttribute(transport_1.CoreId.from(request.attributeId));
42
- if (!repositoryAttribute)
43
- return ts_utils_1.Result.fail(common_1.RuntimeErrors.general.recordNotFound(consumption_1.LocalAttribute));
42
+ if (typeof repositoryAttribute === "undefined")
43
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.general.recordNotFound(consumption_1.LocalAttribute.name));
44
44
  if (!repositoryAttribute.isRepositoryAttribute())
45
45
  return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.isNoIdentityAttribute(repositoryAttribute.id));
46
- const sharedAttributesQuery = {
46
+ const query = {
47
47
  "content.owner": this.accountController.identity.address.toString(),
48
48
  "content.@type": "IdentityAttribute",
49
49
  "shareInfo.sourceAttribute": request.attributeId,
50
50
  "shareInfo.peer": request.peer
51
51
  };
52
- const sharedAttributes = await this.attributeController.getLocalAttributes(sharedAttributesQuery);
53
- if (sharedAttributes.length > 0) {
54
- return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.identityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, sharedAttributes[0].id));
52
+ const ownSharedIdentityAttributesOfRepositoryAttribute = await this.attributeController.getLocalAttributes(query);
53
+ if (ownSharedIdentityAttributesOfRepositoryAttribute.length > 0) {
54
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.identityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, ownSharedIdentityAttributesOfRepositoryAttribute[0].id));
55
+ }
56
+ let repositoryAttributeVersion = repositoryAttribute;
57
+ while (typeof repositoryAttributeVersion.succeededBy !== "undefined") {
58
+ repositoryAttributeVersion = (await this.attributeController.getLocalAttribute(repositoryAttributeVersion.succeededBy));
59
+ const query = {
60
+ "content.owner": this.accountController.identity.address.toString(),
61
+ "content.@type": "IdentityAttribute",
62
+ "shareInfo.sourceAttribute": repositoryAttributeVersion.id.toString(),
63
+ "shareInfo.peer": request.peer
64
+ };
65
+ const ownSharedIdentityAttributesOfRepositoryAttributeVersion = await this.attributeController.getLocalAttributes(query);
66
+ if (ownSharedIdentityAttributesOfRepositoryAttributeVersion.length > 0) {
67
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, ownSharedIdentityAttributesOfRepositoryAttributeVersion[0].id));
68
+ }
69
+ }
70
+ repositoryAttributeVersion = repositoryAttribute;
71
+ while (typeof repositoryAttributeVersion.succeeds !== "undefined") {
72
+ repositoryAttributeVersion = (await this.attributeController.getLocalAttribute(repositoryAttributeVersion.succeeds));
73
+ const query = {
74
+ "content.owner": this.accountController.identity.address.toString(),
75
+ "content.@type": "IdentityAttribute",
76
+ "shareInfo.sourceAttribute": repositoryAttributeVersion.id.toString(),
77
+ "shareInfo.peer": request.peer
78
+ };
79
+ const ownSharedIdentityAttributesOfRepositoryAttributeVersion = await this.attributeController.getLocalAttributes(query);
80
+ if (ownSharedIdentityAttributesOfRepositoryAttributeVersion.length > 0) {
81
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, ownSharedIdentityAttributesOfRepositoryAttributeVersion[0].id));
82
+ }
55
83
  }
56
84
  const requestMetadata = request.requestMetadata ?? {};
57
85
  const requestParams = consumption_1.CreateOutgoingRequestParameters.from({
@@ -1 +1 @@
1
- {"version":3,"file":"ShareIdentityAttribute.js","sourceRoot":"","sources":["../../../../src/useCases/consumption/attributes/ShareIdentityAttribute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShareIdentityAttribute.js","sourceRoot":"","sources":["../../../../src/useCases/consumption/attributes/ShareIdentityAttribute.ts"],"names":[],"mappings":"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"}
@@ -555,10 +555,10 @@ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
555
555
  const crypto_1 = __webpack_require__(/*! @nmshd/crypto */ "@nmshd/crypto");
556
556
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
557
557
  exports.buildInformation = {
558
- version: "3.0.0",
559
- build: "176",
560
- date: "2023-12-04T13:24:23+00:00",
561
- commit: "3828122d5ed75b552ee87bd2780a0dc293c5cf00",
558
+ version: "3.0.2",
559
+ build: "178",
560
+ date: "2023-12-06T12:47:16+00:00",
561
+ commit: "6de01f71ecc145a07497a233fc24216ac36b96f9",
562
562
  dependencies: {"@js-soft/docdb-querytranslator":"1.1.2","@js-soft/logging-abstractions":"1.0.1","@js-soft/ts-serval":"2.0.10","@js-soft/ts-utils":"^2.3.3","@nmshd/consumption":"3.7.4","@nmshd/content":"2.8.1","@nmshd/crypto":"2.0.5","@nmshd/transport":"2.1.4","ajv":"^8.12.0","ajv-errors":"^3.0.0","ajv-formats":"^2.1.1","json-stringify-safe":"^5.0.1","lodash":"^4.17.21","luxon":"^3.4.4","qrcode":"1.5.3","reflect-metadata":"0.1.13","ts-simple-nameof":"1.3.1","typescript-ioc":"3.2.2"},
563
563
  libraries: {
564
564
  serval: ts_serval_1.buildInformation,
@@ -6516,8 +6516,11 @@ class Attributes {
6516
6516
  isNoIdentityAttribute(attributeId) {
6517
6517
  return new ts_utils_1.ApplicationError("error.runtime.attributes.isNoIdentityAttribute", `Attribute '${attributeId.toString()}' is not an identity attribute.`);
6518
6518
  }
6519
- identityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId, peer, ownSharedIdentityAttribute) {
6520
- return new ts_utils_1.ApplicationError("error.runtime.attributes.identityAttributeHasAlreadyBeenSharedWithPeer", `Identity attribute '${repositoryAttributeId.toString()}' has already been shared with peer '${peer.toString()}'. Id of shared identity attribute: ${ownSharedIdentityAttribute.toString}.`);
6519
+ identityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId, peer, ownSharedIdentityAttributeId) {
6520
+ return new ts_utils_1.ApplicationError("error.runtime.attributes.identityAttributeHasAlreadyBeenSharedWithPeer", `Identity attribute '${repositoryAttributeId.toString()}' has already been shared with peer '${peer.toString()}'. Id of shared identity attribute: ${ownSharedIdentityAttributeId.toString()}.`);
6521
+ }
6522
+ anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer(repositoryAttributeId, peer, ownSharedIdentityAttributeId) {
6523
+ return new ts_utils_1.ApplicationError("error.runtime.attributes.anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer", `Another version of identity attribute '${repositoryAttributeId.toString()}' has already been shared with peer '${peer.toString()}'. Id of previously shared identity attribute: ${ownSharedIdentityAttributeId.toString()}.`);
6521
6524
  }
6522
6525
  detectedErroneousAttribute(attributeId, message) {
6523
6526
  let msg = `Detected an error regarding attribute '${attributeId.toString()}'.`;
@@ -29217,35 +29220,30 @@ let NotifyPeerAboutIdentityAttributeSuccessionUseCase = class NotifyPeerAboutIde
29217
29220
  async executeInternal(request) {
29218
29221
  const repositoryAttributeSuccessorId = transport_1.CoreId.from(request.attributeId);
29219
29222
  const repositoryAttributeSuccessor = await this.attributeController.getLocalAttribute(repositoryAttributeSuccessorId);
29220
- if (typeof repositoryAttributeSuccessor === "undefined") {
29221
- return ts_utils_1.Result.fail(consumption_1.CoreErrors.attributes.invalidSuccessor("Successor repository attribute doesn't exist."));
29222
- }
29223
- if (!repositoryAttributeSuccessor.isRepositoryAttribute()) {
29224
- return ts_utils_1.Result.fail(consumption_1.CoreErrors.attributes.invalidSuccessor("Successor attribute is not a valid repository attribute."));
29225
- }
29226
- if (typeof repositoryAttributeSuccessor.succeededBy !== "undefined") {
29227
- return ts_utils_1.Result.fail(consumption_1.CoreErrors.attributes.invalidSuccessor("Successor repository attribute already has a successor. Can only share latest identity attribute from a succession chain."));
29228
- }
29229
- const sharedAttributesQuery = {
29223
+ if (typeof repositoryAttributeSuccessor === "undefined")
29224
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.general.recordNotFound(consumption_1.LocalAttribute.name));
29225
+ if (!repositoryAttributeSuccessor.isRepositoryAttribute())
29226
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.isNoIdentityAttribute(repositoryAttributeSuccessor.id));
29227
+ const query = {
29230
29228
  "content.owner": this.accountController.identity.address.toString(),
29231
29229
  "content.@type": "IdentityAttribute",
29232
- "shareInfo.sourceAttribute": request.attributeId,
29230
+ "shareInfo.sourceAttribute": repositoryAttributeSuccessorId.toString(),
29233
29231
  "shareInfo.peer": request.peer
29234
29232
  };
29235
- const sharedAttributes = await this.attributeController.getLocalAttributes(sharedAttributesQuery);
29236
- if (sharedAttributes.length > 0) {
29237
- return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.identityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, sharedAttributes[0].id));
29233
+ const ownSharedIdentityAttributesOfRepositoryAttributeSuccessor = await this.attributeController.getLocalAttributes(query);
29234
+ if (ownSharedIdentityAttributesOfRepositoryAttributeSuccessor.length > 0) {
29235
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.identityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, ownSharedIdentityAttributesOfRepositoryAttributeSuccessor[0].id));
29238
29236
  }
29239
29237
  const repositoryAttributeVersions = await this.attributeController.getVersionsOfAttribute(repositoryAttributeSuccessorId);
29240
29238
  const repositoryAttributeVersionIds = repositoryAttributeVersions.map((x) => x.id.toString());
29241
29239
  const candidatePredecessorsQuery = {
29242
29240
  "shareInfo.sourceAttribute": { $in: repositoryAttributeVersionIds },
29243
29241
  "shareInfo.peer": request.peer,
29244
- succededBy: { $exists: false }
29242
+ succeededBy: { $exists: false }
29245
29243
  };
29246
29244
  const candidatePredecessors = await this.attributeController.getLocalAttributes(candidatePredecessorsQuery);
29247
29245
  if (candidatePredecessors.length === 0) {
29248
- throw common_1.RuntimeErrors.general.recordNotFoundWithMessage("No shared predecessor found. If this is the fist version you want to share with this peer, use `ShareAttribute`.");
29246
+ throw common_1.RuntimeErrors.general.recordNotFoundWithMessage("No shared predecessor found. If this is the fist version you want to share with this peer, use `ShareIdentityAttribute`.");
29249
29247
  }
29250
29248
  if (candidatePredecessors.length > 1) {
29251
29249
  throw common_1.RuntimeErrors.attributes.detectedErroneousAttribute(request.attributeId, "The attribute has shared copies of predecessing versions that are not in a succession chain.");
@@ -29347,19 +29345,47 @@ let ShareIdentityAttributeUseCase = class ShareIdentityAttributeUseCase extends
29347
29345
  }
29348
29346
  async executeInternal(request) {
29349
29347
  const repositoryAttribute = await this.attributeController.getLocalAttribute(transport_1.CoreId.from(request.attributeId));
29350
- if (!repositoryAttribute)
29351
- return ts_utils_1.Result.fail(common_1.RuntimeErrors.general.recordNotFound(consumption_1.LocalAttribute));
29348
+ if (typeof repositoryAttribute === "undefined")
29349
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.general.recordNotFound(consumption_1.LocalAttribute.name));
29352
29350
  if (!repositoryAttribute.isRepositoryAttribute())
29353
29351
  return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.isNoIdentityAttribute(repositoryAttribute.id));
29354
- const sharedAttributesQuery = {
29352
+ const query = {
29355
29353
  "content.owner": this.accountController.identity.address.toString(),
29356
29354
  "content.@type": "IdentityAttribute",
29357
29355
  "shareInfo.sourceAttribute": request.attributeId,
29358
29356
  "shareInfo.peer": request.peer
29359
29357
  };
29360
- const sharedAttributes = await this.attributeController.getLocalAttributes(sharedAttributesQuery);
29361
- if (sharedAttributes.length > 0) {
29362
- return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.identityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, sharedAttributes[0].id));
29358
+ const ownSharedIdentityAttributesOfRepositoryAttribute = await this.attributeController.getLocalAttributes(query);
29359
+ if (ownSharedIdentityAttributesOfRepositoryAttribute.length > 0) {
29360
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.identityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, ownSharedIdentityAttributesOfRepositoryAttribute[0].id));
29361
+ }
29362
+ let repositoryAttributeVersion = repositoryAttribute;
29363
+ while (typeof repositoryAttributeVersion.succeededBy !== "undefined") {
29364
+ repositoryAttributeVersion = (await this.attributeController.getLocalAttribute(repositoryAttributeVersion.succeededBy));
29365
+ const query = {
29366
+ "content.owner": this.accountController.identity.address.toString(),
29367
+ "content.@type": "IdentityAttribute",
29368
+ "shareInfo.sourceAttribute": repositoryAttributeVersion.id.toString(),
29369
+ "shareInfo.peer": request.peer
29370
+ };
29371
+ const ownSharedIdentityAttributesOfRepositoryAttributeVersion = await this.attributeController.getLocalAttributes(query);
29372
+ if (ownSharedIdentityAttributesOfRepositoryAttributeVersion.length > 0) {
29373
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, ownSharedIdentityAttributesOfRepositoryAttributeVersion[0].id));
29374
+ }
29375
+ }
29376
+ repositoryAttributeVersion = repositoryAttribute;
29377
+ while (typeof repositoryAttributeVersion.succeeds !== "undefined") {
29378
+ repositoryAttributeVersion = (await this.attributeController.getLocalAttribute(repositoryAttributeVersion.succeeds));
29379
+ const query = {
29380
+ "content.owner": this.accountController.identity.address.toString(),
29381
+ "content.@type": "IdentityAttribute",
29382
+ "shareInfo.sourceAttribute": repositoryAttributeVersion.id.toString(),
29383
+ "shareInfo.peer": request.peer
29384
+ };
29385
+ const ownSharedIdentityAttributesOfRepositoryAttributeVersion = await this.attributeController.getLocalAttributes(query);
29386
+ if (ownSharedIdentityAttributesOfRepositoryAttributeVersion.length > 0) {
29387
+ return ts_utils_1.Result.fail(common_1.RuntimeErrors.attributes.anotherVersionOfIdentityAttributeHasAlreadyBeenSharedWithPeer(request.attributeId, request.peer, ownSharedIdentityAttributesOfRepositoryAttributeVersion[0].id));
29388
+ }
29363
29389
  }
29364
29390
  const requestMetadata = request.requestMetadata ?? {};
29365
29391
  const requestParams = consumption_1.CreateOutgoingRequestParameters.from({