@cubejs-client/ws-transport 0.30.29 → 0.30.64

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.30.64](https://github.com/cube-js/cube.js/compare/v0.30.63...v0.30.64) (2022-09-07)
7
+
8
+ **Note:** Version bump only for package @cubejs-client/ws-transport
9
+
10
+
11
+
12
+
13
+
14
+ ## [0.30.60](https://github.com/cube-js/cube.js/compare/v0.30.59...v0.30.60) (2022-08-28)
15
+
16
+ **Note:** Version bump only for package @cubejs-client/ws-transport
17
+
18
+
19
+
20
+
21
+
22
+ ## [0.30.46](https://github.com/cube-js/cube.js/compare/v0.30.45...v0.30.46) (2022-08-10)
23
+
24
+ **Note:** Version bump only for package @cubejs-client/ws-transport
25
+
26
+
27
+
28
+
29
+
6
30
  ## [0.30.29](https://github.com/cube-js/cube.js/compare/v0.30.28...v0.30.29) (2022-07-01)
7
31
 
8
32
  **Note:** Version bump only for package @cubejs-client/ws-transport
@@ -1,22 +1,5 @@
1
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
2
- import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
3
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
4
- import _createClass from '@babel/runtime/helpers/createClass';
5
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
6
- import 'core-js/modules/es.array.for-each.js';
7
- import 'core-js/modules/es.object.to-string.js';
8
- import 'core-js/modules/web.dom-collections.for-each.js';
9
- import 'core-js/modules/es.date.to-string.js';
10
- import 'core-js/modules/es.object.keys.js';
11
- import 'core-js/modules/es.promise.js';
12
- import 'core-js/modules/web.timers.js';
13
- import 'core-js/modules/es.array.find.js';
14
- import 'core-js/modules/es.array.filter.js';
15
- import _regeneratorRuntime from '@babel/runtime/regenerator';
16
1
  import WebSocket from 'isomorphic-ws';
17
2
 
18
- var _excluded = ["baseRequestId"];
19
-
20
3
  /**
21
4
  * @title @cubejs-client/ws-transport
22
5
  * @permalink /@cubejs-client-ws-transport
@@ -25,103 +8,43 @@ var _excluded = ["baseRequestId"];
25
8
  * @menuOrder 4
26
9
  * @description WebSocket transport for Cube.js client
27
10
  */
28
- var WebSocketTransportResult = /*#__PURE__*/function () {
29
- function WebSocketTransportResult(_ref) {
30
- var status = _ref.status,
31
- message = _ref.message;
32
-
33
- _classCallCheck(this, WebSocketTransportResult);
34
-
35
- _defineProperty(this, "status", void 0);
36
-
37
- _defineProperty(this, "result", void 0);
38
-
11
+ class WebSocketTransportResult {
12
+ constructor({
13
+ status,
14
+ message
15
+ }) {
39
16
  this.status = status;
40
17
  this.result = message;
41
18
  }
42
19
 
43
- _createClass(WebSocketTransportResult, [{
44
- key: "json",
45
- value: function () {
46
- var _json = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
47
- return _regeneratorRuntime.wrap(function _callee$(_context) {
48
- while (1) {
49
- switch (_context.prev = _context.next) {
50
- case 0:
51
- return _context.abrupt("return", this.result);
52
-
53
- case 1:
54
- case "end":
55
- return _context.stop();
56
- }
57
- }
58
- }, _callee, this);
59
- }));
60
-
61
- function json() {
62
- return _json.apply(this, arguments);
63
- }
64
-
65
- return json;
66
- }()
67
- }, {
68
- key: "clone",
69
- value: function clone() {
70
- // no need to actually clone it
71
- return this;
72
- }
73
- }, {
74
- key: "text",
75
- value: function () {
76
- var _text = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
77
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
78
- while (1) {
79
- switch (_context2.prev = _context2.next) {
80
- case 0:
81
- return _context2.abrupt("return", typeof this.result === 'string' ? this.result : JSON.stringify(this.result));
82
-
83
- case 1:
84
- case "end":
85
- return _context2.stop();
86
- }
87
- }
88
- }, _callee2, this);
89
- }));
90
-
91
- function text() {
92
- return _text.apply(this, arguments);
93
- }
94
-
95
- return text;
96
- }()
97
- }]);
98
-
99
- return WebSocketTransportResult;
100
- }();
101
-
102
- var WebSocketTransport = /*#__PURE__*/function () {
103
- function WebSocketTransport(_ref2) {
104
- var authorization = _ref2.authorization,
105
- apiUrl = _ref2.apiUrl,
106
- heartBeatInterval = _ref2.heartBeatInterval,
107
- hearBeatInterval = _ref2.hearBeatInterval;
108
-
109
- _classCallCheck(this, WebSocketTransport);
110
-
111
- _defineProperty(this, "apiUrl", void 0);
112
-
113
- _defineProperty(this, "heartBeatInterval", 60);
114
-
115
- _defineProperty(this, "token", void 0);
116
-
117
- _defineProperty(this, "ws", null);
118
-
119
- _defineProperty(this, "messageCounter", 1);
20
+ async json() {
21
+ return this.result;
22
+ }
120
23
 
121
- _defineProperty(this, "messageIdToSubscription", {});
24
+ clone() {
25
+ // no need to actually clone it
26
+ return this;
27
+ }
122
28
 
123
- _defineProperty(this, "messageQueue", []);
29
+ async text() {
30
+ return typeof this.result === 'string' ? this.result : JSON.stringify(this.result);
31
+ }
124
32
 
33
+ }
34
+
35
+ class WebSocketTransport {
36
+ heartBeatInterval = 60;
37
+ ws = null;
38
+ messageCounter = 1;
39
+ messageIdToSubscription = {};
40
+ messageQueue = [];
41
+
42
+ constructor({
43
+ authorization,
44
+ apiUrl,
45
+ heartBeatInterval,
46
+ hearBeatInterval
47
+ }) {
125
48
  this.token = authorization;
126
49
  this.apiUrl = apiUrl;
127
50
 
@@ -133,257 +56,173 @@ var WebSocketTransport = /*#__PURE__*/function () {
133
56
  }
134
57
  }
135
58
 
136
- _createClass(WebSocketTransport, [{
137
- key: "authorization",
138
- get: function get() {
139
- return this.token;
140
- },
141
- set: function set(token) {
142
- this.token = token;
59
+ set authorization(token) {
60
+ this.token = token;
143
61
 
144
- if (this.ws) {
145
- this.ws.close();
146
- }
62
+ if (this.ws) {
63
+ this.ws.close();
147
64
  }
148
- }, {
149
- key: "close",
150
- value: function () {
151
- var _close = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
152
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
153
- while (1) {
154
- switch (_context3.prev = _context3.next) {
155
- case 0:
156
- if (this.ws) {
157
- this.ws.close();
158
- }
159
-
160
- case 1:
161
- case "end":
162
- return _context3.stop();
163
- }
164
- }
165
- }, _callee3, this);
166
- }));
65
+ }
167
66
 
168
- function close() {
169
- return _close.apply(this, arguments);
67
+ async close() {
68
+ if (this.ws) {
69
+ this.ws.close();
70
+ }
71
+ }
72
+
73
+ get authorization() {
74
+ return this.token;
75
+ }
76
+
77
+ initSocket() {
78
+ if (this.ws) {
79
+ return this.ws.initPromise;
80
+ }
81
+
82
+ const ws = new WebSocket(this.apiUrl);
83
+ ws.messageIdSent = {};
84
+
85
+ ws.sendMessage = message => {
86
+ if (!message.messageId || message.messageId && !ws.messageIdSent[message.messageId]) {
87
+ ws.send(JSON.stringify(message));
88
+ ws.messageIdSent[message.messageId] = true;
170
89
  }
90
+ };
171
91
 
172
- return close;
173
- }()
174
- }, {
175
- key: "initSocket",
176
- value: function initSocket() {
177
- var _this = this;
92
+ ws.sendQueue = () => {
93
+ this.messageQueue.forEach(message => ws.sendMessage(message));
94
+ this.messageQueue = [];
95
+ };
178
96
 
179
- if (this.ws) {
180
- return this.ws.initPromise;
97
+ ws.reconcile = () => {
98
+ if (new Date().getTime() - ws.lastMessageTimestamp.getTime() > 4 * this.heartBeatInterval * 1000) {
99
+ ws.close();
100
+ } else {
101
+ Object.keys(this.messageIdToSubscription).forEach(messageId => {
102
+ // @ts-ignore
103
+ ws.sendMessage(this.messageIdToSubscription[messageId].message);
104
+ });
181
105
  }
106
+ };
182
107
 
183
- var ws = new WebSocket(this.apiUrl);
184
- ws.messageIdSent = {};
108
+ ws.lastMessageTimestamp = new Date();
109
+ ws.initPromise = new Promise(resolve => {
110
+ ws.onopen = () => {
111
+ ws.sendMessage({
112
+ authorization: this.authorization
113
+ });
114
+ };
115
+
116
+ ws.onmessage = event => {
117
+ ws.lastMessageTimestamp = new Date();
118
+ const message = JSON.parse(event.data);
185
119
 
186
- ws.sendMessage = function (message) {
187
- if (!message.messageId || message.messageId && !ws.messageIdSent[message.messageId]) {
188
- ws.send(JSON.stringify(message));
189
- ws.messageIdSent[message.messageId] = true;
120
+ if (message.handshake) {
121
+ ws.reconcile();
122
+ ws.reconcileTimer = setInterval(() => {
123
+ ws.messageIdSent = {};
124
+ ws.reconcile();
125
+ }, this.heartBeatInterval * 1000);
126
+ resolve();
190
127
  }
191
- };
192
128
 
193
- ws.sendQueue = function () {
194
- _this.messageQueue.forEach(function (message) {
195
- return ws.sendMessage(message);
196
- });
129
+ if (this.messageIdToSubscription[message.messageId]) {
130
+ this.messageIdToSubscription[message.messageId].callback(new WebSocketTransportResult(message));
131
+ }
197
132
 
198
- _this.messageQueue = [];
133
+ ws.sendQueue();
199
134
  };
200
135
 
201
- ws.reconcile = function () {
202
- if (new Date().getTime() - ws.lastMessageTimestamp.getTime() > 4 * _this.heartBeatInterval * 1000) {
136
+ ws.onclose = () => {
137
+ if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {
203
138
  ws.close();
204
- } else {
205
- Object.keys(_this.messageIdToSubscription).forEach(function (messageId) {
206
- // @ts-ignore
207
- ws.sendMessage(_this.messageIdToSubscription[messageId].message);
208
- });
209
139
  }
210
- };
211
140
 
212
- ws.lastMessageTimestamp = new Date();
213
- ws.initPromise = new Promise(function (resolve) {
214
- ws.onopen = function () {
215
- ws.sendMessage({
216
- authorization: _this.authorization
217
- });
218
- };
141
+ if (ws.reconcileTimer) {
142
+ clearInterval(ws.reconcileTimer);
143
+ ws.reconcileTimer = null;
144
+ }
219
145
 
220
- ws.onmessage = function (event) {
221
- ws.lastMessageTimestamp = new Date();
222
- var message = JSON.parse(event.data);
146
+ if (this.ws === ws) {
147
+ this.ws = null;
223
148
 
224
- if (message.handshake) {
225
- ws.reconcile();
226
- ws.reconcileTimer = setInterval(function () {
227
- ws.messageIdSent = {};
228
- ws.reconcile();
229
- }, _this.heartBeatInterval * 1000);
230
- resolve();
231
- }
232
-
233
- if (_this.messageIdToSubscription[message.messageId]) {
234
- _this.messageIdToSubscription[message.messageId].callback(new WebSocketTransportResult(message));
149
+ if (Object.keys(this.messageIdToSubscription).length) {
150
+ this.initSocket();
235
151
  }
152
+ }
153
+ };
236
154
 
237
- ws.sendQueue();
238
- };
155
+ ws.onerror = ws.onclose;
156
+ });
157
+ this.ws = ws;
158
+ return this.ws.initPromise;
159
+ }
239
160
 
240
- ws.onclose = function () {
241
- if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {
242
- ws.close();
243
- }
161
+ sendMessage(message) {
162
+ if (message.unsubscribe && this.messageQueue.find(m => m.messageId === message.unsubscribe)) {
163
+ this.messageQueue = this.messageQueue.filter(m => m.messageId !== message.unsubscribe);
164
+ } else {
165
+ this.messageQueue.push(message);
166
+ }
244
167
 
245
- if (ws.reconcileTimer) {
246
- clearInterval(ws.reconcileTimer);
247
- ws.reconcileTimer = null;
248
- }
168
+ setTimeout(async () => {
169
+ await this.initSocket();
170
+ this.ws.sendQueue();
171
+ }, 100);
172
+ }
249
173
 
250
- if (_this.ws === ws) {
251
- _this.ws = null;
174
+ request(method, {
175
+ baseRequestId,
176
+ ...params
177
+ }) {
178
+ const message = {
179
+ messageId: this.messageCounter++,
180
+ requestId: baseRequestId,
181
+ method,
182
+ params
183
+ };
184
+ const pendingResults = [];
185
+ let nextMessage = null;
186
+
187
+ const runNextMessage = () => {
188
+ if (nextMessage) {
189
+ nextMessage(pendingResults.pop());
190
+ nextMessage = null;
191
+ }
192
+ };
252
193
 
253
- if (Object.keys(_this.messageIdToSubscription).length) {
254
- _this.initSocket();
255
- }
194
+ this.messageIdToSubscription[message.messageId] = {
195
+ message,
196
+ callback: result => {
197
+ pendingResults.push(result);
198
+ runNextMessage();
199
+ }
200
+ };
201
+ const transport = this;
202
+ return {
203
+ async subscribe(callback) {
204
+ transport.sendMessage(message);
205
+ const result = await new Promise(resolve => {
206
+ nextMessage = resolve;
207
+
208
+ if (pendingResults.length) {
209
+ runNextMessage();
256
210
  }
257
- };
211
+ });
212
+ return callback(result, () => this.subscribe(callback));
213
+ },
258
214
 
259
- ws.onerror = ws.onclose;
260
- });
261
- this.ws = ws;
262
- return this.ws.initPromise;
263
- }
264
- }, {
265
- key: "sendMessage",
266
- value: function sendMessage(message) {
267
- var _this2 = this;
268
-
269
- if (message.unsubscribe && this.messageQueue.find(function (m) {
270
- return m.messageId === message.unsubscribe;
271
- })) {
272
- this.messageQueue = this.messageQueue.filter(function (m) {
273
- return m.messageId !== message.unsubscribe;
215
+ async unsubscribe() {
216
+ transport.sendMessage({
217
+ unsubscribe: message.messageId
274
218
  });
275
- } else {
276
- this.messageQueue.push(message);
219
+ delete transport.messageIdToSubscription[message.messageId];
277
220
  }
278
221
 
279
- setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
280
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
281
- while (1) {
282
- switch (_context4.prev = _context4.next) {
283
- case 0:
284
- _context4.next = 2;
285
- return _this2.initSocket();
286
-
287
- case 2:
288
- _this2.ws.sendQueue();
289
-
290
- case 3:
291
- case "end":
292
- return _context4.stop();
293
- }
294
- }
295
- }, _callee4);
296
- })), 100);
297
- }
298
- }, {
299
- key: "request",
300
- value: function request(method, _ref4) {
301
- var baseRequestId = _ref4.baseRequestId,
302
- params = _objectWithoutProperties(_ref4, _excluded);
303
-
304
- var message = {
305
- messageId: this.messageCounter++,
306
- requestId: baseRequestId,
307
- method: method,
308
- params: params
309
- };
310
- var pendingResults = [];
311
- var nextMessage = null;
312
-
313
- var runNextMessage = function runNextMessage() {
314
- if (nextMessage) {
315
- nextMessage(pendingResults.pop());
316
- nextMessage = null;
317
- }
318
- };
319
-
320
- this.messageIdToSubscription[message.messageId] = {
321
- message: message,
322
- callback: function callback(result) {
323
- pendingResults.push(result);
324
- runNextMessage();
325
- }
326
- };
327
- var transport = this;
328
- return {
329
- subscribe: function subscribe(callback) {
330
- var _this3 = this;
331
-
332
- return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
333
- var result;
334
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
335
- while (1) {
336
- switch (_context5.prev = _context5.next) {
337
- case 0:
338
- transport.sendMessage(message);
339
- _context5.next = 3;
340
- return new Promise(function (resolve) {
341
- nextMessage = resolve;
342
-
343
- if (pendingResults.length) {
344
- runNextMessage();
345
- }
346
- });
347
-
348
- case 3:
349
- result = _context5.sent;
350
- return _context5.abrupt("return", callback(result, function () {
351
- return _this3.subscribe(callback);
352
- }));
353
-
354
- case 5:
355
- case "end":
356
- return _context5.stop();
357
- }
358
- }
359
- }, _callee5);
360
- }))();
361
- },
362
- unsubscribe: function unsubscribe() {
363
- return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
364
- return _regeneratorRuntime.wrap(function _callee6$(_context6) {
365
- while (1) {
366
- switch (_context6.prev = _context6.next) {
367
- case 0:
368
- transport.sendMessage({
369
- unsubscribe: message.messageId
370
- });
371
- delete transport.messageIdToSubscription[message.messageId];
372
-
373
- case 2:
374
- case "end":
375
- return _context6.stop();
376
- }
377
- }
378
- }, _callee6);
379
- }))();
380
- }
381
- };
382
- }
383
- }]);
222
+ };
223
+ }
384
224
 
