@nmshd/consumption 2.0.0-alpha.3 → 2.0.0-alpha.6

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 (49) hide show
  1. package/dist/buildInformation.js +4 -4
  2. package/dist/modules/index.d.ts +2 -3
  3. package/dist/modules/index.js +2 -2
  4. package/dist/modules/index.js.map +1 -1
  5. package/dist/modules/requests/incoming/DecideRequestParametersValidator.d.ts +6 -2
  6. package/dist/modules/requests/incoming/DecideRequestParametersValidator.js +55 -1
  7. package/dist/modules/requests/incoming/DecideRequestParametersValidator.js.map +1 -1
  8. package/dist/modules/requests/incoming/IncomingRequestsController.d.ts +5 -6
  9. package/dist/modules/requests/incoming/IncomingRequestsController.js +32 -36
  10. package/dist/modules/requests/incoming/IncomingRequestsController.js.map +1 -1
  11. package/dist/modules/requests/incoming/decide/AcceptRequestItemParameters.d.ts +2 -6
  12. package/dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js +0 -18
  13. package/dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js.map +1 -1
  14. package/dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.d.ts +4 -8
  15. package/dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js +5 -25
  16. package/dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js.map +1 -1
  17. package/dist/modules/requests/incoming/decide/DecideRequestItemParameters.d.ts +4 -5
  18. package/dist/modules/requests/incoming/decide/DecideRequestItemParameters.js +4 -4
  19. package/dist/modules/requests/incoming/decide/DecideRequestItemParameters.js.map +1 -1
  20. package/dist/modules/requests/incoming/decide/DecideRequestParameters.d.ts +5 -11
  21. package/dist/modules/requests/incoming/decide/DecideRequestParameters.js +0 -27
  22. package/dist/modules/requests/incoming/decide/DecideRequestParameters.js.map +1 -1
  23. package/dist/modules/requests/incoming/decide/InternalDecideRequestParameters.d.ts +15 -0
  24. package/dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js +39 -0
  25. package/dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js.map +1 -0
  26. package/dist/modules/requests/incoming/decide/RejectRequestItemParameters.d.ts +2 -8
  27. package/dist/modules/requests/incoming/decide/RejectRequestItemParameters.js +0 -31
  28. package/dist/modules/requests/incoming/decide/RejectRequestItemParameters.js.map +1 -1
  29. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.d.ts +3 -3
  30. package/dist/modules/requests/itemProcessors/IRequestItemProcessor.d.ts +3 -3
  31. package/dist/modules/requests/itemProcessors/ProcessorConstructor.d.ts +2 -0
  32. package/dist/modules/requests/itemProcessors/ProcessorConstructor.js +3 -0
  33. package/dist/modules/requests/itemProcessors/ProcessorConstructor.js.map +1 -0
  34. package/dist/modules/requests/itemProcessors/RequestItemConstructor.d.ts +2 -0
  35. package/dist/modules/requests/itemProcessors/RequestItemConstructor.js +3 -0
  36. package/dist/modules/requests/itemProcessors/RequestItemConstructor.js.map +1 -0
  37. package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.d.ts +2 -2
  38. package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js.map +1 -1
  39. package/lib-web/nmshd.consumption.js +161 -194
  40. package/lib-web/nmshd.consumption.js.map +1 -1
  41. package/lib-web/nmshd.consumption.min.js +1 -1
  42. package/lib-web/nmshd.consumption.min.js.map +1 -1
  43. package/package.json +3 -3
  44. package/dist/modules/requests/incoming/decide/AcceptRequestParameters.d.ts +0 -6
  45. package/dist/modules/requests/incoming/decide/AcceptRequestParameters.js +0 -21
  46. package/dist/modules/requests/incoming/decide/AcceptRequestParameters.js.map +0 -1
  47. package/dist/modules/requests/incoming/decide/RejectRequestParameters.d.ts +0 -6
  48. package/dist/modules/requests/incoming/decide/RejectRequestParameters.js +0 -21
  49. package/dist/modules/requests/incoming/decide/RejectRequestParameters.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-alpha.3",
21
- build: "21",
22
- date: "2022-04-25T14:26:26+00:00",
23
- commit: "5d6043fd82305f5550c2c50c7aade06d9bf9b760",
20
+ version: "2.0.0-alpha.6",
21
+ build: "24",
22
+ date: "2022-04-29T10:52:56+00:00",
23
+ commit: "9c39230181fc6db8e9c6d2bca3d56fcd7fccf3ad",
24
24
  dependencies: {},
