@thalesrc/hermes 7.3.0 → 7.4.7

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.
@@ -4,6 +4,7 @@ exports.BroadcastMessageHost = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  const message_host_1 = require("../message-host");
6
6
  const default_channel_name_1 = require("./default-channel-name");
7
+ const selectors_1 = require("../selectors");
7
8
  class BroadcastMessageHost extends message_host_1.MessageHost {
8
9
  #requests$ = new rxjs_1.Subject();
9
10
  #channel;
@@ -11,9 +12,9 @@ class BroadcastMessageHost extends message_host_1.MessageHost {
11
12
  super();
12
13
  this.#channel = new BroadcastChannel(channelName);
13
14
  this.#channel.addEventListener('message', this.#handler);
14
- this.listen(this.#requests$);
15
+ this[selectors_1.LISTEN](this.#requests$);
15
16
  }
16
- response(message) {
17
+ [selectors_1.RESPONSE](message) {
17
18
  this.#channel.postMessage(message);
18
19
  }
19
20
  terminate() {
@@ -1,8 +1,9 @@
1
1
  import { MessageHost } from "../message-host";
2
2
  import { MessageResponse } from "../message-response.type";
3
+ import { RESPONSE } from "../selectors";
3
4
  export declare class BroadcastMessageHost extends MessageHost {
4
5
  #private;
5
6
  constructor(channelName?: string);
6
- protected response(message: MessageResponse): void;
7
+ protected [RESPONSE](message: MessageResponse): void;
7
8
  terminate(): void;
8
9
  }
@@ -1,6 +1,7 @@
1
1
  import { Subject } from "rxjs";
2
2
  import { MessageHost } from "../message-host";
3
3
  import { DEFAULT_CHANNEL_NAME } from "./default-channel-name";
4
+ import { LISTEN, RESPONSE } from "../selectors";
4
5
  export class BroadcastMessageHost extends MessageHost {
5
6
  #requests$ = new Subject();
6
7
  #channel;
@@ -8,9 +9,9 @@ export class BroadcastMessageHost extends MessageHost {
8
9
  super();
9
10
  this.#channel = new BroadcastChannel(channelName);
10
11
  this.#channel.addEventListener('message', this.#handler);
11
- this.listen(this.#requests$);
12
+ this[LISTEN](this.#requests$);
12
13
  }
13
- response(message) {
14
+ [RESPONSE](message) {
14
15
  this.#channel.postMessage(message);
15
16
  }
16
17
  terminate() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../libs/hermes/src/broadcast/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAM9D,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;IACpC,QAAQ,CAAmB;IAE3B,YAAY,WAAW,GAAG,oBAAoB;QAC5C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAElD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAES,QAAQ,CAAC,OAAwB;QACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,QAAQ,GAAG,CAAC,KAA4B,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAA;CACF","file":"message-host.js","sourcesContent":["import { Subject } from \"rxjs\";\nimport { MessageHost } from \"../message-host\";\nimport { MessageResponse } from \"../message-response.type\";\nimport { Message } from \"../message.interface\";\nimport { DEFAULT_CHANNEL_NAME } from \"./default-channel-name\";\n\ninterface MessageEvent<T> {\n data: T;\n}\n\nexport class BroadcastMessageHost extends MessageHost {\n #requests$ = new Subject<Message>();\n #channel: BroadcastChannel;\n\n constructor(channelName = DEFAULT_CHANNEL_NAME) {\n super();\n\n this.#channel = new BroadcastChannel(channelName);\n\n this.#channel.addEventListener('message', this.#handler);\n this.listen(this.#requests$);\n }\n\n protected response(message: MessageResponse) {\n this.#channel.postMessage(message);\n }\n\n terminate() {\n this.#channel.removeEventListener('message', this.#handler);\n this.#channel.close();\n }\n\n #handler = (event: MessageEvent<Message>) => {\n this.#requests$.next(event.data);\n }\n}"]}
1
+ {"version":3,"sources":["../../../../../libs/hermes/src/broadcast/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;IACpC,QAAQ,CAAmB;IAE3B,YAAY,WAAW,GAAG,oBAAoB;QAC5C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAElD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAES,CAAC,QAAQ,CAAC,CAAC,OAAwB;QAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,QAAQ,GAAG,CAAC,KAA4B,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAA;CACF","file":"message-host.js","sourcesContent":["import { Subject } from \"rxjs\";\nimport { MessageHost } from \"../message-host\";\nimport { MessageResponse } from \"../message-response.type\";\nimport { Message } from \"../message.interface\";\nimport { DEFAULT_CHANNEL_NAME } from \"./default-channel-name\";\nimport { LISTEN, RESPONSE } from \"../selectors\";\n\ninterface MessageEvent<T> {\n data: T;\n}\n\nexport class BroadcastMessageHost extends MessageHost {\n #requests$ = new Subject<Message>();\n #channel: BroadcastChannel;\n\n constructor(channelName = DEFAULT_CHANNEL_NAME) {\n super();\n\n this.#channel = new BroadcastChannel(channelName);\n\n this.#channel.addEventListener('message', this.#handler);\n this[LISTEN](this.#requests$);\n }\n\n protected [RESPONSE](message: MessageResponse) {\n this.#channel.postMessage(message);\n }\n\n terminate() {\n this.#channel.removeEventListener('message', this.#handler);\n this.#channel.close();\n }\n\n #handler = (event: MessageEvent<Message>) => {\n this.#requests$.next(event.data);\n }\n}\n"]}
@@ -4,6 +4,7 @@ exports.ChromeMessageHost = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  const message_host_1 = require("../message-host");
6
6
  const default_connection_name_1 = require("./default-connection-name");
7
+ const selectors_1 = require("../selectors");
7
8
  class ChromeMessageHost extends message_host_1.MessageHost {
8
9
  static PORT_IDENTIFIER = 'portIdentifier';
9
10
  #ports = {};
@@ -19,7 +20,7 @@ class ChromeMessageHost extends message_host_1.MessageHost {
19
20
  this.#ports[incomingMessagePort.sender.tab.id] = incomingMessagePort;
20
21
  incomingMessagePort.onDisconnect.addListener(disconnectedPort => {
21
22
  delete this.#ports[disconnectedPort.sender.tab.id];
22
- this.terminateMessage$.next(message.id);
23
+ this[selectors_1.TERMINATE_MESSAGE$].next(message.id);
23
24
  });
24
25
  }
25
26
  const newMessage = {
@@ -29,9 +30,9 @@ class ChromeMessageHost extends message_host_1.MessageHost {
29
30
  this.#requests.next(newMessage);
30
31
  });
31
32
  });
32
- this.listen(this.#requests);
33
+ this[selectors_1.LISTEN](this.#requests);
33
34
  }
34
- response(message) {
35
+ [selectors_1.RESPONSE](message) {
35
36
  const [messageId, portId] = message.id.split(`&${ChromeMessageHost.PORT_IDENTIFIER}=`);
36
37
  message.id = messageId;
37
38
  if (this.#ports[portId]) {
@@ -1,8 +1,9 @@
1
1
  import { MessageHost } from '../message-host';
2
2
  import { SuccessfulMessageResponse } from '../message-response.type';
3
+ import { RESPONSE } from '../selectors';
3
4
  export declare class ChromeMessageHost extends MessageHost {
4
5
  #private;
5
6
  private static readonly PORT_IDENTIFIER;
6
7
  constructor(name?: string);
7
- protected response(message: SuccessfulMessageResponse): void;
8
+ protected [RESPONSE](message: SuccessfulMessageResponse): void;
8
9
  }
@@ -1,6 +1,7 @@
1
1
  import { Subject } from 'rxjs';
2
2
  import { MessageHost } from '../message-host';
3
3
  import { DEFAULT_CONNECTION_NAME } from './default-connection-name';
4
+ import { LISTEN, RESPONSE, TERMINATE_MESSAGE$ } from '../selectors';
4
5
  export class ChromeMessageHost extends MessageHost {
5
6
  static PORT_IDENTIFIER = 'portIdentifier';
6
7
  #ports = {};
@@ -16,7 +17,7 @@ export class ChromeMessageHost extends MessageHost {
16
17
  this.#ports[incomingMessagePort.sender.tab.id] = incomingMessagePort;
17
18
  incomingMessagePort.onDisconnect.addListener(disconnectedPort => {
18
19
  delete this.#ports[disconnectedPort.sender.tab.id];
19
- this.terminateMessage$.next(message.id);
20
+ this[TERMINATE_MESSAGE$].next(message.id);
20
21
  });
21
22
  }
22
23
  const newMessage = {
@@ -26,9 +27,9 @@ export class ChromeMessageHost extends MessageHost {
26
27
  this.#requests.next(newMessage);
27
28
  });
28
29
  });
29
- this.listen(this.#requests);
30
+ this[LISTEN](this.#requests);
30
31
  }
31
- response(message) {
32
+ [RESPONSE](message) {
32
33
  const [messageId, portId] = message.id.split(`&${ChromeMessageHost.PORT_IDENTIFIER}=`);
33
34
  message.id = messageId;
34
35
  if (this.#ports[portId]) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../libs/hermes/src/chrome/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IACxC,MAAM,CAAU,eAAe,GAAG,gBAAgB,CAAC;IAE3D,MAAM,GAAyC,EAAE,CAAC;IAClD,SAAS,GAAG,IAAI,OAAO,EAAW,CAAC;IAEnC,YAAY,IAAI,GAAG,uBAAuB;QACxC,KAAK,EAAE,CAAC;QAER,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAgB,EAAE,mBAAwC,EAAE,EAAE;gBACxF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAO,CAAC,GAAI,CAAC,EAAG,CAAC,EAAE,CAAC;oBACvD,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAO,CAAC,GAAI,CAAC,EAAG,CAAC,GAAG,mBAAmB,CAAC;oBAExE,mBAAmB,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;wBAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAO,CAAC,GAAI,CAAC,EAAG,CAAC,CAAC;wBACtD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG;oBACjB,GAAG,OAAO;oBACV,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,iBAAiB,CAAC,eAAe,IAAI,mBAAmB,CAAC,MAAO,CAAC,GAAI,CAAC,EAAG,EAAE;iBACjG,CAAC;gBAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAES,QAAQ,CAAC,OAAkC;QACnD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,eAAe,GAAG,CAAC,CAAC;QAEvF,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;QAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC","file":"message-host.js","sourcesContent":["import { Subject } from 'rxjs';\n\nimport { MessageHost } from '../message-host';\nimport { SuccessfulMessageResponse } from '../message-response.type';\nimport { Message } from '../message.interface';\nimport { DEFAULT_CONNECTION_NAME } from './default-connection-name';\n\nexport class ChromeMessageHost extends MessageHost {\n private static readonly PORT_IDENTIFIER = 'portIdentifier';\n\n #ports: {[key: string]: chrome.runtime.Port} = {};\n #requests = new Subject<Message>();\n\n constructor(name = DEFAULT_CONNECTION_NAME) {\n super();\n\n chrome.runtime.onConnect.addListener((port) => {\n if (port.name !== name) {\n return;\n }\n\n port.onMessage.addListener((message: Message, incomingMessagePort: chrome.runtime.Port) => {\n if (!this.#ports[incomingMessagePort.sender!.tab!.id!]) {\n this.#ports[incomingMessagePort.sender!.tab!.id!] = incomingMessagePort;\n\n incomingMessagePort.onDisconnect.addListener(disconnectedPort => {\n delete this.#ports[disconnectedPort.sender!.tab!.id!];\n this.terminateMessage$.next(message.id);\n });\n }\n\n const newMessage = {\n ...message,\n id: `${message.id}&${ChromeMessageHost.PORT_IDENTIFIER}=${incomingMessagePort.sender!.tab!.id!}`,\n };\n\n this.#requests.next(newMessage);\n });\n });\n\n this.listen(this.#requests);\n }\n\n protected response(message: SuccessfulMessageResponse): void {\n const [messageId, portId] = message.id.split(`&${ChromeMessageHost.PORT_IDENTIFIER}=`);\n\n message.id = messageId;\n\n if (this.#ports[portId]) {\n this.#ports[portId].postMessage(message);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../../libs/hermes/src/chrome/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IACxC,MAAM,CAAU,eAAe,GAAG,gBAAgB,CAAC;IAE3D,MAAM,GAAyC,EAAE,CAAC;IAClD,SAAS,GAAG,IAAI,OAAO,EAAW,CAAC;IAEnC,YAAY,IAAI,GAAG,uBAAuB;QACxC,KAAK,EAAE,CAAC;QAER,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAgB,EAAE,mBAAwC,EAAE,EAAE;gBACxF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAO,CAAC,GAAI,CAAC,EAAG,CAAC,EAAE,CAAC;oBACvD,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAO,CAAC,GAAI,CAAC,EAAG,CAAC,GAAG,mBAAmB,CAAC;oBAExE,mBAAmB,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;wBAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAO,CAAC,GAAI,CAAC,EAAG,CAAC,CAAC;wBACtD,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC5C,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG;oBACjB,GAAG,OAAO;oBACV,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,iBAAiB,CAAC,eAAe,IAAI,mBAAmB,CAAC,MAAO,CAAC,GAAI,CAAC,EAAG,EAAE;iBACjG,CAAC;gBAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAES,CAAC,QAAQ,CAAC,CAAC,OAAkC;QACrD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,eAAe,GAAG,CAAC,CAAC;QAEvF,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;QAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC","file":"message-host.js","sourcesContent":["import { Subject } from 'rxjs';\n\nimport { MessageHost } from '../message-host';\nimport { SuccessfulMessageResponse } from '../message-response.type';\nimport { Message } from '../message.interface';\nimport { DEFAULT_CONNECTION_NAME } from './default-connection-name';\nimport { LISTEN, RESPONSE, TERMINATE_MESSAGE$ } from '../selectors';\n\nexport class ChromeMessageHost extends MessageHost {\n private static readonly PORT_IDENTIFIER = 'portIdentifier';\n\n #ports: {[key: string]: chrome.runtime.Port} = {};\n #requests = new Subject<Message>();\n\n constructor(name = DEFAULT_CONNECTION_NAME) {\n super();\n\n chrome.runtime.onConnect.addListener((port) => {\n if (port.name !== name) {\n return;\n }\n\n port.onMessage.addListener((message: Message, incomingMessagePort: chrome.runtime.Port) => {\n if (!this.#ports[incomingMessagePort.sender!.tab!.id!]) {\n this.#ports[incomingMessagePort.sender!.tab!.id!] = incomingMessagePort;\n\n incomingMessagePort.onDisconnect.addListener(disconnectedPort => {\n delete this.#ports[disconnectedPort.sender!.tab!.id!];\n this[TERMINATE_MESSAGE$].next(message.id);\n });\n }\n\n const newMessage = {\n ...message,\n id: `${message.id}&${ChromeMessageHost.PORT_IDENTIFIER}=${incomingMessagePort.sender!.tab!.id!}`,\n };\n\n this.#requests.next(newMessage);\n });\n });\n\n this[LISTEN](this.#requests);\n }\n\n protected [RESPONSE](message: SuccessfulMessageResponse): void {\n const [messageId, portId] = message.id.split(`&${ChromeMessageHost.PORT_IDENTIFIER}=`);\n\n message.id = messageId;\n\n if (this.#ports[portId]) {\n this.#ports[portId].postMessage(message);\n }\n }\n}\n"]}
@@ -7,6 +7,7 @@ const message_host_1 = require("../message-host");
7
7
  const channel_path_splitter_1 = require("./channel-path-splitter");
8
8
  const default_channel_name_1 = require("./default-channel-name");
9
9
  const source_id_splitter_1 = require("./source-id-splitter");
10
+ const selectors_1 = require("../selectors");
10
11
  class IframeMessageHost extends message_host_1.MessageHost {
11
12
  channelName;
12
13
  #requests = new rxjs_1.Subject();
@@ -22,12 +23,12 @@ class IframeMessageHost extends message_host_1.MessageHost {
22
23
  this.channelName = channelName;
23
24
  this.#_targetFrame = targetFrame;
24
25
  window.addEventListener('message', this.#handler);
25
- this.listen(this.#requests);
26
+ this[selectors_1.LISTEN](this.#requests);
26
27
  }
27
28
  terminate() {
28
29
  window.removeEventListener('message', this.#handler);
29
30
  }
30
- response(message) {
31
+ [selectors_1.RESPONSE](message) {
31
32
  const [sourceId, messageId] = message.id.split(source_id_splitter_1.SOURCE_ID_SPLITTER);
32
33
  const [, source] = this.#sources.find(([sId]) => sId === sourceId);
33
34
  message = {
@@ -1,10 +1,11 @@
1
1
  import { MessageHost } from '../message-host';
2
2
  import { SuccessfulMessageResponse } from '../message-response.type';
3
3
  import { IFrame } from './iframe.type';
4
+ import { RESPONSE } from '../selectors';
4
5
  export declare class IframeMessageHost extends MessageHost {
5
6
  #private;
6
7
  private channelName;
7
8
  constructor(channelName?: string, targetFrame?: IFrame);
8
9
  terminate(): void;
9
- protected response(message: SuccessfulMessageResponse): void;
10
+ protected [RESPONSE](message: SuccessfulMessageResponse): void;
10
11
  }
@@ -4,6 +4,7 @@ import { MessageHost } from '../message-host';
4
4
  import { CHANNEL_PATH_SPLITTER } from './channel-path-splitter';
5
5
  import { DEFAULT_CHANNEL_NAME } from './default-channel-name';
6
6
  import { SOURCE_ID_SPLITTER } from './source-id-splitter';
7
+ import { LISTEN, RESPONSE } from '../selectors';
7
8
  export class IframeMessageHost extends MessageHost {
8
9
  channelName;
9
10
  #requests = new Subject();
@@ -19,12 +20,12 @@ export class IframeMessageHost extends MessageHost {
19
20
  this.channelName = channelName;
20
21
  this.#_targetFrame = targetFrame;
21
22
  window.addEventListener('message', this.#handler);
22
- this.listen(this.#requests);
23
+ this[LISTEN](this.#requests);
23
24
  }
24
25
  terminate() {
25
26
  window.removeEventListener('message', this.#handler);
26
27
  }
27
- response(message) {
28
+ [RESPONSE](message) {
28
29
  const [sourceId, messageId] = message.id.split(SOURCE_ID_SPLITTER);
29
30
  const [, source] = this.#sources.find(([sId]) => sId === sourceId);
30
31
  message = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../libs/hermes/src/iframe/message-host.ts"],"names":[],"mappings":"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","file":"message-host.js","sourcesContent":["import { uniqueId } from '@thalesrc/js-utils';\nimport { Subject } from 'rxjs';\nimport { MessageHost } from '../message-host';\nimport { SuccessfulMessageResponse } from '../message-response.type';\nimport { Message } from '../message.interface';\nimport { CHANNEL_PATH_SPLITTER } from './channel-path-splitter';\nimport { DEFAULT_CHANNEL_NAME } from './default-channel-name';\nimport { SOURCE_ID_SPLITTER } from './source-id-splitter';\nimport { IFrame } from './iframe.type';\n\nexport class IframeMessageHost extends MessageHost {\n #requests = new Subject<Message>();\n #sources: Array<[string, MessageEventSource]> = [];\n #_targetFrame: IFrame | undefined;\n\n get #targetFrame(): null | HTMLIFrameElement {\n return typeof this.#_targetFrame === 'function'\n ? (this.#_targetFrame as () => HTMLIFrameElement)() || null\n : this.#_targetFrame as HTMLIFrameElement || null;\n }\n\n constructor(\n private channelName = DEFAULT_CHANNEL_NAME,\n targetFrame?: IFrame\n ) {\n super();\n\n this.#_targetFrame = targetFrame;\n\n window.addEventListener('message', this.#handler);\n\n this.listen(this.#requests);\n }\n\n public terminate(): void {\n window.removeEventListener('message', this.#handler);\n }\n\n protected response(message: SuccessfulMessageResponse): void {\n const [sourceId, messageId] = message.id.split(SOURCE_ID_SPLITTER);\n const [, source] = this.#sources.find(([sId]) => sId === sourceId)!;\n\n message = {\n ...message,\n id: messageId,\n };\n\n (source as any).postMessage(message);\n }\n\n #handler = ({data, source}: MessageEvent<Message>) => {\n if (!data || typeof data !== 'object' || !data.path || typeof data.id === 'undefined') {\n return;\n }\n\n const targetFrame = this.#targetFrame;\n\n if (targetFrame && targetFrame.contentWindow !== source) {\n return;\n }\n\n const [channel, path] = data.path.split(CHANNEL_PATH_SPLITTER);\n\n if (channel !== this.channelName) {\n return;\n }\n\n if (!this.#sources.some(([, s]) => s === source)) {\n this.#sources.push([uniqueId('hermes-iframe-source') as string, source!]);\n }\n\n const [sourceId] = this.#sources.find(([, s]) => s === source)!;\n this.#requests.next({\n body: targetFrame ? data.body : {data: data.body, sender: source},\n id: `${sourceId}${SOURCE_ID_SPLITTER}${data.id}`,\n path,\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../../libs/hermes/src/iframe/message-host.ts"],"names":[],"mappings":"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","file":"message-host.js","sourcesContent":["import { uniqueId } from '@thalesrc/js-utils';\nimport { Subject } from 'rxjs';\nimport { MessageHost } from '../message-host';\nimport { SuccessfulMessageResponse } from '../message-response.type';\nimport { Message } from '../message.interface';\nimport { CHANNEL_PATH_SPLITTER } from './channel-path-splitter';\nimport { DEFAULT_CHANNEL_NAME } from './default-channel-name';\nimport { SOURCE_ID_SPLITTER } from './source-id-splitter';\nimport { IFrame } from './iframe.type';\nimport { LISTEN, RESPONSE } from '../selectors';\n\nexport class IframeMessageHost extends MessageHost {\n #requests = new Subject<Message>();\n #sources: Array<[string, MessageEventSource]> = [];\n #_targetFrame: IFrame | undefined;\n\n get #targetFrame(): null | HTMLIFrameElement {\n return typeof this.#_targetFrame === 'function'\n ? (this.#_targetFrame as () => HTMLIFrameElement)() || null\n : this.#_targetFrame as HTMLIFrameElement || null;\n }\n\n constructor(\n private channelName = DEFAULT_CHANNEL_NAME,\n targetFrame?: IFrame\n ) {\n super();\n\n this.#_targetFrame = targetFrame;\n\n window.addEventListener('message', this.#handler);\n\n this[LISTEN](this.#requests);\n }\n\n public terminate(): void {\n window.removeEventListener('message', this.#handler);\n }\n\n protected [RESPONSE](message: SuccessfulMessageResponse): void {\n const [sourceId, messageId] = message.id.split(SOURCE_ID_SPLITTER);\n const [, source] = this.#sources.find(([sId]) => sId === sourceId)!;\n\n message = {\n ...message,\n id: messageId,\n };\n\n (source as any).postMessage(message);\n }\n\n #handler = ({data, source}: MessageEvent<Message>) => {\n if (!data || typeof data !== 'object' || !data.path || typeof data.id === 'undefined') {\n return;\n }\n\n const targetFrame = this.#targetFrame;\n\n if (targetFrame && targetFrame.contentWindow !== source) {\n return;\n }\n\n const [channel, path] = data.path.split(CHANNEL_PATH_SPLITTER);\n\n if (channel !== this.channelName) {\n return;\n }\n\n if (!this.#sources.some(([, s]) => s === source)) {\n this.#sources.push([uniqueId('hermes-iframe-source') as string, source!]);\n }\n\n const [sourceId] = this.#sources.find(([, s]) => s === source)!;\n this.#requests.next({\n body: targetFrame ? data.body : {data: data.body, sender: source},\n id: `${sourceId}${SOURCE_ID_SPLITTER}${data.id}`,\n path,\n });\n }\n}\n"]}
package/message-host.cjs CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MessageHost = void 0;
4
- const js_utils_1 = require("@thalesrc/js-utils");
5
4
  const rxjs_1 = require("rxjs");
6
5
  const operators_1 = require("rxjs/operators");
7
6
  const selectors_1 = require("./selectors");
@@ -14,20 +13,26 @@ class MessageHost {
14
13
  *
15
14
  * Use `next(messageId)` method to terminate a message connection
16
15
  */
17
- terminateMessage$ = new rxjs_1.Subject();
16
+ [selectors_1.TERMINATE_MESSAGE$] = new rxjs_1.Subject();
18
17
  /**
19
18
  * Run this method to start listening the requests
20
19
  */
21
- listen = (messages$) => {
20
+ [selectors_1.LISTEN] = (messages$) => {
22
21
  for (const [path, listeners] of this.#getListeners()) {
23
22
  messages$
24
23
  .pipe((0, operators_1.filter)(({ path: messagePath }) => path === messagePath))
25
24
  .subscribe(({ body, id }) => {
26
25
  for (const listener of listeners) {
27
- listener.call(this, body).pipe((0, operators_1.takeUntil)(this.terminateMessage$.pipe((0, operators_1.filter)(terminatedMessageId => terminatedMessageId === id)))).subscribe(result => {
28
- this.response({ completed: false, id, body: result });
29
- }, js_utils_1.noop, () => {
30
- this.response({ completed: true, id });
26
+ listener.call(this, body).pipe((0, operators_1.takeUntil)(this[selectors_1.TERMINATE_MESSAGE$].pipe((0, operators_1.filter)(terminatedMessageId => terminatedMessageId === id)))).subscribe({
27
+ next: result => {
28
+ this[selectors_1.RESPONSE]({ completed: false, id, body: result });
29
+ },
30
+ error: error => {
31
+ this[selectors_1.RESPONSE]({ completed: true, id, error });
32
+ },
33
+ complete: () => {
34
+ this[selectors_1.RESPONSE]({ completed: true, id });
35
+ }
31
36
  });
32
37
  }
33
38
  });
package/message-host.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Observable, Subject } from 'rxjs';
2
2
  import { SuccessfulMessageResponse } from './message-response.type';
3
3
  import { Message } from './message.interface';
4
+ import { LISTEN, RESPONSE, TERMINATE_MESSAGE$ } from './selectors';
4
5
  /**
5
6
  * Message Host
6
7
  */
@@ -11,15 +12,15 @@ export declare abstract class MessageHost {
11
12
  *
12
13
  * Use `next(messageId)` method to terminate a message connection
13
14
  */
14
- protected readonly terminateMessage$: Subject<string>;
15
+ protected readonly [TERMINATE_MESSAGE$]: Subject<string>;
15
16
  /**
16
17
  * Run this method to start listening the requests
17
18
  */
18
- protected readonly listen: (messages$: Observable<Message>) => void;
19
+ protected readonly [LISTEN]: (messages$: Observable<Message>) => void;
19
20
  /**
20
21
  * Build a reponse method to send the responses to the requests by using the communication methods of the platform
21
22
  *
22
23
  * @param message Incoming response message
23
24
  */
24
- protected abstract response<T = any>(message: SuccessfulMessageResponse<T>): void;
25
+ protected abstract [RESPONSE]<T = any>(message: SuccessfulMessageResponse<T>): void;
25
26
  }
package/message-host.js CHANGED
@@ -1,7 +1,6 @@
1
- import { noop } from '@thalesrc/js-utils';
2
1
  import { Subject } from 'rxjs';
3
2
  import { filter, takeUntil } from 'rxjs/operators';
4
- import { MESSAGE_LISTENERS } from './selectors';
3
+ import { LISTEN, MESSAGE_LISTENERS, RESPONSE, TERMINATE_MESSAGE$ } from './selectors';
5
4
  /**
6
5
  * Message Host
7
6
  */
@@ -11,20 +10,26 @@ export class MessageHost {
11
10
  *
12
11
  * Use `next(messageId)` method to terminate a message connection
13
12
  */
14
- terminateMessage$ = new Subject();
13
+ [TERMINATE_MESSAGE$] = new Subject();
15
14
  /**
16
15
  * Run this method to start listening the requests
17
16
  */
18
- listen = (messages$) => {
17
+ [LISTEN] = (messages$) => {
19
18
  for (const [path, listeners] of this.#getListeners()) {
20
19
  messages$
21
20
  .pipe(filter(({ path: messagePath }) => path === messagePath))
22
21
  .subscribe(({ body, id }) => {
23
22
  for (const listener of listeners) {
24
- listener.call(this, body).pipe(takeUntil(this.terminateMessage$.pipe(filter(terminatedMessageId => terminatedMessageId === id)))).subscribe(result => {
25
- this.response({ completed: false, id, body: result });
26
- }, noop, () => {
27
- this.response({ completed: true, id });
23
+ listener.call(this, body).pipe(takeUntil(this[TERMINATE_MESSAGE$].pipe(filter(terminatedMessageId => terminatedMessageId === id)))).subscribe({
24
+ next: result => {
25
+ this[RESPONSE]({ completed: false, id, body: result });
26
+ },
27
+ error: error => {
28
+ this[RESPONSE]({ completed: true, id, error });
29
+ },
30
+ complete: () => {
31
+ this[RESPONSE]({ completed: true, id });
32
+ }
28
33
  });
29
34
  }
30
35
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../libs/hermes/src/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAc,OAAO,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD;;GAEG;AACH,MAAM,OAAgB,WAAW;IAC/B;;;;OAIG;IACgB,iBAAiB,GAAG,IAAI,OAAO,EAAU,CAAC;IAE7D;;OAEG;IACgB,MAAM,GAAG,CAAC,SAA8B,EAAQ,EAAE;QACnE,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrD,SAAS;iBACN,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;iBAC3D,SAAS,CAAC,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,EAAE,EAAE;gBACxB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAqB,CAAC,IAAI,CACjD,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC,CAClG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;wBACnB,IAAI,CAAC,QAAQ,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;oBACtD,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC,QAAQ,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBACxC,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC,CAAA;IASD;;OAEG;IACH,aAAa;QACX,MAAM,GAAG,GAAoB,IAAI,GAAG,EAAE,CAAC;QAEvC,IAAI,YAAY,GAAI,IAAY,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QAEnD,OAAO,YAAY,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC1E,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,iBAAiB,CAAoB,EAAE,CAAC;oBAC7F,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC;QACxC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF","file":"message-host.js","sourcesContent":["import { noop } from '@thalesrc/js-utils';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { ListenerStorage } from './listener-storage.type';\nimport { SuccessfulMessageResponse } from './message-response.type';\nimport { Message } from './message.interface';\nimport { MESSAGE_LISTENERS } from './selectors';\n\n\n/**\n * Message Host\n */\nexport abstract class MessageHost {\n /**\n * Message Terminator Subject\n *\n * Use `next(messageId)` method to terminate a message connection\n */\n protected readonly terminateMessage$ = new Subject<string>();\n\n /**\n * Run this method to start listening the requests\n */\n protected readonly listen = (messages$: Observable<Message>): void => {\n for (const [path, listeners] of this.#getListeners()) {\n messages$\n .pipe(filter(({path: messagePath}) => path === messagePath))\n .subscribe(({body, id}) => {\n for (const listener of listeners) {\n (listener.call(this, body) as Observable<any>).pipe(\n takeUntil(this.terminateMessage$.pipe(filter(terminatedMessageId => terminatedMessageId === id))),\n ).subscribe(result => {\n this.response({completed: false, id, body: result});\n }, noop, () => {\n this.response({completed: true, id });\n });\n }\n });\n }\n }\n\n /**\n * Build a reponse method to send the responses to the requests by using the communication methods of the platform\n *\n * @param message Incoming response message\n */\n protected abstract response<T = any>(message: SuccessfulMessageResponse<T>): void;\n\n /**\n * All inherited listeners\n */\n #getListeners(): ListenerStorage {\n const map: ListenerStorage = new Map();\n\n let currentProto = (this as any)['__proto__' + ''];\n\n while (currentProto.constructor !== Object) {\n if (Reflect.ownKeys(currentProto.constructor).includes(MESSAGE_LISTENERS)) {\n for (const [key, handlers] of currentProto.constructor[MESSAGE_LISTENERS] as ListenerStorage) {\n map.set(key, [...(map.get(key) || []), ...handlers]);\n }\n }\n\n currentProto = currentProto.__proto__;\n }\n\n return map;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../../libs/hermes/src/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKnD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAgB,WAAW;IAC/B;;;;OAIG;IACgB,CAAC,kBAAkB,CAAC,GAAG,IAAI,OAAO,EAAU,CAAC;IAEhE;;OAEG;IACgB,CAAC,MAAM,CAAC,GAAG,CAAC,SAA8B,EAAQ,EAAE;QACrE,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrD,SAAS;iBACN,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;iBAC3D,SAAS,CAAC,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,EAAE,EAAE;gBACxB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAqB,CAAC,IAAI,CACjD,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC,CACpG,CAAC,SAAS,CAAC;wBACV,IAAI,EAAE,MAAM,CAAC,EAAE;4BACb,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;wBACvD,CAAC;wBACD,KAAK,EAAE,KAAK,CAAC,EAAE;4BACb,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC;wBAC/C,CAAC;wBACD,QAAQ,EAAE,GAAG,EAAE;4BACb,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;wBACzC,CAAC;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC,CAAA;IASD;;OAEG;IACH,aAAa;QACX,MAAM,GAAG,GAAoB,IAAI,GAAG,EAAE,CAAC;QAEvC,IAAI,YAAY,GAAI,IAAY,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QAEnD,OAAO,YAAY,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC1E,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,iBAAiB,CAAoB,EAAE,CAAC;oBAC7F,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC;QACxC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF","file":"message-host.js","sourcesContent":["import { Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { ListenerStorage } from './listener-storage.type';\nimport { SuccessfulMessageResponse } from './message-response.type';\nimport { Message } from './message.interface';\nimport { LISTEN, MESSAGE_LISTENERS, RESPONSE, TERMINATE_MESSAGE$ } from './selectors';\n\n/**\n * Message Host\n */\nexport abstract class MessageHost {\n /**\n * Message Terminator Subject\n *\n * Use `next(messageId)` method to terminate a message connection\n */\n protected readonly [TERMINATE_MESSAGE$] = new Subject<string>();\n\n /**\n * Run this method to start listening the requests\n */\n protected readonly [LISTEN] = (messages$: Observable<Message>): void => {\n for (const [path, listeners] of this.#getListeners()) {\n messages$\n .pipe(filter(({path: messagePath}) => path === messagePath))\n .subscribe(({body, id}) => {\n for (const listener of listeners) {\n (listener.call(this, body) as Observable<any>).pipe(\n takeUntil(this[TERMINATE_MESSAGE$].pipe(filter(terminatedMessageId => terminatedMessageId === id))),\n ).subscribe({\n next: result => {\n this[RESPONSE]({completed: false, id, body: result});\n },\n error: error => {\n this[RESPONSE]({completed: true, id, error});\n },\n complete: () => {\n this[RESPONSE]({completed: true, id });\n }\n });\n }\n });\n }\n }\n\n /**\n * Build a reponse method to send the responses to the requests by using the communication methods of the platform\n *\n * @param message Incoming response message\n */\n protected abstract [RESPONSE]<T = any>(message: SuccessfulMessageResponse<T>): void;\n\n /**\n * All inherited listeners\n */\n #getListeners(): ListenerStorage {\n const map: ListenerStorage = new Map();\n\n let currentProto = (this as any)['__proto__' + ''];\n\n while (currentProto.constructor !== Object) {\n if (Reflect.ownKeys(currentProto.constructor).includes(MESSAGE_LISTENERS)) {\n for (const [key, handlers] of currentProto.constructor[MESSAGE_LISTENERS] as ListenerStorage) {\n map.set(key, [...(map.get(key) || []), ...handlers]);\n }\n }\n\n currentProto = currentProto.__proto__;\n }\n\n return map;\n }\n}\n"]}
@@ -2,4 +2,5 @@ export interface Message<T = any> {
2
2
  path: string;
3
3
  body: T;
4
4
  id: string;
5
+ error?: any;
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../libs/hermes/src/message.interface.ts"],"names":[],"mappings":"","file":"message.interface.js","sourcesContent":["export interface Message<T = any> {\n path: string;\n body: T;\n id: string;\n}\n"]}
1
+ {"version":3,"sources":["../../../../../libs/hermes/src/message.interface.ts"],"names":[],"mappings":"","file":"message.interface.js","sourcesContent":["export interface Message<T = any> {\n path: string;\n body: T;\n id: string;\n error?: any;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thalesrc/hermes",
3
- "version": "7.3.0",
3
+ "version": "7.4.7",
4
4
  "description": "Javascript messaging library",
5
5
  "keywords": [
6
6
  "javascript",
package/selectors.cjs CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GET_NEW_ID = exports.SEND = exports.RESPONSES$ = exports.SENDING_SERVICE = exports.MESSAGE_LISTENERS = void 0;
3
+ exports.RESPONSE = exports.TERMINATE_MESSAGE$ = exports.LISTEN = exports.GET_NEW_ID = exports.SEND = exports.RESPONSES$ = exports.MESSAGE_LISTENERS = void 0;
4
4
  exports.MESSAGE_LISTENERS = Symbol('Message Listeners');
5
- exports.SENDING_SERVICE = Symbol('Sending Service');
6
5
  exports.RESPONSES$ = Symbol('Responses');
7
6
  exports.SEND = Symbol('Send');
8
7
  exports.GET_NEW_ID = Symbol('Get New Id');
8
+ exports.LISTEN = Symbol('Listen');
9
+ exports.TERMINATE_MESSAGE$ = Symbol('Terminate Message');
10
+ exports.RESPONSE = Symbol('Response');
package/selectors.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export declare const MESSAGE_LISTENERS: unique symbol;
2
- export declare const SENDING_SERVICE: unique symbol;
3
2
  export declare const RESPONSES$: unique symbol;
4
3
  export declare const SEND: unique symbol;
5
4
  export declare const GET_NEW_ID: unique symbol;
5
+ export declare const LISTEN: unique symbol;
6
+ export declare const TERMINATE_MESSAGE$: unique symbol;
7
+ export declare const RESPONSE: unique symbol;
package/selectors.js CHANGED
@@ -1,7 +1,9 @@
1
1
  export const MESSAGE_LISTENERS = Symbol('Message Listeners');
2
- export const SENDING_SERVICE = Symbol('Sending Service');
3
2
  export const RESPONSES$ = Symbol('Responses');
4
3
  export const SEND = Symbol('Send');
5
4
  export const GET_NEW_ID = Symbol('Get New Id');
5
+ export const LISTEN = Symbol('Listen');
6
+ export const TERMINATE_MESSAGE$ = Symbol('Terminate Message');
7
+ export const RESPONSE = Symbol('Response');
6
8
 
7
9
  //# sourceMappingURL=selectors.js.map
package/selectors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../libs/hermes/src/selectors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC","file":"selectors.js","sourcesContent":["export const MESSAGE_LISTENERS = Symbol('Message Listeners');\nexport const SENDING_SERVICE = Symbol('Sending Service');\nexport const RESPONSES$ = Symbol('Responses');\nexport const SEND = Symbol('Send');\nexport const GET_NEW_ID = Symbol('Get New Id');\n"]}
1
+ {"version":3,"sources":["../../../../../libs/hermes/src/selectors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC","file":"selectors.js","sourcesContent":["export const MESSAGE_LISTENERS = Symbol('Message Listeners');\nexport const RESPONSES$ = Symbol('Responses');\nexport const SEND = Symbol('Send');\nexport const GET_NEW_ID = Symbol('Get New Id');\nexport const LISTEN = Symbol('Listen');\nexport const TERMINATE_MESSAGE$ = Symbol('Terminate Message');\nexport const RESPONSE = Symbol('Response');\n"]}
@@ -3,41 +3,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkerMessageHost = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  const message_host_1 = require("../message-host");
6
- const REQUESTS$ = Symbol('Requests');
7
- const HANDLER = Symbol('Handler');
8
- const WORKER = Symbol('Worker');
6
+ const selectors_1 = require("../selectors");
9
7
  class WorkerMessageHost extends message_host_1.MessageHost {
10
- [REQUESTS$] = new rxjs_1.Subject();
11
- [WORKER];
8
+ #requests$ = new rxjs_1.Subject();
9
+ #worker;
12
10
  constructor(worker) {
13
11
  super();
14
12
  if (worker) {
15
- this[WORKER] = worker;
16
- worker.addEventListener('message', this[HANDLER]);
13
+ this.#worker = worker;
14
+ worker.addEventListener('message', this.#handler);
17
15
  }
18
16
  else {
19
- addEventListener('message', this[HANDLER]);
17
+ addEventListener('message', this.#handler);
20
18
  }
21
- this.listen(this[REQUESTS$]);
19
+ this[selectors_1.LISTEN](this.#requests$);
22
20
  }
23
- response(message) {
24
- if (this[WORKER]) {
25
- this[WORKER].postMessage(message);
21
+ [selectors_1.RESPONSE](message) {
22
+ if (this.#worker) {
23
+ this.#worker.postMessage(message);
26
24
  }
27
25
  else {
28
26
  postMessage(message);
29
27
  }
30
28
  }
31
29
  terminate() {
32
- if (this[WORKER]) {
33
- this[WORKER].removeEventListener('message', this[HANDLER]);
30
+ if (this.#worker) {
31
+ this.#worker.removeEventListener('message', this.#handler);
34
32
  }
35
33
  else {
36
- removeEventListener('message', this[HANDLER]);
34
+ removeEventListener('message', this.#handler);
37
35
  }
38
36
  }
39
- [HANDLER] = (event) => {
40
- this[REQUESTS$].next(event.data);
37
+ #handler = (event) => {
38
+ this.#requests$.next(event.data);
41
39
  };
42
40
  }
43
41
  exports.WorkerMessageHost = WorkerMessageHost;
@@ -1,14 +1,9 @@
1
1
  import { MessageHost } from "../message-host";
2
2
  import { MessageResponse } from "../message-response.type";
3
- declare const REQUESTS$: unique symbol;
4
- declare const HANDLER: unique symbol;
5
- declare const WORKER: unique symbol;
3
+ import { RESPONSE } from "../selectors";
6
4
  export declare class WorkerMessageHost extends MessageHost {
7
- private [REQUESTS$];
8
- private [WORKER];
5
+ #private;
9
6
  constructor(worker?: Worker);
10
- protected response(message: MessageResponse): void;
7
+ protected [RESPONSE](message: MessageResponse): void;
11
8
  terminate(): void;
12
- private [HANDLER];
13
9
  }
14
- export {};
@@ -1,40 +1,38 @@
1
1
  import { Subject } from "rxjs";
2
2
  import { MessageHost } from "../message-host";
3
- const REQUESTS$ = Symbol('Requests');
4
- const HANDLER = Symbol('Handler');
5
- const WORKER = Symbol('Worker');
3
+ import { LISTEN, RESPONSE } from "../selectors";
6
4
  export class WorkerMessageHost extends MessageHost {
7
- [REQUESTS$] = new Subject();
8
- [WORKER];
5
+ #requests$ = new Subject();
6
+ #worker;
9
7
  constructor(worker) {
10
8
  super();
11
9
  if (worker) {
12
- this[WORKER] = worker;
13
- worker.addEventListener('message', this[HANDLER]);
10
+ this.#worker = worker;
11
+ worker.addEventListener('message', this.#handler);
14
12
  }
15
13
  else {
16
- addEventListener('message', this[HANDLER]);
14
+ addEventListener('message', this.#handler);
17
15
  }
18
- this.listen(this[REQUESTS$]);
16
+ this[LISTEN](this.#requests$);
19
17
  }
20
- response(message) {
21
- if (this[WORKER]) {
22
- this[WORKER].postMessage(message);
18
+ [RESPONSE](message) {
19
+ if (this.#worker) {
20
+ this.#worker.postMessage(message);
23
21
  }
24
22
  else {
25
23
  postMessage(message);
26
24
  }
27
25
  }
28
26
  terminate() {
29
- if (this[WORKER]) {
30
- this[WORKER].removeEventListener('message', this[HANDLER]);
27
+ if (this.#worker) {
28
+ this.#worker.removeEventListener('message', this.#handler);
31
29
  }
32
30
  else {
33
- removeEventListener('message', this[HANDLER]);
31
+ removeEventListener('message', this.#handler);
34
32
  }
35
33
  }
36
- [HANDLER] = (event) => {
37
- this[REQUESTS$].next(event.data);
34
+ #handler = (event) => {
35
+ this.#requests$.next(event.data);
38
36
  };
39
37
  }
40
38
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../libs/hermes/src/worker/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQ9C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEhC,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IACxC,CAAC,SAAS,CAAC,GAAG,IAAI,OAAO,EAAW,CAAC;IACrC,CAAC,MAAM,CAAC,CAAqB;IAErC,YAAY,MAAe;QACzB,KAAK,EAAE,CAAC;QAER,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;YACtB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/B,CAAC;IAES,QAAQ,CAAC,OAAwB;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACL,WAAmB,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEM,SAAS;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEO,CAAC,OAAO,CAAC,GAAG,CAAC,KAA4B,EAAE,EAAE;QACnD,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAA;CACF","file":"message-host.js","sourcesContent":["import { Subject } from \"rxjs\";\nimport { MessageHost } from \"../message-host\";\nimport { MessageResponse } from \"../message-response.type\";\nimport { Message } from \"../message.interface\";\n\ninterface MessageEvent<T> {\n data: T;\n}\n\nconst REQUESTS$ = Symbol('Requests');\nconst HANDLER = Symbol('Handler');\nconst WORKER = Symbol('Worker');\n\nexport class WorkerMessageHost extends MessageHost {\n private [REQUESTS$] = new Subject<Message>();\n private [WORKER]: Worker | undefined;\n\n constructor(worker?: Worker) {\n super();\n\n if (worker) {\n this[WORKER] = worker;\n worker.addEventListener('message', this[HANDLER]);\n } else {\n addEventListener('message', this[HANDLER]);\n }\n\n this.listen(this[REQUESTS$]);\n }\n\n protected response(message: MessageResponse) {\n if (this[WORKER]) {\n this[WORKER].postMessage(message);\n } else {\n (postMessage as any)(message);\n }\n }\n\n public terminate() {\n if (this[WORKER]) {\n this[WORKER].removeEventListener('message', this[HANDLER]);\n } else {\n removeEventListener('message', this[HANDLER]);\n }\n }\n\n private [HANDLER] = (event: MessageEvent<Message>) => {\n this[REQUESTS$].next(event.data);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../../libs/hermes/src/worker/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;IACpC,OAAO,CAAqB;IAE5B,YAAY,MAAe;QACzB,KAAK,EAAE,CAAC;QAER,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAES,CAAC,QAAQ,CAAC,CAAC,OAAwB;QAC3C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACL,WAAmB,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEM,SAAS;QACd,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,QAAQ,GAAG,CAAC,KAA4B,EAAE,EAAE;QAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAA;CACF","file":"message-host.js","sourcesContent":["import { Subject } from \"rxjs\";\nimport { MessageHost } from \"../message-host\";\nimport { MessageResponse } from \"../message-response.type\";\nimport { Message } from \"../message.interface\";\nimport { LISTEN, RESPONSE } from \"../selectors\";\n\ninterface MessageEvent<T> {\n data: T;\n}\n\nexport class WorkerMessageHost extends MessageHost {\n #requests$ = new Subject<Message>();\n #worker: Worker | undefined;\n\n constructor(worker?: Worker) {\n super();\n\n if (worker) {\n this.#worker = worker;\n worker.addEventListener('message', this.#handler);\n } else {\n addEventListener('message', this.#handler);\n }\n\n this[LISTEN](this.#requests$);\n }\n\n protected [RESPONSE](message: MessageResponse) {\n if (this.#worker) {\n this.#worker.postMessage(message);\n } else {\n (postMessage as any)(message);\n }\n }\n\n public terminate() {\n if (this.#worker) {\n this.#worker.removeEventListener('message', this.#handler);\n } else {\n removeEventListener('message', this.#handler);\n }\n }\n\n #handler = (event: MessageEvent<Message>) => {\n this.#requests$.next(event.data);\n }\n}\n"]}