@nmshd/consumption 2.0.0-beta.2 → 2.0.0-beta.20

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 (128) hide show
  1. package/dist/buildInformation.js +4 -4
  2. package/dist/consumption/ConsumptionBaseController.d.ts +1 -1
  3. package/dist/consumption/ConsumptionBaseController.js +2 -3
  4. package/dist/consumption/ConsumptionBaseController.js.map +1 -1
  5. package/dist/consumption/ConsumptionController.d.ts +4 -8
  6. package/dist/consumption/ConsumptionController.js +14 -13
  7. package/dist/consumption/ConsumptionController.js.map +1 -1
  8. package/dist/consumption/ConsumptionControllerName.d.ts +2 -1
  9. package/dist/consumption/ConsumptionControllerName.js +2 -1
  10. package/dist/consumption/ConsumptionControllerName.js.map +1 -1
  11. package/dist/consumption/ConsumptionErrors.d.ts +11 -0
  12. package/dist/consumption/ConsumptionErrors.js +28 -1
  13. package/dist/consumption/ConsumptionErrors.js.map +1 -1
  14. package/dist/consumption/ConsumptionIds.d.ts +1 -0
  15. package/dist/consumption/ConsumptionIds.js +1 -0
  16. package/dist/consumption/ConsumptionIds.js.map +1 -1
  17. package/dist/modules/attributeListeners/AttributeListenersController.d.ts +18 -0
  18. package/dist/modules/attributeListeners/AttributeListenersController.js +44 -0
  19. package/dist/modules/attributeListeners/AttributeListenersController.js.map +1 -0
  20. package/dist/modules/attributeListeners/events/AttributeListenerCreatedEvent.d.ts +6 -0
  21. package/dist/modules/attributeListeners/events/AttributeListenerCreatedEvent.js +12 -0
  22. package/dist/modules/attributeListeners/events/AttributeListenerCreatedEvent.js.map +1 -0
  23. package/dist/modules/attributeListeners/events/index.d.ts +1 -0
  24. package/dist/modules/attributeListeners/events/index.js +18 -0
  25. package/dist/modules/attributeListeners/events/index.js.map +1 -0
  26. package/dist/modules/attributeListeners/index.d.ts +4 -0
  27. package/dist/modules/attributeListeners/index.js +21 -0
  28. package/dist/modules/attributeListeners/index.js.map +1 -0
  29. package/dist/modules/attributeListeners/local/CreateLocalAttributeListenerParams.d.ts +12 -0
  30. package/dist/modules/attributeListeners/local/CreateLocalAttributeListenerParams.js +35 -0
  31. package/dist/modules/attributeListeners/local/CreateLocalAttributeListenerParams.js.map +1 -0
  32. package/dist/modules/attributeListeners/local/LocalAttributeListener.d.ts +19 -0
  33. package/dist/modules/attributeListeners/local/LocalAttributeListener.js +46 -0
  34. package/dist/modules/attributeListeners/local/LocalAttributeListener.js.map +1 -0
  35. package/dist/modules/attributes/{LocalAttributesController.d.ts → AttributesController.d.ts} +4 -3
  36. package/dist/modules/attributes/{LocalAttributesController.js → AttributesController.js} +22 -9
  37. package/dist/modules/attributes/AttributesController.js.map +1 -0
  38. package/dist/modules/attributes/index.d.ts +9 -0
  39. package/dist/modules/attributes/index.js +26 -0
  40. package/dist/modules/attributes/index.js.map +1 -0
  41. package/dist/modules/attributes/local/{CreateRelationshipAttributeParams.d.ts → CreateAttributeParams.d.ts} +3 -3
  42. package/dist/modules/attributes/local/{CreateRelationshipAttributeParams.js → CreateAttributeParams.js} +10 -10
  43. package/dist/modules/attributes/local/CreateAttributeParams.js.map +1 -0
  44. package/dist/modules/attributes/local/CreateLocalAttributeParams.js.map +1 -1
  45. package/dist/modules/attributes/local/CreatePeerLocalAttributeParams.js.map +1 -1
  46. package/dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.js.map +1 -1
  47. package/dist/modules/attributes/local/LocalAttribute.js.map +1 -1
  48. package/dist/modules/attributes/local/LocalAttributeShareInfo.js.map +1 -1
  49. package/dist/modules/attributes/local/QueryTranslator.d.ts +5 -1
  50. package/dist/modules/attributes/local/QueryTranslator.js +50 -6
  51. package/dist/modules/attributes/local/QueryTranslator.js.map +1 -1
  52. package/dist/modules/attributes/local/SucceedLocalAttributeParams.js.map +1 -1
  53. package/dist/modules/attributes/local/UpdateLocalAttributeParams.js.map +1 -1
  54. package/dist/modules/drafts/DraftsController.js +1 -1
  55. package/dist/modules/drafts/DraftsController.js.map +1 -1
  56. package/dist/modules/drafts/index.d.ts +2 -0
  57. package/dist/modules/drafts/index.js +19 -0
  58. package/dist/modules/drafts/index.js.map +1 -0
  59. package/dist/modules/drafts/local/Draft.js.map +1 -1
  60. package/dist/modules/index.d.ts +5 -50
  61. package/dist/modules/index.js +5 -49
  62. package/dist/modules/index.js.map +1 -1
  63. package/dist/modules/requests/incoming/DecideRequestParametersValidator.d.ts +0 -1
  64. package/dist/modules/requests/incoming/DecideRequestParametersValidator.js +10 -13
  65. package/dist/modules/requests/incoming/DecideRequestParametersValidator.js.map +1 -1
  66. package/dist/modules/requests/incoming/IncomingRequestsController.js +14 -14
  67. package/dist/modules/requests/incoming/IncomingRequestsController.js.map +1 -1
  68. package/dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js.map +1 -1
  69. package/dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.d.ts +2 -2
  70. package/dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js +1 -1
  71. package/dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js.map +1 -1
  72. package/dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js.map +1 -1
  73. package/dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js.map +1 -1
  74. package/dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js.map +1 -1
  75. package/dist/modules/requests/index.d.ts +38 -0
  76. package/dist/modules/requests/index.js +54 -0
  77. package/dist/modules/requests/index.js.map +1 -0
  78. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.d.ts +1 -1
  79. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js.map +1 -1
  80. package/dist/modules/requests/itemProcessors/IRequestItemProcessor.d.ts +1 -1
  81. package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js.map +1 -1
  82. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts +1 -3
  83. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js +42 -43
  84. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js.map +1 -1
  85. package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js.map +1 -1
  86. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.d.ts +1 -1
  87. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js +2 -2
  88. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js.map +1 -1
  89. package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js.map +1 -1
  90. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.d.ts +1 -1
  91. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js +2 -1
  92. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js.map +1 -1
  93. package/dist/modules/requests/itemProcessors/registerAttributeListener/RegisterAttributeListenerRequestItemProcessor.d.ts +7 -0
  94. package/dist/modules/requests/itemProcessors/registerAttributeListener/RegisterAttributeListenerRequestItemProcessor.js +19 -0
  95. package/dist/modules/requests/itemProcessors/registerAttributeListener/RegisterAttributeListenerRequestItemProcessor.js.map +1 -0
  96. package/dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js.map +1 -1
  97. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.d.ts +6 -8
  98. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js +34 -72
  99. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js.map +1 -1
  100. package/dist/modules/requests/itemProcessors/utility/validateQuery.d.ts +2 -2
  101. package/dist/modules/requests/itemProcessors/utility/validateQuery.js +4 -4
  102. package/dist/modules/requests/itemProcessors/utility/validateQuery.js.map +1 -1
  103. package/dist/modules/requests/local/LocalRequest.js.map +1 -1
  104. package/dist/modules/requests/local/LocalRequestStatusLogEntry.js.map +1 -1
  105. package/dist/modules/requests/local/LocalResponse.js.map +1 -1
  106. package/dist/modules/requests/outgoing/OutgoingRequestsController.d.ts +4 -2
  107. package/dist/modules/requests/outgoing/OutgoingRequestsController.js +7 -1
  108. package/dist/modules/requests/outgoing/OutgoingRequestsController.js.map +1 -1
  109. package/dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js.map +1 -1
  110. package/dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js.map +1 -1
  111. package/dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.d.ts +13 -0
  112. package/dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js +35 -0
  113. package/dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js.map +1 -0
  114. package/dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js.map +1 -1
  115. package/dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js.map +1 -1
  116. package/dist/modules/settings/SettingsController.js +1 -1
  117. package/dist/modules/settings/SettingsController.js.map +1 -1
  118. package/dist/modules/settings/index.d.ts +3 -0
  119. package/dist/modules/settings/index.js +20 -0
  120. package/dist/modules/settings/index.js.map +1 -0
  121. package/dist/modules/settings/local/Setting.js.map +1 -1
  122. package/lib-web/nmshd.consumption.js +798 -275
  123. package/lib-web/nmshd.consumption.js.map +1 -1
  124. package/lib-web/nmshd.consumption.min.js +1 -1
  125. package/lib-web/nmshd.consumption.min.js.map +1 -1
  126. package/package.json +20 -20
  127. package/dist/modules/attributes/LocalAttributesController.js.map +0 -1
  128. package/dist/modules/attributes/local/CreateRelationshipAttributeParams.js.map +0 -1