25
25
  libraries: {
26
26
  transport: transport_1.buildInformation,
@@ -680,17 +680,17 @@ __exportStar(__webpack_require__(/*! ./relationships/RelationshipInfoController
680
680
  __exportStar(__webpack_require__(/*! ./requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters */ "./dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js"), exports);
681
681
  __exportStar(__webpack_require__(/*! ./requests/incoming/complete/CompleteIncomingRequestParameters */ "./dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js"), exports);
682
682
  __exportStar(__webpack_require__(/*! ./requests/incoming/decide/AcceptRequestItemParameters */ "./dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js"), exports);
683
- __exportStar(__webpack_require__(/*! ./requests/incoming/decide/AcceptRequestParameters */ "./dist/modules/requests/incoming/decide/AcceptRequestParameters.js"), exports);
684
683
  __exportStar(__webpack_require__(/*! ./requests/incoming/decide/DecideRequestItemGroupParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js"), exports);
685
684
  __exportStar(__webpack_require__(/*! ./requests/incoming/decide/DecideRequestItemParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js"), exports);
686
685
  __exportStar(__webpack_require__(/*! ./requests/incoming/decide/DecideRequestParameters */ "./dist/modules/requests/incoming/decide/DecideRequestParameters.js"), exports);
687
686
  __exportStar(__webpack_require__(/*! ./requests/incoming/decide/RejectRequestItemParameters */ "./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js"), exports);
688
- __exportStar(__webpack_require__(/*! ./requests/incoming/decide/RejectRequestParameters */ "./dist/modules/requests/incoming/decide/RejectRequestParameters.js"), exports);
689
687
  __exportStar(__webpack_require__(/*! ./requests/incoming/DecideRequestParametersValidator */ "./dist/modules/requests/incoming/DecideRequestParametersValidator.js"), exports);
690
688
  __exportStar(__webpack_require__(/*! ./requests/incoming/IncomingRequestsController */ "./dist/modules/requests/incoming/IncomingRequestsController.js"), exports);
691
689
  __exportStar(__webpack_require__(/*! ./requests/incoming/received/ReceivedIncomingRequestParameters */ "./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js"), exports);
692
690
  __exportStar(__webpack_require__(/*! ./requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters */ "./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js"), exports);
693
691
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js"), exports);
692
+ __exportStar(__webpack_require__(/*! ./requests/itemProcessors/ProcessorConstructor */ "./dist/modules/requests/itemProcessors/ProcessorConstructor.js"), exports);
693
+ __exportStar(__webpack_require__(/*! ./requests/itemProcessors/RequestItemConstructor */ "./dist/modules/requests/itemProcessors/RequestItemConstructor.js"), exports);
694
694
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/RequestItemProcessorRegistry */ "./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js"), exports);
695
695
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js"), exports);
696
696
  __exportStar(__webpack_require__(/*! ./requests/local/ConsumptionRequest */ "./dist/modules/requests/local/ConsumptionRequest.js"), exports);
@@ -1233,13 +1233,67 @@ exports.RelationshipTheme = RelationshipTheme;
1233
1233
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1234
1234
  exports.DecideRequestParametersValidator = void 0;
1235
1235
  const ts_utils_1 = __webpack_require__(/*! @js-soft/ts-utils */ "./node_modules/@js-soft/ts-utils/dist/index.js");