385
- return WebSocketTransport;
386
- }();
225
+ }
387
226
 
388
227
  export default WebSocketTransport;
389
228
  //# sourceMappingURL=cubejs-client-ws-transport.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-ws-transport.esm.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\nimport type { ITransport, ITransportResponse } from '@cubejs-client/core';\n\n/**\n * @title @cubejs-client/ws-transport\n * @permalink /@cubejs-client-ws-transport\n * @menuCategory Cube.js Frontend\n * @subcategory Reference\n * @menuOrder 4\n * @description WebSocket transport for Cube.js client\n */\n\nclass WebSocketTransportResult {\n protected readonly status: unknown;\n\n protected readonly result: unknown;\n\n public constructor({ status, message }: { status: unknown, message: unknown }) {\n this.status = status;\n this.result = message;\n }\n\n public async json() {\n return this.result;\n }\n\n public clone() {\n // no need to actually clone it\n return this;\n }\n\n public async text() {\n return typeof this.result === 'string' ? this.result : JSON.stringify(this.result);\n }\n}\n\ntype WebSocketTransportOptions = {\n authorization?: string,\n apiUrl: string,\n // @deprecated\n hearBeatInterval?: number,\n heartBeatInterval?: number,\n};\n\ntype Message = {\n messageId: number,\n requestId: any,\n method: string,\n params: Record<string, unknown>,\n};\n\ntype Subscription = {\n message: Message,\n callback: (result: WebSocketTransportResult) => void,\n};\n\nclass WebSocketTransport implements ITransport<WebSocketTransportResult> {\n protected readonly apiUrl: string;\n\n protected readonly heartBeatInterval: number = 60;\n\n protected token: string | undefined;\n\n protected ws: any = null;\n\n protected messageCounter: number = 1;\n\n protected messageIdToSubscription: Record<number, Subscription> = {};\n\n protected messageQueue: Message[] = [];\n\n public constructor({ authorization, apiUrl, heartBeatInterval, hearBeatInterval }: WebSocketTransportOptions) {\n this.token = authorization;\n this.apiUrl = apiUrl;\n\n if (heartBeatInterval) {\n this.heartBeatInterval = heartBeatInterval;\n } else if (hearBeatInterval) {\n console.warn('Option hearBeatInterval is deprecated. It was replaced by heartBeatInterval.');\n this.heartBeatInterval = hearBeatInterval;\n }\n }\n\n public set authorization(token) {\n this.token = token;\n\n if (this.ws) {\n this.ws.close();\n }\n }\n\n public async close(): Promise<void> {\n if (this.ws) {\n this.ws.close();\n }\n }\n\n public get authorization() {\n return this.token;\n }\n\n protected initSocket() {\n if (this.ws) {\n return this.ws.initPromise;\n }\n\n const ws: any = new WebSocket(this.apiUrl);\n\n ws.messageIdSent = {};\n\n ws.sendMessage = (message: any) => {\n if (!message.messageId || message.messageId && !ws.messageIdSent[message.messageId]) {\n ws.send(JSON.stringify(message));\n ws.messageIdSent[message.messageId] = true;\n }\n };\n\n ws.sendQueue = () => {\n this.messageQueue.forEach(message => ws.sendMessage(message));\n this.messageQueue = [];\n };\n\n ws.reconcile = () => {\n if (new Date().getTime() - ws.lastMessageTimestamp.getTime() > 4 * this.heartBeatInterval * 1000) {\n ws.close();\n } else {\n Object.keys(this.messageIdToSubscription).forEach(messageId => {\n // @ts-ignore\n ws.sendMessage(this.messageIdToSubscription[messageId].message);\n });\n }\n };\n\n ws.lastMessageTimestamp = new Date();\n\n ws.initPromise = new Promise<void>(resolve => {\n ws.onopen = () => {\n ws.sendMessage({ authorization: this.authorization });\n };\n\n ws.onmessage = (event: any) => {\n ws.lastMessageTimestamp = new Date();\n\n const message: any = JSON.parse(event.data);\n if (message.handshake) {\n ws.reconcile();\n ws.reconcileTimer = setInterval(() => {\n ws.messageIdSent = {};\n ws.reconcile();\n }, this.heartBeatInterval * 1000);\n resolve();\n }\n\n if (this.messageIdToSubscription[message.messageId]) {\n this.messageIdToSubscription[message.messageId].callback(\n new WebSocketTransportResult(message)\n );\n }\n\n ws.sendQueue();\n };\n\n ws.onclose = () => {\n if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {\n ws.close();\n }\n if (ws.reconcileTimer) {\n clearInterval(ws.reconcileTimer);\n ws.reconcileTimer = null;\n }\n if (this.ws === ws) {\n this.ws = null;\n if (Object.keys(this.messageIdToSubscription).length) {\n this.initSocket();\n }\n }\n };\n\n ws.onerror = ws.onclose;\n });\n\n this.ws = ws;\n\n return this.ws.initPromise;\n }\n\n protected sendMessage(message: any) {\n if (message.unsubscribe && this.messageQueue.find(m => m.messageId === message.unsubscribe)) {\n this.messageQueue = this.messageQueue.filter(m => m.messageId !== message.unsubscribe);\n } else {\n this.messageQueue.push(message);\n }\n\n setTimeout(async () => {\n await this.initSocket();\n this.ws.sendQueue();\n }, 100);\n }\n\n public request(\n method: string,\n { baseRequestId, ...params }: Record<string, unknown>\n ): ITransportResponse<WebSocketTransportResult> {\n const message: Message = {\n messageId: this.messageCounter++,\n requestId: baseRequestId,\n method,\n params\n };\n\n const pendingResults: WebSocketTransportResult[] = [];\n let nextMessage: ((value: any) => void) | null = null;\n\n const runNextMessage = () => {\n if (nextMessage) {\n nextMessage(pendingResults.pop());\n nextMessage = null;\n }\n };\n\n this.messageIdToSubscription[message.messageId] = {\n message,\n callback: (result) => {\n pendingResults.push(result);\n runNextMessage();\n }\n };\n\n const transport = this;\n\n return {\n async subscribe(callback) {\n transport.sendMessage(message);\n\n const result = await new Promise<WebSocketTransportResult>((resolve) => {\n nextMessage = resolve;\n if (pendingResults.length) {\n runNextMessage();\n }\n });\n\n return callback(result, () => this.subscribe(callback));\n },\n async unsubscribe() {\n transport.sendMessage({ unsubscribe: message.messageId });\n delete transport.messageIdToSubscription[message.messageId];\n }\n };\n }\n}\n\nexport default WebSocketTransport;\n"],"names":["WebSocketTransportResult","status","message","result","JSON","stringify","WebSocketTransport","authorization","apiUrl","heartBeatInterval","hearBeatInterval","token","console","warn","ws","close","initPromise","WebSocket","messageIdSent","sendMessage","messageId","send","sendQueue","messageQueue","forEach","reconcile","Date","getTime","lastMessageTimestamp","Object","keys","messageIdToSubscription","Promise","resolve","onopen","onmessage","event","parse","data","handshake","reconcileTimer","setInterval","callback","onclose","readyState","CLOSED","CLOSING","clearInterval","length","initSocket","onerror","unsubscribe","find","m","filter","push","setTimeout","method","baseRequestId","params","messageCounter","requestId","pendingResults","nextMessage","runNextMessage","pop","transport","subscribe"],"mappings":"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"}