@@ -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.2",
21
- build: "52",
22
- date: "2022-07-21T12:41:03+00:00",
23
- commit: "5ae49a7cb3ded2b90958e44e4f3e03599ba6cc9c",
20
+ version: "2.0.0-beta.20",
21
+ build: "72",
22
+ date: "2022-09-14T14:15:16+00:00",
23
+ commit: "66e8b413537746ca0d7476ac6c73064d0c3b0c84",
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,
@@ -58,9 +58,8 @@ class ConsumptionBaseController {
58
58
  init() {
59
59
  return Promise.resolve(this);
60
60
  }
61
- async parseArray(values, type) {
62
- const parsePromises = values.map((v) => type.from(v));
63
- return await Promise.all(parsePromises);
61
+ parseArray(values, type) {
62
+ return values.map((v) => type.fromAny(v));
64
63
  }
65
64
  }
66
65
  exports.ConsumptionBaseController = ConsumptionBaseController;
@@ -80,12 +79,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
80
79
  exports.ConsumptionController = void 0;
81
80
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
82
81
  const modules_1 = __webpack_require__(/*! ../modules */ "./dist/modules/index.js");
83
- const LocalAttributesController_1 = __webpack_require__(/*! ../modules/attributes/LocalAttributesController */ "./dist/modules/attributes/LocalAttributesController.js");
84
- const DraftsController_1 = __webpack_require__(/*! ../modules/drafts/DraftsController */ "./dist/modules/drafts/DraftsController.js");
85
- const IncomingRequestsController_1 = __webpack_require__(/*! ../modules/requests/incoming/IncomingRequestsController */ "./dist/modules/requests/incoming/IncomingRequestsController.js");
86
- const RequestItemProcessorRegistry_1 = __webpack_require__(/*! ../modules/requests/itemProcessors/RequestItemProcessorRegistry */ "./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js");
87
- const OutgoingRequestsController_1 = __webpack_require__(/*! ../modules/requests/outgoing/OutgoingRequestsController */ "./dist/modules/requests/outgoing/OutgoingRequestsController.js");
88
- const SettingsController_1 = __webpack_require__(/*! ../modules/settings/SettingsController */ "./dist/modules/settings/SettingsController.js");
89
82
  class ConsumptionController {
90
83
  constructor(transport, accountController) {
91
84
  this.transport = transport;
@@ -106,24 +99,31 @@ class ConsumptionController {
106
99
  get settings() {
107
100
  return this._settings;
108
101
  }
102
+ get attributeListeners() {
103
+ return this._attributeListeners;
104
+ }
109
105
  async init(requestItemProcessorOverrides = new Map()) {
110
- this._attributes = await new LocalAttributesController_1.LocalAttributesController(this, this.transport.eventBus, this.accountController.identity).init();
111
- this._drafts = await new DraftsController_1.DraftsController(this).init();
112
- const processorRegistry = new RequestItemProcessorRegistry_1.RequestItemProcessorRegistry(this, this.getDefaultProcessors());
106
+ this._attributes = await new modules_1.AttributesController(this, this.transport.eventBus, this.accountController.identity).init();
107
+ this._drafts = await new modules_1.DraftsController(this).init();
108
+ const processorRegistry = new modules_1.RequestItemProcessorRegistry(this, this.getDefaultProcessors());
113
109
  for (const [itemConstructor, processorConstructor] of requestItemProcessorOverrides) {
114
110
  processorRegistry.registerOrReplaceProcessor(itemConstructor, processorConstructor);
115
111
  }
116
- this._outgoingRequests = await new OutgoingRequestsController_1.OutgoingRequestsController(await this.accountController.getSynchronizedCollection("Requests"), processorRegistry, this, this.transport.eventBus, this.accountController.identity).init();
117
- this._incomingRequests = await new IncomingRequestsController_1.IncomingRequestsController(await this.accountController.getSynchronizedCollection("Requests"), processorRegistry, this, this.transport.eventBus, this.accountController.identity).init();
118
- this._settings = await new SettingsController_1.SettingsController(this).init();
112
+ this._outgoingRequests = await new modules_1.OutgoingRequestsController(await this.accountController.getSynchronizedCollection("Requests"), processorRegistry, this, this.transport.eventBus, this.accountController.identity).init();
113
+ this._incomingRequests = await new modules_1.IncomingRequestsController(await this.accountController.getSynchronizedCollection("Requests"), processorRegistry, this, this.transport.eventBus, this.accountController.identity).init();
114
+ this._settings = await new modules_1.SettingsController(this).init();
115
+ this._attributeListeners = await new modules_1.AttributeListenersController(this, this.transport.eventBus, this.accountController.identity).init();
119
116
  return this;
120
117
  }
121
118
  getDefaultProcessors() {
122
119
  return new Map([
120
+ [content_1.ShareAttributeRequestItem, modules_1.ShareAttributeRequestItemProcessor],
123
121
  [content_1.CreateAttributeRequestItem, modules_1.CreateAttributeRequestItemProcessor],
124
122
  [content_1.ReadAttributeRequestItem, modules_1.ReadAttributeRequestItemProcessor],
125
123
  [content_1.ProposeAttributeRequestItem, modules_1.ProposeAttributeRequestItemProcessor],
126
- [content_1.ShareAttributeRequestItem, modules_1.ShareAttributeRequestItemProcessor]
124
+ [content_1.ConsentRequestItem, modules_1.GenericRequestItemProcessor],
125
+ [content_1.AuthenticationRequestItem, modules_1.GenericRequestItemProcessor],
126
+ [content_1.RegisterAttributeListenerRequestItem, modules_1.RegisterAttributeListenerRequestItemProcessor]
127
127
  ]);
128
128
  }
129
129
  }
@@ -144,7 +144,8 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
144
144
  exports.ConsumptionControllerName = void 0;
145
145
  var ConsumptionControllerName;
146
146
  (function (ConsumptionControllerName) {
147
- ConsumptionControllerName["LocalAttributesController"] = "LocalAttributesController";
147
+ ConsumptionControllerName["AttributesController"] = "AttributesController";
148
+ ConsumptionControllerName["AttributeListenersController"] = "AttributeListenersController";
148
149
  ConsumptionControllerName["DraftsController"] = "DraftsController";
149
150
  ConsumptionControllerName["RelationshipInfoController"] = "RelationshipInfoController";
150
151
  ConsumptionControllerName["SingleRelationshipController"] = "SingleRelationshipController";
@@ -168,6 +169,7 @@ var ConsumptionControllerName;
168
169
 
169
170
  Object.defineProperty(exports, "__esModule", ({ value: true }));
170
171
  exports.ConsumptionErrors = void 0;
172
+ const ts_utils_1 = __webpack_require__(/*! @js-soft/ts-utils */ "./node_modules/@js-soft/ts-utils/dist/index.js");
171
173
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
172
174
  class Attributes {
173
175
  attributeExists(id) {
@@ -178,16 +180,42 @@ class Attributes {
178
180
  }
179
181
  }
180
182
  class Requests {
183
+ constructor() {
184
+ this.decideValidation = new Requests._decideValidation();
185
+ }
181
186
  requestExists(id) {
182
187
  return new transport_1.CoreError("error.consumption.requests.requestExists", `Request with id ${id} already exists and can't be created.`);
183
188
  }
184
189
  unexpectedErrorDuringRequestItemProcessing(error) {
185
- return new transport_1.CoreError("error.consumption.requests.unexpectedErrorDuringRequestItemProcessing", error instanceof Error ? error.message : "Unknown error: '${JSON.stringify(e)'");
190
+ return new transport_1.CoreError("error.consumption.requests.unexpectedErrorDuringRequestItemProcessing", error instanceof Error ? error.message : "Unknown error: '${JSON.stringify(e)'", undefined, undefined, error);
191
+ }
192
+ servalErrorDuringRequestItemProcessing(error) {
193
+ return new transport_1.CoreError("error.consumption.requests.servalErrorDuringRequestItemProcessing", error instanceof Error ? error.message : "Serval error: '${JSON.stringify(e)'", undefined, undefined, error);
186
194
  }
187
195
  invalidRequestItem(message) {
188
196
  return new transport_1.CoreError("error.consumption.requests.invalidRequestItem", message);
189
197
  }
190
198
  }
199
+ Requests._decideValidation = class {
200
+ invalidRequestId() {
201
+ return new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidRequestId", "The id of the Request does not match the id of the Response");
202
+ }
203
+ invalidNumberOfItems(message) {
204
+ return new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidNumberOfItems", message);
205
+ }
206
+ itemAcceptedButParentNotAccepted(message) {
207
+ return new ts_utils_1.ApplicationError("error.requests.decide.validation.itemAcceptedButParentNotAccepted", message);
208
+ }
209
+ mustBeAcceptedItemNotAccepted(message) {
210
+ return new ts_utils_1.ApplicationError("error.requests.decide.validation.mustBeAcceptedItemNotAccepted", message);
211
+ }
212
+ requestItemAnsweredAsRequestItemGroup() {
213
+ return new ts_utils_1.ApplicationError("error.requests.decide.validation.requestItemAnsweredAsRequestItemGroup", "The RequestItem was answered as a RequestItemGroup.");
214
+ }
215
+ requestItemGroupAnsweredAsRequestItem() {
216
+ return new ts_utils_1.ApplicationError("error.requests.decide.validation.requestItemGroupAnsweredAsRequestItem", "The RequestItemGroup was answered as a RequestItem.");
217
+ }
218
+ };
191
219
  class RelationshipInfo {
192
220
  relationshipInfoExists(relationshipId) {
193
221
  return new transport_1.CoreError("error.consumption.relationshipInfos.relationshipInfoExists", `RelationshipInfo for Relationship ${relationshipId} already exists.`);
@@ -230,6 +258,7 @@ ConsumptionIds.draft = new transport_1.CoreIdHelper("LCLDRF");
230
258
  ConsumptionIds.setting = new transport_1.CoreIdHelper("LCLSET");
231
259
  ConsumptionIds.attribute = new transport_1.CoreIdHelper("ATT");
232
260
  ConsumptionIds.request = new transport_1.CoreIdHelper("REQ");
261
+ ConsumptionIds.attributeListener = new transport_1.CoreIdHelper("ATL");
233
262
  //# sourceMappingURL=ConsumptionIds.js.map
234
263
 
235
264
  /***/ }),
@@ -296,16 +325,252 @@ __exportStar(__webpack_require__(/*! ./modules */ "./dist/modules/index.js"), ex
296
325
 
297
326
  /***/ }),
298
327
 
299
- /***/ "./dist/modules/attributes/LocalAttributesController.js":
300
- /*!**************************************************************!*\
301
- !*** ./dist/modules/attributes/LocalAttributesController.js ***!
302
- \**************************************************************/
328
+ /***/ "./dist/modules/attributeListeners/AttributeListenersController.js":
329
+ /*!*************************************************************************!*\
330
+ !*** ./dist/modules/attributeListeners/AttributeListenersController.js ***!
331
+ \*************************************************************************/
332
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
333
+
334
+ "use strict";
335
+
336
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
337
+ exports.AttributeListenersController = void 0;
338
+ const consumption_1 = __webpack_require__(/*! ../../consumption */ "./dist/consumption/index.js");
339
+ const ConsumptionBaseController_1 = __webpack_require__(/*! ../../consumption/ConsumptionBaseController */ "./dist/consumption/ConsumptionBaseController.js");
340
+ const ConsumptionControllerName_1 = __webpack_require__(/*! ../../consumption/ConsumptionControllerName */ "./dist/consumption/ConsumptionControllerName.js");
341
+ const events_1 = __webpack_require__(/*! ./events */ "./dist/modules/attributeListeners/events/index.js");
342
+ const CreateLocalAttributeListenerParams_1 = __webpack_require__(/*! ./local/CreateLocalAttributeListenerParams */ "./dist/modules/attributeListeners/local/CreateLocalAttributeListenerParams.js");
343
+ const LocalAttributeListener_1 = __webpack_require__(/*! ./local/LocalAttributeListener */ "./dist/modules/attributeListeners/local/LocalAttributeListener.js");
344
+ class AttributeListenersController extends ConsumptionBaseController_1.ConsumptionBaseController {
345
+ constructor(parent, eventBus, identity) {
346
+ super(ConsumptionControllerName_1.ConsumptionControllerName.AttributeListenersController, parent);
347
+ this.eventBus = eventBus;
348
+ this.identity = identity;
349
+ }
350
+ async init() {
351
+ await super.init();
352
+ this.attributeListeners = await this.parent.accountController.getSynchronizedCollection("AttributeListeners");
353
+ return this;
354
+ }
355
+ async getAttributeListeners(query) {
356
+ const items = await this.attributeListeners.find(query);
357
+ return this.parseArray(items, LocalAttributeListener_1.LocalAttributeListener);
358
+ }
359
+ async getAttributeListener(id) {
360
+ const listener = await this.attributeListeners.read(id.toString());
361
+ if (!listener)
362
+ return;
363
+ return LocalAttributeListener_1.LocalAttributeListener.from(listener);
364
+ }
365
+ async createAttributeListener(params) {
366
+ const parsedParams = CreateLocalAttributeListenerParams_1.CreateLocalAttributeListenerParams.from(params);
367
+ const listener = LocalAttributeListener_1.LocalAttributeListener.from({
368
+ id: await consumption_1.ConsumptionIds.attributeListener.generate(),
369
+ query: parsedParams.query,
370
+ peer: parsedParams.peer
371
+ });
372
+ await this.attributeListeners.create(listener);
373
+ this.eventBus.publish(new events_1.AttributeListenerCreatedEvent(this.identity.address.toString(), listener));
374
+ return listener;
375
+ }
376
+ }
377
+ exports.AttributeListenersController = AttributeListenersController;
378
+ //# sourceMappingURL=AttributeListenersController.js.map
379
+
380
+ /***/ }),
381
+
382
+ /***/ "./dist/modules/attributeListeners/events/AttributeListenerCreatedEvent.js":
383
+ /*!*********************************************************************************!*\
384
+ !*** ./dist/modules/attributeListeners/events/AttributeListenerCreatedEvent.js ***!
385
+ \*********************************************************************************/
386
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
387
+
388
+ "use strict";
389
+
390
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
391
+ exports.AttributeListenerCreatedEvent = void 0;
392
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
393
+ class AttributeListenerCreatedEvent extends transport_1.TransportDataEvent {
394
+ constructor(eventTargetAddress, data) {
395
+ super(AttributeListenerCreatedEvent.namespace, eventTargetAddress, data);
396
+ }
397
+ }
398
+ exports.AttributeListenerCreatedEvent = AttributeListenerCreatedEvent;
399
+ AttributeListenerCreatedEvent.namespace = "consumption.attributeListenerCreated";
400
+ //# sourceMappingURL=AttributeListenerCreatedEvent.js.map
401
+
402
+ /***/ }),
403
+
404
+ /***/ "./dist/modules/attributeListeners/events/index.js":
405
+ /*!*********************************************************!*\
406
+ !*** ./dist/modules/attributeListeners/events/index.js ***!
407
+ \*********************************************************/
408
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
409
+
410
+ "use strict";
411
+
412
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
413
+ if (k2 === undefined) k2 = k;
414
+ var desc = Object.getOwnPropertyDescriptor(m, k);
415
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
416
+ desc = { enumerable: true, get: function() { return m[k]; } };
417
+ }
418
+ Object.defineProperty(o, k2, desc);
419
+ }) : (function(o, m, k, k2) {
420
+ if (k2 === undefined) k2 = k;
421
+ o[k2] = m[k];
422
+ }));
423
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
424
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
425
+ };
426
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
427
+ __exportStar(__webpack_require__(/*! ./AttributeListenerCreatedEvent */ "./dist/modules/attributeListeners/events/AttributeListenerCreatedEvent.js"), exports);
428
+ //# sourceMappingURL=index.js.map
429
+
430
+ /***/ }),
431
+
432
+ /***/ "./dist/modules/attributeListeners/index.js":
433
+ /*!**************************************************!*\
434
+ !*** ./dist/modules/attributeListeners/index.js ***!
435
+ \**************************************************/
436
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
437
+
438
+ "use strict";
439
+
440
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
441
+ if (k2 === undefined) k2 = k;
442
+ var desc = Object.getOwnPropertyDescriptor(m, k);
443
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
444
+ desc = { enumerable: true, get: function() { return m[k]; } };
445
+ }
446
+ Object.defineProperty(o, k2, desc);
447
+ }) : (function(o, m, k, k2) {
448
+ if (k2 === undefined) k2 = k;
449
+ o[k2] = m[k];
450
+ }));
451
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
452
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
453
+ };
454
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
455
+ __exportStar(__webpack_require__(/*! ./AttributeListenersController */ "./dist/modules/attributeListeners/AttributeListenersController.js"), exports);
456
+ __exportStar(__webpack_require__(/*! ./events */ "./dist/modules/attributeListeners/events/index.js"), exports);
457
+ __exportStar(__webpack_require__(/*! ./local/CreateLocalAttributeListenerParams */ "./dist/modules/attributeListeners/local/CreateLocalAttributeListenerParams.js"), exports);
458
+ __exportStar(__webpack_require__(/*! ./local/LocalAttributeListener */ "./dist/modules/attributeListeners/local/LocalAttributeListener.js"), exports);
459
+ //# sourceMappingURL=index.js.map
460
+
461
+ /***/ }),
462
+
463
+ /***/ "./dist/modules/attributeListeners/local/CreateLocalAttributeListenerParams.js":
464
+ /*!*************************************************************************************!*\
465
+ !*** ./dist/modules/attributeListeners/local/CreateLocalAttributeListenerParams.js ***!
466
+ \*************************************************************************************/
467
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
468
+
469
+ "use strict";
470
+
471
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
472
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
473
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
474
+ 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;
475
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
476
+ };
477
+ var __metadata = (this && this.__metadata) || function (k, v) {
478
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
479
+ };
480
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
481
+ exports.CreateLocalAttributeListenerParams = void 0;
482
+ const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
483
+ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
484
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
485
+ let CreateLocalAttributeListenerParams = class CreateLocalAttributeListenerParams extends ts_serval_1.Serializable {
486
+ static from(value) {
487
+ return this.fromAny(value);
488
+ }
489
+ };
490
+ __decorate([
491
+ (0, ts_serval_1.serialize)({ unionTypes: [content_1.IdentityAttributeQuery, content_1.ThirdPartyRelationshipAttributeQuery] }),
492
+ (0, ts_serval_1.validate)(),
493
+ __metadata("design:type", Object)
494
+ ], CreateLocalAttributeListenerParams.prototype, "query", void 0);
495
+ __decorate([
496
+ (0, ts_serval_1.serialize)(),
497
+ (0, ts_serval_1.validate)(),
498
+ __metadata("design:type", transport_1.CoreAddress)
499
+ ], CreateLocalAttributeListenerParams.prototype, "peer", void 0);
500
+ CreateLocalAttributeListenerParams = __decorate([
501
+ (0, ts_serval_1.type)("CreateLocalAttributeListenerParams")
502
+ ], CreateLocalAttributeListenerParams);
503
+ exports.CreateLocalAttributeListenerParams = CreateLocalAttributeListenerParams;
504
+ //# sourceMappingURL=CreateLocalAttributeListenerParams.js.map
505
+
506
+ /***/ }),
507
+
508
+ /***/ "./dist/modules/attributeListeners/local/LocalAttributeListener.js":
509
+ /*!*************************************************************************!*\
510
+ !*** ./dist/modules/attributeListeners/local/LocalAttributeListener.js ***!
511
+ \*************************************************************************/
512
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
513
+
514
+ "use strict";
515
+
516
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
517
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
518
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
519
+ 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;
520
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
521
+ };
522
+ var __metadata = (this && this.__metadata) || function (k, v) {
523
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
524
+ };
525
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
526
+ exports.LocalAttributeListener = void 0;
527
+ const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
528
+ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
529
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
530
+ const ts_simple_nameof_1 = __webpack_require__(/*! ts-simple-nameof */ "./node_modules/ts-simple-nameof/index.js");
531
+ let LocalAttributeListener = class LocalAttributeListener extends transport_1.CoreSynchronizable {
532
+ constructor() {
533
+ super(...arguments);
534
+ this.userdataProperties = [
535
+ (0, ts_simple_nameof_1.nameof)((r) => r.query),
536
+ (0, ts_simple_nameof_1.nameof)((r) => r.peer)
537
+ ];
538
+ }
539
+ static from(value) {
540
+ return this.fromAny(value);
541
+ }
542
+ toJSON() {
543
+ return super.toJSON();
544
+ }
545
+ };
546
+ __decorate([
547
+ (0, ts_serval_1.serialize)({ unionTypes: [content_1.IdentityAttributeQuery, content_1.ThirdPartyRelationshipAttributeQuery] }),
548
+ (0, ts_serval_1.validate)(),
549
+ __metadata("design:type", Object)
550
+ ], LocalAttributeListener.prototype, "query", void 0);
551
+ __decorate([
552
+ (0, ts_serval_1.serialize)(),
553
+ (0, ts_serval_1.validate)(),
554
+ __metadata("design:type", transport_1.CoreAddress)
555
+ ], LocalAttributeListener.prototype, "peer", void 0);
556
+ LocalAttributeListener = __decorate([
557
+ (0, ts_serval_1.type)("LocalAttributeListener")
558
+ ], LocalAttributeListener);
559
+ exports.LocalAttributeListener = LocalAttributeListener;
560
+ //# sourceMappingURL=LocalAttributeListener.js.map
561
+
562
+ /***/ }),
563
+
564
+ /***/ "./dist/modules/attributes/AttributesController.js":
565
+ /*!*********************************************************!*\
566
+ !*** ./dist/modules/attributes/AttributesController.js ***!
567
+ \*********************************************************/
303
568
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
304
569
 