1236
+ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
1237
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
1238
+ const DecideRequestItemGroupParameters_1 = __webpack_require__(/*! ./decide/DecideRequestItemGroupParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js");
1239
+ const DecideRequestItemParameters_1 = __webpack_require__(/*! ./decide/DecideRequestItemParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js");
1236
1240
  class DecideRequestParametersValidator {
1237
1241
  validate(params, request) {
1242
+ if (!request.id.equals(transport_1.CoreId.from(params.requestId))) {
1243
+ return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidRequestId", "The id of the request does not match the id of the response"));
1244
+ }
1238
1245
  if (params.items.length !== request.content.items.length) {
1239
- return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError("invalidNumberOfItems", "Number of items in Request and Response do not match"));
1246
+ return ts_utils_1.Result.fail(this.invalidNumberOfItemsError("Number of items in Request and Response do not match"));
1247
+ }
1248
+ for (let i = 0; i < params.items.length; i++) {
1249
+ const validationResult = this.checkItemOrGroup(request.content.items[i], params.items[i], i.toString(), params.accept);
1250
+ if (validationResult.isError)
1251
+ return validationResult;
1252
+ }
1253
+ return ts_utils_1.Result.ok(undefined);
1254
+ }
1255
+ checkItemOrGroup(requestItem, responseItem, index, isParentAccepted) {
1256
+ if (requestItem instanceof content_1.RequestItem) {
1257
+ return this.checkItem(requestItem, responseItem, index, isParentAccepted);
1258
+ }
1259
+ return this.checkItemGroup(requestItem, responseItem, index, isParentAccepted);
1260
+ }
1261
+ checkItem(requestItem, response, index, isParentAccepted) {
1262
+ if ((0, DecideRequestItemGroupParameters_1.isDecideRequestItemGroupParametersJSON)(response)) {
1263
+ return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", `The RequestItem with index '${index}' was answered as a RequestItemGroup.`));
1264
+ }
1265
+ if (!isParentAccepted && response.accept) {
1266
+ return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", `The RequestItem with index '${index}' was accepted, but the parent was not accepted.`));
1267
+ }
1268
+ if (isParentAccepted && requestItem.mustBeAccepted && !response.accept) {
1269
+ return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", `The RequestItem with index '${index}', which is flagged as 'mustBeAccepted', was not accepted.`));
1240
1270
  }
1241
1271
  return ts_utils_1.Result.ok(undefined);
1242
1272
  }
1273
+ checkItemGroup(requestItemGroup, responseItemGroup, index, isParentAccepted) {
1274
+ if ((0, DecideRequestItemParameters_1.isDecideRequestItemParametersJSON)(responseItemGroup)) {
1275
+ return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", `The RequestItemGroup with index '${index}' was answered as a RequestItem.`));
1276
+ }
1277
+ if (responseItemGroup.items.length !== requestItemGroup.items.length) {
1278
+ return ts_utils_1.Result.fail(this.invalidNumberOfItemsError("Number of items in RequestItemGroup and ResponseItemGroup do not match"));
1279
+ }
1280
+ const isGroupAccepted = responseItemGroup.items.some((value) => value.accept);
1281
+ if (!isParentAccepted && isGroupAccepted) {
1282
+ return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", `The RequestItemGroup with index '${index}' was accepted, but the parent was not accepted.`));
1283
+ }
1284
+ if (isParentAccepted && requestItemGroup.mustBeAccepted && !isGroupAccepted) {
1285
+ return ts_utils_1.Result.fail(new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidResponseItemForRequestItem", `The RequestItemGroup with index '${index}', which is flagged as 'mustBeAccepted', was not accepted. Please accept all 'mustBeAccepted' items in this group.`));
1286
+ }
1287
+ for (let i = 0; i < responseItemGroup.items.length; i++) {
1288
+ const validationResult = this.checkItem(requestItemGroup.items[i], responseItemGroup.items[i], `${index}.${i}`, isGroupAccepted);
1289
+ if (validationResult.isError)
1290
+ return validationResult;
1291
+ }
1292
+ return ts_utils_1.Result.ok(undefined);
1293
+ }
1294
+ invalidNumberOfItemsError(message) {
1295
+ return new ts_utils_1.ApplicationError("error.requests.decide.validation.invalidNumberOfItems", message);
1296
+ }
1243
1297
  }
1244
1298
  exports.DecideRequestParametersValidator = DecideRequestParametersValidator;
1245
1299
  //# sourceMappingURL=DecideRequestParametersValidator.js.map
@@ -1265,12 +1319,7 @@ const ConsumptionRequestStatus_1 = __webpack_require__(/*! ../local/ConsumptionR
1265
1319
  const ConsumptionResponse_1 = __webpack_require__(/*! ../local/ConsumptionResponse */ "./dist/modules/requests/local/ConsumptionResponse.js");
1266
1320
  const CheckPrerequisitesOfIncomingRequestParameters_1 = __webpack_require__(/*! ./checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters */ "./dist/modules/requests/incoming/checkPrerequisites/CheckPrerequisitesOfIncomingRequestParameters.js");
1267
1321
  const CompleteIncomingRequestParameters_1 = __webpack_require__(/*! ./complete/CompleteIncomingRequestParameters */ "./dist/modules/requests/incoming/complete/CompleteIncomingRequestParameters.js");
1268
- const AcceptRequestItemParameters_1 = __webpack_require__(/*! ./decide/AcceptRequestItemParameters */ "./dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js");
1269
- const AcceptRequestParameters_1 = __webpack_require__(/*! ./decide/AcceptRequestParameters */ "./dist/modules/requests/incoming/decide/AcceptRequestParameters.js");
1270
- const DecideRequestItemGroupParameters_1 = __webpack_require__(/*! ./decide/DecideRequestItemGroupParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js");
1271
- const DecideRequestItemParameters_1 = __webpack_require__(/*! ./decide/DecideRequestItemParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js");
1272
- const RejectRequestItemParameters_1 = __webpack_require__(/*! ./decide/RejectRequestItemParameters */ "./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js");
1273
- const RejectRequestParameters_1 = __webpack_require__(/*! ./decide/RejectRequestParameters */ "./dist/modules/requests/incoming/decide/RejectRequestParameters.js");
1322
+ const InternalDecideRequestParameters_1 = __webpack_require__(/*! ./decide/InternalDecideRequestParameters */ "./dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js");
1274
1323
  const DecideRequestParametersValidator_1 = __webpack_require__(/*! ./DecideRequestParametersValidator */ "./dist/modules/requests/incoming/DecideRequestParametersValidator.js");
