@webiny/app-websockets 5.43.3 → 6.0.0-alpha.1

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 (53) hide show
  1. package/WebsocketsContextProvider.d.ts +1 -1
  2. package/WebsocketsContextProvider.js +74 -83
  3. package/WebsocketsContextProvider.js.map +1 -1
  4. package/domain/WebsocketsAction.d.ts +1 -1
  5. package/domain/WebsocketsAction.js +20 -33
  6. package/domain/WebsocketsAction.js.map +1 -1
  7. package/domain/WebsocketsActions.d.ts +1 -1
  8. package/domain/WebsocketsActions.js +73 -85
  9. package/domain/WebsocketsActions.js.map +1 -1
  10. package/domain/WebsocketsConnection.d.ts +1 -1
  11. package/domain/WebsocketsConnection.js +86 -114
  12. package/domain/WebsocketsConnection.js.map +1 -1
  13. package/domain/WebsocketsManager.d.ts +1 -1
  14. package/domain/WebsocketsManager.js +31 -60
  15. package/domain/WebsocketsManager.js.map +1 -1
  16. package/domain/WebsocketsSubscriptionManager.d.ts +2 -2
  17. package/domain/WebsocketsSubscriptionManager.js +62 -95
  18. package/domain/WebsocketsSubscriptionManager.js.map +1 -1
  19. package/domain/abstractions/IWebsocketsAction.d.ts +1 -1
  20. package/domain/abstractions/IWebsocketsAction.js +1 -5
  21. package/domain/abstractions/IWebsocketsAction.js.map +1 -1
  22. package/domain/abstractions/IWebsocketsActions.d.ts +2 -2
  23. package/domain/abstractions/IWebsocketsActions.js +1 -5
  24. package/domain/abstractions/IWebsocketsActions.js.map +1 -1
  25. package/domain/abstractions/IWebsocketsConnection.d.ts +2 -2
  26. package/domain/abstractions/IWebsocketsConnection.js +1 -7
  27. package/domain/abstractions/IWebsocketsConnection.js.map +1 -1
  28. package/domain/abstractions/IWebsocketsManager.d.ts +2 -2
  29. package/domain/abstractions/IWebsocketsManager.js +1 -5
  30. package/domain/abstractions/IWebsocketsManager.js.map +1 -1
  31. package/domain/abstractions/IWebsocketsSubscriptionManager.d.ts +2 -2
  32. package/domain/abstractions/IWebsocketsSubscriptionManager.js +1 -5
  33. package/domain/abstractions/IWebsocketsSubscriptionManager.js.map +1 -1
  34. package/domain/abstractions/types.d.ts +1 -1
  35. package/domain/abstractions/types.js +1 -7
  36. package/domain/abstractions/types.js.map +1 -1
  37. package/domain/index.js +5 -60
  38. package/domain/index.js.map +1 -1
  39. package/domain/types.js +6 -71
  40. package/domain/types.js.map +1 -1
  41. package/hooks/index.js +1 -16
  42. package/hooks/index.js.map +1 -1
  43. package/hooks/useWebsockets.d.ts +1 -1
  44. package/hooks/useWebsockets.js +4 -10
  45. package/hooks/useWebsockets.js.map +1 -1
  46. package/index.js +10 -42
  47. package/index.js.map +1 -1
  48. package/package.json +8 -8
  49. package/types.d.ts +1 -1
  50. package/types.js +2 -16
  51. package/types.js.map +1 -1
  52. package/utils/getUrl.js +2 -8
  53. package/utils/getUrl.js.map +1 -1
@@ -1,14 +1,5 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.createWebsocketsConnection = exports.WebsocketsConnection = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
- var _types = require("./types");
11
- var defaultFactory = function defaultFactory(url, protocol) {
1
+ import { WebsocketsReadyState } from "./types";
2
+ const defaultFactory = (url, protocol) => {
12
3
  return new WebSocket(url, protocol);
13
4
  };
14
5
 
@@ -21,10 +12,9 @@ if (!window.WebinyWebsocketsConnectionCache) {
21
12
  ws: null
22
13
  };
23
14
  }