305
570
  "use strict";
306
571
 
307
572
  Object.defineProperty(exports, "__esModule", ({ value: true }));
308
- exports.LocalAttributesController = void 0;
573
+ exports.AttributesController = void 0;
309
574
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
310
575
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
311
576
  const ts_simple_nameof_1 = __webpack_require__(/*! ts-simple-nameof */ "./node_modules/ts-simple-nameof/index.js");
@@ -316,9 +581,9 @@ const LocalAttribute_1 = __webpack_require__(/*! ./local/LocalAttribute */ "./di
316
581
  const LocalAttributeShareInfo_1 = __webpack_require__(/*! ./local/LocalAttributeShareInfo */ "./dist/modules/attributes/local/LocalAttributeShareInfo.js");
317
582
  const QueryTranslator_1 = __webpack_require__(/*! ./local/QueryTranslator */ "./dist/modules/attributes/local/QueryTranslator.js");
318
583
  const SucceedLocalAttributeParams_1 = __webpack_require__(/*! ./local/SucceedLocalAttributeParams */ "./dist/modules/attributes/local/SucceedLocalAttributeParams.js");
319
- class LocalAttributesController extends consumption_1.ConsumptionBaseController {
584
+ class AttributesController extends consumption_1.ConsumptionBaseController {
320
585
  constructor(parent, eventBus, identity) {
321
- super(consumption_1.ConsumptionControllerName.LocalAttributesController, parent);
586
+ super(consumption_1.ConsumptionControllerName.AttributesController, parent);
322
587
  this.eventBus = eventBus;
323
588
  this.identity = identity;
324
589
  }
@@ -384,24 +649,36 @@ class LocalAttributesController extends consumption_1.ConsumptionBaseController
384
649
  }
385
650
  async getLocalAttributes(query) {
386
651
  const attributes = await this.attributes.find(query);
387
- return await this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
652
+ return this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
388
653
  }
389
654
  async getValidLocalAttributes(query) {
390
655
  const attributes = await this.attributes.find(query);
391
- const items = await this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
656
+ const items = this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
392
657
  return this.filterCurrent(items);
393
658
  }
394
659
  async executeRelationshipAttributeQuery(query) {
395
660
  const parsedQuery = content_1.RelationshipAttributeQuery.from(query);
396
661
  const dbQuery = QueryTranslator_1.RelationshipAttributeQueryTranslator.translate(parsedQuery);
662
+ dbQuery["content.confidentiality"] = { $ne: "private" };
663
+ const attributes = await this.attributes.find(dbQuery);
664
+ const attribute = attributes.length > 0 ? attributes[0] : undefined;
665
+ return attribute === undefined ? undefined : LocalAttribute_1.LocalAttribute.from(attribute);
666
+ }
667
+ async executeThirdPartyRelationshipAttributeQuery(query) {
668
+ const parsedQuery = content_1.ThirdPartyRelationshipAttributeQuery.from(query);
669
+ const dbQuery = QueryTranslator_1.ThirdPartyRelationshipAttributeQueryTranslator.translate(parsedQuery);
670
+ dbQuery["content.confidentiality"] = { $ne: "private" };
397
671
  const attributes = await this.attributes.find(dbQuery);
398
- return await this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
672
+ const attribute = attributes.length > 0 ? attributes[0] : undefined;
673
+ return attribute ?? LocalAttribute_1.LocalAttribute.from(attribute);
399
674
  }
400
675
  async executeIdentityAttributeQuery(query) {
401
676
  const parsedQuery = content_1.IdentityAttributeQuery.from(query);
402
677
  const dbQuery = QueryTranslator_1.IdentityAttributeQueryTranslator.translate(parsedQuery);
678
+ dbQuery["content.owner"] = this.identity.address.toString();
679
+ dbQuery["shareInfo"] = { $exists: false };
403
680
  const attributes = await this.attributes.find(dbQuery);
404
- return await this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
681
+ return this.parseArray(attributes, LocalAttribute_1.LocalAttribute);
405
682
  }
406
683
  async createLocalAttribute(params) {
407
684
  const localAttribute = await LocalAttribute_1.LocalAttribute.fromAttribute(params.content);
@@ -457,6 +734,7 @@ class LocalAttributesController extends consumption_1.ConsumptionBaseController
457
734
  createdAt: transport_1.CoreDate.utc()
458
735
  });
459
736
  await this.attributes.create(peerLocalAttribute);
737
+ this.eventBus.publish(new events_1.AttributeCreatedEvent(this.identity.address.toString(), peerLocalAttribute));
460
738
  return peerLocalAttribute;
461
739
  }
462
740
  async updateLocalAttribute(params) {
@@ -483,8 +761,8 @@ class LocalAttributesController extends consumption_1.ConsumptionBaseController
483
761
  this.eventBus.publish(new events_1.AttributeDeletedEvent(this.identity.address.toString(), attribute));
484
762
  }
485
763
  }
486
- exports.LocalAttributesController = LocalAttributesController;
487
- //# sourceMappingURL=LocalAttributesController.js.map
764
+ exports.AttributesController = AttributesController;
765
+ //# sourceMappingURL=AttributesController.js.map
488
766
 
489
767
  /***/ }),
490
768
 
@@ -630,6 +908,42 @@ __exportStar(__webpack_require__(/*! ./SharedAttributeCopyCreatedEvent */ "./dis
630
908
 
631
909
  /***/ }),
632
910
 
911
+ /***/ "./dist/modules/attributes/index.js":
912
+ /*!******************************************!*\
913
+ !*** ./dist/modules/attributes/index.js ***!
914
+ \******************************************/
915
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
916
+
917
+ "use strict";
918
+
919
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
920
+ if (k2 === undefined) k2 = k;
921
+ var desc = Object.getOwnPropertyDescriptor(m, k);
922
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
923
+ desc = { enumerable: true, get: function() { return m[k]; } };
924
+ }
925
+ Object.defineProperty(o, k2, desc);
926
+ }) : (function(o, m, k, k2) {
927
+ if (k2 === undefined) k2 = k;
928
+ o[k2] = m[k];
929
+ }));
930
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
931
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
932
+ };
933
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
934
+ __exportStar(__webpack_require__(/*! ./AttributesController */ "./dist/modules/attributes/AttributesController.js"), exports);
935
+ __exportStar(__webpack_require__(/*! ./events */ "./dist/modules/attributes/events/index.js"), exports);
936
+ __exportStar(__webpack_require__(/*! ./local/CreateLocalAttributeParams */ "./dist/modules/attributes/local/CreateLocalAttributeParams.js"), exports);
937
+ __exportStar(__webpack_require__(/*! ./local/CreatePeerLocalAttributeParams */ "./dist/modules/attributes/local/CreatePeerLocalAttributeParams.js"), exports);
938
+ __exportStar(__webpack_require__(/*! ./local/CreateSharedLocalAttributeCopyParams */ "./dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.js"), exports);
939
+ __exportStar(__webpack_require__(/*! ./local/LocalAttribute */ "./dist/modules/attributes/local/LocalAttribute.js"), exports);
940
+ __exportStar(__webpack_require__(/*! ./local/LocalAttributeShareInfo */ "./dist/modules/attributes/local/LocalAttributeShareInfo.js"), exports);
941
+ __exportStar(__webpack_require__(/*! ./local/SucceedLocalAttributeParams */ "./dist/modules/attributes/local/SucceedLocalAttributeParams.js"), exports);
942
+ __exportStar(__webpack_require__(/*! ./local/UpdateLocalAttributeParams */ "./dist/modules/attributes/local/UpdateLocalAttributeParams.js"), exports);
943
+ //# sourceMappingURL=index.js.map
944
+
945
+ /***/ }),
946
+
633
947
  /***/ "./dist/modules/attributes/local/CreateLocalAttributeParams.js":
634
948
  /*!*********************************************************************!*\
635
949
  !*** ./dist/modules/attributes/local/CreateLocalAttributeParams.js ***!
@@ -913,7 +1227,7 @@ exports.LocalAttributeShareInfo = LocalAttributeShareInfo;
913
1227
  "use strict";
914
1228
 
915
1229
  Object.defineProperty(exports, "__esModule", ({ value: true }));
916
- exports.RelationshipAttributeQueryTranslator = exports.IdentityAttributeQueryTranslator = void 0;
1230
+ exports.ThirdPartyRelationshipAttributeQueryTranslator = exports.RelationshipAttributeQueryTranslator = exports.IdentityAttributeQueryTranslator = void 0;
917
1231
  const docdb_querytranslator_1 = __webpack_require__(/*! @js-soft/docdb-querytranslator */ "./node_modules/@js-soft/docdb-querytranslator/dist/index.js");
918
1232
  const luxon_1 = __webpack_require__(/*! luxon */ "./node_modules/luxon/build/node/luxon.js");
919
1233
  const ts_simple_nameof_1 = __webpack_require__(/*! ts-simple-nameof */ "./node_modules/ts-simple-nameof/index.js");