1275
1324
  const ReceivedIncomingRequestParameters_1 = __webpack_require__(/*! ./received/ReceivedIncomingRequestParameters */ "./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js");
1276
1325
  const RequireManualDecisionOfIncomingRequestParameters_1 = __webpack_require__(/*! ./requireManualDecision/RequireManualDecisionOfIncomingRequestParameters */ "./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js");
@@ -1364,64 +1413,67 @@ class IncomingRequestsController extends consumption_1.ConsumptionBaseController
1364
1413
  return request;
1365
1414
  }
1366
1415
  async canAccept(params) {
1367
- const parsedParams = AcceptRequestParameters_1.AcceptRequestParameters.from(params);
1368
- return await this.canDecide(parsedParams, "Accept");
1416
+ return await this.canDecide({ ...params, accept: true });
1369
1417
  }
1370
1418
  async canReject(params) {
1371
- const parsedParams = RejectRequestParameters_1.RejectRequestParameters.from(params);
1372
- return await this.canDecide(parsedParams, "Reject");
1419
+ return await this.canDecide({ ...params, accept: false });
1373
1420
  }
1374
- async canDecide(params, action) {
1421
+ async canDecide(params) {
1422
+ // syntactic validation
1423
+ InternalDecideRequestParameters_1.InternalDecideRequestParameters.from(params);
1375
1424
  const request = await this.getOrThrow(params.requestId);
1425
+ const validationResult = this.decideRequestParamsValidator.validate(params, request);
1426
+ if (!validationResult.isSuccess) {
1427
+ throw new Error(validationResult.error.message);
1428
+ }
1376
1429
  this.assertRequestStatus(request, ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired, ConsumptionRequestStatus_1.ConsumptionRequestStatus.ManualDecisionRequired);
1377
- const itemResults = await this.canDecideItems(params.items, request.content.items, action);
1430
+ const itemResults = await this.canDecideItems(params.items, request.content.items);
1378
1431
  return ValidationResult_1.ValidationResult.fromItems(itemResults);
1379
1432
  }
1380
- async canDecideGroup(params, requestItemGroup, action) {
1381
- const itemResults = await this.canDecideItems(params.items, requestItemGroup.items, action);
1433
+ async canDecideGroup(params, requestItemGroup) {
1434
+ const itemResults = await this.canDecideItems(params.items, requestItemGroup.items);
1382
1435
  return ValidationResult_1.ValidationResult.fromItems(itemResults);
1383
1436
  }
1384
- async canDecideItems(params, items, action) {
1437
+ async canDecideItems(params, items) {
1385
1438
  const validationResults = [];
1386
1439
  for (let i = 0; i < params.length; i++) {
1387
1440
  const decideItemParams = params[i];
1388
1441
  const requestItem = items[i];
1389
1442
  if (requestItem instanceof content_1.RequestItemGroup) {
1390
- const groupResult = await this.canDecideGroup(decideItemParams, requestItem, action);
1443
+ const groupResult = await this.canDecideGroup(decideItemParams, requestItem);
1391
1444
  validationResults.push(groupResult);
1392
1445
  }
1393
1446
  else {
1394
- const itemResult = await this.canDecideItem(decideItemParams, requestItem, action);
1447
+ const itemResult = await this.canDecideItem(decideItemParams, requestItem);
1395
1448
  validationResults.push(itemResult);
1396
1449
  }
1397
1450
  }
1398
1451
  return validationResults;
1399
1452
  }
1400
- canDecideItem(params, requestItem, action) {
1453
+ async canDecideItem(params, requestItem) {
1401
1454
  const processor = this.processorRegistry.getProcessorForItem(requestItem);
1402
- return processor[`can${action}`](requestItem, params);
1455
+ if (params.accept) {
1456
+ return await processor.canAccept(requestItem, params);
1457
+ }
1458
+ return await processor.canReject(requestItem, params);
1403
1459
  }
1404
1460
  async accept(params) {
1405
1461
  const canAccept = await this.canAccept(params);
1406
1462
  if (!canAccept.isSuccess()) {
1407
1463
  throw new Error("Cannot accept the Request with the given parameters. Call 'canAccept' to get more information.");
1408
1464
  }
1409
- return await this.decide(AcceptRequestParameters_1.AcceptRequestParameters.from(params));
1465
+ return await this.decide({ ...params, accept: true });
1410
1466
  }
1411
1467
  async reject(params) {
1412
1468
  const canReject = await this.canReject(params);
1413
1469
  if (!canReject.isSuccess()) {
1414
1470
  throw new Error("Cannot reject the Request with the given parameters. Call 'canReject' to get more information.");
1415
1471
  }
1416
- return await this.decide(RejectRequestParameters_1.RejectRequestParameters.from(params));
1472
+ return await this.decide({ ...params, accept: false });
1417
1473
  }
1418
1474
  async decide(params) {
1419
1475
  const consumptionRequest = await this.getOrThrow(params.requestId);
1420
1476
  this.assertRequestStatus(consumptionRequest, ConsumptionRequestStatus_1.ConsumptionRequestStatus.DecisionRequired, ConsumptionRequestStatus_1.ConsumptionRequestStatus.ManualDecisionRequired);
1421
- const validationResult = this.decideRequestParamsValidator.validate(params, consumptionRequest);
1422
- if (!validationResult.isSuccess) {
1423
- throw new Error(validationResult.error.message);
1424
- }
1425
1477
  const consumptionResponse = await this.createConsumptionResponse(params, consumptionRequest);
1426
1478
  consumptionRequest.response = consumptionResponse;
1427
1479
  consumptionRequest.changeStatus(ConsumptionRequestStatus_1.ConsumptionRequestStatus.Decided);
@@ -1432,7 +1484,7 @@ class IncomingRequestsController extends consumption_1.ConsumptionBaseController
1432
1484
  const requestItems = request.content.items;
1433
1485
  const responseItems = await this.decideItems(params.items, requestItems);
1434
1486
  const response = content_1.Response.from({
1435
- result: params instanceof AcceptRequestParameters_1.AcceptRequestParameters ? content_1.ResponseResult.Accepted : content_1.ResponseResult.Rejected,
1487
+ result: params.accept ? content_1.ResponseResult.Accepted : content_1.ResponseResult.Rejected,
1436
1488
  requestId: request.id,
1437
1489
  items: responseItems
1438
1490
  });
@@ -1454,11 +1506,12 @@ class IncomingRequestsController extends consumption_1.ConsumptionBaseController
1454
1506
  const responseItems = [];
1455
1507
  for (let i = 0; i < params.length; i++) {
1456
1508
  const itemParam = params[i];
1457
- if (itemParam instanceof DecideRequestItemParameters_1.DecideRequestItemParameters) {
1458
- responseItems.push(await this.decideItem(itemParam, requestItems[i]));
1509
+ const item = requestItems[i];
1510
+ if (item instanceof content_1.RequestItemGroup) {
1511
+ responseItems.push(await this.decideGroup(itemParam, item));
1459
1512
  }
1460
- else if (itemParam instanceof DecideRequestItemGroupParameters_1.DecideRequestItemGroupParameters) {
1461
- responseItems.push(await this.decideGroup(itemParam, requestItems[i]));
1513
+ else {
1514
+ responseItems.push(await this.decideItem(itemParam, requestItems[i]));
1462
1515
  }
1463
1516
  }
1464
1517
  return responseItems;
@@ -1466,12 +1519,10 @@ class IncomingRequestsController extends consumption_1.ConsumptionBaseController
1466
1519
  async decideItem(params, requestItem) {
1467
1520
  const processor = this.processorRegistry.getProcessorForItem(requestItem);
1468
1521
  try {
1469
- if (params instanceof AcceptRequestItemParameters_1.AcceptRequestItemParameters) {
1522
+ if (params.accept) {
1470
1523
  return await processor.accept(requestItem, params);
1471
1524
  }
1472
- else if (params instanceof RejectRequestItemParameters_1.RejectRequestItemParameters) {
1473
- return await processor.reject(requestItem, params);
1474
- }
1525
+ return await processor.reject(requestItem, params);
1475
1526
  }
1476
1527
  catch (e) {
1477
1528
  let details = "";
@@ -1480,7 +1531,6 @@ class IncomingRequestsController extends consumption_1.ConsumptionBaseController
1480
1531
  }
1481
1532
  throw new Error(`An error occurred while processing a '${requestItem.constructor.name}'. You should contact the developer of this RequestItem.${details}}`);
1482
1533
  }
1483
- throw new Error("Unknown params type");
1484
1534
  }
1485
1535
  async complete(params) {
1486
1536
  const parsedParams = CompleteIncomingRequestParameters_1.CompleteIncomingRequestParameters.from(params);
@@ -1513,7 +1563,7 @@ class IncomingRequestsController extends consumption_1.ConsumptionBaseController
1513
1563
  return request;
1514
1564
  }
1515
1565
  async getOrThrow(id) {
1516
- const request = await this.get(id);
1566
+ const request = await this.get(transport_1.CoreId.from(id));
1517
1567
  if (!request) {
1518
1568
  throw transport_1.TransportErrors.general.recordNotFound(ConsumptionRequest_1.ConsumptionRequest, id.toString());
1519
1569
  }
@@ -1621,98 +1671,29 @@ exports.CompleteIncomingRequestParameters = CompleteIncomingRequestParameters;
1621
1671
  /*!******************************************************************************!*\
1622
1672
  !*** ./dist/modules/requests/incoming/decide/AcceptRequestItemParameters.js ***!
1623
1673
  \******************************************************************************/
1624
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1674
+ /***/ ((__unused_webpack_module, exports) => {
1625
1675
 
1626
1676
  "use strict";
1627
1677
 
1628
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1629
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1630
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1631
- 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;
1632
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1633
- };
1634
1678
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1635
- exports.AcceptRequestItemParameters = void 0;
1636
- const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
1637
- const DecideRequestItemParameters_1 = __webpack_require__(/*! ./DecideRequestItemParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js");
1638
- let AcceptRequestItemParameters = class AcceptRequestItemParameters extends DecideRequestItemParameters_1.DecideRequestItemParameters {
1639
- static from(value) {
1640
- return this.fromAny(value);
1641
- }
1642
- };
1643
- AcceptRequestItemParameters = __decorate([
1644
- (0, ts_serval_1.type)("AcceptRequestItemParameters")
1645
- ], AcceptRequestItemParameters);
1646
- exports.AcceptRequestItemParameters = AcceptRequestItemParameters;
1647
1679
  //# sourceMappingURL=AcceptRequestItemParameters.js.map
1648
1680
 
1649
1681
  /***/ }),
1650
1682
 
1651
- /***/ "./dist/modules/requests/incoming/decide/AcceptRequestParameters.js":
1652
- /*!**************************************************************************!*\
1653
- !*** ./dist/modules/requests/incoming/decide/AcceptRequestParameters.js ***!
1654
- \**************************************************************************/
1655
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1656
-
1657
- "use strict";
1658
-
1659
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1660
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1661
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1662
- 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;
1663
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1664
- };
1665
- Object.defineProperty(exports, "__esModule", ({ value: true }));
1666
- exports.AcceptRequestParameters = void 0;
1667
- const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
1668
- const DecideRequestParameters_1 = __webpack_require__(/*! ./DecideRequestParameters */ "./dist/modules/requests/incoming/decide/DecideRequestParameters.js");
1669
- let AcceptRequestParameters = class AcceptRequestParameters extends DecideRequestParameters_1.DecideRequestParameters {
1670
- static from(value) {
1671
- return this.fromAny(value);
1672
- }
1673
- };
1674
- AcceptRequestParameters = __decorate([
1675
- (0, ts_serval_1.type)("AcceptRequestParameters")
1676
- ], AcceptRequestParameters);
1677
- exports.AcceptRequestParameters = AcceptRequestParameters;
1678
- //# sourceMappingURL=AcceptRequestParameters.js.map
1679
-
1680
- /***/ }),
1681
-
1682
1683
  /***/ "./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js":
1683
1684
  /*!***********************************************************************************!*\
1684
1685
  !*** ./dist/modules/requests/incoming/decide/DecideRequestItemGroupParameters.js ***!
1685
1686
  \***********************************************************************************/
1686
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1687
+ /***/ ((__unused_webpack_module, exports) => {
1687
1688
 
1688
1689
  "use strict";
1689
1690
 
1690
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1691
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1692
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1693
- 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;
1694
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1695
- };
1696
- var __metadata = (this && this.__metadata) || function (k, v) {
1697
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1698
- };
1699
1691
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1700
- exports.DecideRequestItemGroupParameters = void 0;
1701
- const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
1702
- let DecideRequestItemGroupParameters = class DecideRequestItemGroupParameters extends ts_serval_1.Serializable {
1703
- static from(value) {
1704
- return this.fromAny(value);
1705
- }
1706
- };
1707
- __decorate([
1708
- (0, ts_serval_1.serialize)(),
1709
- (0, ts_serval_1.validate)(),
1710
- __metadata("design:type", Array)
1711
- ], DecideRequestItemGroupParameters.prototype, "items", void 0);
1712
- DecideRequestItemGroupParameters = __decorate([
1713
- (0, ts_serval_1.type)("DecideRequestItemGroupParameters")
1714
- ], DecideRequestItemGroupParameters);
1715
- exports.DecideRequestItemGroupParameters = DecideRequestItemGroupParameters;
1692
+ exports.isDecideRequestItemGroupParametersJSON = void 0;
1693
+ function isDecideRequestItemGroupParametersJSON(json) {
1694
+ return typeof json.items !== "undefined" && typeof json.accept === "undefined";
1695
+ }
1696
+ exports.isDecideRequestItemGroupParametersJSON = isDecideRequestItemGroupParametersJSON;
1716
1697
  //# sourceMappingURL=DecideRequestItemGroupParameters.js.map
1717
1698
 
1718
1699
  /***/ }),
@@ -1721,16 +1702,16 @@ exports.DecideRequestItemGroupParameters = DecideRequestItemGroupParameters;
1721
1702
  /*!******************************************************************************!*\
1722
1703
  !*** ./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js ***!
1723
1704
  \******************************************************************************/
1724
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1705
+ /***/ ((__unused_webpack_module, exports) => {
1725
1706
 
1726
1707
  "use strict";
1727
1708
 
1728
1709
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1729
- exports.DecideRequestItemParameters = void 0;
1730
- const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
1731
- class DecideRequestItemParameters extends ts_serval_1.Serializable {
1710
+ exports.isDecideRequestItemParametersJSON = void 0;
1711
+ function isDecideRequestItemParametersJSON(json) {
1712
+ return typeof json.items === "undefined" && typeof json.accept !== "undefined";
1732
1713
  }
1733
- exports.DecideRequestItemParameters = DecideRequestItemParameters;
1714
+ exports.isDecideRequestItemParametersJSON = isDecideRequestItemParametersJSON;
1734
1715
  //# sourceMappingURL=DecideRequestItemParameters.js.map
1735
1716
 
1736
1717
  /***/ }),
@@ -1739,46 +1720,19 @@ exports.DecideRequestItemParameters = DecideRequestItemParameters;
1739
1720
  /*!**************************************************************************!*\
1740
1721
  !*** ./dist/modules/requests/incoming/decide/DecideRequestParameters.js ***!
1741
1722
  \**************************************************************************/
1742
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1723
+ /***/ ((__unused_webpack_module, exports) => {
1743
1724
 
1744
1725
  "use strict";
1745
1726
 
1746
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1747
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1748
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1749
- 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;
1750
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1751
- };
1752
- var __metadata = (this && this.__metadata) || function (k, v) {
1753
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1754
- };
1755
1727
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1756
- exports.DecideRequestParameters = void 0;
1757
- const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
1758
- const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
1759
- class DecideRequestParameters extends ts_serval_1.Serializable {
1760
- }
1761
- __decorate([
1762
- (0, ts_serval_1.serialize)(),
1763
- (0, ts_serval_1.validate)(),
1764
- __metadata("design:type", transport_1.CoreId)
1765
- ], DecideRequestParameters.prototype, "requestId", void 0);
1766
- __decorate([
1767
- (0, ts_serval_1.serialize)(),
1768
- (0, ts_serval_1.validate)({
1769
- customValidator: (items) => items.length === 0 ? "may not be empty" : undefined
1770
- }),
1771
- __metadata("design:type", Array)
1772
- ], DecideRequestParameters.prototype, "items", void 0);
1773
- exports.DecideRequestParameters = DecideRequestParameters;
1774
1728
  //# sourceMappingURL=DecideRequestParameters.js.map
1775
1729
 
1776
1730
  /***/ }),
1777
1731
 
1778
- /***/ "./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js":
1779
- /*!******************************************************************************!*\
1780
- !*** ./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js ***!
1781
- \******************************************************************************/
1732
+ /***/ "./dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js":
1733
+ /*!**********************************************************************************!*\
1734
+ !*** ./dist/modules/requests/incoming/decide/InternalDecideRequestParameters.js ***!
1735
+ \**********************************************************************************/
1782
1736
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1783
1737
 
1784
1738
  "use strict";
@@ -1793,60 +1747,47 @@ var __metadata = (this && this.__metadata) || function (k, v) {
1793
1747
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1794
1748
  };
1795
1749
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1796
- exports.RejectRequestItemParameters = void 0;
1750
+ exports.InternalDecideRequestParameters = void 0;
1797
1751
  const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
1798
- const DecideRequestItemParameters_1 = __webpack_require__(/*! ./DecideRequestItemParameters */ "./dist/modules/requests/incoming/decide/DecideRequestItemParameters.js");
1799
- let RejectRequestItemParameters = class RejectRequestItemParameters extends DecideRequestItemParameters_1.DecideRequestItemParameters {
1752
+ const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
1753
+ let InternalDecideRequestParameters = class InternalDecideRequestParameters extends ts_serval_1.Serializable {
1800
1754
  static from(value) {
1801
1755
  return this.fromAny(value);
1802
1756
  }
1803
1757
  };
1804
1758
  __decorate([
1805
1759
  (0, ts_serval_1.serialize)(),
1806
- (0, ts_serval_1.validate)({ nullable: true }),
1807
- __metadata("design:type", String)
1808
- ], RejectRequestItemParameters.prototype, "code", void 0);
1760
+ (0, ts_serval_1.validate)(),
1761
+ __metadata("design:type", transport_1.CoreId)
1762
+ ], InternalDecideRequestParameters.prototype, "requestId", void 0);
1809
1763
  __decorate([
1810
1764
  (0, ts_serval_1.serialize)(),
1811
- (0, ts_serval_1.validate)({ nullable: true }),
1812
- __metadata("design:type", String)
1813
- ], RejectRequestItemParameters.prototype, "message", void 0);
1814
- RejectRequestItemParameters = __decorate([
1815
- (0, ts_serval_1.type)("RejectRequestItemParameters")
1816
- ], RejectRequestItemParameters);
1817
- exports.RejectRequestItemParameters = RejectRequestItemParameters;
1818
- //# sourceMappingURL=RejectRequestItemParameters.js.map
1765
+ (0, ts_serval_1.validate)(),
1766
+ __metadata("design:type", Array)
1767
+ ], InternalDecideRequestParameters.prototype, "items", void 0);
1768
+ __decorate([
1769
+ (0, ts_serval_1.serialize)(),
1770
+ (0, ts_serval_1.validate)(),
1771
+ __metadata("design:type", Boolean)
1772
+ ], InternalDecideRequestParameters.prototype, "accept", void 0);
1773
+ InternalDecideRequestParameters = __decorate([
1774
+ (0, ts_serval_1.type)("InternalDecideRequestParameters")
1775
+ ], InternalDecideRequestParameters);
1776
+ exports.InternalDecideRequestParameters = InternalDecideRequestParameters;
1777
+ //# sourceMappingURL=InternalDecideRequestParameters.js.map
1819
1778
 
1820
1779
  /***/ }),