24
- var connectionCache = window.WebinyWebsocketsConnectionCache;
25
- var WebsocketsConnection = exports.WebsocketsConnection = /*#__PURE__*/function () {
26
- function WebsocketsConnection(params) {
27
- (0, _classCallCheck2.default)(this, WebsocketsConnection);
15
+ const connectionCache = window.WebinyWebsocketsConnectionCache;
16
+ export class WebsocketsConnection {
17
+ constructor(params) {
28
18
  this.url = params.url;
29
19
  this.tenant = params.tenant;
30
20
  this.locale = params.locale;
@@ -33,113 +23,95 @@ var WebsocketsConnection = exports.WebsocketsConnection = /*#__PURE__*/function
33
23
  this.subscriptionManager = params.subscriptionManager;
34
24
  this.factory = params.factory || defaultFactory;
35
25
  }
36
- return (0, _createClass2.default)(WebsocketsConnection, [{
37
- key: "setTenant",
38
- value: function setTenant(tenant) {
39
- this.tenant = tenant;
40
- }
41
- }, {
42
- key: "setLocale",
43
- value: function setLocale(locale) {
44
- this.locale = locale;
45
- }
46
- }, {
47
- key: "connect",
48
- value: async function connect() {
49
- await this.getConnection();
50
- }
51
- }, {
52
- key: "close",
53
- value: async function close(code, reason) {
54
- if (!connectionCache.ws || connectionCache.ws.readyState === _types.WebsocketsReadyState.CLOSED || connectionCache.ws.readyState === _types.WebsocketsReadyState.CLOSING) {
55
- connectionCache.ws = undefined;
56
- return true;
57
- }
58
- connectionCache.ws.close(code, reason);
26
+ setTenant(tenant) {
27
+ this.tenant = tenant;
28
+ }
29
+ setLocale(locale) {
30
+ this.locale = locale;
31
+ }
32
+ async connect() {
33
+ await this.getConnection();
34
+ }
35
+ async close(code, reason) {
36
+ if (!connectionCache.ws || connectionCache.ws.readyState === WebsocketsReadyState.CLOSED || connectionCache.ws.readyState === WebsocketsReadyState.CLOSING) {
59
37
  connectionCache.ws = undefined;
60
38
  return true;
61
39
  }
62
- }, {
63
- key: "send",
64
- value: async function send(data) {
65
- var connection = await this.getConnection();
66
- if (connection.readyState !== _types.WebsocketsReadyState.OPEN) {
67
- console.info("Websocket connection is not open, cannot send any data.", data);
68
- return;
69
- }
70
- connection.send(JSON.stringify(data));
40
+ connectionCache.ws.close(code, reason);
41
+ connectionCache.ws = undefined;
42
+ return true;
43
+ }
44
+ async send(data) {
45
+ const connection = await this.getConnection();
46
+ if (connection.readyState !== WebsocketsReadyState.OPEN) {
47
+ console.info("Websocket connection is not open, cannot send any data.", data);
48
+ return;
71
49
  }
72
- }, {
73
- key: "isConnected",
74
- value: function isConnected() {
75
- return connectionCache.ws?.readyState === _types.WebsocketsReadyState.OPEN;
50
+ connection.send(JSON.stringify(data));
51
+ }
52
+ isConnected() {
53
+ return connectionCache.ws?.readyState === WebsocketsReadyState.OPEN;
54
+ }
55
+ isClosed() {
56
+ return connectionCache.ws?.readyState === WebsocketsReadyState.CLOSED;
57
+ }
58
+ async createUrl() {
59
+ const token = await this.getToken();
60
+ if (!token) {
61
+ console.error(`Missing token to connect to websockets.`);
62
+ return null;
76
63
  }
77
- }, {
78
- key: "isClosed",
79
- value: function isClosed() {
80
- return connectionCache.ws?.readyState === _types.WebsocketsReadyState.CLOSED;
64
+ return {
65
+ token,
66
+ url: `${this.url}?token=${token}&tenant=${this.tenant}&locale=${this.locale}`
67
+ };
68
+ }
69
+ async getConnection() {
70
+ if (connectionCache.ws?.readyState === WebsocketsReadyState.OPEN) {
71
+ return connectionCache.ws;
72
+ } else if (connectionCache.ws?.readyState === WebsocketsReadyState.CONNECTING) {
73
+ return connectionCache.ws;
81
74
  }
82
- }, {
83
- key: "createUrl",
84
- value: async function createUrl() {
85
- var token = await this.getToken();
86
- if (!token) {
87
- console.error("Missing token to connect to websockets.");
88
- return null;
89
- }
90
- return {
91
- token: token,
92
- url: "".concat(this.url, "?token=").concat(token, "&tenant=").concat(this.tenant, "&locale=").concat(this.locale)
93
- };
75
+ const result = await this.createUrl();
76
+ if (!result) {
77
+ throw new Error(`Missing URL for WebSocket to connect to.`);
94
78
  }
95
- }, {
96
- key: "getConnection",
97
- value: async function getConnection() {
98
- var _this = this;
99
- if (connectionCache.ws?.readyState === _types.WebsocketsReadyState.OPEN) {
100
- return connectionCache.ws;
101
- } else if (connectionCache.ws?.readyState === _types.WebsocketsReadyState.CONNECTING) {
102
- return connectionCache.ws;
103
- }
104
- var result = await this.createUrl();
105
- if (!result) {
106
- throw new Error("Missing URL for WebSocket to connect to.");
107
- }
108
- var url = result.url;
109
- connectionCache.ws = this.factory(url, this.protocol);
110
- var start = new Date().getTime();
111
- console.log("Websockets connecting to ".concat(this.url, "..."));
112
- connectionCache.ws.addEventListener("open", function (event) {
113
- var end = new Date().getTime();
114
- console.log("...connected in ".concat(end - start, "ms."));
115
- return _this.subscriptionManager.triggerOnOpen(event);
116
- });
117
- connectionCache.ws.addEventListener("close", function (event) {
118
- return _this.subscriptionManager.triggerOnClose(event);
119
- });
120
- connectionCache.ws.addEventListener("error", function (event) {
121
- console.info("Error in the Websocket connection.", event);
122
- /**
123
- * Let's close it if possible.
124
- * It will reopen automatically.
125
- */
126
- if (connectionCache.ws?.close) {
127
- try {
128
- connectionCache.ws.close();
129
- } catch (ex) {
130
- console.error(ex);
131
- }
79
+ const {
80
+ url
81
+ } = result;
82
+ connectionCache.ws = this.factory(url, this.protocol);
83
+ const start = new Date().getTime();
84
+ console.log(`Websockets connecting to ${this.url}...`);
85
+ connectionCache.ws.addEventListener("open", event => {
86
+ const end = new Date().getTime();
87
+ console.log(`...connected in ${end - start}ms.`);
88
+ return this.subscriptionManager.triggerOnOpen(event);
89
+ });
90
+ connectionCache.ws.addEventListener("close", event => {
91
+ return this.subscriptionManager.triggerOnClose(event);
92
+ });
93
+ connectionCache.ws.addEventListener("error", event => {
94
+ console.info(`Error in the Websocket connection.`, event);
95
+ /**
96
+ * Let's close it if possible.
97
+ * It will reopen automatically.
98
+ */
99
+ if (connectionCache.ws?.close) {
100
+ try {
101
+ connectionCache.ws.close();
102
+ } catch (ex) {
103
+ console.error(ex);
132
104
  }
133
- return _this.subscriptionManager.triggerOnError(event);
134
- });
135
- connectionCache.ws.addEventListener("message", function (event) {
136
- return _this.subscriptionManager.triggerOnMessage(event);
137
- });
138
- return connectionCache.ws;
139
- }
140
- }]);
141
- }();
142
- var createWebsocketsConnection = exports.createWebsocketsConnection = function createWebsocketsConnection(params) {
105
+ }
106
+ return this.subscriptionManager.triggerOnError(event);
107
+ });
108
+ connectionCache.ws.addEventListener("message", event => {
109
+ return this.subscriptionManager.triggerOnMessage(event);
110
+ });
111
+ return connectionCache.ws;
112
+ }
113
+ }
114
+ export const createWebsocketsConnection = params => {
143
115
  return new WebsocketsConnection(params);
144
116
  };
145
117
 
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","defaultFactory","url","protocol","WebSocket","window","WebinyWebsocketsConnectionCache","ws","connectionCache","WebsocketsConnection","exports","params","_classCallCheck2","default","tenant","locale","getToken","subscriptionManager","factory","_createClass2","key","value","setTenant","setLocale","connect","getConnection","close","code","reason","readyState","WebsocketsReadyState","CLOSED","CLOSING","undefined","send","data","connection","OPEN","console","info","JSON","stringify","isConnected","isClosed","createUrl","token","error","concat","_this","CONNECTING","result","Error","start","Date","getTime","log","addEventListener","event","end","triggerOnOpen","triggerOnClose","ex","triggerOnError","triggerOnMessage","createWebsocketsConnection"],"sources":["WebsocketsConnection.ts"],"sourcesContent":["import {\n IGenericData,\n IWebsocketsConnection,\n IWebsocketsConnectionFactory,\n IWebsocketsConnectProtocol,\n IWebsocketsManagerMessageEvent,\n IWebsocketsSubscriptionManager,\n WebsocketsCloseCode,\n WebsocketsReadyState\n} from \"./types\";\n\ninterface ICreateUrlResult {\n token: string;\n url: string;\n}\n\nconst defaultFactory: IWebsocketsConnectionFactory = (url, protocol) => {\n return new WebSocket(url, protocol);\n};\n\ninterface IConnection {\n ws: WebSocket | null;\n}\n\n/**\n * We need to attach the websockets cache to window object, or it will be reset on every hot reload.\n */\ndeclare global {\n interface Window {\n WebinyWebsocketsConnectionCache: IConnection;\n }\n}\n\nif (!window.WebinyWebsocketsConnectionCache) {\n window.WebinyWebsocketsConnectionCache = {\n ws: null\n };\n}\n\nconst connectionCache = window.WebinyWebsocketsConnectionCache;\n\nexport interface IWebsocketsConnectionParams {\n url: string;\n tenant: string;\n locale: string;\n getToken(): Promise<string | undefined>;\n subscriptionManager: IWebsocketsSubscriptionManager;\n protocol?: IWebsocketsConnectProtocol;\n factory?: IWebsocketsConnectionFactory;\n}\n\nexport class WebsocketsConnection implements IWebsocketsConnection {\n private readonly url: string;\n private readonly getToken: () => Promise<string | undefined>;\n private tenant: string;\n private locale: string;\n private readonly protocol: IWebsocketsConnectProtocol;\n public readonly subscriptionManager: IWebsocketsSubscriptionManager;\n private readonly factory: IWebsocketsConnectionFactory;\n\n public constructor(params: IWebsocketsConnectionParams) {\n this.url = params.url;\n this.tenant = params.tenant;\n this.locale = params.locale;\n this.getToken = params.getToken;\n this.protocol = params.protocol;\n this.subscriptionManager = params.subscriptionManager;\n this.factory = params.factory || defaultFactory;\n }\n\n public setTenant(tenant: string): void {\n this.tenant = tenant;\n }\n\n public setLocale(locale: string): void {\n this.locale = locale;\n }\n\n public async connect(): Promise<void> {\n await this.getConnection();\n }\n\n public async close(code: WebsocketsCloseCode, reason: string): Promise<boolean> {\n if (\n !connectionCache.ws ||\n connectionCache.ws.readyState === WebsocketsReadyState.CLOSED ||\n connectionCache.ws.readyState === WebsocketsReadyState.CLOSING\n ) {\n connectionCache.ws = undefined as unknown as null;\n\n return true;\n }\n connectionCache.ws.close(code, reason);\n\n connectionCache.ws = undefined as unknown as null;\n return true;\n }\n\n public async send<T extends IGenericData = IGenericData>(data: T): Promise<void> {\n const connection = await this.getConnection();\n if (connection.readyState !== WebsocketsReadyState.OPEN) {\n console.info(\"Websocket connection is not open, cannot send any data.\", data);\n return;\n }\n connection.send(JSON.stringify(data));\n }\n\n public isConnected(): boolean {\n return connectionCache.ws?.readyState === WebsocketsReadyState.OPEN;\n }\n\n public isClosed(): boolean {\n return connectionCache.ws?.readyState === WebsocketsReadyState.CLOSED;\n }\n\n private async createUrl(): Promise<ICreateUrlResult | null> {\n const token = await this.getToken();\n if (!token) {\n console.error(`Missing token to connect to websockets.`);\n return null;\n }\n return {\n token,\n url: `${this.url}?token=${token}&tenant=${this.tenant}&locale=${this.locale}`\n };\n }\n\n private async getConnection(): Promise<WebSocket> {\n if (connectionCache.ws?.readyState === WebsocketsReadyState.OPEN) {\n return connectionCache.ws;\n } else if (connectionCache.ws?.readyState === WebsocketsReadyState.CONNECTING) {\n return connectionCache.ws;\n }\n\n const result = await this.createUrl();\n if (!result) {\n throw new Error(`Missing URL for WebSocket to connect to.`);\n }\n const { url } = result;\n\n connectionCache.ws = this.factory(url, this.protocol);\n\n const start = new Date().getTime();\n\n console.log(`Websockets connecting to ${this.url}...`);\n\n connectionCache.ws.addEventListener(\"open\", event => {\n const end = new Date().getTime();\n console.log(`...connected in ${end - start}ms.`);\n return this.subscriptionManager.triggerOnOpen(event);\n });\n connectionCache.ws.addEventListener(\"close\", event => {\n return this.subscriptionManager.triggerOnClose(event);\n });\n connectionCache.ws.addEventListener(\"error\", event => {\n console.info(`Error in the Websocket connection.`, event);\n /**\n * Let's close it if possible.\n * It will reopen automatically.\n */\n if (connectionCache.ws?.close) {\n try {\n connectionCache.ws.close();\n } catch (ex) {\n console.error(ex);\n }\n }\n return this.subscriptionManager.triggerOnError(event);\n });\n\n connectionCache.ws.addEventListener(\n \"message\",\n (event: IWebsocketsManagerMessageEvent<string>) => {\n return this.subscriptionManager.triggerOnMessage(event);\n }\n );\n\n return connectionCache.ws;\n }\n}\n\nexport const createWebsocketsConnection = (\n params: IWebsocketsConnectionParams\n): IWebsocketsConnection => {\n return new WebsocketsConnection(params);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["WebsocketsReadyState","defaultFactory","url","protocol","WebSocket","window","WebinyWebsocketsConnectionCache","ws","connectionCache","WebsocketsConnection","constructor","params","tenant","locale","getToken","subscriptionManager","factory","setTenant","setLocale","connect","getConnection","close","code","reason","readyState","CLOSED","CLOSING","undefined","send","data","connection","OPEN","console","info","JSON","stringify","isConnected","isClosed","createUrl","token","error","CONNECTING","result","Error","start","Date","getTime","log","addEventListener","event","end","triggerOnOpen","triggerOnClose","ex","triggerOnError","triggerOnMessage","createWebsocketsConnection"],"sources":["WebsocketsConnection.ts"],"sourcesContent":["import type {\n IGenericData,\n IWebsocketsConnection,\n IWebsocketsConnectionFactory,\n IWebsocketsConnectProtocol,\n IWebsocketsManagerMessageEvent,\n IWebsocketsSubscriptionManager,\n WebsocketsCloseCode\n} from \"./types\";\nimport { WebsocketsReadyState } from \"./types\";\n\ninterface ICreateUrlResult {\n token: string;\n url: string;\n}\n\nconst defaultFactory: IWebsocketsConnectionFactory = (url, protocol) => {\n return new WebSocket(url, protocol);\n};\n\ninterface IConnection {\n ws: WebSocket | null;\n}\n\n/**\n * We need to attach the websockets cache to window object, or it will be reset on every hot reload.\n */\ndeclare global {\n interface Window {\n WebinyWebsocketsConnectionCache: IConnection;\n }\n}\n\nif (!window.WebinyWebsocketsConnectionCache) {\n window.WebinyWebsocketsConnectionCache = {\n ws: null\n };\n}\n\nconst connectionCache = window.WebinyWebsocketsConnectionCache;\n\nexport interface IWebsocketsConnectionParams {\n url: string;\n tenant: string;\n locale: string;\n getToken(): Promise<string | undefined>;\n subscriptionManager: IWebsocketsSubscriptionManager;\n protocol?: IWebsocketsConnectProtocol;\n factory?: IWebsocketsConnectionFactory;\n}\n\nexport class WebsocketsConnection implements IWebsocketsConnection {\n private readonly url: string;\n private readonly getToken: () => Promise<string | undefined>;\n private tenant: string;\n private locale: string;\n private readonly protocol: IWebsocketsConnectProtocol;\n public readonly subscriptionManager: IWebsocketsSubscriptionManager;\n private readonly factory: IWebsocketsConnectionFactory;\n\n public constructor(params: IWebsocketsConnectionParams) {\n this.url = params.url;\n this.tenant = params.tenant;\n this.locale = params.locale;\n this.getToken = params.getToken;\n this.protocol = params.protocol;\n this.subscriptionManager = params.subscriptionManager;\n this.factory = params.factory || defaultFactory;\n }\n\n public setTenant(tenant: string): void {\n this.tenant = tenant;\n }\n\n public setLocale(locale: string): void {\n this.locale = locale;\n }\n\n public async connect(): Promise<void> {\n await this.getConnection();\n }\n\n public async close(code: WebsocketsCloseCode, reason: string): Promise<boolean> {\n if (\n !connectionCache.ws ||\n connectionCache.ws.readyState === WebsocketsReadyState.CLOSED ||\n connectionCache.ws.readyState === WebsocketsReadyState.CLOSING\n ) {\n connectionCache.ws = undefined as unknown as null;\n\n return true;\n }\n connectionCache.ws.close(code, reason);\n\n connectionCache.ws = undefined as unknown as null;\n return true;\n }\n\n public async send<T extends IGenericData = IGenericData>(data: T): Promise<void> {\n const connection = await this.getConnection();\n if (connection.readyState !== WebsocketsReadyState.OPEN) {\n console.info(\"Websocket connection is not open, cannot send any data.\", data);\n return;\n }\n connection.send(JSON.stringify(data));\n }\n\n public isConnected(): boolean {\n return connectionCache.ws?.readyState === WebsocketsReadyState.OPEN;\n }\n\n public isClosed(): boolean {\n return connectionCache.ws?.readyState === WebsocketsReadyState.CLOSED;\n }\n\n private async createUrl(): Promise<ICreateUrlResult | null> {\n const token = await this.getToken();\n if (!token) {\n console.error(`Missing token to connect to websockets.`);\n return null;\n }\n return {\n token,\n url: `${this.url}?token=${token}&tenant=${this.tenant}&locale=${this.locale}`\n };\n }\n\n private async getConnection(): Promise<WebSocket> {\n if (connectionCache.ws?.readyState === WebsocketsReadyState.OPEN) {\n return connectionCache.ws;\n } else if (connectionCache.ws?.readyState === WebsocketsReadyState.CONNECTING) {\n return connectionCache.ws;\n }\n\n const result = await this.createUrl();\n if (!result) {\n throw new Error(`Missing URL for WebSocket to connect to.`);\n }\n const { url } = result;\n\n connectionCache.ws = this.factory(url, this.protocol);\n\n const start = new Date().getTime();\n\n console.log(`Websockets connecting to ${this.url}...`);\n\n connectionCache.ws.addEventListener(\"open\", event => {\n const end = new Date().getTime();\n console.log(`...connected in ${end - start}ms.`);\n return this.subscriptionManager.triggerOnOpen(event);\n });\n connectionCache.ws.addEventListener(\"close\", event => {\n return this.subscriptionManager.triggerOnClose(event);\n });\n connectionCache.ws.addEventListener(\"error\", event => {\n console.info(`Error in the Websocket connection.`, event);\n /**\n * Let's close it if possible.\n * It will reopen automatically.\n */\n if (connectionCache.ws?.close) {\n try {\n connectionCache.ws.close();\n } catch (ex) {\n console.error(ex);\n }\n }\n return this.subscriptionManager.triggerOnError(event);\n });\n\n connectionCache.ws.addEventListener(\n \"message\",\n (event: IWebsocketsManagerMessageEvent<string>) => {\n return this.subscriptionManager.triggerOnMessage(event);\n }\n );\n\n return connectionCache.ws;\n }\n}\n\nexport const createWebsocketsConnection = (\n params: IWebsocketsConnectionParams\n): IWebsocketsConnection => {\n return new WebsocketsConnection(params);\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { IGenericData, IWebsocketsConnection, IWebsocketsManager, IWebsocketsManagerCloseEvent, IWebsocketsManagerErrorEvent, IWebsocketsManagerMessageEvent, IWebsocketsManagerOpenEvent, IWebsocketManagerSendData, IWebsocketsSubscription, IWebsocketsSubscriptionCallback, WebsocketsCloseCode } from "./types";
1
+ import type { IGenericData, IWebsocketsConnection, IWebsocketsManager, IWebsocketsManagerCloseEvent, IWebsocketsManagerErrorEvent, IWebsocketsManagerMessageEvent, IWebsocketsManagerOpenEvent, IWebsocketManagerSendData, IWebsocketsSubscription, IWebsocketsSubscriptionCallback, WebsocketsCloseCode } from "./types";
2
2
  export declare class WebsocketsManager implements IWebsocketsManager {
3
3
  readonly connection: IWebsocketsConnection;
4
4
  constructor(connection: IWebsocketsConnection);
@@ -1,65 +1,36 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.createWebsocketsManager = exports.WebsocketsManager = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
- var WebsocketsManager = exports.WebsocketsManager = /*#__PURE__*/function () {
11
- function WebsocketsManager(connection) {
12
- (0, _classCallCheck2.default)(this, WebsocketsManager);
1
+ export class WebsocketsManager {
2
+ constructor(connection) {
13
3
  this.connection = connection;
14
4
  }
15
- return (0, _createClass2.default)(WebsocketsManager, [{
16
- key: "onOpen",
17
- value: function onOpen(cb) {
18
- return this.connection.subscriptionManager.onOpen(cb);
19
- }
20
- }, {
21
- key: "onClose",
22
- value: function onClose(cb) {
23
- return this.connection.subscriptionManager.onClose(cb);
24
- }
25
- }, {
26
- key: "onMessage",
27
- value: function onMessage(cb) {
28
- return this.connection.subscriptionManager.onMessage(cb);
29
- }
30
- }, {
31
- key: "onError",
32
- value: function onError(cb) {
33
- return this.connection.subscriptionManager.onError(cb);
34
- }
35
- }, {
36
- key: "connect",
37
- value: async function connect() {
38
- return this.connection.connect();
39
- }
40
- }, {
41
- key: "close",
42
- value: async function close(code, reason) {
43
- return await this.connection.close(code, reason);
44
- }
45
- }, {
46
- key: "send",
47
- value: function send(data) {
48
- return this.connection.send(data);
49
- }
50
- }, {
51
- key: "isConnected",
52
- value: function isConnected() {
53
- return this.connection.isConnected();
54
- }
55
- }, {
56
- key: "isClosed",
57
- value: function isClosed() {
58
- return this.connection.isClosed();
59
- }
60
- }]);
61
- }();
62
- var createWebsocketsManager = exports.createWebsocketsManager = function createWebsocketsManager(connection) {
5
+ onOpen(cb) {
6
+ return this.connection.subscriptionManager.onOpen(cb);
7
+ }
8
+ onClose(cb) {
9
+ return this.connection.subscriptionManager.onClose(cb);
10
+ }
11
+ onMessage(cb) {
12
+ return this.connection.subscriptionManager.onMessage(cb);
13
+ }
14
+ onError(cb) {
15
+ return this.connection.subscriptionManager.onError(cb);
16
+ }
17
+ async connect() {
18
+ return this.connection.connect();
19
+ }
20
+ async close(code, reason) {
21
+ return await this.connection.close(code, reason);
22
+ }
23
+ send(data) {
24
+ return this.connection.send(data);
25
+ }
26
+ isConnected() {
27
+ return this.connection.isConnected();
28
+ }
29
+ isClosed() {
30
+ return this.connection.isClosed();
31
+ }
32
+ }
33
+ export const createWebsocketsManager = connection => {
63
34
  return new WebsocketsManager(connection);
64
35
  };
65
36
 
@@ -1 +1 @@
1
- {"version":3,"names":["WebsocketsManager","exports","connection","_classCallCheck2","default","_createClass2","key","value","onOpen","cb","subscriptionManager","onClose","onMessage","onError","connect","close","code","reason","send","data","isConnected","isClosed","createWebsocketsManager"],"sources":["WebsocketsManager.ts"],"sourcesContent":["import {\n IGenericData,\n IWebsocketsConnection,\n IWebsocketsManager,\n IWebsocketsManagerCloseEvent,\n IWebsocketsManagerErrorEvent,\n IWebsocketsManagerMessageEvent,\n IWebsocketsManagerOpenEvent,\n IWebsocketManagerSendData,\n IWebsocketsSubscription,\n IWebsocketsSubscriptionCallback,\n WebsocketsCloseCode\n} from \"./types\";\n\nexport class WebsocketsManager implements IWebsocketsManager {\n public readonly connection: IWebsocketsConnection;\n\n public constructor(connection: IWebsocketsConnection) {\n this.connection = connection;\n }\n\n public onOpen(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerOpenEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerOpenEvent> {\n return this.connection.subscriptionManager.onOpen(cb);\n }\n\n public onClose(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerCloseEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerCloseEvent> {\n return this.connection.subscriptionManager.onClose(cb);\n }\n\n public onMessage<T extends IGenericData = IGenericData>(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerMessageEvent<T>>\n ): IWebsocketsSubscription<IWebsocketsManagerMessageEvent<T>> {\n return this.connection.subscriptionManager.onMessage<T>(cb);\n }\n\n public onError(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerErrorEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerErrorEvent> {\n return this.connection.subscriptionManager.onError(cb);\n }\n\n public async connect(): Promise<void> {\n return this.connection.connect();\n }\n\n public async close(code: WebsocketsCloseCode, reason: string): Promise<boolean> {\n return await this.connection.close(code, reason);\n }\n\n public send<T extends IWebsocketManagerSendData = IWebsocketManagerSendData>(data: T): void {\n return this.connection.send<T>(data);\n }\n\n public isConnected(): boolean {\n return this.connection.isConnected();\n }\n\n public isClosed(): boolean {\n return this.connection.isClosed();\n }\n}\n\nexport const createWebsocketsManager = (connection: IWebsocketsConnection): IWebsocketsManager => {\n return new WebsocketsManager(connection);\n};\n"],"mappings":";;;;;;;;;IAcaA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA;EAG1B,SAAAA,kBAAmBE,UAAiC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,iBAAA;IAClD,IAAI,CAACE,UAAU,GAAGA,UAAU;EAChC;EAAC,WAAAG,aAAA,CAAAD,OAAA,EAAAJ,iBAAA;IAAAM,GAAA;IAAAC,KAAA,EAED,SAAOC,MAAMA,CACTC,EAAgE,EACZ;MACpD,OAAO,IAAI,CAACP,UAAU,CAACQ,mBAAmB,CAACF,MAAM,CAACC,EAAE,CAAC;IACzD;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAOI,OAAOA,CACVF,EAAiE,EACZ;MACrD,OAAO,IAAI,CAACP,UAAU,CAACQ,mBAAmB,CAACC,OAAO,CAACF,EAAE,CAAC;IAC1D;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAOK,SAASA,CACZH,EAAsE,EACZ;MAC1D,OAAO,IAAI,CAACP,UAAU,CAACQ,mBAAmB,CAACE,SAAS,CAAIH,EAAE,CAAC;IAC/D;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAOM,OAAOA,CACVJ,EAAiE,EACZ;MACrD,OAAO,IAAI,CAACP,UAAU,CAACQ,mBAAmB,CAACG,OAAO,CAACJ,EAAE,CAAC;IAC1D;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,eAAaO,OAAOA,CAAA,EAAkB;MAClC,OAAO,IAAI,CAACZ,UAAU,CAACY,OAAO,CAAC,CAAC;IACpC;EAAC;IAAAR,GAAA;IAAAC,KAAA,EAED,eAAaQ,KAAKA,CAACC,IAAyB,EAAEC,MAAc,EAAoB;MAC5E,OAAO,MAAM,IAAI,CAACf,UAAU,CAACa,KAAK,CAACC,IAAI,EAAEC,MAAM,CAAC;IACpD;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAED,SAAOW,IAAIA,CAAkEC,IAAO,EAAQ;MACxF,OAAO,IAAI,CAACjB,UAAU,CAACgB,IAAI,CAAIC,IAAI,CAAC;IACxC;EAAC;IAAAb,GAAA;IAAAC,KAAA,EAED,SAAOa,WAAWA,CAAA,EAAY;MAC1B,OAAO,IAAI,CAAClB,UAAU,CAACkB,WAAW,CAAC,CAAC;IACxC;EAAC;IAAAd,GAAA;IAAAC,KAAA,EAED,SAAOc,QAAQA,CAAA,EAAY;MACvB,OAAO,IAAI,CAACnB,UAAU,CAACmB,QAAQ,CAAC,CAAC;IACrC;EAAC;AAAA;AAGE,IAAMC,uBAAuB,GAAArB,OAAA,CAAAqB,uBAAA,GAAG,SAA1BA,uBAAuBA,CAAIpB,UAAiC,EAAyB;EAC9F,OAAO,IAAIF,iBAAiB,CAACE,UAAU,CAAC;AAC5C,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["WebsocketsManager","constructor","connection","onOpen","cb","subscriptionManager","onClose","onMessage","onError","connect","close","code","reason","send","data","isConnected","isClosed","createWebsocketsManager"],"sources":["WebsocketsManager.ts"],"sourcesContent":["import type {\n IGenericData,\n IWebsocketsConnection,\n IWebsocketsManager,\n IWebsocketsManagerCloseEvent,\n IWebsocketsManagerErrorEvent,\n IWebsocketsManagerMessageEvent,\n IWebsocketsManagerOpenEvent,\n IWebsocketManagerSendData,\n IWebsocketsSubscription,\n IWebsocketsSubscriptionCallback,\n WebsocketsCloseCode\n} from \"./types\";\n\nexport class WebsocketsManager implements IWebsocketsManager {\n public readonly connection: IWebsocketsConnection;\n\n public constructor(connection: IWebsocketsConnection) {\n this.connection = connection;\n }\n\n public onOpen(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerOpenEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerOpenEvent> {\n return this.connection.subscriptionManager.onOpen(cb);\n }\n\n public onClose(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerCloseEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerCloseEvent> {\n return this.connection.subscriptionManager.onClose(cb);\n }\n\n public onMessage<T extends IGenericData = IGenericData>(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerMessageEvent<T>>\n ): IWebsocketsSubscription<IWebsocketsManagerMessageEvent<T>> {\n return this.connection.subscriptionManager.onMessage<T>(cb);\n }\n\n public onError(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerErrorEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerErrorEvent> {\n return this.connection.subscriptionManager.onError(cb);\n }\n\n public async connect(): Promise<void> {\n return this.connection.connect();\n }\n\n public async close(code: WebsocketsCloseCode, reason: string): Promise<boolean> {\n return await this.connection.close(code, reason);\n }\n\n public send<T extends IWebsocketManagerSendData = IWebsocketManagerSendData>(data: T): void {\n return this.connection.send<T>(data);\n }\n\n public isConnected(): boolean {\n return this.connection.isConnected();\n }\n\n public isClosed(): boolean {\n return this.connection.isClosed();\n }\n}\n\nexport const createWebsocketsManager = (connection: IWebsocketsConnection): IWebsocketsManager => {\n return new WebsocketsManager(connection);\n};\n"],"mappings":"AAcA,OAAO,MAAMA,iBAAiB,CAA+B;EAGlDC,WAAWA,CAACC,UAAiC,EAAE;IAClD,IAAI,CAACA,UAAU,GAAGA,UAAU;EAChC;EAEOC,MAAMA,CACTC,EAAgE,EACZ;IACpD,OAAO,IAAI,CAACF,UAAU,CAACG,mBAAmB,CAACF,MAAM,CAACC,EAAE,CAAC;EACzD;EAEOE,OAAOA,CACVF,EAAiE,EACZ;IACrD,OAAO,IAAI,CAACF,UAAU,CAACG,mBAAmB,CAACC,OAAO,CAACF,EAAE,CAAC;EAC1D;EAEOG,SAASA,CACZH,EAAsE,EACZ;IAC1D,OAAO,IAAI,CAACF,UAAU,CAACG,mBAAmB,CAACE,SAAS,CAAIH,EAAE,CAAC;EAC/D;EAEOI,OAAOA,CACVJ,EAAiE,EACZ;IACrD,OAAO,IAAI,CAACF,UAAU,CAACG,mBAAmB,CAACG,OAAO,CAACJ,EAAE,CAAC;EAC1D;EAEA,MAAaK,OAAOA,CAAA,EAAkB;IAClC,OAAO,IAAI,CAACP,UAAU,CAACO,OAAO,CAAC,CAAC;EACpC;EAEA,MAAaC,KAAKA,CAACC,IAAyB,EAAEC,MAAc,EAAoB;IAC5E,OAAO,MAAM,IAAI,CAACV,UAAU,CAACQ,KAAK,CAACC,IAAI,EAAEC,MAAM,CAAC;EACpD;EAEOC,IAAIA,CAAkEC,IAAO,EAAQ;IACxF,OAAO,IAAI,CAACZ,UAAU,CAACW,IAAI,CAAIC,IAAI,CAAC;EACxC;EAEOC,WAAWA,CAAA,EAAY;IAC1B,OAAO,IAAI,CAACb,UAAU,CAACa,WAAW,CAAC,CAAC;EACxC;EAEOC,QAAQA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACd,UAAU,CAACc,QAAQ,CAAC,CAAC;EACrC;AACJ;AAEA,OAAO,MAAMC,uBAAuB,GAAIf,UAAiC,IAAyB;EAC9F,OAAO,IAAIF,iBAAiB,CAACE,UAAU,CAAC;AAC5C,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { IGenericData, IWebsocketsManagerCloseEvent, IWebsocketsManagerErrorEvent, IWebsocketsManagerMessageEvent, IWebsocketsManagerOpenEvent } from "./types";
2
- import { IWebsocketsSubscription, IWebsocketsSubscriptionCallback, IWebsocketsSubscriptionManager } from "./abstractions/IWebsocketsSubscriptionManager";
1
+ import type { IGenericData, IWebsocketsManagerCloseEvent, IWebsocketsManagerErrorEvent, IWebsocketsManagerMessageEvent, IWebsocketsManagerOpenEvent } from "./types";
2
+ import type { IWebsocketsSubscription, IWebsocketsSubscriptionCallback, IWebsocketsSubscriptionManager } from "./abstractions/IWebsocketsSubscriptionManager";
3
3
  export declare class WebsocketsSubscriptionManager implements IWebsocketsSubscriptionManager {
4
4
  private subscriptions;
5
5
  onOpen(cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerOpenEvent>): IWebsocketsSubscription<IWebsocketsManagerOpenEvent>;
@@ -1,105 +1,72 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.createWebsocketsSubscriptionManager = exports.WebsocketsSubscriptionManager = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
- var _generateId = require("@webiny/utils/generateId");
13
- var WebsocketsSubscriptionManager = exports.WebsocketsSubscriptionManager = /*#__PURE__*/function () {
14
- function WebsocketsSubscriptionManager() {
15
- (0, _classCallCheck2.default)(this, WebsocketsSubscriptionManager);
16
- (0, _defineProperty2.default)(this, "subscriptions", {
17
- open: {},
18
- close: {},
19
- error: {},
20
- message: {}
21
- });
1
+ import { generateId } from "@webiny/utils/generateId";
2
+ export class WebsocketsSubscriptionManager {
3
+ subscriptions = {
4
+ open: {},
5
+ close: {},
6
+ error: {},
7
+ message: {}
8
+ };
9
+ onOpen(cb) {
10
+ const value = this.createSubscription("open", cb);
11
+ this.subscriptions.close[value.id] = value;
12
+ return value;
22
13
  }
23
- return (0, _createClass2.default)(WebsocketsSubscriptionManager, [{
24
- key: "onOpen",
25
- value: function onOpen(cb) {
26
- var value = this.createSubscription("open", cb);
27
- this.subscriptions.close[value.id] = value;
28
- return value;
29
- }
30
- }, {
31
- key: "onClose",
32
- value: function onClose(cb) {
33
- var value = this.createSubscription("close", cb);
34
- this.subscriptions.close[value.id] = value;
35
- return value;
36
- }
37
- }, {
38
- key: "onError",
39
- value: function onError(cb) {
40
- var value = this.createSubscription("error", cb);
41
- this.subscriptions.error[value.id] = value;
42
- return value;
14
+ onClose(cb) {
15
+ const value = this.createSubscription("close", cb);
16
+ this.subscriptions.close[value.id] = value;
17
+ return value;
18
+ }
19
+ onError(cb) {
20
+ const value = this.createSubscription("error", cb);
21
+ this.subscriptions.error[value.id] = value;
22
+ return value;
23
+ }
24
+ onMessage(cb) {
25
+ const value = this.createSubscription("message", cb);
26
+ this.subscriptions.message[value.id] = value;
27
+ return value;
28
+ }
29
+ async triggerOnOpen(event) {
30
+ for (const id in this.subscriptions.open) {
31
+ await this.subscriptions.open[id].cb(event);
43
32
  }
44
- }, {
45
- key: "onMessage",
46
- value: function onMessage(cb) {
47
- var value = this.createSubscription("message", cb);
48
- this.subscriptions.message[value.id] = value;
49
- return value;
33
+ }
34
+ async triggerOnClose(event) {
35
+ for (const id in this.subscriptions.close) {
36
+ await this.subscriptions.close[id].cb(event);
50
37
  }
51
- }, {
52
- key: "triggerOnOpen",
53
- value: async function triggerOnOpen(event) {
54
- for (var id in this.subscriptions.open) {
55
- await this.subscriptions.open[id].cb(event);
56
- }
38
+ }
39
+ async triggerOnError(event) {
40
+ for (const id in this.subscriptions.error) {
41
+ await this.subscriptions.error[id].cb(event);
57
42
  }
58
- }, {
59
- key: "triggerOnClose",
60
- value: async function triggerOnClose(event) {
61
- for (var id in this.subscriptions.close) {
62
- await this.subscriptions.close[id].cb(event);
63
- }
43
+ }
44
+ async triggerOnMessage(event) {
45
+ let data = {};
46
+ try {
47
+ data = JSON.parse(event.data);
48
+ } catch (ex) {
49
+ console.error("Failed to parse the incoming message.", ex);
64
50
  }
65
- }, {
66
- key: "triggerOnError",
67
- value: async function triggerOnError(event) {
68
- for (var id in this.subscriptions.error) {
69
- await this.subscriptions.error[id].cb(event);
70
- }
51
+ for (const id in this.subscriptions.message) {
52
+ await this.subscriptions.message[id].cb({
53
+ ...event,
54
+ data: data || {}
55
+ });
71
56
  }
72
- }, {
73
- key: "triggerOnMessage",
74
- value: async function triggerOnMessage(event) {
75
- var data = {};
76
- try {
77
- data = JSON.parse(event.data);
78
- } catch (ex) {
79
- console.error("Failed to parse the incoming message.", ex);
80
- }
81
- for (var id in this.subscriptions.message) {
82
- await this.subscriptions.message[id].cb((0, _objectSpread2.default)((0, _objectSpread2.default)({}, event), {}, {
83
- data: data || {}
84
- }));
57
+ }
58
+ createSubscription(type, cb) {
59
+ const id = generateId();
60
+ return {
61
+ cb,
62
+ id,
63
+ off: () => {
64
+ delete this.subscriptions[type][id];
85
65
  }
86
- }
87
- }, {
88
- key: "createSubscription",
89
- value: function createSubscription(type, cb) {
90
- var _this = this;
91
- var id = (0, _generateId.generateId)();
92
- return {
93
- cb: cb,
94
- id: id,
95
- off: function off() {
96
- delete _this.subscriptions[type][id];
97
- }
98
- };
99
- }
100
- }]);
101
- }();
102
- var createWebsocketsSubscriptionManager = exports.createWebsocketsSubscriptionManager = function createWebsocketsSubscriptionManager() {
66
+ };
67
+ }
68
+ }
69
+ export const createWebsocketsSubscriptionManager = () => {
103
70
  return new WebsocketsSubscriptionManager();
104
71
  };
105
72
 
@@ -1 +1 @@
1
- {"version":3,"names":["_generateId","require","WebsocketsSubscriptionManager","exports","_classCallCheck2","default","_defineProperty2","open","close","error","message","_createClass2","key","value","onOpen","cb","createSubscription","subscriptions","id","onClose","onError","onMessage","triggerOnOpen","event","triggerOnClose","triggerOnError","triggerOnMessage","data","JSON","parse","ex","console","_objectSpread2","type","_this","generateId","off","createWebsocketsSubscriptionManager"],"sources":["WebsocketsSubscriptionManager.ts"],"sourcesContent":["import { generateId } from \"@webiny/utils/generateId\";\nimport {\n IGenericData,\n IWebsocketsManagerCloseEvent,\n IWebsocketsManagerErrorEvent,\n IWebsocketManagerEvent,\n IWebsocketsManagerMessageEvent,\n IWebsocketsManagerOpenEvent\n} from \"./types\";\nimport {\n IWebsocketsSubscriptionManagerSubscriptions,\n IWebsocketsSubscription,\n IWebsocketsSubscriptionCallback,\n IWebsocketsSubscriptionManager\n} from \"./abstractions/IWebsocketsSubscriptionManager\";\n\nexport class WebsocketsSubscriptionManager implements IWebsocketsSubscriptionManager {\n private subscriptions: IWebsocketsSubscriptionManagerSubscriptions = {\n open: {},\n close: {},\n error: {},\n message: {}\n };\n\n public onOpen(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerOpenEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerOpenEvent> {\n const value = this.createSubscription<IWebsocketsManagerOpenEvent>(\"open\", cb);\n this.subscriptions.close[value.id] = value;\n return value;\n }\n\n public onClose(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerCloseEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerCloseEvent> {\n const value = this.createSubscription<IWebsocketsManagerCloseEvent>(\"close\", cb);\n this.subscriptions.close[value.id] = value;\n return value;\n }\n\n public onError(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerErrorEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerErrorEvent> {\n const value = this.createSubscription<IWebsocketsManagerErrorEvent>(\"error\", cb);\n this.subscriptions.error[value.id] = value;\n return value;\n }\n\n public onMessage<T extends IGenericData = IGenericData>(\n cb: IWebsocketsSubscriptionCallback<T>\n ): IWebsocketsSubscription<T> {\n const value = this.createSubscription<T>(\"message\", cb);\n this.subscriptions.message[value.id] = value;\n return value;\n }\n\n public async triggerOnOpen(event: Event): Promise<void> {\n for (const id in this.subscriptions.open) {\n await this.subscriptions.open[id].cb(event);\n }\n }\n\n public async triggerOnClose(event: CloseEvent): Promise<void> {\n for (const id in this.subscriptions.close) {\n await this.subscriptions.close[id].cb(event);\n }\n }\n\n public async triggerOnError(event: Event): Promise<void> {\n for (const id in this.subscriptions.error) {\n await this.subscriptions.error[id].cb(event);\n }\n }\n\n public async triggerOnMessage(event: IWebsocketsManagerMessageEvent<string>): Promise<void> {\n let data: IGenericData = {};\n try {\n data = JSON.parse(event.data);\n } catch (ex) {\n console.error(\"Failed to parse the incoming message.\", ex);\n }\n for (const id in this.subscriptions.message) {\n await this.subscriptions.message[id].cb({\n ...event,\n data: data || {}\n });\n }\n }\n\n private createSubscription<T>(\n type: IWebsocketManagerEvent,\n cb: IWebsocketsSubscriptionCallback<T>\n ): IWebsocketsSubscription<T> {\n const id = generateId();\n return {\n cb,\n id,\n off: () => {\n delete this.subscriptions[type][id];\n }\n };\n }\n}\n\nexport const createWebsocketsSubscriptionManager = (): IWebsocketsSubscriptionManager => {\n return new WebsocketsSubscriptionManager();\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["generateId","WebsocketsSubscriptionManager","subscriptions","open","close","error","message","onOpen","cb","value","createSubscription","id","onClose","onError","onMessage","triggerOnOpen","event","triggerOnClose","triggerOnError","triggerOnMessage","data","JSON","parse","ex","console","type","off","createWebsocketsSubscriptionManager"],"sources":["WebsocketsSubscriptionManager.ts"],"sourcesContent":["import { generateId } from \"@webiny/utils/generateId\";\nimport type {\n IGenericData,\n IWebsocketsManagerCloseEvent,\n IWebsocketsManagerErrorEvent,\n IWebsocketManagerEvent,\n IWebsocketsManagerMessageEvent,\n IWebsocketsManagerOpenEvent\n} from \"./types\";\nimport type {\n IWebsocketsSubscriptionManagerSubscriptions,\n IWebsocketsSubscription,\n IWebsocketsSubscriptionCallback,\n IWebsocketsSubscriptionManager\n} from \"./abstractions/IWebsocketsSubscriptionManager\";\n\nexport class WebsocketsSubscriptionManager implements IWebsocketsSubscriptionManager {\n private subscriptions: IWebsocketsSubscriptionManagerSubscriptions = {\n open: {},\n close: {},\n error: {},\n message: {}\n };\n\n public onOpen(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerOpenEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerOpenEvent> {\n const value = this.createSubscription<IWebsocketsManagerOpenEvent>(\"open\", cb);\n this.subscriptions.close[value.id] = value;\n return value;\n }\n\n public onClose(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerCloseEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerCloseEvent> {\n const value = this.createSubscription<IWebsocketsManagerCloseEvent>(\"close\", cb);\n this.subscriptions.close[value.id] = value;\n return value;\n }\n\n public onError(\n cb: IWebsocketsSubscriptionCallback<IWebsocketsManagerErrorEvent>\n ): IWebsocketsSubscription<IWebsocketsManagerErrorEvent> {\n const value = this.createSubscription<IWebsocketsManagerErrorEvent>(\"error\", cb);\n this.subscriptions.error[value.id] = value;\n return value;\n }\n\n public onMessage<T extends IGenericData = IGenericData>(\n cb: IWebsocketsSubscriptionCallback<T>\n ): IWebsocketsSubscription<T> {\n const value = this.createSubscription<T>(\"message\", cb);\n this.subscriptions.message[value.id] = value;\n return value;\n }\n\n public async triggerOnOpen(event: Event): Promise<void> {\n for (const id in this.subscriptions.open) {\n await this.subscriptions.open[id].cb(event);\n }\n }\n\n public async triggerOnClose(event: CloseEvent): Promise<void> {\n for (const id in this.subscriptions.close) {\n await this.subscriptions.close[id].cb(event);\n }\n }\n\n public async triggerOnError(event: Event): Promise<void> {\n for (const id in this.subscriptions.error) {\n await this.subscriptions.error[id].cb(event);\n }\n }\n\n public async triggerOnMessage(event: IWebsocketsManagerMessageEvent<string>): Promise<void> {\n let data: IGenericData = {};\n try {\n data = JSON.parse(event.data);\n } catch (ex) {\n console.error(\"Failed to parse the incoming message.\", ex);\n }\n for (const id in this.subscriptions.message) {\n await this.subscriptions.message[id].cb({\n ...event,\n data: data || {}\n });\n }\n }\n\n private createSubscription<T>(\n type: IWebsocketManagerEvent,\n cb: IWebsocketsSubscriptionCallback<T>\n ): IWebsocketsSubscription<T> {\n const id = generateId();\n return {\n cb,\n id,\n off: () => {\n delete this.subscriptions[type][id];\n }\n };\n }\n}\n\nexport const createWebsocketsSubscriptionManager = (): IWebsocketsSubscriptionManager => {\n return new WebsocketsSubscriptionManager();\n};\n"],"mappings":"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","ignoreList":[]}