@@ -985,11 +1299,9 @@ exports.RelationshipAttributeQueryTranslator = RelationshipAttributeQueryTransla
985
1299
  RelationshipAttributeQueryTranslator.translator = new docdb_querytranslator_1.QueryTranslator({
986
1300
  whitelist: {
987
1301
  [(0, ts_simple_nameof_1.nameof)((x) => x.key)]: true,
988
- [(0, ts_simple_nameof_1.nameof)((x) => x.valueType)]: true,
989
1302
  [(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)]: true,
990
1303
  [(0, ts_simple_nameof_1.nameof)((x) => x.validTo)]: true,
991
1304
  [(0, ts_simple_nameof_1.nameof)((x) => x.owner)]: true,
992
- [(0, ts_simple_nameof_1.nameof)((x) => x.thirdParty)]: true,
993
1305
  attributeType: true
994
1306
  },
995
1307
  alias: {
@@ -997,9 +1309,55 @@ RelationshipAttributeQueryTranslator.translator = new docdb_querytranslator_1.Qu
997
1309
  [(0, ts_simple_nameof_1.nameof)((x) => x.key)]: [
998
1310
  `${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.key)}`
999
1311
  ],
1000
- // @type of attributeValue
1001
- [(0, ts_simple_nameof_1.nameof)((x) => x.valueType)]: [
1002
- `${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.value)}.@type`
1312
+ // @type of attribute
1313
+ attributeType: [`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.@type`],
1314
+ // owner
1315
+ [(0, ts_simple_nameof_1.nameof)((x) => x.owner)]: [
1316
+ `${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.owner)}`
1317
+ ]
1318
+ },
1319
+ custom: {
1320
+ // validFrom
1321
+ [(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)]: (query, input) => {
1322
+ if (!input) {
1323
+ return;
1324
+ }
1325
+ const validFromUtcString = luxon_1.DateTime.fromISO(input).toUTC().toString();
1326
+ query[`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)}`] = {
1327
+ $gte: validFromUtcString
1328
+ };
1329
+ },
1330
+ // validTo
1331
+ [(0, ts_simple_nameof_1.nameof)((x) => x.validTo)]: (query, input) => {
1332
+ if (!input) {
1333
+ return;
1334
+ }
1335
+ const validToUtcString = luxon_1.DateTime.fromISO(input).toUTC().toString();
1336
+ query[`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.validTo)}`] = {
1337
+ $lte: validToUtcString
1338
+ };
1339
+ }
1340
+ }
1341
+ });
1342
+ class ThirdPartyRelationshipAttributeQueryTranslator {
1343
+ static translate(query) {
1344
+ return this.translator.parse({ ...query.toJSON(), attributeType: "RelationshipAttribute" });
1345
+ }
1346
+ }
1347
+ exports.ThirdPartyRelationshipAttributeQueryTranslator = ThirdPartyRelationshipAttributeQueryTranslator;
1348
+ ThirdPartyRelationshipAttributeQueryTranslator.translator = new docdb_querytranslator_1.QueryTranslator({
1349
+ whitelist: {
1350
+ [(0, ts_simple_nameof_1.nameof)((x) => x.key)]: true,
1351
+ [(0, ts_simple_nameof_1.nameof)((x) => x.validFrom)]: true,
1352
+ [(0, ts_simple_nameof_1.nameof)((x) => x.validTo)]: true,
1353
+ [(0, ts_simple_nameof_1.nameof)((x) => x.owner)]: true,
1354
+ [(0, ts_simple_nameof_1.nameof)((x) => x.thirdParty)]: true,
1355
+ attributeType: true
1356
+ },
1357
+ alias: {
1358
+ // key
1359
+ [(0, ts_simple_nameof_1.nameof)((x) => x.key)]: [
1360
+ `${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.${(0, ts_simple_nameof_1.nameof)((x) => x.key)}`
1003
1361
  ],
1004
1362
  // @type of attribute
1005
1363
  attributeType: [`${(0, ts_simple_nameof_1.nameof)((x) => x.content)}.@type`],
@@ -1151,7 +1509,7 @@ class DraftsController extends consumption_1.ConsumptionBaseController {
1151
1509
  }
1152
1510
  async getDrafts(query) {
1153
1511
  const items = await this.drafts.find(query);
1154
- return await this.parseArray(items, Draft_1.Draft);
1512
+ return this.parseArray(items, Draft_1.Draft);
1155
1513
  }
1156
1514
  async createDraft(content, type = "") {
1157
1515
  const draft = Draft_1.Draft.from({
@@ -1180,6 +1538,35 @@ exports.DraftsController = DraftsController;
1180
1538
 
1181
1539
  /***/ }),
1182
1540
 
1541
+ /***/ "./dist/modules/drafts/index.js":
1542
+ /*!**************************************!*\
1543
+ !*** ./dist/modules/drafts/index.js ***!
1544
+ \**************************************/
1545
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1546
+
1547
+ "use strict";
1548
+
1549
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
1550
+ if (k2 === undefined) k2 = k;
1551
+ var desc = Object.getOwnPropertyDescriptor(m, k);
1552
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
1553
+ desc = { enumerable: true, get: function() { return m[k]; } };
1554
+ }
1555
+ Object.defineProperty(o, k2, desc);
1556
+ }) : (function(o, m, k, k2) {
1557
+ if (k2 === undefined) k2 = k;
1558
+ o[k2] = m[k];
1559
+ }));
1560
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
1561
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1562
+ };
1563
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1564
+ __exportStar(__webpack_require__(/*! ./DraftsController */ "./dist/modules/drafts/DraftsController.js"), exports);
1565
+ __exportStar(__webpack_require__(/*! ./local/Draft */ "./dist/modules/drafts/local/Draft.js"), exports);
1566
+ //# sourceMappingURL=index.js.map
1567
+
1568
+ /***/ }),
1569
+
1183
1570
  /***/ "./dist/modules/drafts/local/Draft.js":
1184
1571
  /*!********************************************!*\
1185
1572
  !*** ./dist/modules/drafts/local/Draft.js ***!
@@ -1283,55 +1670,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
1283
1670
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1284
1671
  };
1285
1672
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1286
- __exportStar(__webpack_require__(/*! ./attributes/events */ "./dist/modules/attributes/events/index.js"), exports);
1287
- __exportStar(__webpack_require__(/*! ./attributes/local/CreateLocalAttributeParams */ "./dist/modules/attributes/local/CreateLocalAttributeParams.js"), exports);
1288
- __exportStar(__webpack_require__(/*! ./attributes/local/CreatePeerLocalAttributeParams */ "./dist/modules/attributes/local/CreatePeerLocalAttributeParams.js"), exports);
1289
- __exportStar(__webpack_require__(/*! ./attributes/local/CreateSharedLocalAttributeCopyParams */ "./dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.js"), exports);
1290
- __exportStar(__webpack_require__(/*! ./attributes/local/LocalAttribute */ "./dist/modules/attributes/local/LocalAttribute.js"), exports);
1291
- __exportStar(__webpack_require__(/*! ./attributes/local/LocalAttributeShareInfo */ "./dist/modules/attributes/local/LocalAttributeShareInfo.js"), exports);
1292
- __exportStar(__webpack_require__(/*! ./attributes/local/SucceedLocalAttributeParams */ "./dist/modules/attributes/local/SucceedLocalAttributeParams.js"), exports);
1293
- __exportStar(__webpack_require__(/*! ./attributes/local/UpdateLocalAttributeParams */ "./dist/modules/attributes/local/UpdateLocalAttributeParams.js"), exports);
1294
- __exportStar(__webpack_require__(/*! ./attributes/LocalAttributesController */ "./dist/modules/attributes/LocalAttributesController.js"), exports);
1295
- __exportStar(__webpack_require__(/*! ./drafts/DraftsController */ "./dist/modules/drafts/DraftsController.js"), exports);
1296
- __exportStar(__webpack_require__(/*! ./drafts/local/Draft */ "./dist/modules/drafts/local/Draft.js"), exports);
1297
- __exportStar(__webpack_require__(/*! ./requests/events */ "./dist/modules/requests/events/index.js"), exports);
1298
- __exportStar(__webpack_require__(/*! ./requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters */ "./dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js"), exports);
1299
- __exportStar(__webpack_require__(/*! ./requests/incoming/complete/CompleteIncomingRequestParameters */ "./dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js"), exports);
1300
- __exportStar(__webpack_require__(/*! ./requests/incoming/decide/AcceptRequestItemParameters */ "./dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js"), exports);
1301
- __exportStar(__webpack_require__(/*! ./requests/incoming/decide/DecideRequestItemGroupParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js"), exports);
1302
- __exportStar(__webpack_require__(/*! ./requests/incoming/decide/DecideRequestItemParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js"), exports);
1303
- __exportStar(__webpack_require__(/*! ./requests/incoming/decide/DecideRequestParameters */ "./dist/modules/requests/incoming/decide/DecideRequestParameters.js"), exports);
1304
- __exportStar(__webpack_require__(/*! ./requests/incoming/decide/RejectRequestItemParameters */ "./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js"), exports);
1305
- __exportStar(__webpack_require__(/*! ./requests/incoming/DecideRequestParametersValidator */ "./dist/modules/requests/incoming/DecideRequestParametersValidator.js"), exports);
1306
- __exportStar(__webpack_require__(/*! ./requests/incoming/IncomingRequestsController */ "./dist/modules/requests/incoming/IncomingRequestsController.js"), exports);
1307
- __exportStar(__webpack_require__(/*! ./requests/incoming/received/ReceivedIncomingRequestParameters */ "./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js"), exports);
1308
- __exportStar(__webpack_require__(/*! ./requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters */ "./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js"), exports);
1309
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/AbstractRequestItemProcessor */ "./dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js"), exports);
1310
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js"), exports);
1311
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js"), exports);
1312
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js"), exports);
1313
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/IRequestItemProcessor */ "./dist/modules/requests/itemProcessors/IRequestItemProcessor.js"), exports);
1314
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/ProcessorConstructor */ "./dist/modules/requests/itemProcessors/ProcessorConstructor.js"), exports);
1315
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js"), exports);
1316
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js"), exports);
1317
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js"), exports);
1318
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/RequestItemConstructor */ "./dist/modules/requests/itemProcessors/RequestItemConstructor.js"), exports);
1319
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/RequestItemProcessorRegistry */ "./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js"), exports);
1320
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js"), exports);
1321
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js"), exports);
1322
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js"), exports);
1323
- __exportStar(__webpack_require__(/*! ./requests/local/LocalRequest */ "./dist/modules/requests/local/LocalRequest.js"), exports);
1324
- __exportStar(__webpack_require__(/*! ./requests/local/LocalRequestStatus */ "./dist/modules/requests/local/LocalRequestStatus.js"), exports);
1325
- __exportStar(__webpack_require__(/*! ./requests/local/LocalRequestStatusLogEntry */ "./dist/modules/requests/local/LocalRequestStatusLogEntry.js"), exports);
1326
- __exportStar(__webpack_require__(/*! ./requests/local/LocalResponse */ "./dist/modules/requests/local/LocalResponse.js"), exports);
1327
- __exportStar(__webpack_require__(/*! ./requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters */ "./dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js"), exports);
1328
- __exportStar(__webpack_require__(/*! ./requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters */ "./dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js"), exports);
1329
- __exportStar(__webpack_require__(/*! ./requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters */ "./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js"), exports);
1330
- __exportStar(__webpack_require__(/*! ./requests/outgoing/OutgoingRequestsController */ "./dist/modules/requests/outgoing/OutgoingRequestsController.js"), exports);
1331
- __exportStar(__webpack_require__(/*! ./requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters */ "./dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js"), exports);
1332
- __exportStar(__webpack_require__(/*! ./settings/local/CreateSettingParameter */ "./dist/modules/settings/local/CreateSettingParameter.js"), exports);
1333
- __exportStar(__webpack_require__(/*! ./settings/local/Setting */ "./dist/modules/settings/local/Setting.js"), exports);
1334
- __exportStar(__webpack_require__(/*! ./settings/SettingsController */ "./dist/modules/settings/SettingsController.js"), exports);
1673
+ __exportStar(__webpack_require__(/*! ./attributeListeners */ "./dist/modules/attributeListeners/index.js"), exports);
1674
+ __exportStar(__webpack_require__(/*! ./attributes */ "./dist/modules/attributes/index.js"), exports);
1675
+ __exportStar(__webpack_require__(/*! ./drafts */ "./dist/modules/drafts/index.js"), exports);
1676
+ __exportStar(__webpack_require__(/*! ./requests */ "./dist/modules/requests/index.js"), exports);
1677
+ __exportStar(__webpack_require__(/*! ./settings */ "./dist/modules/settings/index.js"), exports);
1335
1678
  //# sourceMappingURL=index.js.map
1336
1679
 
1337
1680
  /***/ }),
