@cubejs-client/ws-transport 1.6.17 → 1.6.19
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/dist/cubejs-client-ws-transport.cjs.js +28 -28
- package/dist/cubejs-client-ws-transport.cjs.js.map +1 -1
- package/dist/cubejs-client-ws-transport.esm.js +1 -1
- package/dist/cubejs-client-ws-transport.esm.js.map +1 -1
- package/dist/cubejs-client-ws-transport.umd.js +30 -30
- package/dist/cubejs-client-ws-transport.umd.js.map +1 -1
- package/package.json +4 -4
|
@@ -35,17 +35,17 @@ var WebSocketTransportResult = /*#__PURE__*/function () {
|
|
|
35
35
|
function WebSocketTransportResult(_ref) {
|
|
36
36
|
var status = _ref.status,
|
|
37
37
|
message = _ref.message;
|
|
38
|
-
_classCallCheck__default[
|
|
39
|
-
_defineProperty__default[
|
|
40
|
-
_defineProperty__default[
|
|
38
|
+
_classCallCheck__default["default"](this, WebSocketTransportResult);
|
|
39
|
+
_defineProperty__default["default"](this, "status", void 0);
|
|
40
|
+
_defineProperty__default["default"](this, "result", void 0);
|
|
41
41
|
this.status = status;
|
|
42
42
|
this.result = message;
|
|
43
43
|
}
|
|
44
|
-
return _createClass__default[
|
|
44
|
+
return _createClass__default["default"](WebSocketTransportResult, [{
|
|
45
45
|
key: "json",
|
|
46
46
|
value: function () {
|
|
47
|
-
var _json = _asyncToGenerator__default[
|
|
48
|
-
return _regeneratorRuntime__default[
|
|
47
|
+
var _json = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
|
|
48
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context) {
|
|
49
49
|
while (1) switch (_context.prev = _context.next) {
|
|
50
50
|
case 0:
|
|
51
51
|
return _context.abrupt("return", this.result);
|
|
@@ -69,8 +69,8 @@ var WebSocketTransportResult = /*#__PURE__*/function () {
|
|
|
69
69
|
}, {
|
|
70
70
|
key: "text",
|
|
71
71
|
value: function () {
|
|
72
|
-
var _text = _asyncToGenerator__default[
|
|
73
|
-
return _regeneratorRuntime__default[
|
|
72
|
+
var _text = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2() {
|
|
73
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context2) {
|
|
74
74
|
while (1) switch (_context2.prev = _context2.next) {
|
|
75
75
|
case 0:
|
|
76
76
|
return _context2.abrupt("return", typeof this.result === 'string' ? this.result : JSON.stringify(this.result));
|
|
@@ -93,14 +93,14 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
93
93
|
apiUrl = _ref2.apiUrl,
|
|
94
94
|
heartBeatInterval = _ref2.heartBeatInterval,
|
|
95
95
|
hearBeatInterval = _ref2.hearBeatInterval;
|
|
96
|
-
_classCallCheck__default[
|
|
97
|
-
_defineProperty__default[
|
|
98
|
-
_defineProperty__default[
|
|
99
|
-
_defineProperty__default[
|
|
100
|
-
_defineProperty__default[
|
|
101
|
-
_defineProperty__default[
|
|
102
|
-
_defineProperty__default[
|
|
103
|
-
_defineProperty__default[
|
|
96
|
+
_classCallCheck__default["default"](this, WebSocketTransport);
|
|
97
|
+
_defineProperty__default["default"](this, "apiUrl", void 0);
|
|
98
|
+
_defineProperty__default["default"](this, "heartBeatInterval", 60);
|
|
99
|
+
_defineProperty__default["default"](this, "token", void 0);
|
|
100
|
+
_defineProperty__default["default"](this, "ws", null);
|
|
101
|
+
_defineProperty__default["default"](this, "messageCounter", 1);
|
|
102
|
+
_defineProperty__default["default"](this, "messageIdToSubscription", {});
|
|
103
|
+
_defineProperty__default["default"](this, "messageQueue", []);
|
|
104
104
|
this.token = authorization;
|
|
105
105
|
this.apiUrl = apiUrl;
|
|
106
106
|
if (heartBeatInterval) {
|
|
@@ -110,7 +110,7 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
110
110
|
this.heartBeatInterval = hearBeatInterval;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
return _createClass__default[
|
|
113
|
+
return _createClass__default["default"](WebSocketTransport, [{
|
|
114
114
|
key: "authorization",
|
|
115
115
|
get: function get() {
|
|
116
116
|
return this.token;
|
|
@@ -124,8 +124,8 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
124
124
|
}, {
|
|
125
125
|
key: "close",
|
|
126
126
|
value: function () {
|
|
127
|
-
var _close = _asyncToGenerator__default[
|
|
128
|
-
return _regeneratorRuntime__default[
|
|
127
|
+
var _close = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee3() {
|
|
128
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context3) {
|
|
129
129
|
while (1) switch (_context3.prev = _context3.next) {
|
|
130
130
|
case 0:
|
|
131
131
|
if (this.ws) {
|
|
@@ -151,7 +151,7 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
151
151
|
if (this.ws) {
|
|
152
152
|
return this.ws.initPromise;
|
|
153
153
|
}
|
|
154
|
-
var ws = new WebSocket__default[
|
|
154
|
+
var ws = new WebSocket__default["default"](this.apiUrl);
|
|
155
155
|
ws.messageIdSent = {};
|
|
156
156
|
ws.sendMessage = function (message) {
|
|
157
157
|
if (!message.messageId || message.messageId && !ws.messageIdSent[message.messageId]) {
|
|
@@ -199,7 +199,7 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
199
199
|
ws.sendQueue();
|
|
200
200
|
};
|
|
201
201
|
ws.onclose = function (event) {
|
|
202
|
-
if (ws && ws.readyState !== WebSocket__default[
|
|
202
|
+
if (ws && ws.readyState !== WebSocket__default["default"].CLOSED && ws.readyState !== WebSocket__default["default"].CLOSING) {
|
|
203
203
|
ws.close();
|
|
204
204
|
}
|
|
205
205
|
if (ws.reconcileTimer) {
|
|
@@ -248,8 +248,8 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
248
248
|
} else {
|
|
249
249
|
this.messageQueue.push(message);
|
|
250
250
|
}
|
|
251
|
-
setTimeout(/*#__PURE__*/_asyncToGenerator__default[
|
|
252
|
-
return _regeneratorRuntime__default[
|
|
251
|
+
setTimeout(/*#__PURE__*/_asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4() {
|
|
252
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context4) {
|
|
253
253
|
while (1) switch (_context4.prev = _context4.next) {
|
|
254
254
|
case 0:
|
|
255
255
|
_context4.next = 1;
|
|
@@ -267,7 +267,7 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
267
267
|
key: "request",
|
|
268
268
|
value: function request(method, _ref4) {
|
|
269
269
|
var baseRequestId = _ref4.baseRequestId,
|
|
270
|
-
params = _objectWithoutProperties__default[
|
|
270
|
+
params = _objectWithoutProperties__default["default"](_ref4, _excluded);
|
|
271
271
|
var message = {
|
|
272
272
|
messageId: this.messageCounter++,
|
|
273
273
|
requestId: baseRequestId,
|
|
@@ -293,9 +293,9 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
293
293
|
return {
|
|
294
294
|
subscribe: function subscribe(callback) {
|
|
295
295
|
var _this3 = this;
|
|
296
|
-
return _asyncToGenerator__default[
|
|
296
|
+
return _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee5() {
|
|
297
297
|
var result;
|
|
298
|
-
return _regeneratorRuntime__default[
|
|
298
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context5) {
|
|
299
299
|
while (1) switch (_context5.prev = _context5.next) {
|
|
300
300
|
case 0:
|
|
301
301
|
transport.sendMessage(message);
|
|
@@ -319,8 +319,8 @@ var WebSocketTransport = /*#__PURE__*/function () {
|
|
|
319
319
|
}))();
|
|
320
320
|
},
|
|
321
321
|
unsubscribe: function unsubscribe() {
|
|
322
|
-
return _asyncToGenerator__default[
|
|
323
|
-
return _regeneratorRuntime__default[
|
|
322
|
+
return _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee6() {
|
|
323
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context6) {
|
|
324
324
|
while (1) switch (_context6.prev = _context6.next) {
|
|
325
325
|
case 0:
|
|
326
326
|
transport.sendMessage({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cubejs-client-ws-transport.cjs.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\n\nimport type { CloseEvent, MessageEvent } from '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: MessageEvent) => {\n ws.lastMessageTimestamp = new Date();\n\n const message: any = JSON.parse(event.data.toString());\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 = (event: CloseEvent) => {\n if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {\n ws.close();\n }\n\n if (ws.reconcileTimer) {\n clearInterval(ws.reconcileTimer);\n ws.reconcileTimer = null;\n }\n\n if (this.ws === ws) {\n this.ws = null;\n\n // Close code 1009: Message Too Big. Server rejects messages exceeding maxPayload\n // without decoding. Retrying would cause an infinite loop, so we notify subscribers\n // and clear subscriptions instead.\n if (event?.code === 1009) {\n const error = new WebSocketTransportResult({\n status: 413,\n message: { error: event?.reason || 'WebSocket message too big' }\n });\n\n Object.values(this.messageIdToSubscription).forEach(sub => {\n sub.callback(error);\n });\n\n this.messageIdToSubscription = {};\n\n return;\n }\n\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","toString","handshake","reconcileTimer","setInterval","callback","onclose","readyState","CLOSED","CLOSING","clearInterval","code","error","reason","values","sub","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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"}
|
|
1
|
+
{"version":3,"file":"cubejs-client-ws-transport.cjs.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\n\nimport type { CloseEvent, MessageEvent } from '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: MessageEvent) => {\n ws.lastMessageTimestamp = new Date();\n\n const message: any = JSON.parse(event.data.toString());\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 = (event: CloseEvent) => {\n if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {\n ws.close();\n }\n\n if (ws.reconcileTimer) {\n clearInterval(ws.reconcileTimer);\n ws.reconcileTimer = null;\n }\n\n if (this.ws === ws) {\n this.ws = null;\n\n // Close code 1009: Message Too Big. Server rejects messages exceeding maxPayload\n // without decoding. Retrying would cause an infinite loop, so we notify subscribers\n // and clear subscriptions instead.\n if (event?.code === 1009) {\n const error = new WebSocketTransportResult({\n status: 413,\n message: { error: event?.reason || 'WebSocket message too big' }\n });\n\n Object.values(this.messageIdToSubscription).forEach(sub => {\n sub.callback(error);\n });\n\n this.messageIdToSubscription = {};\n\n return;\n }\n\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","toString","handshake","reconcileTimer","setInterval","callback","onclose","readyState","CLOSED","CLOSING","clearInterval","code","error","reason","values","sub","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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cubejs-client-ws-transport.esm.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\n\nimport type { CloseEvent, MessageEvent } from '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: MessageEvent) => {\n ws.lastMessageTimestamp = new Date();\n\n const message: any = JSON.parse(event.data.toString());\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 = (event: CloseEvent) => {\n if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {\n ws.close();\n }\n\n if (ws.reconcileTimer) {\n clearInterval(ws.reconcileTimer);\n ws.reconcileTimer = null;\n }\n\n if (this.ws === ws) {\n this.ws = null;\n\n // Close code 1009: Message Too Big. Server rejects messages exceeding maxPayload\n // without decoding. Retrying would cause an infinite loop, so we notify subscribers\n // and clear subscriptions instead.\n if (event?.code === 1009) {\n const error = new WebSocketTransportResult({\n status: 413,\n message: { error: event?.reason || 'WebSocket message too big' }\n });\n\n Object.values(this.messageIdToSubscription).forEach(sub => {\n sub.callback(error);\n });\n\n this.messageIdToSubscription = {};\n\n return;\n }\n\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","toString","handshake","reconcileTimer","setInterval","callback","onclose","readyState","CLOSED","CLOSING","clearInterval","code","error","reason","values","sub","length","onerror","unsubscribe","find","m","filter","push","setTimeout","request","method","baseRequestId","params","requestId","pendingResults","nextMessage","runNextMessage","pop","transport","subscribe"],"mappings":";;AAKA,MAAMA,wBAAwB,CAAC;EAKtBC,WAAWA,CAAC;IAAEC,MAAM;IAAEC;GAAgD,EAAE;IAC7E,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,MAAM,GAAGD,OAAO;;EAGvB,MAAaE,IAAIA,GAAG;IAClB,OAAO,IAAI,CAACD,MAAM;;EAGbE,KAAKA,GAAG;;IAEb,OAAO,IAAI;;EAGb,MAAaC,IAAIA,GAAG;IAClB,OAAO,OAAO,IAAI,CAACH,MAAM,KAAK,QAAQ,GAAG,IAAI,CAACA,MAAM,GAAGI,IAAI,CAACC,SAAS,CAAC,IAAI,CAACL,MAAM,CAAC;;AAEtF;AAsBA,MAAMM,kBAAkB,CAAiD;EAGpDC,iBAAiB,GAAW,EAAE;EAIvCC,EAAE,GAAQ,IAAI;EAEdC,cAAc,GAAW,CAAC;EAE1BC,uBAAuB,GAAiC,EAAE;EAE1DC,YAAY,GAAc,EAAE;EAE/Bd,WAAWA,CAAC;IAAEe,aAAa;IAAEC,MAAM;IAAEN,iBAAiB;IAAEO;GAA6C,EAAE;IAC5G,IAAI,CAACC,KAAK,GAAGH,aAAa;IAC1B,IAAI,CAACC,MAAM,GAAGA,MAAM;IAEpB,IAAIN,iBAAiB,EAAE;MACrB,IAAI,CAACA,iBAAiB,GAAGA,iBAAiB;KAC3C,MAAM,IAAIO,gBAAgB,EAAE;MAC3BE,OAAO,CAACC,IAAI,CAAC,8EAA8E,CAAC;MAC5F,IAAI,CAACV,iBAAiB,GAAGO,gBAAgB;;;EAI7C,IAAWF,aAAaA,CAACG,KAAK,EAAE;IAC9B,IAAI,CAACA,KAAK,GAAGA,KAAK;IAElB,IAAI,IAAI,CAACP,EAAE,EAAE;MACX,IAAI,CAACA,EAAE,CAACU,KAAK,EAAE;;;EAInB,MAAaA,KAAKA,GAAkB;IAClC,IAAI,IAAI,CAACV,EAAE,EAAE;;MAEX,IAAI,CAACA,EAAE,CAACW,SAAS,EAAE;MAEnB,IAAI,CAACX,EAAE,CAACU,KAAK,EAAE;;;EAInB,IAAWN,aAAaA,GAAG;IACzB,OAAO,IAAI,CAACG,KAAK;;EAGTK,UAAUA,GAAG;IACrB,IAAI,IAAI,CAACZ,EAAE,EAAE;MACX,OAAO,IAAI,CAACA,EAAE,CAACa,WAAW;;IAG5B,MAAMb,EAAO,GAAG,IAAIc,SAAS,CAAC,IAAI,CAACT,MAAM,CAAC;IAE1CL,EAAE,CAACe,aAAa,GAAG,EAAE;IAErBf,EAAE,CAACgB,WAAW,GAAIzB,OAAY,IAAK;MACjC,IAAI,CAACA,OAAO,CAAC0B,SAAS,IAAI1B,OAAO,CAAC0B,SAAS,IAAI,CAACjB,EAAE,CAACe,aAAa,CAACxB,OAAO,CAAC0B,SAAS,CAAC,EAAE;QACnFjB,EAAE,CAACkB,IAAI,CAACtB,IAAI,CAACC,SAAS,CAACN,OAAO,CAAC,CAAC;QAChCS,EAAE,CAACe,aAAa,CAACxB,OAAO,CAAC0B,SAAS,CAAC,GAAG,IAAI;;KAE7C;IAEDjB,EAAE,CAACW,SAAS,GAAG,MAAM;MACnB,IAAI,CAACR,YAAY,CAACgB,OAAO,CAAC5B,OAAO,IAAIS,EAAE,CAACgB,WAAW,CAACzB,OAAO,CAAC,CAAC;MAC7D,IAAI,CAACY,YAAY,GAAG,EAAE;KACvB;IAEDH,EAAE,CAACoB,SAAS,GAAG,MAAM;MACnB,IAAI,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE,GAAGtB,EAAE,CAACuB,oBAAoB,CAACD,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAACvB,iBAAiB,GAAG,IAAI,EAAE;QAChGC,EAAE,CAACU,KAAK,EAAE;OACX,MAAM;QACLc,MAAM,CAACC,IAAI,CAAC,IAAI,CAACvB,uBAAuB,CAAC,CAACiB,OAAO,CAACF,SAAS,IAAI;;UAE7DjB,EAAE,CAACgB,WAAW,CAAC,IAAI,CAACd,uBAAuB,CAACe,SAAS,CAAC,CAAC1B,OAAO,CAAC;SAChE,CAAC;;KAEL;IAEDS,EAAE,CAACuB,oBAAoB,GAAG,IAAIF,IAAI,EAAE;IAEpCrB,EAAE,CAACa,WAAW,GAAG,IAAIa,OAAO,CAAOC,OAAO,IAAI;MAC5C3B,EAAE,CAAC4B,MAAM,GAAG,MAAM;QAChB5B,EAAE,CAACgB,WAAW,CAAC;UAAEZ,aAAa,EAAE,IAAI,CAACA;SAAe,CAAC;OACtD;MAEDJ,EAAE,CAAC6B,SAAS,GAAIC,KAAmB,IAAK;QACtC9B,EAAE,CAACuB,oBAAoB,GAAG,IAAIF,IAAI,EAAE;QAEpC,MAAM9B,OAAY,GAAGK,IAAI,CAACmC,KAAK,CAACD,KAAK,CAACE,IAAI,CAACC,QAAQ,EAAE,CAAC;QACtD,IAAI1C,OAAO,CAAC2C,SAAS,EAAE;UACrBlC,EAAE,CAACoB,SAAS,EAAE;UACdpB,EAAE,CAACmC,cAAc,GAAGC,WAAW,CAAC,MAAM;YACpCpC,EAAE,CAACe,aAAa,GAAG,EAAE;YACrBf,EAAE,CAACoB,SAAS,EAAE;WACf,EAAE,IAAI,CAACrB,iBAAiB,GAAG,IAAI,CAAC;UACjC4B,OAAO,EAAE;;QAGX,IAAI,IAAI,CAACzB,uBAAuB,CAACX,OAAO,CAAC0B,SAAS,CAAC,EAAE;UACnD,IAAI,CAACf,uBAAuB,CAACX,OAAO,CAAC0B,SAAS,CAAC,CAACoB,QAAQ,CACtD,IAAIjD,wBAAwB,CAACG,OAAO,CACtC,CAAC;;QAGHS,EAAE,CAACW,SAAS,EAAE;OACf;MAEDX,EAAE,CAACsC,OAAO,GAAIR,KAAiB,IAAK;QAClC,IAAI9B,EAAE,IAAIA,EAAE,CAACuC,UAAU,KAAKzB,SAAS,CAAC0B,MAAM,IAAIxC,EAAE,CAACuC,UAAU,KAAKzB,SAAS,CAAC2B,OAAO,EAAE;UACnFzC,EAAE,CAACU,KAAK,EAAE;;QAGZ,IAAIV,EAAE,CAACmC,cAAc,EAAE;UACrBO,aAAa,CAAC1C,EAAE,CAACmC,cAAc,CAAC;UAChCnC,EAAE,CAACmC,cAAc,GAAG,IAAI;;QAG1B,IAAI,IAAI,CAACnC,EAAE,KAAKA,EAAE,EAAE;UAClB,IAAI,CAACA,EAAE,GAAG,IAAI;;;;;UAKd,IAAI8B,KAAK,EAAEa,IAAI,KAAK,IAAI,EAAE;YACxB,MAAMC,KAAK,GAAG,IAAIxD,wBAAwB,CAAC;cACzCE,MAAM,EAAE,GAAG;cACXC,OAAO,EAAE;gBAAEqD,KAAK,EAAEd,KAAK,EAAEe,MAAM,IAAI;;aACpC,CAAC;YAEFrB,MAAM,CAACsB,MAAM,CAAC,IAAI,CAAC5C,uBAAuB,CAAC,CAACiB,OAAO,CAAC4B,GAAG,IAAI;cACzDA,GAAG,CAACV,QAAQ,CAACO,KAAK,CAAC;aACpB,CAAC;YAEF,IAAI,CAAC1C,uBAAuB,GAAG,EAAE;YAEjC;;UAGF,IAAIsB,MAAM,CAACC,IAAI,CAAC,IAAI,CAACvB,uBAAuB,CAAC,CAAC8C,MAAM,EAAE;YACpD,IAAI,CAACpC,UAAU,EAAE;;;OAGtB;MAEDZ,EAAE,CAACiD,OAAO,GAAGjD,EAAE,CAACsC,OAAO;KACxB,CAAC;IAEF,IAAI,CAACtC,EAAE,GAAGA,EAAE;IAEZ,OAAO,IAAI,CAACA,EAAE,CAACa,WAAW;;EAGlBG,WAAWA,CAACzB,OAAY,EAAE;IAClC,IAAIA,OAAO,CAAC2D,WAAW,IAAI,IAAI,CAAC/C,YAAY,CAACgD,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACnC,SAAS,KAAK1B,OAAO,CAAC2D,WAAW,CAAC,EAAE;MAC3F,IAAI,CAAC/C,YAAY,GAAG,IAAI,CAACA,YAAY,CAACkD,MAAM,CAACD,CAAC,IAAIA,CAAC,CAACnC,SAAS,KAAK1B,OAAO,CAAC2D,WAAW,CAAC;KACvF,MAAM;MACL,IAAI,CAAC/C,YAAY,CAACmD,IAAI,CAAC/D,OAAO,CAAC;;IAGjCgE,UAAU,CAAC,YAAY;MACrB,MAAM,IAAI,CAAC3C,UAAU,EAAE;MACvB,IAAI,CAACZ,EAAE,CAACW,SAAS,EAAE;KACpB,EAAE,GAAG,CAAC;;EAGF6C,OAAOA,CACZC,MAAc,EACd;IAAEC,aAAa;IAAE,GAAGC;GAAiC,EACP;IAC9C,MAAMpE,OAAgB,GAAG;MACvB0B,SAAS,EAAE,IAAI,CAAChB,cAAc,EAAE;MAChC2D,SAAS,EAAEF,aAAa;MACxBD,MAAM;MACNE;KACD;IAED,MAAME,cAA0C,GAAG,EAAE;IACrD,IAAIC,WAA0C,GAAG,IAAI;IAErD,MAAMC,cAAc,GAAGA,MAAM;MAC3B,IAAID,WAAW,EAAE;QACfA,WAAW,CAACD,cAAc,CAACG,GAAG,EAAE,CAAC;QACjCF,WAAW,GAAG,IAAI;;KAErB;IAED,IAAI,CAAC5D,uBAAuB,CAACX,OAAO,CAAC0B,SAAS,CAAC,GAAG;MAChD1B,OAAO;MACP8C,QAAQ,EAAG7C,MAAM,IAAK;QACpBqE,cAAc,CAACP,IAAI,CAAC9D,MAAM,CAAC;QAC3BuE,cAAc,EAAE;;KAEnB;IAED,MAAME,SAAS,GAAG,IAAI;IAEtB,OAAO;MACL,MAAMC,SAASA,CAAC7B,QAAQ,EAAE;QACxB4B,SAAS,CAACjD,WAAW,CAACzB,OAAO,CAAC;QAE9B,MAAMC,MAAM,GAAG,MAAM,IAAIkC,OAAO,CAA4BC,OAAO,IAAK;UACtEmC,WAAW,GAAGnC,OAAO;UACrB,IAAIkC,cAAc,CAACb,MAAM,EAAE;YACzBe,cAAc,EAAE;;SAEnB,CAAC;QAEF,OAAO1B,QAAQ,CAAC7C,MAAM,EAAE,MAAM,IAAI,CAAC0E,SAAS,CAAC7B,QAAQ,CAAC,CAAC;OACxD;MACD,MAAMa,WAAWA,GAAG;QAClBe,SAAS,CAACjD,WAAW,CAAC;UAAEkC,WAAW,EAAE3D,OAAO,CAAC0B;SAAW,CAAC;QACzD,OAAOgD,SAAS,CAAC/D,uBAAuB,CAACX,OAAO,CAAC0B,SAAS,CAAC;;KAE9D;;AAEL;;;;"}
|
|
1
|
+
{"version":3,"file":"cubejs-client-ws-transport.esm.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\n\nimport type { CloseEvent, MessageEvent } from '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: MessageEvent) => {\n ws.lastMessageTimestamp = new Date();\n\n const message: any = JSON.parse(event.data.toString());\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 = (event: CloseEvent) => {\n if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {\n ws.close();\n }\n\n if (ws.reconcileTimer) {\n clearInterval(ws.reconcileTimer);\n ws.reconcileTimer = null;\n }\n\n if (this.ws === ws) {\n this.ws = null;\n\n // Close code 1009: Message Too Big. Server rejects messages exceeding maxPayload\n // without decoding. Retrying would cause an infinite loop, so we notify subscribers\n // and clear subscriptions instead.\n if (event?.code === 1009) {\n const error = new WebSocketTransportResult({\n status: 413,\n message: { error: event?.reason || 'WebSocket message too big' }\n });\n\n Object.values(this.messageIdToSubscription).forEach(sub => {\n sub.callback(error);\n });\n\n this.messageIdToSubscription = {};\n\n return;\n }\n\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","toString","handshake","reconcileTimer","setInterval","callback","onclose","readyState","CLOSED","CLOSING","clearInterval","code","error","reason","values","sub","length","onerror","unsubscribe","find","m","filter","push","setTimeout","request","method","baseRequestId","params","requestId","pendingResults","nextMessage","runNextMessage","pop","transport","subscribe"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@babel/runtime/helpers/objectWithoutProperties'), require('@babel/runtime/helpers/asyncToGenerator'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass'), require('@babel/runtime/helpers/defineProperty'), require('core-js/modules/es.array.filter.js'), require('core-js/modules/es.array.find.js'), require('core-js/modules/es.array.for-each.js'), require('core-js/modules/es.date.to-json.js'), require('core-js/modules/es.date.to-string.js'), require('core-js/modules/es.object.keys.js'), require('core-js/modules/es.object.to-string.js'), require('core-js/modules/es.object.values.js'), require('core-js/modules/es.promise.js'), require('core-js/modules/es.regexp.to-string.js'), require('core-js/modules/web.dom-collections.for-each.js'), require('core-js/modules/web.timers.js'), require('@babel/runtime/regenerator'), require('isomorphic-ws')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['@babel/runtime/helpers/objectWithoutProperties', '@babel/runtime/helpers/asyncToGenerator', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass', '@babel/runtime/helpers/defineProperty', 'core-js/modules/es.array.filter.js', 'core-js/modules/es.array.find.js', 'core-js/modules/es.array.for-each.js', 'core-js/modules/es.date.to-json.js', 'core-js/modules/es.date.to-string.js', 'core-js/modules/es.object.keys.js', 'core-js/modules/es.object.to-string.js', 'core-js/modules/es.object.values.js', 'core-js/modules/es.promise.js', 'core-js/modules/es.regexp.to-string.js', 'core-js/modules/web.dom-collections.for-each.js', 'core-js/modules/web.timers.js', '@babel/runtime/regenerator', 'isomorphic-ws'], factory) :
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.CubejsWebSocketTransport = factory(global._objectWithoutProperties, global._asyncToGenerator, global._classCallCheck, global._createClass, global._defineProperty, null, null, null, null, null, null, null, null, null, null, null, null, global._regeneratorRuntime, global.WebSocket));
|
|
5
|
-
}(this, (function (_objectWithoutProperties, _asyncToGenerator, _classCallCheck, _createClass, _defineProperty, es_array_filter_js, es_array_find_js, es_array_forEach_js, es_date_toJson_js, es_date_toString_js, es_object_keys_js, es_object_toString_js, es_object_values_js, es_promise_js, es_regexp_toString_js, web_domCollections_forEach_js, web_timers_js, _regeneratorRuntime, WebSocket) { 'use strict';
|
|
5
|
+
})(this, (function (_objectWithoutProperties, _asyncToGenerator, _classCallCheck, _createClass, _defineProperty, es_array_filter_js, es_array_find_js, es_array_forEach_js, es_date_toJson_js, es_date_toString_js, es_object_keys_js, es_object_toString_js, es_object_values_js, es_promise_js, es_regexp_toString_js, web_domCollections_forEach_js, web_timers_js, _regeneratorRuntime, WebSocket) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -19,17 +19,17 @@
|
|
|
19
19
|
function WebSocketTransportResult(_ref) {
|
|
20
20
|
var status = _ref.status,
|
|
21
21
|
message = _ref.message;
|
|
22
|
-
_classCallCheck__default[
|
|
23
|
-
_defineProperty__default[
|
|
24
|
-
_defineProperty__default[
|
|
22
|
+
_classCallCheck__default["default"](this, WebSocketTransportResult);
|
|
23
|
+
_defineProperty__default["default"](this, "status", void 0);
|
|
24
|
+
_defineProperty__default["default"](this, "result", void 0);
|
|
25
25
|
this.status = status;
|
|
26
26
|
this.result = message;
|
|
27
27
|
}
|
|
28
|
-
return _createClass__default[
|
|
28
|
+
return _createClass__default["default"](WebSocketTransportResult, [{
|
|
29
29
|
key: "json",
|
|
30
30
|
value: function () {
|
|
31
|
-
var _json = _asyncToGenerator__default[
|
|
32
|
-
return _regeneratorRuntime__default[
|
|
31
|
+
var _json = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
|
|
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);
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
}, {
|
|
54
54
|
key: "text",
|
|
55
55
|
value: function () {
|
|
56
|
-
var _text = _asyncToGenerator__default[
|
|
57
|
-
return _regeneratorRuntime__default[
|
|
56
|
+
var _text = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2() {
|
|
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));
|
|
@@ -77,14 +77,14 @@
|
|
|
77
77
|
apiUrl = _ref2.apiUrl,
|
|
78
78
|
heartBeatInterval = _ref2.heartBeatInterval,
|
|
79
79
|
hearBeatInterval = _ref2.hearBeatInterval;
|
|
80
|
-
_classCallCheck__default[
|
|
81
|
-
_defineProperty__default[
|
|
82
|
-
_defineProperty__default[
|
|
83
|
-
_defineProperty__default[
|
|
84
|
-
_defineProperty__default[
|
|
85
|
-
_defineProperty__default[
|
|
86
|
-
_defineProperty__default[
|
|
87
|
-
_defineProperty__default[
|
|
80
|
+
_classCallCheck__default["default"](this, WebSocketTransport);
|
|
81
|
+
_defineProperty__default["default"](this, "apiUrl", void 0);
|
|
82
|
+
_defineProperty__default["default"](this, "heartBeatInterval", 60);
|
|
83
|
+
_defineProperty__default["default"](this, "token", void 0);
|
|
84
|
+
_defineProperty__default["default"](this, "ws", null);
|
|
85
|
+
_defineProperty__default["default"](this, "messageCounter", 1);
|
|
86
|
+
_defineProperty__default["default"](this, "messageIdToSubscription", {});
|
|
87
|
+
_defineProperty__default["default"](this, "messageQueue", []);
|
|
88
88
|
this.token = authorization;
|
|
89
89
|
this.apiUrl = apiUrl;
|
|
90
90
|
if (heartBeatInterval) {
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
this.heartBeatInterval = hearBeatInterval;
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
-
return _createClass__default[
|
|
97
|
+
return _createClass__default["default"](WebSocketTransport, [{
|
|
98
98
|
key: "authorization",
|
|
99
99
|
get: function get() {
|
|
100
100
|
return this.token;
|
|
@@ -108,8 +108,8 @@
|
|
|
108
108
|
}, {
|
|
109
109
|
key: "close",
|
|
110
110
|
value: function () {
|
|
111
|
-
var _close = _asyncToGenerator__default[
|
|
112
|
-
return _regeneratorRuntime__default[
|
|
111
|
+
var _close = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee3() {
|
|
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) {
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
if (this.ws) {
|
|
136
136
|
return this.ws.initPromise;
|
|
137
137
|
}
|
|
138
|
-
var ws = new WebSocket__default[
|
|
138
|
+
var ws = new WebSocket__default["default"](this.apiUrl);
|
|
139
139
|
ws.messageIdSent = {};
|
|
140
140
|
ws.sendMessage = function (message) {
|
|
141
141
|
if (!message.messageId || message.messageId && !ws.messageIdSent[message.messageId]) {
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
ws.sendQueue();
|
|
184
184
|
};
|
|
185
185
|
ws.onclose = function (event) {
|
|
186
|
-
if (ws && ws.readyState !== WebSocket__default[
|
|
186
|
+
if (ws && ws.readyState !== WebSocket__default["default"].CLOSED && ws.readyState !== WebSocket__default["default"].CLOSING) {
|
|
187
187
|
ws.close();
|
|
188
188
|
}
|
|
189
189
|
if (ws.reconcileTimer) {
|
|
@@ -232,8 +232,8 @@
|
|
|
232
232
|
} else {
|
|
233
233
|
this.messageQueue.push(message);
|
|
234
234
|
}
|
|
235
|
-
setTimeout(/*#__PURE__*/_asyncToGenerator__default[
|
|
236
|
-
return _regeneratorRuntime__default[
|
|
235
|
+
setTimeout(/*#__PURE__*/_asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4() {
|
|
236
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context4) {
|
|
237
237
|
while (1) switch (_context4.prev = _context4.next) {
|
|
238
238
|
case 0:
|
|
239
239
|
_context4.next = 1;
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
key: "request",
|
|
252
252
|
value: function request(method, _ref4) {
|
|
253
253
|
var baseRequestId = _ref4.baseRequestId,
|
|
254
|
-
params = _objectWithoutProperties__default[
|
|
254
|
+
params = _objectWithoutProperties__default["default"](_ref4, _excluded);
|
|
255
255
|
var message = {
|
|
256
256
|
messageId: this.messageCounter++,
|
|
257
257
|
requestId: baseRequestId,
|
|
@@ -277,9 +277,9 @@
|
|
|
277
277
|
return {
|
|
278
278
|
subscribe: function subscribe(callback) {
|
|
279
279
|
var _this3 = this;
|
|
280
|
-
return _asyncToGenerator__default[
|
|
280
|
+
return _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee5() {
|
|
281
281
|
var result;
|
|
282
|
-
return _regeneratorRuntime__default[
|
|
282
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context5) {
|
|
283
283
|
while (1) switch (_context5.prev = _context5.next) {
|
|
284
284
|
case 0:
|
|
285
285
|
transport.sendMessage(message);
|
|
@@ -303,8 +303,8 @@
|
|
|
303
303
|
}))();
|
|
304
304
|
},
|
|
305
305
|
unsubscribe: function unsubscribe() {
|
|
306
|
-
return _asyncToGenerator__default[
|
|
307
|
-
return _regeneratorRuntime__default[
|
|
306
|
+
return _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee6() {
|
|
307
|
+
return _regeneratorRuntime__default["default"].wrap(function (_context6) {
|
|
308
308
|
while (1) switch (_context6.prev = _context6.next) {
|
|
309
309
|
case 0:
|
|
310
310
|
transport.sendMessage({
|
|
@@ -325,5 +325,5 @@
|
|
|
325
325
|
|
|
326
326
|
return WebSocketTransport;
|
|
327
327
|
|
|
328
|
-
}))
|
|
328
|
+
}));
|
|
329
329
|
//# sourceMappingURL=cubejs-client-ws-transport.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cubejs-client-ws-transport.umd.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\n\nimport type { CloseEvent, MessageEvent } from '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: MessageEvent) => {\n ws.lastMessageTimestamp = new Date();\n\n const message: any = JSON.parse(event.data.toString());\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 = (event: CloseEvent) => {\n if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {\n ws.close();\n }\n\n if (ws.reconcileTimer) {\n clearInterval(ws.reconcileTimer);\n ws.reconcileTimer = null;\n }\n\n if (this.ws === ws) {\n this.ws = null;\n\n // Close code 1009: Message Too Big. Server rejects messages exceeding maxPayload\n // without decoding. Retrying would cause an infinite loop, so we notify subscribers\n // and clear subscriptions instead.\n if (event?.code === 1009) {\n const error = new WebSocketTransportResult({\n status: 413,\n message: { error: event?.reason || 'WebSocket message too big' }\n });\n\n Object.values(this.messageIdToSubscription).forEach(sub => {\n sub.callback(error);\n });\n\n this.messageIdToSubscription = {};\n\n return;\n }\n\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","toString","handshake","reconcileTimer","setInterval","callback","onclose","readyState","CLOSED","CLOSING","clearInterval","code","error","reason","values","sub","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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"}
|
|
1
|
+
{"version":3,"file":"cubejs-client-ws-transport.umd.js","sources":["../src/index.ts"],"sourcesContent":["import WebSocket from 'isomorphic-ws';\n\nimport type { CloseEvent, MessageEvent } from '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: MessageEvent) => {\n ws.lastMessageTimestamp = new Date();\n\n const message: any = JSON.parse(event.data.toString());\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 = (event: CloseEvent) => {\n if (ws && ws.readyState !== WebSocket.CLOSED && ws.readyState !== WebSocket.CLOSING) {\n ws.close();\n }\n\n if (ws.reconcileTimer) {\n clearInterval(ws.reconcileTimer);\n ws.reconcileTimer = null;\n }\n\n if (this.ws === ws) {\n this.ws = null;\n\n // Close code 1009: Message Too Big. Server rejects messages exceeding maxPayload\n // without decoding. Retrying would cause an infinite loop, so we notify subscribers\n // and clear subscriptions instead.\n if (event?.code === 1009) {\n const error = new WebSocketTransportResult({\n status: 413,\n message: { error: event?.reason || 'WebSocket message too big' }\n });\n\n Object.values(this.messageIdToSubscription).forEach(sub => {\n sub.callback(error);\n });\n\n this.messageIdToSubscription = {};\n\n return;\n }\n\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","toString","handshake","reconcileTimer","setInterval","callback","onclose","readyState","CLOSED","CLOSING","clearInterval","code","error","reason","values","sub","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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cubejs-client/ws-transport",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.19",
|
|
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.6.
|
|
23
|
+
"@cubejs-client/core": "1.6.19",
|
|
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.6.
|
|
36
|
+
"@cubejs-backend/linter": "1.6.19",
|
|
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": "
|
|
46
|
+
"gitHead": "1f5716a4c830bb363889de2522480b390fcf3f89"
|
|
47
47
|
}
|