@nmshd/runtime 2.0.0-alpha.17 → 2.0.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,10 +7,10 @@ const content_1 = require("@nmshd/content");
7
7
  const crypto_1 = require("@nmshd/crypto");
8
8
  const transport_1 = require("@nmshd/transport");
9
9
  exports.buildInformation = {
10
- version: "2.0.0-alpha.17",
11
- build: "64",
12
- date: "2022-06-14T08:55:01+00:00",
13
- commit: "1a66d300cf56949ab479115f2fbe098df64f0b92",
10
+ version: "2.0.0-alpha.18",
11
+ build: "65",
12
+ date: "2022-06-14T12:59:35+00:00",
13
+ commit: "30cb7c19cb7d6bc5c3384c20ebdf8656050bcf94",
14
14
  dependencies: {"@js-soft/docdb-querytranslator":"1.0.1","@js-soft/logging-abstractions":"1.0.0","@js-soft/ts-serval":"2.0.3","@js-soft/ts-utils":"^1.1.2","@nmshd/consumption":"2.0.0-alpha.20","@nmshd/content":"2.0.0-alpha.35","@nmshd/crypto":"2.0.1","@nmshd/transport":"2.0.0-alpha.2","ajv":"^8.11.0","ajv-errors":"^3.0.0","ajv-formats":"^2.1.1","fluent-ts-validator":"3.0.3","json-stringify-safe":"^5.0.1","luxon":"^2.4.0","qrcode":"1.5.0","reflect-metadata":"0.1.13","ts-simple-nameof":"1.3.1","typescript-ioc":"3.2.2"},
15
15
  libraries: {
16
16
  serval: ts_serval_1.buildInformation,
@@ -4,9 +4,11 @@ export declare class RequestModule extends RuntimeModule {
4
4
  start(): void | Promise<void>;
5
5
  private handlePeerRelationshipTemplateLoaded;
6
6
  private handleMessageReceivedEvent;
7
+ private handleMessageSentEvent;
7
8
  private createIncomingRequest;
8
9
  private handleIncomingRequestStatusChanged;
9
10
  private handleIncomingRequestDecidedForRelationship;
11
+ private handleIncomingRequestDecidedForMessage;
10
12
  private handleRelationshipChangedEvent;
11
13
  stop(): void | Promise<void>;
12
14
  }
@@ -13,6 +13,7 @@ class RequestModule extends RuntimeModule_1.RuntimeModule {
13
13
  start() {
14
14
  this.subscribeToEvent(events_1.PeerRelationshipTemplateLoadedEvent, this.handlePeerRelationshipTemplateLoaded.bind(this));
15
15
  this.subscribeToEvent(events_1.MessageReceivedEvent, this.handleMessageReceivedEvent.bind(this));
16
+ this.subscribeToEvent(events_1.MessageSentEvent, this.handleMessageSentEvent.bind(this));
16
17
  this.subscribeToEvent(events_1.IncomingRequestStatusChangedEvent, this.handleIncomingRequestStatusChanged.bind(this));
17
18
  this.subscribeToEvent(events_1.RelationshipChangedEvent, this.handleRelationshipChangedEvent.bind(this));
18
19
  }
@@ -25,12 +26,29 @@ class RequestModule extends RuntimeModule_1.RuntimeModule {
25
26
  await this.createIncomingRequest(services, request, event.data.id);
26
27
  }
27
28
  async handleMessageReceivedEvent(event) {
28
- if (event.data.content["@type"] !== "Request")
29
+ const services = this.runtime.getServices(event.eventTargetAddress);
30
+ const messageContentType = event.data.content["@type"];
31
+ switch (messageContentType) {
32
+ case "Request":
33
+ await this.createIncomingRequest(services, event.data.content, event.data.id);
34
+ break;
35
+ case "Response":
36
+ const receivedResponse = event.data.content;
37
+ await services.consumptionServices.outgoingRequests.complete({ receivedResponse, messageId: event.data.id });
38
+ break;
39
+ }
40
+ }
41
+ async handleMessageSentEvent(event) {
42
+ const message = event.data;
43
+ if (message.content["@type"] !== "Request")
29
44
  return;
30
- // TODO: JSSNMSHDD-2896 (handle response)
31
- const request = event.data.content;
32
45
  const services = this.runtime.getServices(event.eventTargetAddress);
33
- await this.createIncomingRequest(services, request, event.data.id);
46
+ const request = message.content;
47
+ const requestResult = await services.consumptionServices.outgoingRequests.sent({ requestId: request.id, messageId: message.id });
48
+ if (requestResult.isError) {
49
+ this.logger.error(`Could not mark request '${request.id}' as sent using message '${message.id}'.`);
50
+ return;
51
+ }
34
52
  }
35
53
  async createIncomingRequest(services, request, requestSourceId) {
36
54
  const receivedRequestResult = await services.consumptionServices.incomingRequests.received({ receivedRequest: request, requestSourceId });
@@ -51,6 +69,9 @@ class RequestModule extends RuntimeModule_1.RuntimeModule {
51
69
  case "RelationshipTemplate":
52
70
  await this.handleIncomingRequestDecidedForRelationship(event);
53
71
  break;
72
+ case "Message":
73
+ await this.handleIncomingRequestDecidedForMessage(event);
74
+ break;
54
75
  default:
55
76
  throw new Error(`Cannot handle source.type '${event.data.request.source.type}'.`);
56
77
  }
@@ -91,6 +112,28 @@ class RequestModule extends RuntimeModule_1.RuntimeModule {
91
112
  return;
92
113
  }
93
114
  }
115
+ async handleIncomingRequestDecidedForMessage(event) {
116
+ const request = event.data.request;
117
+ const requestId = request.id;
118
+ const services = this.runtime.getServices(event.eventTargetAddress);
119
+ const sendMessageResult = await services.transportServices.messages.sendMessage({
120
+ recipients: [request.peer],
121
+ content: request.response.content
122
+ });
123
+ if (sendMessageResult.isError) {
124
+ this.logger.error(`Could not send message to answer the request '${requestId}'.`);
125
+ // TODO: error state
126
+ return;
127
+ }
128
+ const completeRequestResult = await services.consumptionServices.incomingRequests.complete({
129
+ requestId,
130
+ responseSourceId: sendMessageResult.value.id
131
+ });
132
+ if (completeRequestResult.isError) {
133
+ this.logger.error(`Could not complete the request '${requestId}'.`);
134
+ return;
135
+ }
136
+ }
94
137
  async handleRelationshipChangedEvent(event) {
95
138
  // only trigger for new relationships that were created from an own template
96
139
  if (event.data.status !== types_1.RelationshipStatus.Pending || !event.data.template.isOwn)
@@ -1 +1 @@
1
- {"version":3,"file":"RequestModule.js","sourceRoot":"","sources":["../../src/modules/RequestModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequestModule.js","sourceRoot":"","sources":["../../src/modules/RequestModule.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ let SentOutgoingRequestUseCase = class SentOutgoingRequestUseCase extends common
40
40
  const dto = RequestMapper_1.RequestMapper.toConsumptionRequestDTO(consumptionRequest);
41
41
  this.eventBus.publish(new events_1.OutgoingRequestStatusChangedEvent(this.outgoingRequestsController.parent.accountController.identity.address.address, {
42
42
  request: dto,
43
- oldStatus: consumption_1.ConsumptionRequestStatus.Decided,
43
+ oldStatus: consumption_1.ConsumptionRequestStatus.Draft,
44
44
  newStatus: dto.status
45
45
  }));
46
46
  return ts_utils_1.Result.ok(dto);
@@ -1 +1 @@
1
- {"version":3,"file":"SentOutgoingRequest.js","sourceRoot":"","sources":["../../../../src/useCases/consumption/requests/SentOutgoingRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAuE;AACvE,oDAA0H;AAC1H,gDAAsE;AACtE,mDAAwC;AACxC,4CAAoE;AAEpE,yCAAsD;AACtD,mDAAgD;AAchD,IAAa,0BAA0B,GAAvC,MAAa,0BAA2B,SAAQ,gBAA0D;IACtG,YAC6B,0BAAsD,EACtD,iBAAoC,EACpC,QAAkB;QAE3C,KAAK,EAAE,CAAC;QAJiB,+BAA0B,GAA1B,0BAA0B,CAA4B;QACtD,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,aAAQ,GAAR,QAAQ,CAAU;IAG/C,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,OAAmC;QAC/D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,kBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAExF,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,iBAAM,CAAC,IAAI,CAAC,sBAAa,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAO,CAAC,CAAC,CAAC;SACrE;QAED,MAAM,MAAM,GAAmC;YAC3C,SAAS,EAAE,kBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YACzC,mBAAmB,EAAE,OAAO;SAC/B,CAAC;QAEF,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9E,MAAM,GAAG,GAAG,6BAAa,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,OAAO,CACjB,IAAI,0CAAiC,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;YACrH,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,sCAAwB,CAAC,OAAO;YAC3C,SAAS,EAAE,GAAG,CAAC,MAAM;SACxB,CAAC,CACL,CAAC;QAEF,OAAO,iBAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACJ,CAAA;AAnCY,0BAA0B;IAE9B,WAAA,uBAAM,CAAA;IACN,WAAA,uBAAM,CAAA;IACN,WAAA,uBAAM,CAAA;qCAF8C,wCAA0B;QACnC,6BAAiB;QAC1B,mBAAQ;GAJtC,0BAA0B,CAmCtC;AAnCY,gEAA0B"}
1
+ {"version":3,"file":"SentOutgoingRequest.js","sourceRoot":"","sources":["../../../../src/useCases/consumption/requests/SentOutgoingRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAuE;AACvE,oDAA0H;AAC1H,gDAAsE;AACtE,mDAAwC;AACxC,4CAAoE;AAEpE,yCAAsD;AACtD,mDAAgD;AAchD,IAAa,0BAA0B,GAAvC,MAAa,0BAA2B,SAAQ,gBAA0D;IACtG,YAC6B,0BAAsD,EACtD,iBAAoC,EACpC,QAAkB;QAE3C,KAAK,EAAE,CAAC;QAJiB,+BAA0B,GAA1B,0BAA0B,CAA4B;QACtD,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,aAAQ,GAAR,QAAQ,CAAU;IAG/C,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,OAAmC;QAC/D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,kBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAExF,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,iBAAM,CAAC,IAAI,CAAC,sBAAa,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAO,CAAC,CAAC,CAAC;SACrE;QAED,MAAM,MAAM,GAAmC;YAC3C,SAAS,EAAE,kBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YACzC,mBAAmB,EAAE,OAAO;SAC/B,CAAC;QAEF,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9E,MAAM,GAAG,GAAG,6BAAa,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,OAAO,CACjB,IAAI,0CAAiC,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;YACrH,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,sCAAwB,CAAC,KAAK;YACzC,SAAS,EAAE,GAAG,CAAC,MAAM;SACxB,CAAC,CACL,CAAC;QAEF,OAAO,iBAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACJ,CAAA;AAnCY,0BAA0B;IAE9B,WAAA,uBAAM,CAAA;IACN,WAAA,uBAAM,CAAA;IACN,WAAA,uBAAM,CAAA;qCAF8C,wCAA0B;QACnC,6BAAiB;QAC1B,mBAAQ;GAJtC,0BAA0B,CAmCtC;AAnCY,gEAA0B"}
@@ -435,10 +435,10 @@ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
435
435
  const crypto_1 = __webpack_require__(/*! @nmshd/crypto */ "@nmshd/crypto");
436
436
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
437
437
  exports.buildInformation = {
438
- version: "2.0.0-alpha.17",
439
- build: "64",
440
- date: "2022-06-14T08:55:01+00:00",
441
- commit: "1a66d300cf56949ab479115f2fbe098df64f0b92",
438
+ version: "2.0.0-alpha.18",
439
+ build: "65",
440
+ date: "2022-06-14T12:59:35+00:00",
441
+ commit: "30cb7c19cb7d6bc5c3384c20ebdf8656050bcf94",
442
442
  dependencies: {"@js-soft/docdb-querytranslator":"1.0.1","@js-soft/logging-abstractions":"1.0.0","@js-soft/ts-serval":"2.0.3","@js-soft/ts-utils":"^1.1.2","@nmshd/consumption":"2.0.0-alpha.20","@nmshd/content":"2.0.0-alpha.35","@nmshd/crypto":"2.0.1","@nmshd/transport":"2.0.0-alpha.2","ajv":"^8.11.0","ajv-errors":"^3.0.0","ajv-formats":"^2.1.1","fluent-ts-validator":"3.0.3","json-stringify-safe":"^5.0.1","luxon":"^2.4.0","qrcode":"1.5.0","reflect-metadata":"0.1.13","ts-simple-nameof":"1.3.1","typescript-ioc":"3.2.2"},
443
443
  libraries: {
444
444
  serval: ts_serval_1.buildInformation,
@@ -3557,6 +3557,7 @@ class RequestModule extends RuntimeModule_1.RuntimeModule {
3557
3557
  start() {
3558
3558
  this.subscribeToEvent(events_1.PeerRelationshipTemplateLoadedEvent, this.handlePeerRelationshipTemplateLoaded.bind(this));
3559
3559
  this.subscribeToEvent(events_1.MessageReceivedEvent, this.handleMessageReceivedEvent.bind(this));
3560
+ this.subscribeToEvent(events_1.MessageSentEvent, this.handleMessageSentEvent.bind(this));
3560
3561
  this.subscribeToEvent(events_1.IncomingRequestStatusChangedEvent, this.handleIncomingRequestStatusChanged.bind(this));
3561
3562
  this.subscribeToEvent(events_1.RelationshipChangedEvent, this.handleRelationshipChangedEvent.bind(this));
3562
3563
  }
@@ -3569,12 +3570,29 @@ class RequestModule extends RuntimeModule_1.RuntimeModule {
3569
3570
  await this.createIncomingRequest(services, request, event.data.id);
3570
3571
  }
3571
3572
  async handleMessageReceivedEvent(event) {
3572
- if (event.data.content["@type"] !== "Request")
3573
+ const services = this.runtime.getServices(event.eventTargetAddress);
3574
+ const messageContentType = event.data.content["@type"];
3575
+ switch (messageContentType) {
3576
+ case "Request":
3577
+ await this.createIncomingRequest(services, event.data.content, event.data.id);
3578
+ break;
3579
+ case "Response":
3580
+ const receivedResponse = event.data.content;
3581
+ await services.consumptionServices.outgoingRequests.complete({ receivedResponse, messageId: event.data.id });
3582
+ break;
3583
+ }
3584
+ }
3585
+ async handleMessageSentEvent(event) {
3586
+ const message = event.data;
3587
+ if (message.content["@type"] !== "Request")
3573
3588
  return;
3574
- // TODO: JSSNMSHDD-2896 (handle response)
3575
- const request = event.data.content;
3576
3589
  const services = this.runtime.getServices(event.eventTargetAddress);
3577
- await this.createIncomingRequest(services, request, event.data.id);
3590
+ const request = message.content;
3591
+ const requestResult = await services.consumptionServices.outgoingRequests.sent({ requestId: request.id, messageId: message.id });
3592
+ if (requestResult.isError) {
3593
+ this.logger.error(`Could not mark request '${request.id}' as sent using message '${message.id}'.`);
3594
+ return;
3595
+ }
3578
3596
  }
3579
3597
  async createIncomingRequest(services, request, requestSourceId) {
3580
3598
  const receivedRequestResult = await services.consumptionServices.incomingRequests.received({ receivedRequest: request, requestSourceId });
@@ -3595,6 +3613,9 @@ class RequestModule extends RuntimeModule_1.RuntimeModule {
3595
3613
  case "RelationshipTemplate":
3596
3614
  await this.handleIncomingRequestDecidedForRelationship(event);
3597
3615
  break;
3616
+ case "Message":
3617
+ await this.handleIncomingRequestDecidedForMessage(event);
3618
+ break;
3598
3619
  default:
3599
3620
  throw new Error(`Cannot handle source.type '${event.data.request.source.type}'.`);
3600
3621
  }
@@ -3635,6 +3656,28 @@ class RequestModule extends RuntimeModule_1.RuntimeModule {
3635
3656
  return;
3636
3657
  }
3637
3658
  }
3659
+ async handleIncomingRequestDecidedForMessage(event) {
3660
+ const request = event.data.request;
3661
+ const requestId = request.id;
3662
+ const services = this.runtime.getServices(event.eventTargetAddress);
3663
+ const sendMessageResult = await services.transportServices.messages.sendMessage({
3664
+ recipients: [request.peer],
3665
+ content: request.response.content
3666
+ });
3667
+ if (sendMessageResult.isError) {
3668
+ this.logger.error(`Could not send message to answer the request '${requestId}'.`);
3669
+ // TODO: error state
3670
+ return;
3671
+ }
3672
+ const completeRequestResult = await services.consumptionServices.incomingRequests.complete({
3673
+ requestId,
3674
+ responseSourceId: sendMessageResult.value.id
3675
+ });
3676
+ if (completeRequestResult.isError) {
3677
+ this.logger.error(`Could not complete the request '${requestId}'.`);
3678
+ return;
3679
+ }
3680
+ }
3638
3681
  async handleRelationshipChangedEvent(event) {
3639
3682
  // only trigger for new relationships that were created from an own template
3640
3683
  if (event.data.status !== types_1.RelationshipStatus.Pending || !event.data.template.isOwn)
@@ -10874,7 +10917,7 @@ let SentOutgoingRequestUseCase = class SentOutgoingRequestUseCase extends common
10874
10917
  const dto = RequestMapper_1.RequestMapper.toConsumptionRequestDTO(consumptionRequest);
10875
10918
  this.eventBus.publish(new events_1.OutgoingRequestStatusChangedEvent(this.outgoingRequestsController.parent.accountController.identity.address.address, {
10876
10919
  request: dto,
10877
- oldStatus: consumption_1.ConsumptionRequestStatus.Decided,
10920
+ oldStatus: consumption_1.ConsumptionRequestStatus.Draft,
10878
10921
  newStatus: dto.status
10879
10922
  }));
10880
10923
  return ts_utils_1.Result.ok(dto);