@@ -1498,19 +1841,19 @@ __exportStar(__webpack_require__(/*! ./OutgoingRequestStatusChangedEvent */ "./d
1498
1841
 
1499
1842
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1500
1843
  exports.DecideRequestParametersValidator = void 0;
1501
- const ts_utils_1 = __webpack_require__(/*! @js-soft/ts-utils */ "./node_modules/@js-soft/ts-utils/dist/index.js");
1502
1844
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
1503
1845
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
1846
+ const consumption_1 = __webpack_require__(/*! ../../../consumption */ "./dist/consumption/index.js");
1504
1847
  const ValidationResult_1 = __webpack_require__(/*! ../itemProcessors/ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
1505
1848
  const DecideRequestItemGroupParameters_1 = __webpack_require__(/*! ./decide/DecideRequestItemGroupParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js");
1506
1849
  const DecideRequestItemParameters_1 = __webpack_require__(/*! ./decide/DecideRequestItemParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js");
1507
1850
  class DecideRequestParametersValidator {
1508
1851
  validate(params, request) {
1509
1852
  if (!request.id.equals(transport_1.CoreId.from(params.requestId))) {
1510
- return ValidationResult_1.ValidationResult.error(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidRequestId", "The id of the Request does not match the id of the Response"));
1853
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.invalidRequestId());
1511
1854
  }
1512
1855
  if (params.items.length !== request.content.items.length) {
1513
- return ValidationResult_1.ValidationResult.error(this.invalidNumberOfItemsError("Number of items in Request and Response do not match"));
1856
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.invalidNumberOfItems("Number of items in Request and Response do not match"));
1514
1857
  }
1515
1858
  const validationResults = request.content.items.map((requestItem, index) => this.checkItemOrGroup(requestItem, params.items[index], params.accept));
1516
1859
  return ValidationResult_1.ValidationResult.fromItems(validationResults);
@@ -1523,36 +1866,33 @@ class DecideRequestParametersValidator {
1523
1866
  }
1524
1867
  checkItem(requestItem, response, isParentAccepted) {
1525
1868
  if ((0, DecideRequestItemGroupParameters_1.isDecideRequestItemGroupParametersJSON)(response)) {
1526
- return ValidationResult_1.ValidationResult.error(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", "The RequestItem was answered as a RequestItemGroup."));
1869
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.requestItemAnsweredAsRequestItemGroup());
1527
1870
  }
1528
1871
  if (!isParentAccepted && response.accept) {
1529
- return ValidationResult_1.ValidationResult.error(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", "The RequestItem was accepted, but the parent was not accepted."));
1872
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.itemAcceptedButParentNotAccepted("The RequestItem was accepted, but the parent was not accepted."));
1530
1873
  }
1531
1874
  if (isParentAccepted && requestItem.mustBeAccepted && !response.accept) {
1532
- return ValidationResult_1.ValidationResult.error(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", "The RequestItem is flagged as 'mustBeAccepted', but it was not accepted."));
1875
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.mustBeAcceptedItemNotAccepted("The RequestItem is flagged as 'mustBeAccepted', but it was not accepted."));
1533
1876
  }
1534
1877
  return ValidationResult_1.ValidationResult.success();
1535
1878
  }
1536
1879
  checkItemGroup(requestItemGroup, responseItemGroup, isParentAccepted) {
1537
1880
  if ((0, DecideRequestItemParameters_1.isDecideRequestItemParametersJSON)(responseItemGroup)) {
1538
- return ValidationResult_1.ValidationResult.error(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", "The RequestItemGroup was answered as a RequestItem."));
1881
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.requestItemGroupAnsweredAsRequestItem());
1539
1882
  }
1540
1883
  if (responseItemGroup.items.length !== requestItemGroup.items.length) {
1541
- return ValidationResult_1.ValidationResult.error(this.invalidNumberOfItemsError("Number of items in RequestItemGroup and ResponseItemGroup do not match"));
1884
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.invalidNumberOfItems("Number of items in RequestItemGroup and ResponseItemGroup do not match"));
1542
1885
  }
1543
1886
  const isGroupAccepted = responseItemGroup.items.some((value) => value.accept);
1544
1887
  if (!isParentAccepted && isGroupAccepted) {
1545
- return ValidationResult_1.ValidationResult.error(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", "The RequestItemGroup was accepted, but the parent was not accepted."));
1888
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.itemAcceptedButParentNotAccepted("The RequestItemGroup was accepted, but the parent was not accepted."));
1546
1889
  }
1547
1890
  if (isParentAccepted && requestItemGroup.mustBeAccepted && !isGroupAccepted) {
1548
- return ValidationResult_1.ValidationResult.error(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", "The RequestItemGroup is flagged as 'mustBeAccepted', but it was not accepted. Please accept all 'mustBeAccepted' items in this group."));
1891
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.decideValidation.mustBeAcceptedItemNotAccepted("The RequestItemGroup is flagged as 'mustBeAccepted', but it was not accepted. Please accept all 'mustBeAccepted' items in this group."));
1549
1892
  }
1550
1893
  const validationResults = requestItemGroup.items.map((requestItem, index) => this.checkItem(requestItem, responseItemGroup.items[index], isGroupAccepted));
1551
1894
  return ValidationResult_1.ValidationResult.fromItems(validationResults);
1552
1895
  }
1553
- invalidNumberOfItemsError(message) {
1554
- return new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidNumberOfItems", message);
1555
- }
1556
1896
  }
1557
1897
  exports.DecideRequestParametersValidator = DecideRequestParametersValidator;
1558
1898
  //# sourceMappingURL=DecideRequestParametersValidator.js.map
@@ -1569,6 +1909,7 @@ exports.DecideRequestParametersValidator = DecideRequestParametersValidator;
1569
1909
 
1570
1910
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1571
1911
  exports.IncomingRequestsController = void 0;
1912
+ const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
1572
1913
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
1573
1914
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
1574
1915
  const consumption_1 = __webpack_require__(/*! ../../../consumption */ "./dist/consumption/index.js");
@@ -1721,12 +2062,14 @@ class IncomingRequestsController extends consumption_1.ConsumptionBaseController
1721
2062
  async canDecideItem(params, requestItem, request) {
1722
2063
  const processor = this.processorRegistry.getProcessorForItem(requestItem);
1723
2064
  try {
1724
- if (params.accept) {
2065
+ if (params.accept)
1725
2066
  return await processor.canAccept(requestItem, params, request);
1726
- }
1727
2067
  return await processor.canReject(requestItem, params, request);
1728
2068
  }
1729
2069
  catch (e) {
2070
+ if (e instanceof ts_serval_1.ServalError) {
2071
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.servalErrorDuringRequestItemProcessing(e));
2072
+ }
1730
2073
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.unexpectedErrorDuringRequestItemProcessing(e));
1731
2074
  }
1732
2075
  }
@@ -1815,20 +2158,17 @@ class IncomingRequestsController extends consumption_1.ConsumptionBaseController
1815
2158
  throw new Error("Cannot decide own Request");
1816
2159
  }
1817
2160
  this.assertRequestStatus(request, LocalRequestStatus_1.LocalRequestStatus.Decided);
1818
- let responseSource;
1819
- if (parsedParams.responseSourceObject instanceof transport_1.Message) {
1820
- responseSource = "Message";
1821
- }
1822
- else if (parsedParams.responseSourceObject instanceof transport_1.RelationshipChange) {
1823
- responseSource = "RelationshipChange";
2161
+ const requestIsRejected = request.response.content.result === content_1.ResponseResult.Rejected;
2162
+ const requestIsFromTemplate = request.source.type === "RelationshipTemplate";
2163
+ if (parsedParams.responseSourceObject) {
2164
+ request.response.source = LocalResponse_1.LocalResponseSource.from({
2165
+ type: parsedParams.responseSourceObject instanceof transport_1.Message ? "Message" : "RelationshipChange",
2166
+ reference: parsedParams.responseSourceObject.id
2167
+ });
1824
2168
  }
1825
- else {
1826
- throw new Error("Unknown response source");
2169
+ else if (!requestIsRejected || !requestIsFromTemplate) {
2170
+ throw new Error("A Request can only be completed without a responseSource if the Request is rejected and the Request is from a Relationship Template");
1827
2171
  }
1828
- request.response.source = LocalResponse_1.LocalResponseSource.from({
1829
- type: responseSource,
1830
- reference: parsedParams.responseSourceObject.id
1831
- });
1832
2172
  request.changeStatus(LocalRequestStatus_1.LocalRequestStatus.Completed);
1833
2173
  await this.update(request);
1834
2174
  this.eventBus.publish(new events_1.IncomingRequestStatusChangedEvent(this.identity.address.toString(), {
@@ -1947,7 +2287,7 @@ __decorate([
1947
2287
  ], CompleteIncomingRequestParameters.prototype, "requestId", void 0);
1948
2288
  __decorate([
1949
2289
  (0, ts_serval_1.serialize)({ unionTypes: [transport_1.Message, transport_1.RelationshipChange] }),
1950
- (0, ts_serval_1.validate)(),
2290
+ (0, ts_serval_1.validate)({ nullable: true }),
1951
2291
  __metadata("design:type", Object)
1952
2292
  ], CompleteIncomingRequestParameters.prototype, "responseSourceObject", void 0);
1953
2293
  exports.CompleteIncomingRequestParameters = CompleteIncomingRequestParameters;
@@ -2160,6 +2500,70 @@ exports.RequireManualDecisionOfIncomingRequestParameters = RequireManualDecision
2160
2500
 
2161
2501
  /***/ }),
2162
2502
 
2503
+ /***/ "./dist/modules/requests/index.js":
2504
+ /*!****************************************!*\
2505
+ !*** ./dist/modules/requests/index.js ***!
2506
+ \****************************************/
2507
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2508
+
2509
+ "use strict";
2510
+
2511
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2512
+ if (k2 === undefined) k2 = k;
2513
+ var desc = Object.getOwnPropertyDescriptor(m, k);
2514
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
2515
+ desc = { enumerable: true, get: function() { return m[k]; } };
2516
+ }
2517
+ Object.defineProperty(o, k2, desc);
2518
+ }) : (function(o, m, k, k2) {
2519
+ if (k2 === undefined) k2 = k;
2520
+ o[k2] = m[k];
2521
+ }));
2522
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
2523
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
2524
+ };
2525
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2526
+ __exportStar(__webpack_require__(/*! ./events */ "./dist/modules/requests/events/index.js"), exports);
2527
+ __exportStar(__webpack_require__(/*! ./incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters */ "./dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js"), exports);
2528
+ __exportStar(__webpack_require__(/*! ./incoming/complete/CompleteIncomingRequestParameters */ "./dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js"), exports);
2529
+ __exportStar(__webpack_require__(/*! ./incoming/decide/AcceptRequestItemParameters */ "./dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js"), exports);
2530
+ __exportStar(__webpack_require__(/*! ./incoming/decide/DecideRequestItemGroupParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js"), exports);
2531
+ __exportStar(__webpack_require__(/*! ./incoming/decide/DecideRequestItemParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js"), exports);
2532
+ __exportStar(__webpack_require__(/*! ./incoming/decide/DecideRequestParameters */ "./dist/modules/requests/incoming/decide/DecideRequestParameters.js"), exports);
2533
+ __exportStar(__webpack_require__(/*! ./incoming/decide/RejectRequestItemParameters */ "./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js"), exports);
2534
+ __exportStar(__webpack_require__(/*! ./incoming/DecideRequestParametersValidator */ "./dist/modules/requests/incoming/DecideRequestParametersValidator.js"), exports);
2535
+ __exportStar(__webpack_require__(/*! ./incoming/IncomingRequestsController */ "./dist/modules/requests/incoming/IncomingRequestsController.js"), exports);
2536
+ __exportStar(__webpack_require__(/*! ./incoming/received/ReceivedIncomingRequestParameters */ "./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js"), exports);
2537
+ __exportStar(__webpack_require__(/*! ./incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters */ "./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js"), exports);
2538
+ __exportStar(__webpack_require__(/*! ./itemProcessors/AbstractRequestItemProcessor */ "./dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js"), exports);
2539
+ __exportStar(__webpack_require__(/*! ./itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js"), exports);
2540
+ __exportStar(__webpack_require__(/*! ./itemProcessors/createAttribute/CreateAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js"), exports);
2541
+ __exportStar(__webpack_require__(/*! ./itemProcessors/GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js"), exports);
2542
+ __exportStar(__webpack_require__(/*! ./itemProcessors/IRequestItemProcessor */ "./dist/modules/requests/itemProcessors/IRequestItemProcessor.js"), exports);
2543
+ __exportStar(__webpack_require__(/*! ./itemProcessors/ProcessorConstructor */ "./dist/modules/requests/itemProcessors/ProcessorConstructor.js"), exports);
2544
+ __exportStar(__webpack_require__(/*! ./itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js"), exports);
2545
+ __exportStar(__webpack_require__(/*! ./itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js"), exports);
2546
+ __exportStar(__webpack_require__(/*! ./itemProcessors/readAttribute/ReadAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js"), exports);
2547
+ __exportStar(__webpack_require__(/*! ./itemProcessors/registerAttributeListener/RegisterAttributeListenerRequestItemProcessor */ "./dist/modules/requests/itemProcessors/registerAttributeListener/RegisterAttributeListenerRequestItemProcessor.js"), exports);
2548
+ __exportStar(__webpack_require__(/*! ./itemProcessors/RequestItemConstructor */ "./dist/modules/requests/itemProcessors/RequestItemConstructor.js"), exports);
2549
+ __exportStar(__webpack_require__(/*! ./itemProcessors/RequestItemProcessorRegistry */ "./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js"), exports);
2550
+ __exportStar(__webpack_require__(/*! ./itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js"), exports);
2551
+ __exportStar(__webpack_require__(/*! ./itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js"), exports);
2552
+ __exportStar(__webpack_require__(/*! ./itemProcessors/ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js"), exports);
2553
+ __exportStar(__webpack_require__(/*! ./local/LocalRequest */ "./dist/modules/requests/local/LocalRequest.js"), exports);
2554
+ __exportStar(__webpack_require__(/*! ./local/LocalRequestStatus */ "./dist/modules/requests/local/LocalRequestStatus.js"), exports);
2555
+ __exportStar(__webpack_require__(/*! ./local/LocalRequestStatusLogEntry */ "./dist/modules/requests/local/LocalRequestStatusLogEntry.js"), exports);
2556
+ __exportStar(__webpack_require__(/*! ./local/LocalResponse */ "./dist/modules/requests/local/LocalResponse.js"), exports);
2557
+ __exportStar(__webpack_require__(/*! ./outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters */ "./dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js"), exports);
2558
+ __exportStar(__webpack_require__(/*! ./outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters */ "./dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js"), exports);
2559
+ __exportStar(__webpack_require__(/*! ./outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters */ "./dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js"), exports);
2560
+ __exportStar(__webpack_require__(/*! ./outgoing/createOutgoingRequest/CreateOutgoingRequestParameters */ "./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js"), exports);
2561
+ __exportStar(__webpack_require__(/*! ./outgoing/OutgoingRequestsController */ "./dist/modules/requests/outgoing/OutgoingRequestsController.js"), exports);
2562
+ __exportStar(__webpack_require__(/*! ./outgoing/sentOutgoingRequest/SentOutgoingRequestParameters */ "./dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js"), exports);
2563
+ //# sourceMappingURL=index.js.map
2564
+
2565
+ /***/ }),
2566
+
2163
2567
  /***/ "./dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js":