1821
1780
 
1822
- /***/ "./dist/modules/requests/incoming/decide/RejectRequestParameters.js":
1823
- /*!**************************************************************************!*\
1824
- !*** ./dist/modules/requests/incoming/decide/RejectRequestParameters.js ***!
1825
- \**************************************************************************/
1826
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1781
+ /***/ "./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js":
1782
+ /*!******************************************************************************!*\
1783
+ !*** ./dist/modules/requests/incoming/decide/RejectRequestItemParameters.js ***!
1784
+ \******************************************************************************/
1785
+ /***/ ((__unused_webpack_module, exports) => {
1827
1786
 
1828
1787
  "use strict";
1829
1788
 
1830
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1831
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1832
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1833
- 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;
1834
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1835
- };
1836
1789
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1837
- exports.RejectRequestParameters = void 0;
1838
- const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
1839
- const DecideRequestParameters_1 = __webpack_require__(/*! ./DecideRequestParameters */ "./dist/modules/requests/incoming/decide/DecideRequestParameters.js");
1840
- let RejectRequestParameters = class RejectRequestParameters extends DecideRequestParameters_1.DecideRequestParameters {
1841
- static from(value) {
1842
- return this.fromAny(value);
1843
- }
1844
- };
1845
- RejectRequestParameters = __decorate([
1846
- (0, ts_serval_1.type)("RejectRequestParameters")
1847
- ], RejectRequestParameters);
1848
- exports.RejectRequestParameters = RejectRequestParameters;
1849
- //# sourceMappingURL=RejectRequestParameters.js.map
1790
+ //# sourceMappingURL=RejectRequestItemParameters.js.map
1850
1791
 
1851
1792
  /***/ }),