1
+ {"version":3,"file":"cubejs-client-ws-transport.esm.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\nimport type { ITransport, ITransportResponse } from '@cubejs-client/core';\n\n/**\n * @title @cubejs-client/ws-transport\n * @permalink /@cubejs-client-ws-transport\n * @menuCategory Cube.js Frontend\n * @subcategory Reference\n * @menuOrder 4\n * @description WebSocket transport for Cube.js client\n */\n\nclass WebSocketTransportResult {\n protected readonly status: unknown;\n\n protected readonly result: unknown;\n\n public constructor({ status, message }: { status: unknown, message: unknown }) {\n this.status = status;\n this.result = message;\n }\n\n public async json() {\n return this.result;\n }\n\n public clone() {\n // no need to actually clone it\n return this;\n }\n\n public async text() {\n return typeof this.result === 'string' ? this.result : JSON.stringify(this.result);\n }\n}\n\ntype WebSocketTransportOptions = {\n authorization?: string,\n apiUrl: string,\n // @deprecated\n hearBeatInterval?: number,\n heartBeatInterval?: number,\n};\n\ntype Message = {\n messageId: number,\n requestId: any,\n method: string,\n params: Record<string, unknown>,\n};\n\ntype Subscription = {\n message: Message,\n callback: (result: WebSocketTransportResult) => void,\n};\n\nclass WebSocketTransport implements ITransport<WebSocketTransportResult> {\n protected readonly apiUrl: string;\n\n protected readonly heartBeatInterval: number = 60;\n\n protected token: string | undefined;\n\n protected ws: any = null;\n\n protected messageCounter: number = 1;\n\n protected messageIdToSubscription: Record<number, Subscription> = {};\n\n protected messageQueue: Message[] = [];\n\n public constructor({ authorization, apiUrl, heartBeatInterval, hearBeatInterval }: WebSocketTransportOptions) {\n this.token = authorization;\n this.apiUrl = apiUrl;\n\n if (heartBeatInterval) {\n this.heartBeatInterval = heartBeatInterval;\n } else if (hearBeatInterval) {\n console.warn('Option hearBeatInterval is deprecated. It was replaced by heartBeatInterval.');\n this.heartBeatInterval = hearBeatInterval;\n }\n }\n\n public set authorization(token) {\n this.token = token;\n\n if (this.ws) {\n this.ws.close();\n }\n }\n\n public async close(): Promise<void> {\n if (this.ws) {\n this.ws.close();\n }\n }\n\n public get authorization() {\n return this.token;\n }\n\n protected initSocket() {\n if (this.ws) {\n return this.ws.initPromise;\n }\n\n const ws: any = new WebSocket(this.apiUrl);\n\n ws.messageIdSent = {};\n\n ws.sendMessage = (message: any) => {\n if (!message.messageId || message.messageId && !ws.messageIdSent[message.messageId]) {\n ws.send(JSON.stringify(message));\n ws.messageIdSent[message.messageId] = true;\n }\n };\n\n ws.sendQueue = () => {\n this.messageQueue.forEach(message => ws.sendMessage(message));\n this.messageQueue = [];\n };\n\n ws.reconcile = () => {\n if (new Date().getTime() - ws.lastMessageTimestamp.getTime() > 4 * this.heartBeatInterval * 1000) {\n ws.close();\n } else {\n Object.keys(this.messageIdToSubscription).forEach(messageId => {\n // @ts-ignore\n ws.sendMessage(this.messageIdToSubscription[messageId].message);\n });\n }\n };\n\n ws.lastMessageTimestamp = new Date();\n\n ws.initPromise = new Promise<void>(resolve => {\n ws.onopen = () => {\n ws.sendMessage({ authorization: this.authorization });\n };\n\n ws.onmessage = (event: any) => {\n ws.lastMessageTimestamp = new Date();\n\n const message: any = JSON.parse(event.data);\n if (message.handshake) {\n ws.reconcile();\n ws.reconcileTimer = setInterval(() => {\n ws.messageIdSent = {};\n ws.reconcile();\n }, this.heartBeatInterval * 1000);\n resolve();\n }\n\n if (this.messageIdToSubscription[message.messageId]) {\n this.messageIdToSubscription[message.messageId].callback(\n new WebSocketTransportResult(message)\n );\n }\n\n ws.sendQueue();\n };\n\n ws.onclose = () => {\n if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {\n ws.close();\n }\n if (ws.reconcileTimer) {\n clearInterval(ws.reconcileTimer);\n ws.reconcileTimer = null;\n }\n if (this.ws === ws) {\n this.ws = null;\n if (Object.keys(this.messageIdToSubscription).length) {\n this.initSocket();\n }\n }\n };\n\n ws.onerror = ws.onclose;\n });\n\n this.ws = ws;\n\n return this.ws.initPromise;\n }\n\n protected sendMessage(message: any) {\n if (message.unsubscribe && this.messageQueue.find(m => m.messageId === message.unsubscribe)) {\n this.messageQueue = this.messageQueue.filter(m => m.messageId !== message.unsubscribe);\n } else {\n this.messageQueue.push(message);\n }\n\n setTimeout(async () => {\n await this.initSocket();\n this.ws.sendQueue();\n }, 100);\n }\n\n public request(\n method: string,\n { baseRequestId, ...params }: Record<string, unknown>\n ): ITransportResponse<WebSocketTransportResult> {\n const message: Message = {\n messageId: this.messageCounter++,\n requestId: baseRequestId,\n method,\n params\n };\n\n const pendingResults: WebSocketTransportResult[] = [];\n let nextMessage: ((value: any) => void) | null = null;\n\n const runNextMessage = () => {\n if (nextMessage) {\n nextMessage(pendingResults.pop());\n nextMessage = null;\n }\n };\n\n this.messageIdToSubscription[message.messageId] = {\n message,\n callback: (result) => {\n pendingResults.push(result);\n runNextMessage();\n }\n };\n\n const transport = this;\n\n return {\n async subscribe(callback) {\n transport.sendMessage(message);\n\n const result = await new Promise<WebSocketTransportResult>((resolve) => {\n nextMessage = resolve;\n if (pendingResults.length) {\n runNextMessage();\n }\n });\n\n return callback(result, () => this.subscribe(callback));\n },\n async unsubscribe() {\n transport.sendMessage({ unsubscribe: message.messageId });\n delete transport.messageIdToSubscription[message.messageId];\n }\n };\n }\n}\n\nexport default WebSocketTransport;\n"],"names":["WebSocketTransportResult","constructor","status","message","result","json","clone","text","JSON","stringify","WebSocketTransport","heartBeatInterval","ws","messageCounter","messageIdToSubscription","messageQueue","authorization","apiUrl","hearBeatInterval","token","console","warn","close","initSocket","initPromise","WebSocket","messageIdSent","sendMessage","messageId","send","sendQueue","forEach","reconcile","Date","getTime","lastMessageTimestamp","Object","keys","Promise","resolve","onopen","onmessage","event","parse","data","handshake","reconcileTimer","setInterval","callback","onclose","readyState","CLOSED","CLOSING","clearInterval","length","onerror","unsubscribe","find","m","filter","push","setTimeout","request","method","baseRequestId","params","requestId","pendingResults","nextMessage","runNextMessage","pop","transport","subscribe"],"mappings":";;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,wBAAN,CAA+B;AAKtBC,EAAAA,WAAW,CAAC;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAD,EAA6D;AAC7E,SAAKD,MAAL,GAAcA,MAAd;AACA,SAAKE,MAAL,GAAcD,OAAd;AACD;;AAEgB,QAAJE,IAAI,GAAG;AAClB,WAAO,KAAKD,MAAZ;AACD;;AAEME,EAAAA,KAAK,GAAG;AACb;AACA,WAAO,IAAP;AACD;;AAEgB,QAAJC,IAAI,GAAG;AAClB,WAAO,OAAO,KAAKH,MAAZ,KAAuB,QAAvB,GAAkC,KAAKA,MAAvC,GAAgDI,IAAI,CAACC,SAAL,CAAe,KAAKL,MAApB,CAAvD;AACD;;AArB4B;;AA4C/B,MAAMM,kBAAN,CAAyE;AAGpDC,EAAAA,iBAAiB,GAAW,EAAX;AAI1BC,EAAAA,EAAE,GAAQ,IAAR;AAEFC,EAAAA,cAAc,GAAW,CAAX;AAEdC,EAAAA,uBAAuB,GAAiC,EAAjC;AAEvBC,EAAAA,YAAY,GAAc,EAAd;;AAEfd,EAAAA,WAAW,CAAC;AAAEe,IAAAA,aAAF;AAAiBC,IAAAA,MAAjB;AAAyBN,IAAAA,iBAAzB;AAA4CO,IAAAA;AAA5C,GAAD,EAA4F;AAC5G,SAAKC,KAAL,GAAaH,aAAb;AACA,SAAKC,MAAL,GAAcA,MAAd;;AAEA,QAAIN,iBAAJ,EAAuB;AACrB,WAAKA,iBAAL,GAAyBA,iBAAzB;AACD,KAFD,MAEO,IAAIO,gBAAJ,EAAsB;AAC3BE,MAAAA,OAAO,CAACC,IAAR,CAAa,8EAAb;AACA,WAAKV,iBAAL,GAAyBO,gBAAzB;AACD;AACF;;AAEuB,MAAbF,aAAa,CAACG,KAAD,EAAQ;AAC9B,SAAKA,KAAL,GAAaA,KAAb;;AAEA,QAAI,KAAKP,EAAT,EAAa;AACX,WAAKA,EAAL,CAAQU,KAAR;AACD;AACF;;AAEiB,QAALA,KAAK,GAAkB;AAClC,QAAI,KAAKV,EAAT,EAAa;AACX,WAAKA,EAAL,CAAQU,KAAR;AACD;AACF;;AAEuB,MAAbN,aAAa,GAAG;AACzB,WAAO,KAAKG,KAAZ;AACD;;AAESI,EAAAA,UAAU,GAAG;AACrB,QAAI,KAAKX,EAAT,EAAa;AACX,aAAO,KAAKA,EAAL,CAAQY,WAAf;AACD;;AAED,UAAMZ,EAAO,GAAG,IAAIa,SAAJ,CAAc,KAAKR,MAAnB,CAAhB;AAEAL,IAAAA,EAAE,CAACc,aAAH,GAAmB,EAAnB;;AAEAd,IAAAA,EAAE,CAACe,WAAH,GAAkBxB,OAAD,IAAkB;AACjC,UAAI,CAACA,OAAO,CAACyB,SAAT,IAAsBzB,OAAO,CAACyB,SAAR,IAAqB,CAAChB,EAAE,CAACc,aAAH,CAAiBvB,OAAO,CAACyB,SAAzB,CAAhD,EAAqF;AACnFhB,QAAAA,EAAE,CAACiB,IAAH,CAAQrB,IAAI,CAACC,SAAL,CAAeN,OAAf,CAAR;AACAS,QAAAA,EAAE,CAACc,aAAH,CAAiBvB,OAAO,CAACyB,SAAzB,IAAsC,IAAtC;AACD;AACF,KALD;;AAOAhB,IAAAA,EAAE,CAACkB,SAAH,GAAe,MAAM;AACnB,WAAKf,YAAL,CAAkBgB,OAAlB,CAA0B5B,OAAO,IAAIS,EAAE,CAACe,WAAH,CAAexB,OAAf,CAArC;AACA,WAAKY,YAAL,GAAoB,EAApB;AACD,KAHD;;AAKAH,IAAAA,EAAE,CAACoB,SAAH,GAAe,MAAM;AACnB,UAAI,IAAIC,IAAJ,GAAWC,OAAX,KAAuBtB,EAAE,CAACuB,oBAAH,CAAwBD,OAAxB,EAAvB,GAA2D,IAAI,KAAKvB,iBAAT,GAA6B,IAA5F,EAAkG;AAChGC,QAAAA,EAAE,CAACU,KAAH;AACD,OAFD,MAEO;AACLc,QAAAA,MAAM,CAACC,IAAP,CAAY,KAAKvB,uBAAjB,EAA0CiB,OAA1C,CAAkDH,SAAS,IAAI;AAC7D;AACAhB,UAAAA,EAAE,CAACe,WAAH,CAAe,KAAKb,uBAAL,CAA6Bc,SAA7B,EAAwCzB,OAAvD;AACD,SAHD;AAID;AACF,KATD;;AAWAS,IAAAA,EAAE,CAACuB,oBAAH,GAA0B,IAAIF,IAAJ,EAA1B;AAEArB,IAAAA,EAAE,CAACY,WAAH,GAAiB,IAAIc,OAAJ,CAAkBC,OAAO,IAAI;AAC5C3B,MAAAA,EAAE,CAAC4B,MAAH,GAAY,MAAM;AAChB5B,QAAAA,EAAE,CAACe,WAAH,CAAe;AAAEX,UAAAA,aAAa,EAAE,KAAKA;AAAtB,SAAf;AACD,OAFD;;AAIAJ,MAAAA,EAAE,CAAC6B,SAAH,GAAgBC,KAAD,IAAgB;AAC7B9B,QAAAA,EAAE,CAACuB,oBAAH,GAA0B,IAAIF,IAAJ,EAA1B;AAEA,cAAM9B,OAAY,GAAGK,IAAI,CAACmC,KAAL,CAAWD,KAAK,CAACE,IAAjB,CAArB;;AACA,YAAIzC,OAAO,CAAC0C,SAAZ,EAAuB;AACrBjC,UAAAA,EAAE,CAACoB,SAAH;AACApB,UAAAA,EAAE,CAACkC,cAAH,GAAoBC,WAAW,CAAC,MAAM;AACpCnC,YAAAA,EAAE,CAACc,aAAH,GAAmB,EAAnB;AACAd,YAAAA,EAAE,CAACoB,SAAH;AACD,WAH8B,EAG5B,KAAKrB,iBAAL,GAAyB,IAHG,CAA/B;AAIA4B,UAAAA,OAAO;AACR;;AAED,YAAI,KAAKzB,uBAAL,CAA6BX,OAAO,CAACyB,SAArC,CAAJ,EAAqD;AACnD,eAAKd,uBAAL,CAA6BX,OAAO,CAACyB,SAArC,EAAgDoB,QAAhD,CACE,IAAIhD,wBAAJ,CAA6BG,OAA7B,CADF;AAGD;;AAEDS,QAAAA,EAAE,CAACkB,SAAH;AACD,OApBD;;AAsBAlB,MAAAA,EAAE,CAACqC,OAAH,GAAa,MAAM;AACjB,YAAIrC,EAAE,IAAIA,EAAE,CAACsC,UAAH,KAAkBzB,SAAS,CAAC0B,MAAlC,IAA4CvC,EAAE,CAACsC,UAAH,KAAkBzB,SAAS,CAAC2B,OAA5E,EAAqF;AACnFxC,UAAAA,EAAE,CAACU,KAAH;AACD;;AACD,YAAIV,EAAE,CAACkC,cAAP,EAAuB;AACrBO,UAAAA,aAAa,CAACzC,EAAE,CAACkC,cAAJ,CAAb;AACAlC,UAAAA,EAAE,CAACkC,cAAH,GAAoB,IAApB;AACD;;AACD,YAAI,KAAKlC,EAAL,KAAYA,EAAhB,EAAoB;AAClB,eAAKA,EAAL,GAAU,IAAV;;AACA,cAAIwB,MAAM,CAACC,IAAP,CAAY,KAAKvB,uBAAjB,EAA0CwC,MAA9C,EAAsD;AACpD,iBAAK/B,UAAL;AACD;AACF;AACF,OAdD;;AAgBAX,MAAAA,EAAE,CAAC2C,OAAH,GAAa3C,EAAE,CAACqC,OAAhB;AACD,KA5CgB,CAAjB;AA8CA,SAAKrC,EAAL,GAAUA,EAAV;AAEA,WAAO,KAAKA,EAAL,CAAQY,WAAf;AACD;;AAESG,EAAAA,WAAW,CAACxB,OAAD,EAAe;AAClC,QAAIA,OAAO,CAACqD,WAAR,IAAuB,KAAKzC,YAAL,CAAkB0C,IAAlB,CAAuBC,CAAC,IAAIA,CAAC,CAAC9B,SAAF,KAAgBzB,OAAO,CAACqD,WAApD,CAA3B,EAA6F;AAC3F,WAAKzC,YAAL,GAAoB,KAAKA,YAAL,CAAkB4C,MAAlB,CAAyBD,CAAC,IAAIA,CAAC,CAAC9B,SAAF,KAAgBzB,OAAO,CAACqD,WAAtD,CAApB;AACD,KAFD,MAEO;AACL,WAAKzC,YAAL,CAAkB6C,IAAlB,CAAuBzD,OAAvB;AACD;;AAED0D,IAAAA,UAAU,CAAC,YAAY;AACrB,YAAM,KAAKtC,UAAL,EAAN;AACA,WAAKX,EAAL,CAAQkB,SAAR;AACD,KAHS,EAGP,GAHO,CAAV;AAID;;AAEMgC,EAAAA,OAAO,CACZC,MADY,EAEZ;AAAEC,IAAAA,aAAF;AAAiB,OAAGC;AAApB,GAFY,EAGkC;AAC9C,UAAM9D,OAAgB,GAAG;AACvByB,MAAAA,SAAS,EAAE,KAAKf,cAAL,EADY;AAEvBqD,MAAAA,SAAS,EAAEF,aAFY;AAGvBD,MAAAA,MAHuB;AAIvBE,MAAAA;AAJuB,KAAzB;AAOA,UAAME,cAA0C,GAAG,EAAnD;AACA,QAAIC,WAA0C,GAAG,IAAjD;;AAEA,UAAMC,cAAc,GAAG,MAAM;AAC3B,UAAID,WAAJ,EAAiB;AACfA,QAAAA,WAAW,CAACD,cAAc,CAACG,GAAf,EAAD,CAAX;AACAF,QAAAA,WAAW,GAAG,IAAd;AACD;AACF,KALD;;AAOA,SAAKtD,uBAAL,CAA6BX,OAAO,CAACyB,SAArC,IAAkD;AAChDzB,MAAAA,OADgD;AAEhD6C,MAAAA,QAAQ,EAAG5C,MAAD,IAAY;AACpB+D,QAAAA,cAAc,CAACP,IAAf,CAAoBxD,MAApB;AACAiE,QAAAA,cAAc;AACf;AAL+C,KAAlD;AAQA,UAAME,SAAS,GAAG,IAAlB;AAEA,WAAO;AACL,YAAMC,SAAN,CAAgBxB,QAAhB,EAA0B;AACxBuB,QAAAA,SAAS,CAAC5C,WAAV,CAAsBxB,OAAtB;AAEA,cAAMC,MAAM,GAAG,MAAM,IAAIkC,OAAJ,CAAuCC,OAAD,IAAa;AACtE6B,UAAAA,WAAW,GAAG7B,OAAd;;AACA,cAAI4B,cAAc,CAACb,MAAnB,EAA2B;AACzBe,YAAAA,cAAc;AACf;AACF,SALoB,CAArB;AAOA,eAAOrB,QAAQ,CAAC5C,MAAD,EAAS,MAAM,KAAKoE,SAAL,CAAexB,QAAf,CAAf,CAAf;AACD,OAZI;;AAaL,YAAMQ,WAAN,GAAoB;AAClBe,QAAAA,SAAS,CAAC5C,WAAV,CAAsB;AAAE6B,UAAAA,WAAW,EAAErD,OAAO,CAACyB;AAAvB,SAAtB;AACA,eAAO2C,SAAS,CAACzD,uBAAV,CAAkCX,OAAO,CAACyB,SAA1C,CAAP;AACD;;AAhBI,KAAP;AAkBD;;AAhMsE;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cubejs-client/ws-transport",
3
- "version": "0.30.29",
3
+ "version": "0.30.64",
4
4
  "engines": {},
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@babel/runtime": "^7.1.2",
23
- "@cubejs-client/core": "^0.30.29",
23
+ "@cubejs-client/core": "^0.30.64",
24
24
  "core-js": "^3.6.5",
25
25
  "isomorphic-ws": "^4.0.1",
26
26
  "ws": "^7.3.1"
@@ -46,5 +46,5 @@
46
46
  "eslintConfig": {
47
47
  "extends": "../cubejs-linter"
48
48
  },
49
- "gitHead": "f59b0d7c0aaa046b733873a059896706b81f5d41"
49
+ "gitHead": "f5123837220235430a0eabf921e2c9cd4f513261"
50
50
  }