2164
2568
  /*!******************************************************************************!*\
2165
2569
  !*** ./dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js ***!
@@ -2400,64 +2804,63 @@ const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestI
2400
2804
  const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
2401
2805
  class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2402
2806
  canCreateOutgoingRequestItem(requestItem, _request, recipient) {
2403
- const recipientIsOwnerOfTheAttribute = requestItem.attribute.owner.equals(recipient);
2404
- // When the owner of the Attribute is not the recipient of the Request, this means that
2405
- // we need to set the sourceAttributeId, because we have to set shareInfo as soon as the
2406
- // RequestItem was accepted.
2407
- if (!recipientIsOwnerOfTheAttribute && !requestItem.sourceAttributeId) {
2408
- 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."));
2409
- }
2807
+ const recipientIsAttributeOwner = requestItem.attribute.owner.equals(recipient);
2808
+ const senderIsAttributeOwner = requestItem.attribute.owner.equals(this.currentIdentityAddress);
2809
+ const ownerIsEmptyString = requestItem.attribute.owner.toString() === "";
2410
2810
  if (requestItem.attribute instanceof content_1.IdentityAttribute) {
2411
- return this.canCreateRequestItemWithIdentityAttribute(requestItem);
2412
- }
2413
- return this.canCreateRequestItemWithRelationshipAttribute(requestItem);
2414
- }
2415
- canCreateRequestItemWithIdentityAttribute(requestItem) {
2416
- const iAmOwnerOfTheAttribute = this.accountController.identity.isMe(requestItem.attribute.owner);
2417
- if (!iAmOwnerOfTheAttribute) {
2418
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem(`Cannot send Identity Attributes of which you are not the owner via ${content_1.CreateAttributeRequestItem.name}. Consider using a ${content_1.ProposeAttributeRequestItem.name} instead.`));
2811
+ if (senderIsAttributeOwner) {
2812
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot create own Attributes with a CreateAttributeRequestItem. Use a ShareAttributeRequestItem instead."));
2813
+ }
2814
+ if (recipientIsAttributeOwner || ownerIsEmptyString || recipient === undefined) {
2815
+ return ValidationResult_1.ValidationResult.success();
2816
+ }
2817
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given `attribute` can only be the recipient's address or an empty string. The latter will default to the recipient's address."));
2419
2818
  }
2420
- return ValidationResult_1.ValidationResult.success();
2421
- }
2422
- canCreateRequestItemWithRelationshipAttribute(requestItem) {
2423
- const iAmOwnerOfTheAttribute = this.accountController.identity.isMe(requestItem.attribute.owner);
2424
- if (!iAmOwnerOfTheAttribute) {
2425
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot send Relationship Attributes of which you are not the owner."));
2819
+ if (recipientIsAttributeOwner || senderIsAttributeOwner || ownerIsEmptyString || recipient === undefined) {
2820
+ return ValidationResult_1.ValidationResult.success();
2426
2821
  }
2427
- return ValidationResult_1.ValidationResult.success();
2822
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given 'attribute' can only be the sender's address, the recipient's address or an empty string. The latter will default to the recipient's address."));
2428
2823
  }
2429
2824
  async accept(requestItem, _params, requestInfo) {
2430
- const peerLocalAttribute = await this.consumptionController.attributes.createPeerLocalAttribute({
2431
- content: requestItem.attribute,
2432
- peer: requestInfo.peer,
2433
- requestReference: requestInfo.id
2434
- });
2435
- return content_1.CreateAttributeAcceptResponseItem.from({
2436
- attributeId: peerLocalAttribute.id,
2437
- result: content_1.ResponseItemResult.Accepted
2438
- });
2439
- }
2440
- async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
2441
- if (!(responseItem instanceof content_1.CreateAttributeAcceptResponseItem)) {
2442
- return;
2825
+ if (requestItem.attribute.owner.toString() === "") {
2826
+ requestItem.attribute.owner = this.currentIdentityAddress;
2443
2827
  }
2444
- if (requestItem.sourceAttributeId) {
2445
- const sourceAttribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.sourceAttributeId);
2446
- await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2447
- attributeId: responseItem.attributeId,
2448
- sourceAttributeId: sourceAttribute.id,
2828
+ let sharedAttribute;
2829
+ if (requestItem.attribute instanceof content_1.IdentityAttribute) {
2830
+ const repositoryAttribute = await this.consumptionController.attributes.createLocalAttribute({
2831
+ content: requestItem.attribute
2832
+ });
2833
+ sharedAttribute = await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2449
2834
  peer: requestInfo.peer,
2450
- requestReference: requestInfo.id
2835
+ requestReference: requestInfo.id,
2836
+ sourceAttributeId: repositoryAttribute.id
2451
2837
  });
2452
2838
  }
2453
2839
  else {
2454
- await this.consumptionController.attributes.createPeerLocalAttribute({
2455
- id: responseItem.attributeId,
2840
+ sharedAttribute = await this.consumptionController.attributes.createPeerLocalAttribute({
2456
2841
  content: requestItem.attribute,
2457
2842
  peer: requestInfo.peer,
2458
2843
  requestReference: requestInfo.id
2459
2844
  });
2460
2845
  }
2846
+ return content_1.CreateAttributeAcceptResponseItem.from({
2847
+ result: content_1.ResponseItemResult.Accepted,
2848
+ attributeId: sharedAttribute.id
2849
+ });
2850
+ }
2851
+ async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
2852
+ if (!(responseItem instanceof content_1.CreateAttributeAcceptResponseItem)) {
2853
+ return;
2854
+ }
2855
+ if (requestItem.attribute.owner.toString() === "") {
2856
+ requestItem.attribute.owner = requestInfo.peer;
2857
+ }
2858
+ await this.consumptionController.attributes.createPeerLocalAttribute({
2859
+ id: responseItem.attributeId,
2860
+ content: requestItem.attribute,
2861
+ peer: requestInfo.peer,
2862
+ requestReference: requestInfo.id
2863
+ });
2461
2864
  }
2462
2865
  }
2463
2866
  exports.CreateAttributeRequestItemProcessor = CreateAttributeRequestItemProcessor;
@@ -2557,7 +2960,7 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
2557
2960
  }
2558
2961
  validateAttribute(attribute) {
2559
2962
  if (attribute.owner.toString() !== "") {
2560
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given attribute can only be an empty string. This is because you can only propose Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2963
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given `attribute` can only be an empty string. This is because you can only propose Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2561
2964
  }
2562
2965
  return ValidationResult_1.ValidationResult.success();
2563
2966
  }
@@ -2567,7 +2970,7 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
2567
2970
  return commonQueryValidationResult;
2568
2971
  }
2569
2972
  if (requestItem.query instanceof content_1.RelationshipAttributeQuery && requestItem.query.owner.toString() !== "") {
2570
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given query can only be an empty string. This is because you can only propose Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2973
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given `query` can only be an empty string. This is because you can only propose Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2571
2974
  }
2572
2975
  return ValidationResult_1.ValidationResult.success();
2573
2976
  }
@@ -2742,7 +3145,8 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
2742
3145
  if (!foundAttribute) {
2743
3146
  return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, requestInfo.id.toString()));
2744
3147
  }
2745
- if (!this.accountController.identity.isMe(foundAttribute.content.owner)) {
3148
+ const ownerIsCurrentIdentity = this.accountController.identity.isMe(foundAttribute.content.owner);
3149
+ if (!ownerIsCurrentIdentity) {
2746
3150
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The given Attribute belongs to someone else. You can only share own Attributes."));
2747
3151
  }
2748
3152
  }
@@ -2804,6 +3208,35 @@ exports.ReadAttributeRequestItemProcessor = ReadAttributeRequestItemProcessor;
2804
3208
 
2805
3209
  /***/ }),
2806
3210
 
3211
+ /***/ "./dist/modules/requests/itemProcessors/registerAttributeListener/RegisterAttributeListenerRequestItemProcessor.js":
3212
+ /*!*************************************************************************************************************************!*\
3213
+ !*** ./dist/modules/requests/itemProcessors/registerAttributeListener/RegisterAttributeListenerRequestItemProcessor.js ***!
3214
+ \*************************************************************************************************************************/
3215
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
3216
+
3217
+ "use strict";
3218
+
3219
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
3220
+ exports.RegisterAttributeListenerRequestItemProcessor = void 0;
3221
+ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
3222
+ const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js");
3223
+ class RegisterAttributeListenerRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
3224
+ async accept(requestItem, _params, requestInfo) {
3225
+ const listener = await this.consumptionController.attributeListeners.createAttributeListener({
3226
+ peer: requestInfo.peer,
3227
+ query: requestItem.query
3228
+ });
3229
+ return content_1.RegisterAttributeListenerAcceptResponseItem.from({
3230
+ result: content_1.ResponseItemResult.Accepted,
3231
+ listenerId: listener.id.toString()
3232
+ });
3233
+ }
3234
+ }
3235
+ exports.RegisterAttributeListenerRequestItemProcessor = RegisterAttributeListenerRequestItemProcessor;
3236
+ //# sourceMappingURL=RegisterAttributeListenerRequestItemProcessor.js.map
3237
+
3238
+ /***/ }),
3239
+
2807
3240
  /***/ "./dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js":
2808
3241
  /*!**********************************************************************************************************!*\
2809
3242
  !*** ./dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js ***!
@@ -2845,91 +3278,53 @@ exports.AcceptShareAttributeRequestItemParameters = AcceptShareAttributeRequestI
2845
3278
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2846
3279
  exports.ShareAttributeRequestItemProcessor = void 0;
2847
3280
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
2848
- const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
2849
3281
  const consumption_1 = __webpack_require__(/*! ../../../../consumption */ "./dist/consumption/index.js");
2850
3282
  const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js");
2851
3283
  const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
2852
3284
  class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2853
