@cubejs-client/ws-transport 1.5.10 → 1.5.11

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.
@@ -43,7 +43,7 @@ var WebSocketTransportResult = /*#__PURE__*/function () {
43
43
  key: "json",
44
44
  value: function () {
45
45
  var _json = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
46
- return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
46
+ return _regeneratorRuntime__default['default'].wrap(function (_context) {
47
47
  while (1) switch (_context.prev = _context.next) {
48
48
  case 0:
49
49
  return _context.abrupt("return", this.result);
@@ -68,7 +68,7 @@ var WebSocketTransportResult = /*#__PURE__*/function () {
68
68
  key: "text",
69
69
  value: function () {
70
70
  var _text = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
71
- return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
71
+ return _regeneratorRuntime__default['default'].wrap(function (_context2) {
72
72
  while (1) switch (_context2.prev = _context2.next) {
73
73
  case 0:
74
74
  return _context2.abrupt("return", typeof this.result === 'string' ? this.result : JSON.stringify(this.result));
@@ -123,7 +123,7 @@ var WebSocketTransport = /*#__PURE__*/function () {
123
123
  key: "close",
124
124
  value: function () {
125
125
  var _close = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3() {
126
- return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
126
+ return _regeneratorRuntime__default['default'].wrap(function (_context3) {
127
127
  while (1) switch (_context3.prev = _context3.next) {
128
128
  case 0:
129
129
  if (this.ws) {
@@ -230,14 +230,14 @@ var WebSocketTransport = /*#__PURE__*/function () {
230
230
  this.messageQueue.push(message);
231
231
  }
232
232
  setTimeout(/*#__PURE__*/_asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee4() {
233
- return _regeneratorRuntime__default['default'].wrap(function _callee4$(_context4) {
233
+ return _regeneratorRuntime__default['default'].wrap(function (_context4) {
234
234
  while (1) switch (_context4.prev = _context4.next) {
235
235
  case 0:
236
- _context4.next = 2;
236
+ _context4.next = 1;
237
237
  return _this2.initSocket();
238
- case 2:
238
+ case 1:
239
239
  _this2.ws.sendQueue();
240
- case 3:
240
+ case 2:
241
241
  case "end":
242
242
  return _context4.stop();
243
243
  }
@@ -276,23 +276,23 @@ var WebSocketTransport = /*#__PURE__*/function () {
276
276
  var _this3 = this;
277
277
  return _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee5() {
278
278
  var result;
279
- return _regeneratorRuntime__default['default'].wrap(function _callee5$(_context5) {
279
+ return _regeneratorRuntime__default['default'].wrap(function (_context5) {
280
280
  while (1) switch (_context5.prev = _context5.next) {
281
281
  case 0:
282
282
  transport.sendMessage(message);
283
- _context5.next = 3;
283
+ _context5.next = 1;
284
284
  return new Promise(function (resolve) {
285
285
  nextMessage = resolve;
286
286
  if (pendingResults.length) {
287
287
  runNextMessage();
288
288
  }
289
289
  });
290
- case 3:
290
+ case 1:
291
291
  result = _context5.sent;
292
292
  return _context5.abrupt("return", callback(result, function () {
293
293
  return _this3.subscribe(callback);
294
294
  }));
295
- case 5:
295
+ case 2:
296
296
  case "end":
297
297
  return _context5.stop();
298
298
  }
@@ -301,14 +301,14 @@ var WebSocketTransport = /*#__PURE__*/function () {
301
301
  },
302
302
  unsubscribe: function unsubscribe() {
303
303
  return _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee6() {
304
- return _regeneratorRuntime__default['default'].wrap(function _callee6$(_context6) {
304
+ return _regeneratorRuntime__default['default'].wrap(function (_context6) {
305
305
  while (1) switch (_context6.prev = _context6.next) {
306
306
  case 0:
307
307
  transport.sendMessage({
308
308
  unsubscribe: message.messageId
309
309
  });
310
310
  delete transport.messageIdToSubscription[message.messageId];
311
- case 2:
311
+ case 1:
312
312
  case "end":
313
313
  return _context6.stop();
314
314
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-ws-transport.cjs.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\nimport type { ITransport, ITransportResponse } from '@cubejs-client/core';\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 // Flush send queue before sending close frame\n this.ws.sendQueue();\n\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","_ref","status","message","_classCallCheck","_defineProperty","result","_createClass","key","value","_json","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","json","apply","arguments","clone","_text","_callee2","_callee2$","_context2","JSON","stringify","text","WebSocketTransport","_ref2","authorization","apiUrl","heartBeatInterval","hearBeatInterval","token","console","warn","get","set","ws","close","_close","_callee3","_callee3$","_context3","sendQueue","initSocket","_this","initPromise","WebSocket","messageIdSent","sendMessage","messageId","send","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","onerror","_this2","unsubscribe","find","m","filter","push","setTimeout","_callee4","_callee4$","_context4","request","method","_ref4","baseRequestId","params","_objectWithoutProperties","_excluded","messageCounter","requestId","pendingResults","nextMessage","runNextMessage","pop","transport","subscribe","_this3","_callee5","_callee5$","_context5","sent","_callee6","_callee6$","_context6"],"mappings":"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"}
1
+ {"version":3,"file":"cubejs-client-ws-transport.cjs.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\nimport type { ITransport, ITransportResponse } from '@cubejs-client/core';\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 // Flush send queue before sending close frame\n this.ws.sendQueue();\n\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","_ref","status","message","_classCallCheck","_defineProperty","result","_createClass","key","value","_json","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","abrupt","stop","json","apply","arguments","clone","_text","_callee2","_context2","JSON","stringify","text","WebSocketTransport","_ref2","authorization","apiUrl","heartBeatInterval","hearBeatInterval","token","console","warn","get","set","ws","close","_close","_callee3","_context3","sendQueue","initSocket","_this","initPromise","WebSocket","messageIdSent","sendMessage","messageId","send","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","onerror","_this2","unsubscribe","find","m","filter","push","setTimeout","_callee4","_context4","request","method","_ref4","baseRequestId","params","_objectWithoutProperties","_excluded","messageCounter","requestId","pendingResults","nextMessage","runNextMessage","pop","transport","subscribe","_this3","_callee5","_context5","sent","_callee6","_context6"],"mappings":"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"}
@@ -29,7 +29,7 @@
29
29
  key: "json",
30
30
  value: function () {
31
31
  var _json = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
32
- return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
32
+ return _regeneratorRuntime__default['default'].wrap(function (_context) {
33
33
  while (1) switch (_context.prev = _context.next) {
34
34
  case 0:
35
35
  return _context.abrupt("return", this.result);
@@ -54,7 +54,7 @@
54
54
  key: "text",
55
55
  value: function () {
56
56
  var _text = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
57
- return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
57
+ return _regeneratorRuntime__default['default'].wrap(function (_context2) {
58
58
  while (1) switch (_context2.prev = _context2.next) {
59
59
  case 0:
60
60
  return _context2.abrupt("return", typeof this.result === 'string' ? this.result : JSON.stringify(this.result));
@@ -109,7 +109,7 @@
109
109
  key: "close",
110
110
  value: function () {
111
111
  var _close = _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3() {
112
- return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
112
+ return _regeneratorRuntime__default['default'].wrap(function (_context3) {
113
113
  while (1) switch (_context3.prev = _context3.next) {
114
114
  case 0:
115
115
  if (this.ws) {
@@ -216,14 +216,14 @@
216
216
  this.messageQueue.push(message);
217
217
  }
218
218
  setTimeout(/*#__PURE__*/_asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee4() {
219
- return _regeneratorRuntime__default['default'].wrap(function _callee4$(_context4) {
219
+ return _regeneratorRuntime__default['default'].wrap(function (_context4) {
220
220
  while (1) switch (_context4.prev = _context4.next) {
221
221
  case 0:
222
- _context4.next = 2;
222
+ _context4.next = 1;
223
223
  return _this2.initSocket();
224
- case 2:
224
+ case 1:
225
225
  _this2.ws.sendQueue();
226
- case 3:
226
+ case 2:
227
227
  case "end":
228
228
  return _context4.stop();
229
229
  }
@@ -262,23 +262,23 @@
262
262
  var _this3 = this;
263
263
  return _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee5() {
264
264
  var result;
265
- return _regeneratorRuntime__default['default'].wrap(function _callee5$(_context5) {
265
+ return _regeneratorRuntime__default['default'].wrap(function (_context5) {
266
266
  while (1) switch (_context5.prev = _context5.next) {
267
267
  case 0:
268
268
  transport.sendMessage(message);
269
- _context5.next = 3;
269
+ _context5.next = 1;
270
270
  return new Promise(function (resolve) {
271
271
  nextMessage = resolve;
272
272
  if (pendingResults.length) {
273
273
  runNextMessage();
274
274
  }
275
275
  });
276
- case 3:
276
+ case 1:
277
277
  result = _context5.sent;
278
278
  return _context5.abrupt("return", callback(result, function () {
279
279
  return _this3.subscribe(callback);
280
280
  }));
281
- case 5:
281
+ case 2:
282
282
  case "end":
283
283
  return _context5.stop();
284
284
  }
@@ -287,14 +287,14 @@
287
287
  },
288
288
  unsubscribe: function unsubscribe() {
289
289
  return _asyncToGenerator__default['default'](/*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee6() {
290
- return _regeneratorRuntime__default['default'].wrap(function _callee6$(_context6) {
290
+ return _regeneratorRuntime__default['default'].wrap(function (_context6) {
291
291
  while (1) switch (_context6.prev = _context6.next) {
292
292
  case 0:
293
293
  transport.sendMessage({
294
294
  unsubscribe: message.messageId
295
295
  });
296
296
  delete transport.messageIdToSubscription[message.messageId];
297
- case 2:
297
+ case 1:
298
298
  case "end":
299
299
  return _context6.stop();
300
300
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-ws-transport.umd.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\nimport type { ITransport, ITransportResponse } from '@cubejs-client/core';\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 // Flush send queue before sending close frame\n this.ws.sendQueue();\n\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","_ref","status","message","_classCallCheck","_defineProperty","result","_createClass","key","value","_json","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","json","apply","arguments","clone","_text","_callee2","_callee2$","_context2","JSON","stringify","text","WebSocketTransport","_ref2","authorization","apiUrl","heartBeatInterval","hearBeatInterval","token","console","warn","get","set","ws","close","_close","_callee3","_callee3$","_context3","sendQueue","initSocket","_this","initPromise","WebSocket","messageIdSent","sendMessage","messageId","send","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","onerror","_this2","unsubscribe","find","m","filter","push","setTimeout","_callee4","_callee4$","_context4","request","method","_ref4","baseRequestId","params","_objectWithoutProperties","_excluded","messageCounter","requestId","pendingResults","nextMessage","runNextMessage","pop","transport","subscribe","_this3","_callee5","_callee5$","_context5","sent","_callee6","_callee6$","_context6"],"mappings":";;;;;;;;;;;;;;;;;EAAsC,IAGhCA,wBAAwB;IAK5B,SAAAA,yBAAAC,IAAA,EAA+E;MAAA,IAA1DC,MAAM,GAAAD,IAAA,CAANC,MAAM;QAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;MAAAC,mCAAA,OAAAJ,wBAAA;MAAAK,mCAAA;MAAAA,mCAAA;MAClC,IAAI,CAACH,MAAM,GAAGA,MAAM;MACpB,IAAI,CAACI,MAAM,GAAGH,OAAO;;IACtB,OAAAI,gCAAA,CAAAP,wBAAA;MAAAQ,GAAA;MAAAC,KAAA;QAAA,IAAAC,KAAA,GAAAC,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAED,SAAAC;UAAA,OAAAF,uCAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;YAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;cAAA;gBAAA,OAAAF,QAAA,CAAAG,MAAA,WACS,IAAI,CAACd,MAAM;cAAA;cAAA;gBAAA,OAAAW,QAAA,CAAAI,IAAA;;aAAAP,OAAA;SACnB;QAAA,SAFYQ,IAAIA;UAAA,OAAAZ,KAAA,CAAAa,KAAA,OAAAC,SAAA;;QAAA,OAAJF,IAAI;;;MAAAd,GAAA;MAAAC,KAAA,EAIjB,SAAOgB,KAAKA,GAAG;;QAEb,OAAO,IAAI;;;MACZjB,GAAA;MAAAC,KAAA;QAAA,IAAAiB,KAAA,GAAAf,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAED,SAAAc;UAAA,OAAAf,uCAAA,CAAAG,IAAA,UAAAa,UAAAC,SAAA;YAAA,kBAAAA,SAAA,CAAAX,IAAA,GAAAW,SAAA,CAAAV,IAAA;cAAA;gBAAA,OAAAU,SAAA,CAAAT,MAAA,WACS,OAAO,IAAI,CAACd,MAAM,KAAK,QAAQ,GAAG,IAAI,CAACA,MAAM,GAAGwB,IAAI,CAACC,SAAS,CAAC,IAAI,CAACzB,MAAM,CAAC;cAAA;cAAA;gBAAA,OAAAuB,SAAA,CAAAR,IAAA;;aAAAM,QAAA;SACnF;QAAA,SAFYK,IAAIA;UAAA,OAAAN,KAAA,CAAAH,KAAA,OAAAC,SAAA;;QAAA,OAAJQ,IAAI;;;EAAA;MAyBbC,kBAAkB;IAetB,SAAAA,mBAAAC,KAAA,EAA8G;MAAA,IAAzFC,aAAa,GAAAD,KAAA,CAAbC,aAAa;QAAEC,MAAM,GAAAF,KAAA,CAANE,MAAM;QAAEC,iBAAiB,GAAAH,KAAA,CAAjBG,iBAAiB;QAAEC,gBAAgB,GAAAJ,KAAA,CAAhBI,gBAAgB;MAAAlC,mCAAA,OAAA6B,kBAAA;MAAA5B,mCAAA;MAAAA,mCAAA,4BAZhC,EAAE;MAAAA,mCAAA;MAAAA,mCAAA,aAI7B,IAAI;MAAAA,mCAAA,yBAEW,CAAC;MAAAA,mCAAA,kCAE8B,EAAE;MAAAA,mCAAA,uBAEhC,EAAE;MAGpC,IAAI,CAACkC,KAAK,GAAGJ,aAAa;MAC1B,IAAI,CAACC,MAAM,GAAGA,MAAM;MAEpB,IAAIC,iBAAiB,EAAE;QACrB,IAAI,CAACA,iBAAiB,GAAGA,iBAAiB;OAC3C,MAAM,IAAIC,gBAAgB,EAAE;QAC3BE,OAAO,CAACC,IAAI,CAAC,8EAA8E,CAAC;QAC5F,IAAI,CAACJ,iBAAiB,GAAGC,gBAAgB;;;IAE5C,OAAA/B,gCAAA,CAAA0B,kBAAA;MAAAzB,GAAA;MAAAkC,GAAA,EAmBD,SAAAA,MAA2B;QACzB,OAAO,IAAI,CAACH,KAAK;OAClB;MAAAI,GAAA,EAnBD,SAAAA,IAAyBJ,KAAK,EAAE;QAC9B,IAAI,CAACA,KAAK,GAAGA,KAAK;QAElB,IAAI,IAAI,CAACK,EAAE,EAAE;UACX,IAAI,CAACA,EAAE,CAACC,KAAK,EAAE;;;;MAElBrC,GAAA;MAAAC,KAAA;QAAA,IAAAqC,MAAA,GAAAnC,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAED,SAAAkC;UAAA,OAAAnC,uCAAA,CAAAG,IAAA,UAAAiC,UAAAC,SAAA;YAAA,kBAAAA,SAAA,CAAA/B,IAAA,GAAA+B,SAAA,CAAA9B,IAAA;cAAA;gBACE,IAAI,IAAI,CAACyB,EAAE,EAAE;;kBAEX,IAAI,CAACA,EAAE,CAACM,SAAS,EAAE;kBAEnB,IAAI,CAACN,EAAE,CAACC,KAAK,EAAE;;cAChB;cAAA;gBAAA,OAAAI,SAAA,CAAA5B,IAAA;;aAAA0B,QAAA;SACF;QAAA,SAPYF,KAAKA;UAAA,OAAAC,MAAA,CAAAvB,KAAA,OAAAC,SAAA;;QAAA,OAALqB,KAAK;;;MAAArC,GAAA;MAAAC,KAAA,EAalB,SAAU0C,UAAUA,GAAG;QAAA,IAAAC,KAAA;QACrB,IAAI,IAAI,CAACR,EAAE,EAAE;UACX,OAAO,IAAI,CAACA,EAAE,CAACS,WAAW;;QAG5B,IAAMT,EAAO,GAAG,IAAIU,6BAAS,CAAC,IAAI,CAAClB,MAAM,CAAC;QAE1CQ,EAAE,CAACW,aAAa,GAAG,EAAE;QAErBX,EAAE,CAACY,WAAW,GAAG,UAACrD,OAAY,EAAK;UACjC,IAAI,CAACA,OAAO,CAACsD,SAAS,IAAItD,OAAO,CAACsD,SAAS,IAAI,CAACb,EAAE,CAACW,aAAa,CAACpD,OAAO,CAACsD,SAAS,CAAC,EAAE;YACnFb,EAAE,CAACc,IAAI,CAAC5B,IAAI,CAACC,SAAS,CAAC5B,OAAO,CAAC,CAAC;YAChCyC,EAAE,CAACW,aAAa,CAACpD,OAAO,CAACsD,SAAS,CAAC,GAAG,IAAI;;SAE7C;QAEDb,EAAE,CAACM,SAAS,GAAG,YAAM;UACnBE,KAAI,CAACO,YAAY,CAACC,OAAO,CAAC,UAAAzD,OAAO;YAAA,OAAIyC,EAAE,CAACY,WAAW,CAACrD,OAAO,CAAC;YAAC;UAC7DiD,KAAI,CAACO,YAAY,GAAG,EAAE;SACvB;QAEDf,EAAE,CAACiB,SAAS,GAAG,YAAM;UACnB,IAAI,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE,GAAGnB,EAAE,CAACoB,oBAAoB,CAACD,OAAO,EAAE,GAAG,CAAC,GAAGX,KAAI,CAACf,iBAAiB,GAAG,IAAI,EAAE;YAChGO,EAAE,CAACC,KAAK,EAAE;WACX,MAAM;YACLoB,MAAM,CAACC,IAAI,CAACd,KAAI,CAACe,uBAAuB,CAAC,CAACP,OAAO,CAAC,UAAAH,SAAS,EAAI;;cAE7Db,EAAE,CAACY,WAAW,CAACJ,KAAI,CAACe,uBAAuB,CAACV,SAAS,CAAC,CAACtD,OAAO,CAAC;aAChE,CAAC;;SAEL;QAEDyC,EAAE,CAACoB,oBAAoB,GAAG,IAAIF,IAAI,EAAE;QAEpClB,EAAE,CAACS,WAAW,GAAG,IAAIe,OAAO,CAAO,UAAAC,OAAO,EAAI;UAC5CzB,EAAE,CAAC0B,MAAM,GAAG,YAAM;YAChB1B,EAAE,CAACY,WAAW,CAAC;cAAErB,aAAa,EAAEiB,KAAI,CAACjB;aAAe,CAAC;WACtD;UAEDS,EAAE,CAAC2B,SAAS,GAAG,UAACC,KAAU,EAAK;YAC7B5B,EAAE,CAACoB,oBAAoB,GAAG,IAAIF,IAAI,EAAE;YAEpC,IAAM3D,OAAY,GAAG2B,IAAI,CAAC2C,KAAK,CAACD,KAAK,CAACE,IAAI,CAAC;YAC3C,IAAIvE,OAAO,CAACwE,SAAS,EAAE;cACrB/B,EAAE,CAACiB,SAAS,EAAE;cACdjB,EAAE,CAACgC,cAAc,GAAGC,WAAW,CAAC,YAAM;gBACpCjC,EAAE,CAACW,aAAa,GAAG,EAAE;gBACrBX,EAAE,CAACiB,SAAS,EAAE;eACf,EAAET,KAAI,CAACf,iBAAiB,GAAG,IAAI,CAAC;cACjCgC,OAAO,EAAE;;YAGX,IAAIjB,KAAI,CAACe,uBAAuB,CAAChE,OAAO,CAACsD,SAAS,CAAC,EAAE;cACnDL,KAAI,CAACe,uBAAuB,CAAChE,OAAO,CAACsD,SAAS,CAAC,CAACqB,QAAQ,CACtD,IAAI9E,wBAAwB,CAACG,OAAO,CACtC,CAAC;;YAGHyC,EAAE,CAACM,SAAS,EAAE;WACf;UAEDN,EAAE,CAACmC,OAAO,GAAG,YAAM;YACjB,IAAInC,EAAE,IAAIA,EAAE,CAACoC,UAAU,KAAK1B,6BAAS,CAAC2B,MAAM,IAAIrC,EAAE,CAACoC,UAAU,KAAK1B,6BAAS,CAAC4B,OAAO,EAAE;cACnFtC,EAAE,CAACC,KAAK,EAAE;;YAEZ,IAAID,EAAE,CAACgC,cAAc,EAAE;cACrBO,aAAa,CAACvC,EAAE,CAACgC,cAAc,CAAC;cAChChC,EAAE,CAACgC,cAAc,GAAG,IAAI;;YAE1B,IAAIxB,KAAI,CAACR,EAAE,KAAKA,EAAE,EAAE;cAClBQ,KAAI,CAACR,EAAE,GAAG,IAAI;cACd,IAAIqB,MAAM,CAACC,IAAI,CAACd,KAAI,CAACe,uBAAuB,CAAC,CAACiB,MAAM,EAAE;gBACpDhC,KAAI,CAACD,UAAU,EAAE;;;WAGtB;UAEDP,EAAE,CAACyC,OAAO,GAAGzC,EAAE,CAACmC,OAAO;SACxB,CAAC;QAEF,IAAI,CAACnC,EAAE,GAAGA,EAAE;QAEZ,OAAO,IAAI,CAACA,EAAE,CAACS,WAAW;;;MAC3B7C,GAAA;MAAAC,KAAA,EAED,SAAU+C,WAAWA,CAACrD,OAAY,EAAE;QAAA,IAAAmF,MAAA;QAClC,IAAInF,OAAO,CAACoF,WAAW,IAAI,IAAI,CAAC5B,YAAY,CAAC6B,IAAI,CAAC,UAAAC,CAAC;UAAA,OAAIA,CAAC,CAAChC,SAAS,KAAKtD,OAAO,CAACoF,WAAW;UAAC,EAAE;UAC3F,IAAI,CAAC5B,YAAY,GAAG,IAAI,CAACA,YAAY,CAAC+B,MAAM,CAAC,UAAAD,CAAC;YAAA,OAAIA,CAAC,CAAChC,SAAS,KAAKtD,OAAO,CAACoF,WAAW;YAAC;SACvF,MAAM;UACL,IAAI,CAAC5B,YAAY,CAACgC,IAAI,CAACxF,OAAO,CAAC;;QAGjCyF,UAAU,cAAAjF,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAAC,SAAAgF;UAAA,OAAAjF,uCAAA,CAAAG,IAAA,UAAA+E,UAAAC,SAAA;YAAA,kBAAAA,SAAA,CAAA7E,IAAA,GAAA6E,SAAA,CAAA5E,IAAA;cAAA;gBAAA4E,SAAA,CAAA5E,IAAA;gBAAA,OACHmE,MAAI,CAACnC,UAAU,EAAE;cAAA;gBACvBmC,MAAI,CAAC1C,EAAE,CAACM,SAAS,EAAE;cAAC;cAAA;gBAAA,OAAA6C,SAAA,CAAA1E,IAAA;;aAAAwE,QAAA;SACrB,IAAE,GAAG,CAAC;;;MACRrF,GAAA;MAAAC,KAAA,EAED,SAAOuF,OAAOA,CACZC,MAAc,EAAAC,KAAA,EAEgC;QAAA,IAD5CC,aAAa,GAAAD,KAAA,CAAbC,aAAa;UAAKC,MAAM,GAAAC,4CAAA,CAAAH,KAAA,EAAAI,SAAA;QAE1B,IAAMnG,OAAgB,GAAG;UACvBsD,SAAS,EAAE,IAAI,CAAC8C,cAAc,EAAE;UAChCC,SAAS,EAAEL,aAAa;UACxBF,MAAM,EAANA,MAAM;UACNG,MAAM,EAANA;SACD;QAED,IAAMK,cAA0C,GAAG,EAAE;QACrD,IAAIC,WAA0C,GAAG,IAAI;QAErD,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,GAAS;UAC3B,IAAID,WAAW,EAAE;YACfA,WAAW,CAACD,cAAc,CAACG,GAAG,EAAE,CAAC;YACjCF,WAAW,GAAG,IAAI;;SAErB;QAED,IAAI,CAACvC,uBAAuB,CAAChE,OAAO,CAACsD,SAAS,CAAC,GAAG;UAChDtD,OAAO,EAAPA,OAAO;UACP2E,QAAQ,EAAE,SAAVA,QAAQA,CAAGxE,MAAM,EAAK;YACpBmG,cAAc,CAACd,IAAI,CAACrF,MAAM,CAAC;YAC3BqG,cAAc,EAAE;;SAEnB;QAED,IAAME,SAAS,GAAG,IAAI;QAEtB,OAAO;UACCC,SAAS,WAATA,SAASA,CAAChC,QAAQ,EAAE;YAAA,IAAAiC,MAAA;YAAA,OAAApG,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,UAAAmG;cAAA,IAAA1G,MAAA;cAAA,OAAAM,uCAAA,CAAAG,IAAA,UAAAkG,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAhG,IAAA,GAAAgG,SAAA,CAAA/F,IAAA;kBAAA;oBACxB0F,SAAS,CAACrD,WAAW,CAACrD,OAAO,CAAC;oBAAC+G,SAAA,CAAA/F,IAAA;oBAAA,OAEV,IAAIiD,OAAO,CAA2B,UAACC,OAAO,EAAK;sBACtEqC,WAAW,GAAGrC,OAAO;sBACrB,IAAIoC,cAAc,CAACrB,MAAM,EAAE;wBACzBuB,cAAc,EAAE;;qBAEnB,CAAC;kBAAA;oBALIrG,MAAM,GAAA4G,SAAA,CAAAC,IAAA;oBAAA,OAAAD,SAAA,CAAA9F,MAAA,WAOL0D,QAAQ,CAACxE,MAAM,EAAE;sBAAA,OAAMyG,MAAI,CAACD,SAAS,CAAChC,QAAQ,CAAC;sBAAC;kBAAA;kBAAA;oBAAA,OAAAoC,SAAA,CAAA7F,IAAA;;iBAAA2F,QAAA;;WACxD;UACKzB,WAAW,WAAXA,WAAWA,GAAG;YAAA,OAAA5E,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,UAAAuG;cAAA,OAAAxG,uCAAA,CAAAG,IAAA,UAAAsG,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAApG,IAAA,GAAAoG,SAAA,CAAAnG,IAAA;kBAAA;oBAClB0F,SAAS,CAACrD,WAAW,CAAC;sBAAE+B,WAAW,EAAEpF,OAAO,CAACsD;qBAAW,CAAC;oBACzD,OAAOoD,SAAS,CAAC1C,uBAAuB,CAAChE,OAAO,CAACsD,SAAS,CAAC;kBAAC;kBAAA;oBAAA,OAAA6D,SAAA,CAAAjG,IAAA;;iBAAA+F,QAAA;;;SAE/D;;;EACF;;;;;;;;"}
1
+ {"version":3,"file":"cubejs-client-ws-transport.umd.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\nimport type { ITransport, ITransportResponse } from '@cubejs-client/core';\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 // Flush send queue before sending close frame\n this.ws.sendQueue();\n\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","_ref","status","message","_classCallCheck","_defineProperty","result","_createClass","key","value","_json","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","abrupt","stop","json","apply","arguments","clone","_text","_callee2","_context2","JSON","stringify","text","WebSocketTransport","_ref2","authorization","apiUrl","heartBeatInterval","hearBeatInterval","token","console","warn","get","set","ws","close","_close","_callee3","_context3","sendQueue","initSocket","_this","initPromise","WebSocket","messageIdSent","sendMessage","messageId","send","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","onerror","_this2","unsubscribe","find","m","filter","push","setTimeout","_callee4","_context4","request","method","_ref4","baseRequestId","params","_objectWithoutProperties","_excluded","messageCounter","requestId","pendingResults","nextMessage","runNextMessage","pop","transport","subscribe","_this3","_callee5","_context5","sent","_callee6","_context6"],"mappings":";;;;;;;;;;;;;;;;;EAAsC,IAGhCA,wBAAwB;IAK5B,SAAAA,yBAAAC,IAAA,EAA+E;MAAA,IAA1DC,MAAM,GAAAD,IAAA,CAANC,MAAM;QAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;MAAAC,mCAAA,OAAAJ,wBAAA;MAAAK,mCAAA;MAAAA,mCAAA;MAClC,IAAI,CAACH,MAAM,GAAGA,MAAM;MACpB,IAAI,CAACI,MAAM,GAAGH,OAAO;;IACtB,OAAAI,gCAAA,CAAAP,wBAAA;MAAAQ,GAAA;MAAAC,KAAA;QAAA,IAAAC,KAAA,GAAAC,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAED,SAAAC;UAAA,OAAAF,uCAAA,CAAAG,IAAA,WAAAC,QAAA;YAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;cAAA;gBAAA,OAAAF,QAAA,CAAAG,MAAA,WACS,IAAI,CAACb,MAAM;cAAA;cAAA;gBAAA,OAAAU,QAAA,CAAAI,IAAA;;aAAAN,OAAA;SACnB;QAAA,SAFYO,IAAIA;UAAA,OAAAX,KAAA,CAAAY,KAAA,OAAAC,SAAA;;QAAA,OAAJF,IAAI;;;MAAAb,GAAA;MAAAC,KAAA,EAIjB,SAAOe,KAAKA,GAAG;;QAEb,OAAO,IAAI;;;MACZhB,GAAA;MAAAC,KAAA;QAAA,IAAAgB,KAAA,GAAAd,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAED,SAAAa;UAAA,OAAAd,uCAAA,CAAAG,IAAA,WAAAY,SAAA;YAAA,kBAAAA,SAAA,CAAAV,IAAA,GAAAU,SAAA,CAAAT,IAAA;cAAA;gBAAA,OAAAS,SAAA,CAAAR,MAAA,WACS,OAAO,IAAI,CAACb,MAAM,KAAK,QAAQ,GAAG,IAAI,CAACA,MAAM,GAAGsB,IAAI,CAACC,SAAS,CAAC,IAAI,CAACvB,MAAM,CAAC;cAAA;cAAA;gBAAA,OAAAqB,SAAA,CAAAP,IAAA;;aAAAM,QAAA;SACnF;QAAA,SAFYI,IAAIA;UAAA,OAAAL,KAAA,CAAAH,KAAA,OAAAC,SAAA;;QAAA,OAAJO,IAAI;;;EAAA;MAyBbC,kBAAkB;IAetB,SAAAA,mBAAAC,KAAA,EAA8G;MAAA,IAAzFC,aAAa,GAAAD,KAAA,CAAbC,aAAa;QAAEC,MAAM,GAAAF,KAAA,CAANE,MAAM;QAAEC,iBAAiB,GAAAH,KAAA,CAAjBG,iBAAiB;QAAEC,gBAAgB,GAAAJ,KAAA,CAAhBI,gBAAgB;MAAAhC,mCAAA,OAAA2B,kBAAA;MAAA1B,mCAAA;MAAAA,mCAAA,4BAZhC,EAAE;MAAAA,mCAAA;MAAAA,mCAAA,aAI7B,IAAI;MAAAA,mCAAA,yBAEW,CAAC;MAAAA,mCAAA,kCAE8B,EAAE;MAAAA,mCAAA,uBAEhC,EAAE;MAGpC,IAAI,CAACgC,KAAK,GAAGJ,aAAa;MAC1B,IAAI,CAACC,MAAM,GAAGA,MAAM;MAEpB,IAAIC,iBAAiB,EAAE;QACrB,IAAI,CAACA,iBAAiB,GAAGA,iBAAiB;OAC3C,MAAM,IAAIC,gBAAgB,EAAE;QAC3BE,OAAO,CAACC,IAAI,CAAC,8EAA8E,CAAC;QAC5F,IAAI,CAACJ,iBAAiB,GAAGC,gBAAgB;;;IAE5C,OAAA7B,gCAAA,CAAAwB,kBAAA;MAAAvB,GAAA;MAAAgC,GAAA,EAmBD,SAAAA,MAA2B;QACzB,OAAO,IAAI,CAACH,KAAK;OAClB;MAAAI,GAAA,EAnBD,SAAAA,IAAyBJ,KAAK,EAAE;QAC9B,IAAI,CAACA,KAAK,GAAGA,KAAK;QAElB,IAAI,IAAI,CAACK,EAAE,EAAE;UACX,IAAI,CAACA,EAAE,CAACC,KAAK,EAAE;;;;MAElBnC,GAAA;MAAAC,KAAA;QAAA,IAAAmC,MAAA,GAAAjC,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAED,SAAAgC;UAAA,OAAAjC,uCAAA,CAAAG,IAAA,WAAA+B,SAAA;YAAA,kBAAAA,SAAA,CAAA7B,IAAA,GAAA6B,SAAA,CAAA5B,IAAA;cAAA;gBACE,IAAI,IAAI,CAACwB,EAAE,EAAE;;kBAEX,IAAI,CAACA,EAAE,CAACK,SAAS,EAAE;kBAEnB,IAAI,CAACL,EAAE,CAACC,KAAK,EAAE;;cAChB;cAAA;gBAAA,OAAAG,SAAA,CAAA1B,IAAA;;aAAAyB,QAAA;SACF;QAAA,SAPYF,KAAKA;UAAA,OAAAC,MAAA,CAAAtB,KAAA,OAAAC,SAAA;;QAAA,OAALoB,KAAK;;;MAAAnC,GAAA;MAAAC,KAAA,EAalB,SAAUuC,UAAUA,GAAG;QAAA,IAAAC,KAAA;QACrB,IAAI,IAAI,CAACP,EAAE,EAAE;UACX,OAAO,IAAI,CAACA,EAAE,CAACQ,WAAW;;QAG5B,IAAMR,EAAO,GAAG,IAAIS,6BAAS,CAAC,IAAI,CAACjB,MAAM,CAAC;QAE1CQ,EAAE,CAACU,aAAa,GAAG,EAAE;QAErBV,EAAE,CAACW,WAAW,GAAG,UAAClD,OAAY,EAAK;UACjC,IAAI,CAACA,OAAO,CAACmD,SAAS,IAAInD,OAAO,CAACmD,SAAS,IAAI,CAACZ,EAAE,CAACU,aAAa,CAACjD,OAAO,CAACmD,SAAS,CAAC,EAAE;YACnFZ,EAAE,CAACa,IAAI,CAAC3B,IAAI,CAACC,SAAS,CAAC1B,OAAO,CAAC,CAAC;YAChCuC,EAAE,CAACU,aAAa,CAACjD,OAAO,CAACmD,SAAS,CAAC,GAAG,IAAI;;SAE7C;QAEDZ,EAAE,CAACK,SAAS,GAAG,YAAM;UACnBE,KAAI,CAACO,YAAY,CAACC,OAAO,CAAC,UAAAtD,OAAO;YAAA,OAAIuC,EAAE,CAACW,WAAW,CAAClD,OAAO,CAAC;YAAC;UAC7D8C,KAAI,CAACO,YAAY,GAAG,EAAE;SACvB;QAEDd,EAAE,CAACgB,SAAS,GAAG,YAAM;UACnB,IAAI,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE,GAAGlB,EAAE,CAACmB,oBAAoB,CAACD,OAAO,EAAE,GAAG,CAAC,GAAGX,KAAI,CAACd,iBAAiB,GAAG,IAAI,EAAE;YAChGO,EAAE,CAACC,KAAK,EAAE;WACX,MAAM;YACLmB,MAAM,CAACC,IAAI,CAACd,KAAI,CAACe,uBAAuB,CAAC,CAACP,OAAO,CAAC,UAAAH,SAAS,EAAI;;cAE7DZ,EAAE,CAACW,WAAW,CAACJ,KAAI,CAACe,uBAAuB,CAACV,SAAS,CAAC,CAACnD,OAAO,CAAC;aAChE,CAAC;;SAEL;QAEDuC,EAAE,CAACmB,oBAAoB,GAAG,IAAIF,IAAI,EAAE;QAEpCjB,EAAE,CAACQ,WAAW,GAAG,IAAIe,OAAO,CAAO,UAAAC,OAAO,EAAI;UAC5CxB,EAAE,CAACyB,MAAM,GAAG,YAAM;YAChBzB,EAAE,CAACW,WAAW,CAAC;cAAEpB,aAAa,EAAEgB,KAAI,CAAChB;aAAe,CAAC;WACtD;UAEDS,EAAE,CAAC0B,SAAS,GAAG,UAACC,KAAU,EAAK;YAC7B3B,EAAE,CAACmB,oBAAoB,GAAG,IAAIF,IAAI,EAAE;YAEpC,IAAMxD,OAAY,GAAGyB,IAAI,CAAC0C,KAAK,CAACD,KAAK,CAACE,IAAI,CAAC;YAC3C,IAAIpE,OAAO,CAACqE,SAAS,EAAE;cACrB9B,EAAE,CAACgB,SAAS,EAAE;cACdhB,EAAE,CAAC+B,cAAc,GAAGC,WAAW,CAAC,YAAM;gBACpChC,EAAE,CAACU,aAAa,GAAG,EAAE;gBACrBV,EAAE,CAACgB,SAAS,EAAE;eACf,EAAET,KAAI,CAACd,iBAAiB,GAAG,IAAI,CAAC;cACjC+B,OAAO,EAAE;;YAGX,IAAIjB,KAAI,CAACe,uBAAuB,CAAC7D,OAAO,CAACmD,SAAS,CAAC,EAAE;cACnDL,KAAI,CAACe,uBAAuB,CAAC7D,OAAO,CAACmD,SAAS,CAAC,CAACqB,QAAQ,CACtD,IAAI3E,wBAAwB,CAACG,OAAO,CACtC,CAAC;;YAGHuC,EAAE,CAACK,SAAS,EAAE;WACf;UAEDL,EAAE,CAACkC,OAAO,GAAG,YAAM;YACjB,IAAIlC,EAAE,IAAIA,EAAE,CAACmC,UAAU,KAAK1B,6BAAS,CAAC2B,MAAM,IAAIpC,EAAE,CAACmC,UAAU,KAAK1B,6BAAS,CAAC4B,OAAO,EAAE;cACnFrC,EAAE,CAACC,KAAK,EAAE;;YAEZ,IAAID,EAAE,CAAC+B,cAAc,EAAE;cACrBO,aAAa,CAACtC,EAAE,CAAC+B,cAAc,CAAC;cAChC/B,EAAE,CAAC+B,cAAc,GAAG,IAAI;;YAE1B,IAAIxB,KAAI,CAACP,EAAE,KAAKA,EAAE,EAAE;cAClBO,KAAI,CAACP,EAAE,GAAG,IAAI;cACd,IAAIoB,MAAM,CAACC,IAAI,CAACd,KAAI,CAACe,uBAAuB,CAAC,CAACiB,MAAM,EAAE;gBACpDhC,KAAI,CAACD,UAAU,EAAE;;;WAGtB;UAEDN,EAAE,CAACwC,OAAO,GAAGxC,EAAE,CAACkC,OAAO;SACxB,CAAC;QAEF,IAAI,CAAClC,EAAE,GAAGA,EAAE;QAEZ,OAAO,IAAI,CAACA,EAAE,CAACQ,WAAW;;;MAC3B1C,GAAA;MAAAC,KAAA,EAED,SAAU4C,WAAWA,CAAClD,OAAY,EAAE;QAAA,IAAAgF,MAAA;QAClC,IAAIhF,OAAO,CAACiF,WAAW,IAAI,IAAI,CAAC5B,YAAY,CAAC6B,IAAI,CAAC,UAAAC,CAAC;UAAA,OAAIA,CAAC,CAAChC,SAAS,KAAKnD,OAAO,CAACiF,WAAW;UAAC,EAAE;UAC3F,IAAI,CAAC5B,YAAY,GAAG,IAAI,CAACA,YAAY,CAAC+B,MAAM,CAAC,UAAAD,CAAC;YAAA,OAAIA,CAAC,CAAChC,SAAS,KAAKnD,OAAO,CAACiF,WAAW;YAAC;SACvF,MAAM;UACL,IAAI,CAAC5B,YAAY,CAACgC,IAAI,CAACrF,OAAO,CAAC;;QAGjCsF,UAAU,cAAA9E,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,CAAC,SAAA6E;UAAA,OAAA9E,uCAAA,CAAAG,IAAA,WAAA4E,SAAA;YAAA,kBAAAA,SAAA,CAAA1E,IAAA,GAAA0E,SAAA,CAAAzE,IAAA;cAAA;gBAAAyE,SAAA,CAAAzE,IAAA;gBAAA,OACHiE,MAAI,CAACnC,UAAU,EAAE;cAAA;gBACvBmC,MAAI,CAACzC,EAAE,CAACK,SAAS,EAAE;cAAC;cAAA;gBAAA,OAAA4C,SAAA,CAAAvE,IAAA;;aAAAsE,QAAA;SACrB,IAAE,GAAG,CAAC;;;MACRlF,GAAA;MAAAC,KAAA,EAED,SAAOmF,OAAOA,CACZC,MAAc,EAAAC,KAAA,EAEgC;QAAA,IAD5CC,aAAa,GAAAD,KAAA,CAAbC,aAAa;UAAKC,MAAM,GAAAC,4CAAA,CAAAH,KAAA,EAAAI,SAAA;QAE1B,IAAM/F,OAAgB,GAAG;UACvBmD,SAAS,EAAE,IAAI,CAAC6C,cAAc,EAAE;UAChCC,SAAS,EAAEL,aAAa;UACxBF,MAAM,EAANA,MAAM;UACNG,MAAM,EAANA;SACD;QAED,IAAMK,cAA0C,GAAG,EAAE;QACrD,IAAIC,WAA0C,GAAG,IAAI;QAErD,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,GAAS;UAC3B,IAAID,WAAW,EAAE;YACfA,WAAW,CAACD,cAAc,CAACG,GAAG,EAAE,CAAC;YACjCF,WAAW,GAAG,IAAI;;SAErB;QAED,IAAI,CAACtC,uBAAuB,CAAC7D,OAAO,CAACmD,SAAS,CAAC,GAAG;UAChDnD,OAAO,EAAPA,OAAO;UACPwE,QAAQ,EAAE,SAAVA,QAAQA,CAAGrE,MAAM,EAAK;YACpB+F,cAAc,CAACb,IAAI,CAAClF,MAAM,CAAC;YAC3BiG,cAAc,EAAE;;SAEnB;QAED,IAAME,SAAS,GAAG,IAAI;QAEtB,OAAO;UACCC,SAAS,WAATA,SAASA,CAAC/B,QAAQ,EAAE;YAAA,IAAAgC,MAAA;YAAA,OAAAhG,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,UAAA+F;cAAA,IAAAtG,MAAA;cAAA,OAAAM,uCAAA,CAAAG,IAAA,WAAA8F,SAAA;gBAAA,kBAAAA,SAAA,CAAA5F,IAAA,GAAA4F,SAAA,CAAA3F,IAAA;kBAAA;oBACxBuF,SAAS,CAACpD,WAAW,CAAClD,OAAO,CAAC;oBAAC0G,SAAA,CAAA3F,IAAA;oBAAA,OAEV,IAAI+C,OAAO,CAA2B,UAACC,OAAO,EAAK;sBACtEoC,WAAW,GAAGpC,OAAO;sBACrB,IAAImC,cAAc,CAACpB,MAAM,EAAE;wBACzBsB,cAAc,EAAE;;qBAEnB,CAAC;kBAAA;oBALIjG,MAAM,GAAAuG,SAAA,CAAAC,IAAA;oBAAA,OAAAD,SAAA,CAAA1F,MAAA,WAOLwD,QAAQ,CAACrE,MAAM,EAAE;sBAAA,OAAMqG,MAAI,CAACD,SAAS,CAAC/B,QAAQ,CAAC;sBAAC;kBAAA;kBAAA;oBAAA,OAAAkC,SAAA,CAAAzF,IAAA;;iBAAAwF,QAAA;;WACxD;UACKxB,WAAW,WAAXA,WAAWA,GAAG;YAAA,OAAAzE,qCAAA,cAAAC,uCAAA,CAAAC,IAAA,UAAAkG;cAAA,OAAAnG,uCAAA,CAAAG,IAAA,WAAAiG,SAAA;gBAAA,kBAAAA,SAAA,CAAA/F,IAAA,GAAA+F,SAAA,CAAA9F,IAAA;kBAAA;oBAClBuF,SAAS,CAACpD,WAAW,CAAC;sBAAE+B,WAAW,EAAEjF,OAAO,CAACmD;qBAAW,CAAC;oBACzD,OAAOmD,SAAS,CAACzC,uBAAuB,CAAC7D,OAAO,CAACmD,SAAS,CAAC;kBAAC;kBAAA;oBAAA,OAAA0D,SAAA,CAAA5F,IAAA;;iBAAA2F,QAAA;;;SAE/D;;;EACF;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cubejs-client/ws-transport",
3
- "version": "1.5.10",
3
+ "version": "1.5.11",
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": "1.5.10",
23
+ "@cubejs-client/core": "1.5.11",
24
24
  "core-js": "^3.6.5",
25
25
  "isomorphic-ws": "^4.0.1",
26
26
  "ws": "^7.3.1"
@@ -33,7 +33,7 @@
33
33
  "@babel/core": "^7.3.3",
34
34
  "@babel/preset-env": "^7.3.1",
35
35
  "@babel/preset-typescript": "^7.12.1",
36
- "@cubejs-backend/linter": "1.5.10",
36
+ "@cubejs-backend/linter": "1.5.11",
37
37
  "@types/ws": "^7.2.9",
38
38
  "typescript": "~5.2.2"
39
39
  },
@@ -43,5 +43,5 @@
43
43
  "eslintConfig": {
44
44
  "extends": "../cubejs-linter"
45
45
  },
46
- "gitHead": "31c86ae4158e594ce6354ea43df82af6563a420f"
46
+ "gitHead": "a9c9f5ab652ff41e3b5e25c927404366b9b7d15d"
47
47
  }