1852
1793
 
@@ -1980,6 +1921,32 @@ exports.GenericRequestItemProcessor = GenericRequestItemProcessor;
1980
1921
 
1981
1922
  /***/ }),
1982
1923
 
1924
+ /***/ "./dist/modules/requests/itemProcessors/ProcessorConstructor.js":
1925
+ /*!**********************************************************************!*\
1926
+ !*** ./dist/modules/requests/itemProcessors/ProcessorConstructor.js ***!
1927
+ \**********************************************************************/
1928
+ /***/ ((__unused_webpack_module, exports) => {
1929
+
1930
+ "use strict";
1931
+
1932
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1933
+ //# sourceMappingURL=ProcessorConstructor.js.map
1934
+
1935
+ /***/ }),
1936
+
1937
+ /***/ "./dist/modules/requests/itemProcessors/RequestItemConstructor.js":
1938
+ /*!************************************************************************!*\
1939
+ !*** ./dist/modules/requests/itemProcessors/RequestItemConstructor.js ***!
1940
+ \************************************************************************/
1941
+ /***/ ((__unused_webpack_module, exports) => {
1942
+
1943
+ "use strict";
1944
+
1945
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1946
+ //# sourceMappingURL=RequestItemConstructor.js.map
1947
+
1948
+ /***/ }),
1949
+
1983
1950
  /***/ "./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js":
1984
1951
  /*!******************************************************************************!*\
1985
1952
  !*** ./dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js ***!