@cubejs-client/ws-transport 1.3.12 → 1.3.14

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.
@@ -1,14 +1,5 @@
1
1
  import WebSocket from 'isomorphic-ws';
2
2
 
3
- /**
4
- * @title @cubejs-client/ws-transport
5
- * @permalink /@cubejs-client-ws-transport
6
- * @menuCategory Cube.js Frontend
7
- * @subcategory Reference
8
- * @menuOrder 4
9
- * @description WebSocket transport for Cube.js client
10
- */
11
-
12
3
  class WebSocketTransportResult {
13
4
  constructor({
14
5
  status,
@@ -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 // 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","constructor","status","message","result","json","clone","text","JSON","stringify","WebSocketTransport","heartBeatInterval","ws","messageCounter","messageIdToSubscription","messageQueue","authorization","apiUrl","hearBeatInterval","token","console","warn","close","sendQueue","initSocket","initPromise","WebSocket","messageIdSent","sendMessage","messageId","send","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":"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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\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","constructor","status","message","result","json","clone","text","JSON","stringify","WebSocketTransport","heartBeatInterval","ws","messageCounter","messageIdToSubscription","messageQueue","authorization","apiUrl","hearBeatInterval","token","console","warn","close","sendQueue","initSocket","initPromise","WebSocket","messageIdSent","sendMessage","messageId","send","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":"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"}
@@ -29,14 +29,6 @@ var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regenerat
29
29
  var WebSocket__default = /*#__PURE__*/_interopDefaultLegacy(WebSocket);
30
30
 
31
31
  var _excluded = ["baseRequestId"];
32
- /**
33
- * @title @cubejs-client/ws-transport
34
- * @permalink /@cubejs-client-ws-transport
35
- * @menuCategory Cube.js Frontend
36
- * @subcategory Reference
37
- * @menuOrder 4
38
- * @description WebSocket transport for Cube.js client
39
- */
40
32
  var WebSocketTransportResult = /*#__PURE__*/function () {
41
33
  function WebSocketTransportResult(_ref) {
42
34
  var status = _ref.status,
@@ -1 +1 @@
1
- {"version":3,"file":"cubejs-client-ws-transport.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 // 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.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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"}
@@ -2825,14 +2825,6 @@
2825
2825
  var browser = ws;
2826
2826
 
2827
2827
  var _excluded = ["baseRequestId"];
2828
- /**
2829
- * @title @cubejs-client/ws-transport
2830
- * @permalink /@cubejs-client-ws-transport
2831
- * @menuCategory Cube.js Frontend
2832
- * @subcategory Reference
2833
- * @menuOrder 4
2834
- * @description WebSocket transport for Cube.js client
2835
- */
2836
2828
  var WebSocketTransportResult = /*#__PURE__*/function () {
2837
2829
  function WebSocketTransportResult(_ref) {
2838
2830
  var status = _ref.status,