@rc-ex/ws 1.3.2 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/cjs/exceptions/ClosedException.js +26 -0
  2. package/dist/cjs/exceptions/ClosedException.js.map +1 -0
  3. package/{lib → dist/cjs}/exceptions/ConnectionException.d.ts +1 -1
  4. package/dist/cjs/exceptions/ConnectionException.js +35 -0
  5. package/dist/cjs/exceptions/ConnectionException.js.map +1 -0
  6. package/dist/cjs/exceptions/TimeoutException.js +26 -0
  7. package/dist/cjs/exceptions/TimeoutException.js.map +1 -0
  8. package/{lib/esm → dist/cjs}/index.d.ts +6 -6
  9. package/dist/cjs/index.js +515 -0
  10. package/dist/cjs/index.js.map +1 -0
  11. package/{lib/esm → dist/cjs}/rest.d.ts +2 -2
  12. package/dist/cjs/rest.js +104 -0
  13. package/dist/cjs/rest.js.map +1 -0
  14. package/{lib → dist/cjs}/subscription.d.ts +3 -3
  15. package/dist/cjs/subscription.js +178 -0
  16. package/dist/cjs/subscription.js.map +1 -0
  17. package/{lib → dist/cjs}/types.d.ts +2 -2
  18. package/{lib/esm → dist/cjs}/utils.d.ts +1 -1
  19. package/dist/cjs/utils.js +116 -0
  20. package/dist/cjs/utils.js.map +1 -0
  21. package/dist/esm/exceptions/ClosedException.js +24 -0
  22. package/dist/esm/exceptions/ClosedException.js.map +1 -0
  23. package/{lib → dist}/esm/exceptions/ConnectionException.d.ts +1 -1
  24. package/dist/esm/exceptions/ConnectionException.js +30 -0
  25. package/dist/esm/exceptions/ConnectionException.js.map +1 -0
  26. package/dist/esm/exceptions/TimeoutException.js +24 -0
  27. package/dist/esm/exceptions/TimeoutException.js.map +1 -0
  28. package/{lib → dist/esm}/index.d.ts +6 -6
  29. package/dist/esm/index.js +509 -0
  30. package/dist/esm/index.js.map +1 -0
  31. package/{lib → dist/esm}/rest.d.ts +2 -2
  32. package/dist/esm/rest.js +98 -0
  33. package/dist/esm/rest.js.map +1 -0
  34. package/{lib → dist}/esm/subscription.d.ts +3 -3
  35. package/dist/esm/subscription.js +173 -0
  36. package/dist/esm/subscription.js.map +1 -0
  37. package/{lib → dist}/esm/types.d.ts +2 -2
  38. package/dist/esm/types.js +2 -0
  39. package/dist/esm/types.js.map +1 -0
  40. package/{lib → dist/esm}/utils.d.ts +1 -1
  41. package/dist/esm/utils.js +111 -0
  42. package/dist/esm/utils.js.map +1 -0
  43. package/package.json +23 -9
  44. package/src/exceptions/ConnectionException.ts +2 -2
  45. package/src/index.ts +10 -10
  46. package/src/rest.ts +4 -4
  47. package/src/subscription.ts +5 -9
  48. package/src/types.ts +2 -2
  49. package/src/utils.ts +3 -3
  50. package/tsconfig.cjs.json +28 -0
  51. package/tsconfig.esm.json +28 -0
  52. package/lib/esm/exceptions/ClosedException.js +0 -9
  53. package/lib/esm/exceptions/ClosedException.js.map +0 -1
  54. package/lib/esm/exceptions/ConnectionException.js +0 -18
  55. package/lib/esm/exceptions/ConnectionException.js.map +0 -1
  56. package/lib/esm/exceptions/TimeoutException.js +0 -9
  57. package/lib/esm/exceptions/TimeoutException.js.map +0 -1
  58. package/lib/esm/index.js +0 -334
  59. package/lib/esm/index.js.map +0 -1
  60. package/lib/esm/rest.js +0 -54
  61. package/lib/esm/rest.js.map +0 -1
  62. package/lib/esm/subscription.js +0 -96
  63. package/lib/esm/subscription.js.map +0 -1
  64. package/lib/esm/utils.js +0 -72
  65. package/lib/esm/utils.js.map +0 -1
  66. package/lib/exceptions/ClosedException.js +0 -9
  67. package/lib/exceptions/ClosedException.js.map +0 -1
  68. package/lib/exceptions/ConnectionException.js +0 -18
  69. package/lib/exceptions/ConnectionException.js.map +0 -1
  70. package/lib/exceptions/TimeoutException.js +0 -9
  71. package/lib/exceptions/TimeoutException.js.map +0 -1
  72. package/lib/index.js +0 -334
  73. package/lib/index.js.map +0 -1
  74. package/lib/rest.js +0 -54
  75. package/lib/rest.js.map +0 -1
  76. package/lib/subscription.js +0 -96
  77. package/lib/subscription.js.map +0 -1
  78. package/lib/types.js +0 -3
  79. package/lib/types.js.map +0 -1
  80. package/lib/utils.js +0 -72
  81. package/lib/utils.js.map +0 -1
  82. package/tsconfig.json +0 -8
  83. /package/{lib/esm → dist/cjs}/exceptions/ClosedException.d.ts +0 -0
  84. /package/{lib/esm → dist/cjs}/exceptions/TimeoutException.d.ts +0 -0
  85. /package/{lib/esm → dist/cjs}/types.js +0 -0
  86. /package/{lib/esm → dist/cjs}/types.js.map +0 -0
  87. /package/{lib → dist/esm}/exceptions/ClosedException.d.ts +0 -0
  88. /package/{lib → dist/esm}/exceptions/TimeoutException.d.ts +0 -0