- async canCreateOutgoingRequestItem(requestItem, _request, recipient) {
2854
- const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
2855
- if (!attribute) {
2856
- return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(content_1.Attribute, requestItem.attributeId.toString()));
2857
- }
2858
- const attributeOwnerValidationResult = this.validateAttributeOwner(attribute.content, this.currentIdentityAddress, recipient);
2859
- if (attributeOwnerValidationResult.isError()) {
2860
- return attributeOwnerValidationResult;
2861
- }
2862
- return ValidationResult_1.ValidationResult.success();
2863
- }
2864
- async checkPrerequisitesOfIncomingRequestItem(requestItem, requestInfo) {
2865
- const relationshipToShareWith = await this.accountController.relationships.getRelationshipToIdentity(requestItem.shareWith);
2866
- if (!relationshipToShareWith) {
2867
- return false; // Should the containing Request move to Error state?
2868
- }
2869
- const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
2870
- if (!attribute) {
2871
- return false; // Should the containing Request move to Error state?
2872
- }
2873
- if (this.validateAttributeOwner(attribute.content, requestInfo.peer, this.currentIdentityAddress).isError()) {
2874
- return false;
3285
+ canCreateOutgoingRequestItem(requestItem, _request, _recipient) {
3286
+ if (requestItem.attribute instanceof content_1.IdentityAttribute) {
3287
+ return this.canCreateWithIdentityAttribute(requestItem);
2875
3288
  }
2876
- return true;
3289
+ return this.canCreateWithRelationshipAttribute(requestItem.attribute);
2877
3290
  }
2878
- validateAttributeOwner(attribute, sender, recipient) {
2879
- const attributeOwner = attribute.owner;
2880
- if (attribute instanceof content_1.IdentityAttribute) {
2881
- if (!attributeOwner.equals(recipient)) {
2882
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Can only request sharing of identity attributes owned by the recipient."));
2883
- }
2884
- }
2885
- if (attribute instanceof content_1.RelationshipAttribute) {
2886
- if (!attributeOwner.equals(recipient) && !attributeOwner.equals(sender)) {
2887
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot request sharing of relationship attributes not owned by recipient or sender."));
2888
- }
3291
+ canCreateWithIdentityAttribute(requestItem) {
3292
+ const ownerIsEmpty = requestItem.attribute.owner.toString() === "";
3293
+ const ownerIsCurrentIdentity = requestItem.attribute.owner.equals(this.currentIdentityAddress);
3294
+ if (!ownerIsEmpty && !ownerIsCurrentIdentity) {
3295
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given `attribute` can only be an empty string. This is because you can only send Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2889
3296
  }
2890
3297
  return ValidationResult_1.ValidationResult.success();
2891
3298
  }
2892
- canAccept(_requestItem, _params, _requestInfo) {
3299
+ canCreateWithRelationshipAttribute(attribute) {
3300
+ if (attribute.confidentiality === content_1.RelationshipAttributeConfidentiality.Private) {
3301
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The confidentiality of the given `attribute` is private. Therefore you are not allowed to share it."));
3302
+ }
2893
3303
  return ValidationResult_1.ValidationResult.success();
2894
3304
  }
2895
- async accept(requestItem, _params, _requestInfo) {
2896
- const attribute = (await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId));
2897
- if (!(await this.isAttributeAlreadyShared(attribute, requestItem.shareWith))) {
2898
- await this.shareAttribute(attribute, requestItem.shareWith);
3305
+ async accept(requestItem, _params, requestInfo) {
3306
+ if (requestItem.attribute.owner.toString() === "") {
3307
+ requestItem.attribute.owner = requestInfo.peer;
2899
3308
  }
2900
- return content_1.AcceptResponseItem.from({ result: content_1.ResponseItemResult.Accepted });
2901
- }
2902
- async isAttributeAlreadyShared(attribute, shareWith) {
2903
- if (attribute.content instanceof content_1.IdentityAttribute) {
2904
- return ((await this.consumptionController.attributes.getLocalAttributes({
2905
- "shareInfo.sourceAttribute": attribute.shareInfo.sourceAttribute.toString(),
2906
- "shareInfo.peer": shareWith.toString()
2907
- })).length > 0);
2908
- }
2909
- return ((await this.consumptionController.attributes.getLocalAttributes({
2910
- "shareInfo.sourceAttribute": attribute.id.toString(),
2911
- "shareInfo.peer": shareWith.toString()
2912
- })).length > 0);
2913
- }
2914
- async shareAttribute(attribute, shareWith) {
2915
- const createAttributeRequestItem = content_1.CreateAttributeRequestItem.from({
2916
- attribute: attribute.content,
2917
- mustBeAccepted: true,
2918
- sourceAttributeId: attribute.id
2919
- });
2920
- const createAttributeRequest = await this.consumptionController.outgoingRequests.create({
2921
- peer: shareWith,
2922
- content: content_1.Request.from({
2923
- items: [createAttributeRequestItem]
2924
- })
3309
+ const localAttribute = await this.consumptionController.attributes.createPeerLocalAttribute({
3310
+ content: requestItem.attribute,
3311
+ peer: requestInfo.peer,
3312
+ requestReference: requestInfo.id
2925
3313
  });
2926
- const message = await this.accountController.messages.sendMessage({
2927
- recipients: [shareWith],
2928
- content: createAttributeRequest.content
3314
+ return content_1.ShareAttributeAcceptResponseItem.from({
3315
+ attributeId: localAttribute.id,
3316
+ result: content_1.ResponseItemResult.Accepted
2929
3317
  });
2930
- await this.consumptionController.outgoingRequests.sent({
2931
- requestId: createAttributeRequest.id,
2932
- requestSourceObject: message
3318
+ }
3319
+ async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
3320
+ if (!(responseItem instanceof content_1.ShareAttributeAcceptResponseItem)) {
3321
+ return;
3322
+ }
3323
+ await this.consumptionController.attributes.createSharedLocalAttributeCopy({
3324
+ attributeId: responseItem.attributeId,
3325
+ sourceAttributeId: requestItem.sourceAttributeId,
3326
+ peer: requestInfo.peer,
3327
+ requestReference: requestInfo.id
2933
3328
  });
2934
3329
  }
2935
3330
  }
@@ -2951,14 +3346,14 @@ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
2951
3346
  const consumption_1 = __webpack_require__(/*! ../../../../consumption */ "./dist/consumption/index.js");
2952
3347
  const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
2953
3348
  function validateQuery(query, sender, recipient) {
2954
- if (query instanceof content_1.RelationshipAttributeQuery) {
2955
- if (query.thirdParty?.equals(sender)) {
3349
+ if (query instanceof content_1.ThirdPartyRelationshipAttributeQuery) {
3350
+ if (query.thirdParty.equals(sender)) {
2956
3351
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot query an Attribute with the own address as third party."));
2957
3352
  }
2958
- if (query.thirdParty?.equals(recipient)) {
3353
+ if (query.thirdParty.equals(recipient)) {
2959
3354
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot query an Attribute with the recipient's address as third party."));
2960
3355
  }
2961
- if (query.owner.equals(sender) && query.thirdParty !== undefined) {
3356
+ if (query.owner.equals(sender)) {
2962
3357
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot query own Attributes from a third party."));
2963
3358
  }
2964
3359
  }
@@ -3254,6 +3649,7 @@ const LocalRequestStatus_1 = __webpack_require__(/*! ../local/LocalRequestStatus
3254
3649
  const LocalResponse_1 = __webpack_require__(/*! ../local/LocalResponse */ "./dist/modules/requests/local/LocalResponse.js");
3255
3650
  const CompleteOutgoingRequestParameters_1 = __webpack_require__(/*! ./completeOutgoingRequest/CompleteOutgoingRequestParameters */ "./dist/modules/requests/outgoing/completeOutgoingRequest/CompleteOutgoingRequestParameters.js");
3256
3651
  const CreateOutgoingRequestFromRelationshipCreationChangeParameters_1 = __webpack_require__(/*! ./createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters */ "./dist/modules/requests/outgoing/createFromRelationshipCreationChange/CreateOutgoingRequestFromRelationshipCreationChangeParameters.js");
3652
+ const CanCreateOutgoingRequestParameters_1 = __webpack_require__(/*! ./createOutgoingRequest/CanCreateOutgoingRequestParameters */ "./dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js");
3257
3653
  const CreateOutgoingRequestParameters_1 = __webpack_require__(/*! ./createOutgoingRequest/CreateOutgoingRequestParameters */ "./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js");
3258
3654
  const SentOutgoingRequestParameters_1 = __webpack_require__(/*! ./sentOutgoingRequest/SentOutgoingRequestParameters */ "./dist/modules/requests/outgoing/sentOutgoingRequest/SentOutgoingRequestParameters.js");
3259
3655
  class OutgoingRequestsController extends consumption_1.ConsumptionBaseController {
@@ -3265,7 +3661,7 @@ class OutgoingRequestsController extends consumption_1.ConsumptionBaseController
3265
3661
  this.identity = identity;
3266
3662
  }
3267
3663
  async canCreate(params) {
3268
- const parsedParams = CreateOutgoingRequestParameters_1.CreateOutgoingRequestParameters.from(params);
3664
+ const parsedParams = CanCreateOutgoingRequestParameters_1.CanCreateOutgoingRequestParameters.from(params);
3269
3665
  const innerResults = await this.canCreateItems(parsedParams.content, parsedParams.peer);
3270
3666
  const result = ValidationResult_1.ValidationResult.fromItems(innerResults);
3271
3667
  return result;
@@ -3469,6 +3865,11 @@ class OutgoingRequestsController extends consumption_1.ConsumptionBaseController
3469
3865
  const requests = requestDocs.map((r) => LocalRequest_1.LocalRequest.from(r));
3470
3866
  return requests;
3471
3867
  }
3868
+ async discardOutgoingRequest(id) {
3869
+ const request = await this.getOrThrow(id);
3870
+ this.assertRequestStatus(request, LocalRequestStatus_1.LocalRequestStatus.Draft);
3871
+ await this.localRequests.delete(request);
3872
+ }
3472
3873
  async getOutgoingRequest(id) {
3473
3874
  const requestDoc = await this.localRequests.findOne({ id: id.toString(), isOwn: true });
3474
3875
  const request = requestDoc ? LocalRequest_1.LocalRequest.from(requestDoc) : undefined;
@@ -3593,6 +3994,51 @@ exports.CreateOutgoingRequestFromRelationshipCreationChangeParameters = CreateOu
3593
3994
 
3594
3995
  /***/ }),
3595
3996
 
3997
+ /***/ "./dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js":
3998
+ /*!****************************************************************************************************!*\
3999
+ !*** ./dist/modules/requests/outgoing/createOutgoingRequest/CanCreateOutgoingRequestParameters.js ***!
4000
+ \****************************************************************************************************/
4001
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4002
+
4003
+ "use strict";
4004
+
4005
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4006
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4007
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4008
+ 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;
4009
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
4010
+ };
4011
+ var __metadata = (this && this.__metadata) || function (k, v) {
4012
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4013
+ };
4014
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
4015
+ exports.CanCreateOutgoingRequestParameters = void 0;
4016
+ const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
4017
+ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
4018
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
4019
+ let CanCreateOutgoingRequestParameters = class CanCreateOutgoingRequestParameters extends ts_serval_1.Serializable {
4020
+ static from(value) {
4021
+ return this.fromAny(value);
4022
+ }
4023
+ };
4024
+ __decorate([
4025
+ (0, ts_serval_1.serialize)(),
4026
+ (0, ts_serval_1.validate)(),
4027
+ __metadata("design:type", content_1.Request)
4028
+ ], CanCreateOutgoingRequestParameters.prototype, "content", void 0);
4029
+ __decorate([
4030
+ (0, ts_serval_1.serialize)(),
4031
+ (0, ts_serval_1.validate)({ nullable: true }),
4032
+ __metadata("design:type", transport_1.CoreAddress)
4033
+ ], CanCreateOutgoingRequestParameters.prototype, "peer", void 0);
4034
+ CanCreateOutgoingRequestParameters = __decorate([
4035
+ (0, ts_serval_1.type)("CanCreateOutgoingRequestParameters")
4036
+ ], CanCreateOutgoingRequestParameters);
4037
+ exports.CanCreateOutgoingRequestParameters = CanCreateOutgoingRequestParameters;
4038
+ //# sourceMappingURL=CanCreateOutgoingRequestParameters.js.map
4039
+
4040
+ /***/ }),
4041
+
3596
4042
  /***/ "./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js":
3597
4043
  /*!*************************************************************************************************!*\
3598
4044
  !*** ./dist/modules/requests/outgoing/createOutgoingRequest/CreateOutgoingRequestParameters.js ***!
@@ -3710,7 +4156,7 @@ class SettingsController extends consumption_1.ConsumptionBaseController {
3710
4156
  }
3711
4157
  async getSettings(query) {
3712
4158
  const items = await this.settings.find(query);
3713
- return await this.parseArray(items, Setting_1.Setting);
4159
+ return this.parseArray(items, Setting_1.Setting);
3714
4160
  }
3715
4161
  async createSetting(parameters) {
3716
4162
  const setting = Setting_1.Setting.from({
@@ -3742,6 +4188,36 @@ exports.SettingsController = SettingsController;
3742
4188
 
3743
4189
  /***/ }),
3744
4190
 
4191
+ /***/ "./dist/modules/settings/index.js":
4192
+ /*!****************************************!*\
4193
+ !*** ./dist/modules/settings/index.js ***!
4194
+ \****************************************/
4195
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
4196
+
4197
+ "use strict";
4198
+
4199
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4200
+ if (k2 === undefined) k2 = k;
4201
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4202
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
4203
+ desc = { enumerable: true, get: function() { return m[k]; } };
4204
+ }
4205
+ Object.defineProperty(o, k2, desc);
4206
+ }) : (function(o, m, k, k2) {
4207
+ if (k2 === undefined) k2 = k;
4208
+ o[k2] = m[k];
4209
+ }));
4210
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
4211
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
4212
+ };
4213
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
4214
+ __exportStar(__webpack_require__(/*! ./local/CreateSettingParameter */ "./dist/modules/settings/local/CreateSettingParameter.js"), exports);
4215
+ __exportStar(__webpack_require__(/*! ./local/Setting */ "./dist/modules/settings/local/Setting.js"), exports);
4216
+ __exportStar(__webpack_require__(/*! ./SettingsController */ "./dist/modules/settings/SettingsController.js"), exports);
4217
+ //# sourceMappingURL=index.js.map
4218
+
4219
+ /***/ }),
4220
+
3745
4221
  /***/ "./dist/modules/settings/local/CreateSettingParameter.js":
3746
4222
  /*!***************************************************************!*\
3747
4223
  !*** ./dist/modules/settings/local/CreateSettingParameter.js ***!
@@ -4184,12 +4660,19 @@ __webpack_require__(/*! reflect-metadata */ "./node_modules/reflect-metadata/Ref
4184
4660
  const EventBus_1 = __webpack_require__(/*! ../EventBus */ "./node_modules/@js-soft/ts-utils/dist/eventBus/EventBus.js");
4185
4661
  const SubscriptionTargetInfo_1 = __webpack_require__(/*! ../SubscriptionTargetInfo */ "./node_modules/@js-soft/ts-utils/dist/eventBus/SubscriptionTargetInfo.js");
4186
4662
  class EventEmitter2EventBus {
4663
+ errorCallback;
4187
4664
  emitter;
4188
4665
  listeners = new Map();
4189
4666
  nextId = 0;
4190
4667
  invocationPromises = [];
4191
- constructor(options) {
4192
- this.emitter = new eventemitter2_1.EventEmitter2({ ...options, wildcard: true, maxListeners: 50, verboseMemoryLeak: true });
4668
+ constructor(errorCallback, eventEmitter2Options) {
4669
+ this.errorCallback = errorCallback;
4670
+ this.emitter = new eventemitter2_1.EventEmitter2({
4671
+ maxListeners: 50,
4672
+ verboseMemoryLeak: true,
4673
+ ...eventEmitter2Options,
4674
+ wildcard: true
4675
+ });
4193
4676
  }
4194
4677
  subscribe(subscriptionTarget, handler) {
4195
4678
  return this.registerHandler(subscriptionTarget, handler);
@@ -4209,7 +4692,7 @@ class EventEmitter2EventBus {
4209
4692
  }
4210
4693
  const invocationPromise = (async () => await handler(event))();
4211
4694
  this.invocationPromises.push(invocationPromise);
4212
- await invocationPromise;
4695
+ await invocationPromise.catch((e) => this.errorCallback(e, subscriptionTargetInfo.namespace));
4213
4696
  this.invocationPromises = this.invocationPromises.filter((p) => p !== invocationPromise);
4214
4697
  if (isOneTimeHandler)
4215
4698
  this.listeners.delete(listenerId);
@@ -4273,7 +4756,11 @@ exports.EventEmitter2EventBus = EventEmitter2EventBus;
4273
4756
 
4274
4757
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4275
4758
  if (k2 === undefined) k2 = k;
4276
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4759
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4760
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
4761
+ desc = { enumerable: true, get: function() { return m[k]; } };
4762
+ }
4763
+ Object.defineProperty(o, k2, desc);
4277
4764
  }) : (function(o, m, k, k2) {
4278
4765
  if (k2 === undefined) k2 = k;
4279
4766
  o[k2] = m[k];
@@ -4342,7 +4829,11 @@ exports.Event = Event;
4342
4829
 
4343
4830
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4344
4831
  if (k2 === undefined) k2 = k;
4345
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4832
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4833
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
4834
+ desc = { enumerable: true, get: function() { return m[k]; } };
4835
+ }
4836
+ Object.defineProperty(o, k2, desc);
4346
4837
  }) : (function(o, m, k, k2) {
4347
4838
  if (k2 === undefined) k2 = k;
4348
4839
  o[k2] = m[k];
@@ -4367,7 +4858,11 @@ __exportStar(__webpack_require__(/*! ./Event */ "./node_modules/@js-soft/ts-util
4367
4858
 
4368
4859
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4369
4860
  if (k2 === undefined) k2 = k;
4370
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4861
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4862
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
4863
+ desc = { enumerable: true, get: function() { return m[k]; } };
4864
+ }
4865
+ Object.defineProperty(o, k2, desc);
4371
4866
  }) : (function(o, m, k, k2) {
4372
4867
  if (k2 === undefined) k2 = k;
4373
4868
  o[k2] = m[k];
@@ -4492,6 +4987,9 @@ class ApplicationError extends Error {
4492
4987
  equals(error) {
4493
4988
  return this.code === error.code;
4494
4989
  }
4990
+ toString() {
4991
+ return JSON.stringify({ code: this.code, message: this.message, data: this.data }, undefined, 2);
4992
+ }
4495
4993
  }
4496
4994
  exports.ApplicationError = ApplicationError;
4497
4995
  //# sourceMappingURL=ApplicationError.js.map
@@ -4537,7 +5035,7 @@ class Result {
4537
5035
  }
4538
5036
  get value() {
4539
5037
  if (!this.isSuccess) {
4540
- throw new Error("Can't get the value of an error result. Use 'error' instead.");
5038
+ throw new Error(`Can't get the value of an error result. Use 'error' instead. Root error: \r\n${this.error}`);
4541
5039
  }
4542
5040
  return this._value;
4543
5041
  }
@@ -4563,7 +5061,11 @@ exports.Result = Result;
4563
5061
 
4564
5062
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4565
5063
  if (k2 === undefined) k2 = k;
4566
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5064
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5065
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5066
+ desc = { enumerable: true, get: function() { return m[k]; } };
5067
+ }
5068
+ Object.defineProperty(o, k2, desc);
4567
5069
  }) : (function(o, m, k, k2) {
4568
5070
  if (k2 === undefined) k2 = k;
4569
5071
  o[k2] = m[k];
@@ -4705,7 +5207,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*!
4705
5207
  var obj = {};
4706
5208
  var key;
4707
5209
  var len = keys.length;
4708
- var valuesCount = values ? value.length : 0;
5210
+ var valuesCount = values ? values.length : 0;
4709
5211
  for (var i = 0; i < len; i++) {
4710
5212
  key = keys[i];
4711
5213
  obj[key] = i < valuesCount ? values[i] : undefined;
@@ -8882,7 +9384,8 @@ function clone$1(dur, alts, clear = false) {
8882
9384
  ...(alts.values || {})
8883
9385
  },
8884
9386
  loc: dur.loc.clone(alts.loc),
8885
- conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy
9387
+ conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,
9388
+ matrix: alts.matrix || dur.matrix
8886
9389
  };
8887
9390
  return new Duration(conf);
8888
9391
  }
@@ -8921,7 +9424,7 @@ function normalizeValues(matrix, vals) {
8921
9424
  *
8922
9425
  * Here is a brief overview of commonly used methods and getters in Duration:
8923
9426
  *
8924
- * * **Creation** To create a Duration, use {@link Duration#fromMillis}, {@link Duration#fromObject}, or {@link Duration#fromISO}.
9427
+ * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.
8925
9428
  * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.
8926
9429
  * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.
8927
9430
  * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.
@@ -8937,10 +9440,16 @@ class Duration {
8937
9440
  */
8938
9441
  constructor(config) {
8939
9442
  const accurate = config.conversionAccuracy === "longterm" || false;
9443
+ let matrix = accurate ? accurateMatrix : casualMatrix;
9444
+
9445
+ if (config.matrix) {
9446
+ matrix = config.matrix;
9447
+ }
8940
9448
  /**
8941
9449
  * @access private
8942
9450
  */
8943
9451
 
9452
+
8944
9453
  this.values = config.values;
8945
9454
  /**
8946
9455
  * @access private
@@ -8961,7 +9470,7 @@ class Duration {
8961
9470
  * @access private
8962
9471
  */
8963
9472
 
8964
- this.matrix = accurate ? accurateMatrix : casualMatrix;
9473
+ this.matrix = matrix;
8965
9474
  /**
8966
9475
  * @access private
8967
9476
  */
@@ -9000,7 +9509,8 @@ class Duration {
9000
9509
  * @param {Object} [opts=[]] - options for creating this Duration
9001
9510
  * @param {string} [opts.locale='en-US'] - the locale to use
9002
9511
  * @param {string} opts.numberingSystem - the numbering system to use
9003
- * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
9512
+ * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
9513
+ * @param {string} [opts.matrix=Object] - the custom conversion system to use
9004
9514
  * @return {Duration}
9005
9515
  */
9006
9516
 
@@ -9013,7 +9523,8 @@ class Duration {
9013
9523
  return new Duration({
9014
9524
  values: normalizeObject(obj, Duration.normalizeUnit),
9015
9525
  loc: Locale.fromObject(opts),
9016
- conversionAccuracy: opts.conversionAccuracy
9526
+ conversionAccuracy: opts.conversionAccuracy,
9527
+ matrix: opts.matrix
9017
9528
  });
9018
9529
  }
9019
9530
  /**
@@ -9045,7 +9556,8 @@ class Duration {
9045
9556
  * @param {Object} opts - options for parsing
9046
9557
  * @param {string} [opts.locale='en-US'] - the locale to use
9047
9558
  * @param {string} opts.numberingSystem - the numbering system to use
9048
- * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
9559
+ * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
9560
+ * @param {string} [opts.matrix=Object] - the preset conversion system to use
9049
9561
  * @see https://en.wikipedia.org/wiki/ISO_8601#Durations
9050
9562
  * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }
9051
9563
  * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }
@@ -9069,7 +9581,8 @@ class Duration {
9069
9581
  * @param {Object} opts - options for parsing
9070
9582
  * @param {string} [opts.locale='en-US'] - the locale to use
9071
9583
  * @param {string} opts.numberingSystem - the numbering system to use
9072
- * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
9584
+ * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
9585
+ * @param {string} [opts.matrix=Object] - the conversion system to use
9073
9586
  * @see https://en.wikipedia.org/wiki/ISO_8601#Times
9074
9587
  * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }
9075
9588
  * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
@@ -9400,7 +9913,7 @@ class Duration {
9400
9913
  * Scale this Duration by the specified amount. Return a newly-constructed Duration.
9401
9914
  * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.
9402
9915
  * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }
9403
- * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === "hour" ? x * 2 : x) //=> { hours: 2, minutes: 30 }
9916
+ * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === "hours" ? x * 2 : x) //=> { hours: 2, minutes: 30 }
9404
9917
  * @return {Duration}
9405
9918
  */
9406
9919
 
@@ -9458,20 +9971,18 @@ class Duration {
9458
9971
  reconfigure({
9459
9972
  locale,
9460
9973
  numberingSystem,
9461
- conversionAccuracy
9974
+ conversionAccuracy,
9975
+ matrix
9462
9976
  } = {}) {
9463
9977
  const loc = this.loc.clone({
9464
9978
  locale,
9465
9979
  numberingSystem
9466
- }),
9467
- opts = {
9468
- loc
9980
+ });
9981
+ const opts = {
9982
+ loc,
9983
+ matrix,
9984
+ conversionAccuracy
9469
9985
  };
9470
-
9471
- if (conversionAccuracy) {
9472
- opts.conversionAccuracy = conversionAccuracy;
9473
- }
9474
-
9475
9986
  return clone$1(this, opts);
9476
9987
  }
9477
9988
  /**
@@ -9745,10 +10256,10 @@ function validateStartEnd(start, end) {
9745
10256
  *
9746
10257
  * Here is a brief overview of the most commonly used methods and getters in Interval:
9747
10258
  *
9748
- * * **Creation** To create an Interval, use {@link Interval#fromDateTimes}, {@link Interval#after}, {@link Interval#before}, or {@link Interval#fromISO}.
10259
+ * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.
9749
10260
  * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.
9750
10261
  * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.
9751
- * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval#merge}, {@link Interval#xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.
10262
+ * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.
9752
10263
  * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}
9753
10264
  * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.
9754
10265
  */
@@ -11189,7 +11700,6 @@ function expandMacroTokens(tokens, locale) {
11189
11700
  * @private
11190
11701
  */
11191
11702
 
11192
-
11193
11703
  function explainFromTokens(locale, input, format) {
11194
11704
  const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),
11195
11705
  units = tokens.map(t => unitForToken(t, locale)),
@@ -11785,7 +12295,7 @@ function lastOpts(argList) {
11785
12295
  *
11786
12296
  * Here is a brief overview of the most commonly used functionality it provides:
11787
12297
  *
11788
- * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime#local}, {@link DateTime#utc}, and (most flexibly) {@link DateTime#fromObject}. To create one from a standard string format, use {@link DateTime#fromISO}, {@link DateTime#fromHTTP}, and {@link DateTime#fromRFC2822}. To create one from a custom string format, use {@link DateTime#fromFormat}. To create one from a native JS date, use {@link DateTime#fromJSDate}.
12298
+ * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.
11789
12299
  * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},
11790
12300
  * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.
11791
12301
  * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.
@@ -12324,6 +12834,19 @@ class DateTime {
12324
12834
  static parseFormatForOpts(formatOpts, localeOpts = {}) {
12325
12835
  const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));
12326
12836
  return !tokenList ? null : tokenList.map(t => t ? t.val : null).join("");
12837
+ }
12838
+ /**
12839
+ * Produce the the fully expanded format token for the locale
12840
+ * Does NOT quote characters, so quoted tokens will not round trip correctly
12841
+ * @param fmt
12842
+ * @param localeOpts
12843
+ * @returns {string}
12844
+ */
12845
+
12846
+
12847
+ static expandFormat(fmt, localeOpts = {}) {
12848
+ const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));
12849
+ return expanded.map(t => t.val).join("");
12327
12850
  } // INFO
12328
12851
 
12329
12852
  /**
@@ -13016,8 +13539,8 @@ class DateTime {
13016
13539
  * @param {Object} opts - opts to override the configuration options on this DateTime
13017
13540
  * @example DateTime.now().toLocaleString(); //=> 4/20/2017
13018
13541
  * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'
13019
- * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'
13020
13542
  * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'
13543
+ * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'
13021
13544
  * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'
13022
13545
  * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'
13023
13546
  * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'
@@ -13054,7 +13577,7 @@ class DateTime {
13054
13577
  * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0
13055
13578
  * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0
13056
13579
  * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
13057
- * @param {boolean} [opts.extendedZone=true] - add the time zone format extension
13580
+ * @param {boolean} [opts.extendedZone=false] - add the time zone format extension
13058
13581
  * @param {string} [opts.format='extended'] - choose between the basic and extended format
13059
13582
  * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'
13060
13583
  * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'
@@ -13759,7 +14282,7 @@ function friendlyDateTime(dateTimeish) {
13759
14282
  }
13760
14283
  }
13761
14284
 
13762
- const VERSION = "3.0.1";
14285
+ const VERSION = "3.0.3";
13763
14286
 
13764
14287
  exports.DateTime = DateTime;
13765
14288
  exports.Duration = Duration;