@@ -0,0 +1,509 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __generator = (this && this.__generator) || function (thisArg, body) {
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
27
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
+ function verb(n) { return function (v) { return step([n, v]); }; }
29
+ function step(op) {
30
+ if (f) throw new TypeError("Generator is already executing.");
31
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
32
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
+ if (y = 0, t) op = [op[0] & 2, t.value];
34
+ switch (op[0]) {
35
+ case 0: case 1: t = op; break;
36
+ case 4: _.label++; return { value: op[1], done: false };
37
+ case 5: _.label++; y = op[1]; op = [0]; continue;
38
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
+ default:
40
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
+ if (t[2]) _.ops.pop();
45
+ _.trys.pop(); continue;
46
+ }
47
+ op = body.call(thisArg, _);
48
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
+ }
51
+ };
52
+ import SdkExtension from "@rc-ex/core/SdkExtension";
53
+ import WS from "isomorphic-ws";
54
+ import hyperid from "hyperid";
55
+ import { EventEmitter } from "events";
56
+ import waitFor from "wait-for-async";
57
+ import RestException from "@rc-ex/core/RestException";
58
+ import { request } from "./rest";
59
+ import Subscription from "./subscription";
60
+ import ConnectionException from "./exceptions/ConnectionException";
61
+ import Utils from "./utils";
62
+ var CONNECTING = 0;
63
+ var OPEN = 1;
64
+ var uuid = hyperid();
65
+ export var Events;
66
+ (function (Events) {
67
+ Events["autoRecoverSuccess"] = "autoRecoverSuccess";
68
+ Events["autoRecoverFailed"] = "autoRecoverFailed";
69
+ Events["autoRecoverError"] = "autoRecoverError";
70
+ Events["newWebSocketObject"] = "newWebSocketObject";
71
+ Events["newWsc"] = "newWsc";
72
+ Events["connectionReady"] = "connectionReady";
73
+ })(Events || (Events = {}));
74
+ var WebSocketExtension = /** @class */ (function (_super) {
75
+ __extends(WebSocketExtension, _super);
76
+ function WebSocketExtension(options) {
77
+ if (options === void 0) { options = {}; }
78
+ var _a, _b, _c, _d, _e;
79
+ var _f, _g, _h, _j, _k;
80
+ var _this = _super.call(this) || this;
81
+ _this.eventEmitter = new EventEmitter();
82
+ _this.wsTokenExpiresAt = 0;
83
+ _this.request = request; // request method was moved to another file to keep this file short
84
+ _this.options = options;
85
+ (_a = (_f = _this.options).restOverWebSocket) !== null && _a !== void 0 ? _a : (_f.restOverWebSocket = false);
86
+ (_b = (_g = _this.options).debugMode) !== null && _b !== void 0 ? _b : (_g.debugMode = false);
87
+ (_c = (_h = _this.options).autoRecover) !== null && _c !== void 0 ? _c : (_h.autoRecover = {
88
+ enabled: true,
89
+ });
90
+ (_d = (_j = _this.options.autoRecover).checkInterval) !== null && _d !== void 0 ? _d : (_j.checkInterval = function (retriesAttempted) {
91
+ var interval = 2000 + 2000 * retriesAttempted;
92
+ return Math.min(8000, interval);
93
+ });
94
+ (_e = (_k = _this.options.autoRecover).pingServerInterval) !== null && _e !== void 0 ? _e : (_k.pingServerInterval = 60000);
95
+ return _this;
96
+ }
97
+ WebSocketExtension.prototype.disable = function () {
98
+ _super.prototype.disable.call(this);
99
+ if (this.subscription) {
100
+ this.subscription.enabled = false;
101
+ }
102
+ };
103
+ WebSocketExtension.prototype.install = function (rc) {
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ var request_1, connectMethod, e_1, retriesAttempted, checking, check;
106
+ var _this = this;
107
+ return __generator(this, function (_a) {
108
+ switch (_a.label) {
109
+ case 0:
110
+ this.rc = rc;
111
+ if (this.options.restOverWebSocket) {
112
+ request_1 = rc.request.bind(rc);
113
+ rc.request = function (method, endpoint, content, queryParams, config) { return __awaiter(_this, void 0, void 0, function () {
114
+ var _a, _b, _c;
115
+ return __generator(this, function (_d) {
116
+ if (!this.enabled || !this.options.restOverWebSocket) {
117
+ return [2 /*return*/, request_1(method, endpoint, content, queryParams, config)];
118
+ }
119
+ if (
120
+ // the following cannot be done with WebSocket
121
+ ((_c = (_b = (_a = config === null || config === void 0 ? void 0 : config.headers) === null || _a === void 0 ? void 0 : _a.getContentType) === null || _b === void 0 ? void 0 : _b.toString()) === null || _c === void 0 ? void 0 : _c.includes("multipart/form-data")) ||
122
+ (config === null || config === void 0 ? void 0 : config.responseType) === "arraybuffer" ||
123
+ endpoint.startsWith("/restapi/oauth/") // token, revoke, wstoken
124
+ ) {
125
+ return [2 /*return*/, request_1(method, endpoint, content, queryParams, config)];
126
+ }
127
+ return [2 /*return*/, this.request(method, endpoint, content, queryParams, config)];
128
+ });
129
+ }); };
130
+ }
131
+ connectMethod = this.connect.bind(this);
132
+ if (this.options.wscToken) {
133
+ this.wsc = {
134
+ token: this.options.wscToken,
135
+ sequence: 0,
136
+ };
137
+ connectMethod = this.recover.bind(this);
138
+ }
139
+ if (!!this.options.autoRecover.enabled) return [3 /*break*/, 2];
140
+ return [4 /*yield*/, connectMethod()];
141
+ case 1:
142
+ _a.sent();
143
+ return [2 /*return*/];
144
+ case 2:
145
+ _a.trys.push([2, 4, , 5]);
146
+ return [4 /*yield*/, connectMethod()];
147
+ case 3:
148
+ _a.sent();
149
+ return [3 /*break*/, 5];
150
+ case 4:
151
+ e_1 = _a.sent();
152
+ if (e_1 instanceof RestException) {
153
+ throw e_1; // such as InsufficientPermissions
154
+ }
155
+ if (this.options.debugMode) {
156
+ console.debug("Initial connect failed:", e_1);
157
+ }
158
+ return [3 /*break*/, 5];
159
+ case 5:
160
+ retriesAttempted = 0;
161
+ checking = false;
162
+ check = function () { return __awaiter(_this, void 0, void 0, function () {
163
+ var e_2;
164
+ var _a, _b, _c;
165
+ return __generator(this, function (_d) {
166
+ switch (_d.label) {
167
+ case 0:
168
+ if (!this.enabled) {
169
+ return [2 /*return*/];
170
+ }
171
+ if (((_a = this.options.autoRecover) === null || _a === void 0 ? void 0 : _a.enabled) !== true) {
172
+ return [2 /*return*/];
173
+ }
174
+ if (checking) {
175
+ return [2 /*return*/];
176
+ }
177
+ checking = true;
178
+ if (!(((_b = this.ws) === null || _b === void 0 ? void 0 : _b.readyState) !== OPEN && ((_c = this.ws) === null || _c === void 0 ? void 0 : _c.readyState) !== CONNECTING)) return [3 /*break*/, 5];
179
+ clearInterval(this.intervalHandle);
180
+ _d.label = 1;
181
+ case 1:
182
+ _d.trys.push([1, 3, , 4]);
183
+ return [4 /*yield*/, this.recover()];
184
+ case 2:
185
+ _d.sent();
186
+ retriesAttempted = 0;
187
+ if (this.options.debugMode) {
188
+ console.debug("Auto recover done, recoveryState: ".concat(this.connectionDetails.recoveryState));
189
+ }
190
+ this.eventEmitter.emit(this.connectionDetails.recoveryState === "Successful"
191
+ ? Events.autoRecoverSuccess
192
+ : Events.autoRecoverFailed, this.ws);
193
+ return [3 /*break*/, 4];
194
+ case 3:
195
+ e_2 = _d.sent();
196
+ if (e_2 instanceof RestException) {
197
+ throw e_2; // such as InsufficientPermissions
198
+ }
199
+ retriesAttempted += 1;
200
+ if (this.options.debugMode) {
201
+ console.debug("Auto recover error:", e_2);
202
+ }
203
+ this.eventEmitter.emit(Events.autoRecoverError, e_2);
204
+ return [3 /*break*/, 4];
205
+ case 4:
206
+ this.intervalHandle = setInterval(check, this.options.autoRecover.checkInterval(retriesAttempted));
207
+ _d.label = 5;
208
+ case 5:
209
+ checking = false;
210
+ return [2 /*return*/];
211
+ }
212
+ });
213
+ }); };
214
+ this.intervalHandle = setInterval(check, this.options.autoRecover.checkInterval(retriesAttempted));
215
+ // browser only code start
216
+ if (typeof globalThis.window !== "undefined" &&
217
+ globalThis.window.addEventListener) {
218
+ globalThis.window.addEventListener("offline", function () {
219
+ var _a;
220
+ if (_this.pingServerHandle) {
221
+ clearTimeout(_this.pingServerHandle);
222
+ }
223
+ (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.close();
224
+ });
225
+ globalThis.window.addEventListener("online", function () {
226
+ check();
227
+ });
228
+ }
229
+ return [2 /*return*/];
230
+ }
231
+ });
232
+ });
233
+ };
234
+ WebSocketExtension.prototype.recover = function () {
235
+ return __awaiter(this, void 0, void 0, function () {
236
+ return __generator(this, function (_a) {
237
+ switch (_a.label) {
238
+ case 0:
239
+ if (this._recoverPromise) {
240
+ return [2 /*return*/, this._recoverPromise];
241
+ }
242
+ this._recoverPromise = this._recover();
243
+ _a.label = 1;
244
+ case 1:
245
+ _a.trys.push([1, , 3, 4]);
246
+ return [4 /*yield*/, this._recoverPromise];
247
+ case 2:
248
+ _a.sent();
249
+ return [3 /*break*/, 4];
250
+ case 3:
251
+ this._recoverPromise = undefined;
252
+ return [7 /*endfinally*/];
253
+ case 4: return [2 /*return*/, undefined];
254
+ }
255
+ });
256
+ });
257
+ };
258
+ WebSocketExtension.prototype._recover = function () {
259
+ return __awaiter(this, void 0, void 0, function () {
260
+ var _a, _b;
261
+ return __generator(this, function (_c) {
262
+ switch (_c.label) {
263
+ case 0:
264
+ if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === OPEN || ((_b = this.ws) === null || _b === void 0 ? void 0 : _b.readyState) === CONNECTING) {
265
+ return [2 /*return*/];
266
+ }
267
+ if (!(!this.wsc || !this.wsc.token)) return [3 /*break*/, 2];
268
+ return [4 /*yield*/, this.connect(false)];
269
+ case 1:
270
+ _c.sent(); // connect to WSG but do not recover
271
+ return [2 /*return*/];
272
+ case 2:
273
+ if (this.recoverTimestamp === undefined) {
274
+ this.recoverTimestamp = Date.now();
275
+ }
276
+ if (!(this.connectionDetails !== undefined &&
277
+ Date.now() - this.recoverTimestamp >
278
+ this.connectionDetails.recoveryTimeout * 1000)) return [3 /*break*/, 4];
279
+ if (this.options.debugMode) {
280
+ console.debug("connect to WSG but do not recover");
281
+ }
282
+ return [4 /*yield*/, this.connect(false)];
283
+ case 3:
284
+ _c.sent(); // connect to WSG but do not recover
285
+ return [3 /*break*/, 6];
286
+ case 4:
287
+ if (this.options.debugMode) {
288
+ console.debug("connect to WSG and recover");
289
+ }
290
+ return [4 /*yield*/, this.connect(true)];
291
+ case 5:
292
+ _c.sent(); // connect to WSG and recover
293
+ _c.label = 6;
294
+ case 6:
295
+ this.recoverTimestamp = undefined;
296
+ this.enable();
297
+ return [2 /*return*/];
298
+ }
299
+ });
300
+ });
301
+ };
302
+ WebSocketExtension.prototype.pingServer = function () {
303
+ return __awaiter(this, void 0, void 0, function () {
304
+ var e_3;
305
+ var _a, _b;
306
+ return __generator(this, function (_c) {
307
+ switch (_c.label) {
308
+ case 0:
309
+ if (((_a = this.options.autoRecover) === null || _a === void 0 ? void 0 : _a.enabled) !== true) {
310
+ return [2 /*return*/];
311
+ }
312
+ if (((_b = this.ws) === null || _b === void 0 ? void 0 : _b.readyState) !== OPEN) {
313
+ return [2 /*return*/];
314
+ }
315
+ _c.label = 1;
316
+ case 1:
317
+ _c.trys.push([1, 3, , 4]);
318
+ return [4 /*yield*/, this.ws.send(JSON.stringify([
319
+ {
320
+ type: "Heartbeat",
321
+ messageId: uuid(),
322
+ },
323
+ ]))];
324
+ case 2:
325
+ _c.sent();
326
+ return [3 /*break*/, 4];
327
+ case 3:
328
+ e_3 = _c.sent();
329
+ this.ws.close(); // Explicitly mark WS as closed
330
+ return [3 /*break*/, 4];
331
+ case 4: return [2 /*return*/];
332
+ }
333
+ });
334
+ });
335
+ };
336
+ WebSocketExtension.prototype.connect = function (recoverSession) {
337
+ return __awaiter(this, void 0, void 0, function () {
338
+ return __generator(this, function (_a) {
339
+ switch (_a.label) {
340
+ case 0:
341
+ if (this._connectPromise) {
342
+ return [2 /*return*/, this._connectPromise];
343
+ }
344
+ this._connectPromise = this._connect(recoverSession);
345
+ _a.label = 1;
346
+ case 1:
347
+ _a.trys.push([1, , 3, 4]);
348
+ return [4 /*yield*/, this._connectPromise];
349
+ case 2:
350
+ _a.sent();
351
+ return [3 /*break*/, 4];
352
+ case 3:
353
+ this._connectPromise = undefined;
354
+ return [7 /*endfinally*/];
355
+ case 4: return [2 /*return*/, undefined];
356
+ }
357
+ });
358
+ });
359
+ };
360
+ WebSocketExtension.prototype._connect = function () {
361
+ return __awaiter(this, arguments, void 0, function (recoverSession) {
362
+ var r, wsUri, send, _a, meta, body, event;
363
+ var _this = this;
364
+ var _b;
365
+ if (recoverSession === void 0) { recoverSession = false; }
366
+ return __generator(this, function (_c) {
367
+ switch (_c.label) {
368
+ case 0:
369
+ if (!(!this.wsToken || Date.now() > this.wsTokenExpiresAt)) return [3 /*break*/, 2];
370
+ return [4 /*yield*/, this.rc.post("/restapi/oauth/wstoken")];
371
+ case 1:
372
+ r = _c.sent();
373
+ this.wsToken = r.data;
374
+ // `expires_in` default value is 600 seconds. That's why we `* 0.8`
375
+ this.wsTokenExpiresAt = Date.now() + this.wsToken.expires_in * 0.8 * 1000;
376
+ _c.label = 2;
377
+ case 2:
378
+ wsUri = "".concat(this.wsToken.uri, "?access_token=").concat(this.wsToken.ws_access_token);
379
+ if (recoverSession && this.wsc) {
380
+ wsUri += "&wsc=".concat(this.wsc.token);
381
+ }
382
+ this.ws = new WS(wsUri);
383
+ this.eventEmitter.emit(Events.newWebSocketObject, this.ws);
384
+ send = this.ws.send.bind(this.ws);
385
+ this.ws.send = function (s) { return __awaiter(_this, void 0, void 0, function () {
386
+ var _this = this;
387
+ return __generator(this, function (_a) {
388
+ switch (_a.label) {
389
+ case 0:
390
+ if (!(this.ws.readyState === CONNECTING)) return [3 /*break*/, 2];
391
+ return [4 /*yield*/, waitFor({
392
+ interval: 100,
393
+ condition: function () { return _this.ws.readyState !== CONNECTING; },
394
+ })];
395
+ case 1:
396
+ _a.sent();
397
+ _a.label = 2;
398
+ case 2: return [4 /*yield*/, send(s)];
399
+ case 3:
400
+ _a.sent();
401
+ return [2 /*return*/];
402
+ }
403
+ });
404
+ }); };
405
+ if ((_b = this.options.autoRecover) === null || _b === void 0 ? void 0 : _b.enabled) {
406
+ this.ws.addEventListener("message", function () {
407
+ if (_this.pingServerHandle) {
408
+ clearTimeout(_this.pingServerHandle);
409
+ }
410
+ _this.pingServerHandle = setTimeout(function () { return _this.pingServer(); }, _this.options.autoRecover.pingServerInterval);
411
+ });
412
+ }
413
+ // debug mode to print all WebSocket traffic
414
+ if (this.options.debugMode) {
415
+ Utils.debugWebSocket(this.ws);
416
+ }
417
+ // listen for new wsc data
418
+ this.ws.addEventListener("message", function (mEvent) {
419
+ var event = mEvent;
420
+ var _a = Utils.splitWsgData(event.data), meta = _a[0], body = _a[1];
421
+ if (meta.wsc &&
422
+ (!_this.wsc ||
423
+ (meta.type === "ConnectionDetails" && body.recoveryState) ||
424
+ _this.wsc.sequence < meta.wsc.sequence)) {
425
+ _this.wsc = meta.wsc;
426
+ _this.eventEmitter.emit(Events.newWsc, _this.wsc);
427
+ }
428
+ });
429
+ return [4 /*yield*/, Utils.waitForWebSocketMessage(this.ws, function (meta) { return meta.type === "ConnectionDetails" || meta.type === "Error"; })];
430
+ case 3:
431
+ _a = _c.sent(), meta = _a[0], body = _a[1], event = _a[2];
432
+ if (meta.type === "Error") {
433
+ throw new ConnectionException(event);
434
+ }
435
+ this.connectionDetails = body;
436
+ // fired when ws connection is ready for creating subscription
437
+ this.eventEmitter.emit(Events.connectionReady, this.ws);
438
+ if (!(this.subscription && this.subscription.enabled)) return [3 /*break*/, 5];
439
+ // because we have a new ws object
440
+ this.subscription.setupWsEventListener();
441
+ if (!(!recoverSession || this.connectionDetails.recoveryState === "Failed")) return [3 /*break*/, 5];
442
+ // create new subscription if don't recover existing one
443
+ return [4 /*yield*/, this.subscription.subscribe()];
444
+ case 4:
445
+ // create new subscription if don't recover existing one
446
+ _c.sent();
447
+ _c.label = 5;
448
+ case 5: return [2 /*return*/];
449
+ }
450
+ });
451
+ });
452
+ };
453
+ // keepInterval means we do not clear the interval
454
+ WebSocketExtension.prototype.revoke = function () {
455
+ return __awaiter(this, arguments, void 0, function (keepInterval) {
456
+ var _a, _b;
457
+ if (keepInterval === void 0) { keepInterval = false; }
458
+ return __generator(this, function (_c) {
459
+ switch (_c.label) {
460
+ case 0: return [4 /*yield*/, ((_a = this.subscription) === null || _a === void 0 ? void 0 : _a.revoke())];
461
+ case 1:
462
+ _c.sent();
463
+ this.subscription = undefined;
464
+ if (!keepInterval && this.intervalHandle) {
465
+ clearInterval(this.intervalHandle);
466
+ }
467
+ if (this.pingServerHandle) {
468
+ clearTimeout(this.pingServerHandle);
469
+ }
470
+ (_b = this.ws) === null || _b === void 0 ? void 0 : _b.close();
471
+ this.wsc = undefined;
472
+ this.wsToken = undefined;
473
+ this.wsTokenExpiresAt = 0;
474
+ this.disable();
475
+ return [2 /*return*/];
476
+ }
477
+ });
478
+ });
479
+ };
480
+ WebSocketExtension.prototype.subscribe = function (eventFilters_1, callback_1) {
481
+ return __awaiter(this, arguments, void 0, function (eventFilters, callback, cache) {
482
+ var subscription;
483
+ if (cache === void 0) { cache = undefined; }
484
+ return __generator(this, function (_a) {
485
+ switch (_a.label) {
486
+ case 0:
487
+ subscription = new Subscription(this, eventFilters, callback);
488
+ if (!(cache === undefined || cache === null)) return [3 /*break*/, 2];
489
+ return [4 /*yield*/, subscription.subscribe()];
490
+ case 1:
491
+ _a.sent();
492
+ return [3 /*break*/, 4];
493
+ case 2:
494
+ subscription.subscriptionInfo = cache;
495
+ return [4 /*yield*/, subscription.refresh()];
496
+ case 3:
497
+ _a.sent();
498
+ _a.label = 4;
499
+ case 4:
500
+ this.subscription = subscription;
501
+ return [2 /*return*/, subscription];
502
+ }
503
+ });
504
+ });
505
+ };
506
+ return WebSocketExtension;
507
+ }(SdkExtension));
508
+ export default WebSocketExtension;
509
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { RestMethod, RestRequestConfig, RestResponse } from "@rc-ex/core/lib/esm/types.js";
2
- import type { WebSocketExtensionInterface } from "./types.js";
1
+ import type { RestMethod, RestRequestConfig, RestResponse } from "@rc-ex/core/types";
2
+ import type { WebSocketExtensionInterface } from "./types";
3
3
  export declare function request<T>(this: WebSocketExtensionInterface, method: RestMethod, endpoint: string, content?: {}, queryParams?: {}, config?: RestRequestConfig): Promise<RestResponse<T>>;
@@ -0,0 +1,98 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import RestException from "@rc-ex/core/RestException";
49
+ import hyperid from "hyperid";
50
+ import { getReasonPhrase } from "http-status-codes";
51
+ import Utils from "./utils";
52
+ var version = "0.16";
53
+ var uuid = hyperid();
54
+ export function request(method, endpoint, content, queryParams, config) {
55
+ return __awaiter(this, void 0, void 0, function () {
56
+ var newConfig, messageId, requestBody, _a, meta, body, response;
57
+ var _b;
58
+ return __generator(this, function (_c) {
59
+ switch (_c.label) {
60
+ case 0:
61
+ newConfig = __assign({ method: method, baseURL: (_b = this.wsToken) === null || _b === void 0 ? void 0 : _b.uri, url: endpoint, data: content, params: queryParams }, config);
62
+ newConfig.headers = __assign(__assign({}, newConfig.headers), { "X-User-Agent": "".concat(this.rc.rest.appName, "/").concat(this.rc.rest.appVersion, " ringcentral-extensible/ws/").concat(version) });
63
+ messageId = uuid();
64
+ requestBody = [
65
+ {
66
+ type: "ClientRequest",
67
+ messageId: messageId,
68
+ method: newConfig.method,
69
+ path: newConfig.url,
70
+ headers: newConfig.headers,
71
+ query: newConfig.params,
72
+ },
73
+ ];
74
+ if (newConfig.data) {
75
+ requestBody.push(newConfig.data);
76
+ }
77
+ return [4 /*yield*/, this.ws.send(JSON.stringify(requestBody))];
78
+ case 1:
79
+ _c.sent();
80
+ return [4 /*yield*/, Utils.waitForWebSocketMessage(this.ws, function (_meta) { return _meta.messageId === messageId; })];
81
+ case 2:
82
+ _a = _c.sent(), meta = _a[0], body = _a[1];
83
+ response = {
84
+ data: body,
85
+ status: meta.status,
86
+ statusText: getReasonPhrase(meta.status),
87
+ headers: meta.headers,
88
+ config: newConfig,
89
+ };
90
+ if (meta.type === "ClientRequest" && meta.status >= 200 && meta.status < 300) {
91
+ return [2 /*return*/, response];
92
+ }
93
+ throw new RestException(response);
94
+ }
95
+ });
96
+ });
97
+ }
98
+ //# sourceMappingURL=rest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/rest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,MAAM,SAAS,CAAC;AAG5B,IAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AAEvB,MAAM,UAAgB,OAAO,CAE3B,MAAkB,EAClB,QAAgB,EAChB,OAAY,EACZ,WAAgB,EAChB,MAA0B;;;;;;;oBAEpB,SAAS,cACb,MAAM,QAAA,EACN,OAAO,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,GAAG,EAC1B,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,WAAW,IAChB,MAAM,CACV,CAAC;oBACF,SAAS,CAAC,OAAO,GAAG,sBACf,SAAS,CAAC,OAAO,KACpB,cAAc,EAAE,UAAG,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,OAAO,cACtC,IAAI,CAAC,EAAE,CAAC,IAAK,CAAC,UAAU,wCACI,OAAO,CAAE,GACjC,CAAC;oBACH,SAAS,GAAG,IAAI,EAAE,CAAC;oBACnB,WAAW,GAAG;wBAClB;4BACE,IAAI,EAAE,eAAe;4BACrB,SAAS,WAAA;4BACT,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,IAAI,EAAE,SAAS,CAAC,GAAG;4BACnB,OAAO,EAAE,SAAS,CAAC,OAAO;4BAC1B,KAAK,EAAE,SAAS,CAAC,MAAM;yBACxB;qBACF,CAAC;oBACF,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;wBACnB,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACnC,CAAC;oBACD,qBAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAA;;oBAA/C,SAA+C,CAAC;oBAC3B,qBAAM,KAAK,CAAC,uBAAuB,CACtD,IAAI,CAAC,EAAE,EACP,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,SAAS,KAAK,SAAS,EAA7B,CAA6B,CACzC,EAAA;;oBAHK,KAAe,SAGpB,EAHM,IAAI,QAAA,EAAE,IAAI,QAAA;oBAIX,QAAQ,GAAiB;wBAC7B,IAAI,EAAE,IAAS;wBACf,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;wBACxC,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,MAAM,EAAE,SAAgB;qBACzB,CAAC;oBACF,IACE,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EACxE,CAAC;wBACD,sBAAO,QAAQ,EAAC;oBAClB,CAAC;oBACD,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;;;;CACnC"}
@@ -1,7 +1,7 @@
1
- import type CreateSubscriptionRequest from "@rc-ex/core/lib/esm/definitions/CreateSubscriptionRequest.js";
2
- import type SubscriptionInfo from "@rc-ex/core/lib/esm/definitions/SubscriptionInfo.js";
1
+ import type CreateSubscriptionRequest from "@rc-ex/core/definitions/CreateSubscriptionRequest";
2
+ import type SubscriptionInfo from "@rc-ex/core/definitions/SubscriptionInfo";
3
3
  import type { MessageEvent } from "ws";
4
- import type { WebSocketExtensionInterface } from "./types.js";
4
+ import type { WebSocketExtensionInterface } from "./types";
5
5
  declare class Subscription {
6
6
  subscriptionInfo?: SubscriptionInfo;
7
7
  wse: WebSocketExtensionInterface;