@rc-ex/ws 1.2.1 → 1.3.0

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 (56) hide show
  1. package/lib/esm/exceptions/ClosedException.d.ts +4 -0
  2. package/lib/esm/exceptions/ClosedException.js +7 -0
  3. package/lib/esm/exceptions/ClosedException.js.map +1 -0
  4. package/lib/esm/exceptions/ConnectionException.d.ts +7 -0
  5. package/lib/esm/exceptions/ConnectionException.js +13 -0
  6. package/lib/esm/exceptions/ConnectionException.js.map +1 -0
  7. package/lib/esm/exceptions/TimeoutException.d.ts +4 -0
  8. package/lib/esm/exceptions/TimeoutException.js +7 -0
  9. package/lib/esm/exceptions/TimeoutException.js.map +1 -0
  10. package/lib/esm/index.d.ts +44 -0
  11. package/lib/{index.js → esm/index.js} +62 -63
  12. package/lib/esm/index.js.map +1 -0
  13. package/lib/esm/rest.d.ts +3 -0
  14. package/lib/{rest.js → esm/rest.js} +10 -17
  15. package/lib/esm/rest.js.map +1 -0
  16. package/lib/esm/subscription.d.ts +20 -0
  17. package/lib/{subscription.js → esm/subscription.js} +9 -9
  18. package/lib/esm/subscription.js.map +1 -0
  19. package/lib/esm/types.d.ts +61 -0
  20. package/lib/esm/types.js +2 -0
  21. package/lib/esm/types.js.map +1 -0
  22. package/lib/esm/utils.d.ts +8 -0
  23. package/lib/{utils.js → esm/utils.js} +5 -10
  24. package/lib/esm/utils.js.map +1 -0
  25. package/lib/exceptions/ClosedException.cjs +26 -0
  26. package/lib/exceptions/ClosedException.js.map +1 -1
  27. package/lib/exceptions/ConnectionException.cjs +35 -0
  28. package/lib/exceptions/ConnectionException.d.ts +1 -1
  29. package/lib/exceptions/ConnectionException.js.map +1 -1
  30. package/lib/exceptions/TimeoutException.cjs +26 -0
  31. package/lib/exceptions/TimeoutException.js.map +1 -1
  32. package/lib/index.cjs +515 -0
  33. package/lib/index.d.ts +5 -5
  34. package/lib/index.js.map +1 -1
  35. package/lib/rest.cjs +104 -0
  36. package/lib/rest.d.ts +2 -2
  37. package/lib/rest.js.map +1 -1
  38. package/lib/subscription.cjs +178 -0
  39. package/lib/subscription.d.ts +3 -3
  40. package/lib/subscription.js.map +1 -1
  41. package/lib/types.d.ts +1 -1
  42. package/lib/utils.cjs +116 -0
  43. package/lib/utils.d.ts +1 -1
  44. package/lib/utils.js.map +1 -1
  45. package/package.json +10 -5
  46. package/src/exceptions/ConnectionException.ts +2 -2
  47. package/src/index.ts +15 -12
  48. package/src/rest.ts +4 -4
  49. package/src/subscription.ts +9 -5
  50. package/src/types.ts +1 -1
  51. package/src/utils.ts +3 -3
  52. package/tsconfig.json +0 -3
  53. package/lib/exceptions/ClosedException.js +0 -9
  54. package/lib/exceptions/ConnectionException.js +0 -16
  55. package/lib/exceptions/TimeoutException.js +0 -9
  56. /package/lib/{types.js → types.cjs} +0 -0
package/lib/index.cjs ADDED
@@ -0,0 +1,515 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ 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);
28
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
+ 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;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.Events = void 0;
58
+ var SdkExtension_js_1 = __importDefault(require("@rc-ex/core/lib/esm/SdkExtension.js"));
59
+ var isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
60
+ var hyperid_1 = __importDefault(require("hyperid"));
61
+ var events_1 = require("events");
62
+ var wait_for_async_1 = __importDefault(require("wait-for-async"));
63
+ var RestException_js_1 = __importDefault(require("@rc-ex/core/lib/esm/RestException.js"));
64
+ var rest_js_1 = require("./rest.js");
65
+ var subscription_js_1 = __importDefault(require("./subscription.js"));
66
+ var ConnectionException_js_1 = __importDefault(require("./exceptions/ConnectionException.js"));
67
+ var utils_js_1 = __importDefault(require("./utils.js"));
68
+ var CONNECTING = 0;
69
+ var OPEN = 1;
70
+ var uuid = (0, hyperid_1.default)();
71
+ var Events;
72
+ (function (Events) {
73
+ Events["autoRecoverSuccess"] = "autoRecoverSuccess";
74
+ Events["autoRecoverFailed"] = "autoRecoverFailed";
75
+ Events["autoRecoverError"] = "autoRecoverError";
76
+ Events["newWebSocketObject"] = "newWebSocketObject";
77
+ Events["newWsc"] = "newWsc";
78
+ Events["connectionReady"] = "connectionReady";
79
+ })(Events || (exports.Events = Events = {}));
80
+ var WebSocketExtension = /** @class */ (function (_super) {
81
+ __extends(WebSocketExtension, _super);
82
+ function WebSocketExtension(options) {
83
+ if (options === void 0) { options = {}; }
84
+ var _a, _b, _c, _d, _e;
85
+ var _f, _g, _h, _j, _k;
86
+ var _this = _super.call(this) || this;
87
+ _this.eventEmitter = new events_1.EventEmitter();
88
+ _this.wsTokenExpiresAt = 0;
89
+ _this.request = rest_js_1.request; // request method was moved to another file to keep this file short
90
+ _this.options = options;
91
+ (_a = (_f = _this.options).restOverWebSocket) !== null && _a !== void 0 ? _a : (_f.restOverWebSocket = false);
92
+ (_b = (_g = _this.options).debugMode) !== null && _b !== void 0 ? _b : (_g.debugMode = false);
93
+ (_c = (_h = _this.options).autoRecover) !== null && _c !== void 0 ? _c : (_h.autoRecover = {
94
+ enabled: true,
95
+ });
96
+ (_d = (_j = _this.options.autoRecover).checkInterval) !== null && _d !== void 0 ? _d : (_j.checkInterval = function (retriesAttempted) {
97
+ var interval = 2000 + 2000 * retriesAttempted;
98
+ return Math.min(8000, interval);
99
+ });
100
+ (_e = (_k = _this.options.autoRecover).pingServerInterval) !== null && _e !== void 0 ? _e : (_k.pingServerInterval = 60000);
101
+ return _this;
102
+ }
103
+ WebSocketExtension.prototype.disable = function () {
104
+ _super.prototype.disable.call(this);
105
+ if (this.subscription) {
106
+ this.subscription.enabled = false;
107
+ }
108
+ };
109
+ WebSocketExtension.prototype.install = function (rc) {
110
+ return __awaiter(this, void 0, void 0, function () {
111
+ var request_1, connectMethod, e_1, retriesAttempted, checking, check;
112
+ var _this = this;
113
+ return __generator(this, function (_a) {
114
+ switch (_a.label) {
115
+ case 0:
116
+ this.rc = rc;
117
+ if (this.options.restOverWebSocket) {
118
+ request_1 = rc.request.bind(rc);
119
+ rc.request = function (method, endpoint, content, queryParams, config) { return __awaiter(_this, void 0, void 0, function () {
120
+ var _a, _b, _c;
121
+ return __generator(this, function (_d) {
122
+ if (!this.enabled || !this.options.restOverWebSocket) {
123
+ return [2 /*return*/, request_1(method, endpoint, content, queryParams, config)];
124
+ }
125
+ if (
126
+ // the following cannot be done with WebSocket
127
+ ((_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")) ||
128
+ (config === null || config === void 0 ? void 0 : config.responseType) === "arraybuffer" ||
129
+ endpoint.startsWith("/restapi/oauth/") // token, revoke, wstoken
130
+ ) {
131
+ return [2 /*return*/, request_1(method, endpoint, content, queryParams, config)];
132
+ }
133
+ return [2 /*return*/, this.request(method, endpoint, content, queryParams, config)];
134
+ });
135
+ }); };
136
+ }
137
+ connectMethod = this.connect.bind(this);
138
+ if (this.options.wscToken) {
139
+ this.wsc = {
140
+ token: this.options.wscToken,
141
+ sequence: 0,
142
+ };
143
+ connectMethod = this.recover.bind(this);
144
+ }
145
+ if (!!this.options.autoRecover.enabled) return [3 /*break*/, 2];
146
+ return [4 /*yield*/, connectMethod()];
147
+ case 1:
148
+ _a.sent();
149
+ return [2 /*return*/];
150
+ case 2:
151
+ _a.trys.push([2, 4, , 5]);
152
+ return [4 /*yield*/, connectMethod()];
153
+ case 3:
154
+ _a.sent();
155
+ return [3 /*break*/, 5];
156
+ case 4:
157
+ e_1 = _a.sent();
158
+ if (e_1 instanceof RestException_js_1.default) {
159
+ throw e_1; // such as InsufficientPermissions
160
+ }
161
+ if (this.options.debugMode) {
162
+ console.debug("Initial connect failed:", e_1);
163
+ }
164
+ return [3 /*break*/, 5];
165
+ case 5:
166
+ retriesAttempted = 0;
167
+ checking = false;
168
+ check = function () { return __awaiter(_this, void 0, void 0, function () {
169
+ var e_2;
170
+ var _a, _b, _c;
171
+ return __generator(this, function (_d) {
172
+ switch (_d.label) {
173
+ case 0:
174
+ if (!this.enabled) {
175
+ return [2 /*return*/];
176
+ }
177
+ if (((_a = this.options.autoRecover) === null || _a === void 0 ? void 0 : _a.enabled) !== true) {
178
+ return [2 /*return*/];
179
+ }
180
+ if (checking) {
181
+ return [2 /*return*/];
182
+ }
183
+ checking = true;
184
+ 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];
185
+ clearInterval(this.intervalHandle);
186
+ _d.label = 1;
187
+ case 1:
188
+ _d.trys.push([1, 3, , 4]);
189
+ return [4 /*yield*/, this.recover()];
190
+ case 2:
191
+ _d.sent();
192
+ retriesAttempted = 0;
193
+ if (this.options.debugMode) {
194
+ console.debug("Auto recover done, recoveryState: ".concat(this.connectionDetails.recoveryState));
195
+ }
196
+ this.eventEmitter.emit(this.connectionDetails.recoveryState === "Successful"
197
+ ? Events.autoRecoverSuccess
198
+ : Events.autoRecoverFailed, this.ws);
199
+ return [3 /*break*/, 4];
200
+ case 3:
201
+ e_2 = _d.sent();
202
+ if (e_2 instanceof RestException_js_1.default) {
203
+ throw e_2; // such as InsufficientPermissions
204
+ }
205
+ retriesAttempted += 1;
206
+ if (this.options.debugMode) {
207
+ console.debug("Auto recover error:", e_2);
208
+ }
209
+ this.eventEmitter.emit(Events.autoRecoverError, e_2);
210
+ return [3 /*break*/, 4];
211
+ case 4:
212
+ this.intervalHandle = setInterval(check, this.options.autoRecover.checkInterval(retriesAttempted));
213
+ _d.label = 5;
214
+ case 5:
215
+ checking = false;
216
+ return [2 /*return*/];
217
+ }
218
+ });
219
+ }); };
220
+ this.intervalHandle = setInterval(check, this.options.autoRecover.checkInterval(retriesAttempted));
221
+ // browser only code start
222
+ if (typeof globalThis.window !== "undefined" &&
223
+ globalThis.window.addEventListener) {
224
+ globalThis.window.addEventListener("offline", function () {
225
+ var _a;
226
+ if (_this.pingServerHandle) {
227
+ clearTimeout(_this.pingServerHandle);
228
+ }
229
+ (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.close();
230
+ });
231
+ globalThis.window.addEventListener("online", function () {
232
+ check();
233
+ });
234
+ }
235
+ return [2 /*return*/];
236
+ }
237
+ });
238
+ });
239
+ };
240
+ WebSocketExtension.prototype.recover = function () {
241
+ return __awaiter(this, void 0, void 0, function () {
242
+ return __generator(this, function (_a) {
243
+ switch (_a.label) {
244
+ case 0:
245
+ if (this._recoverPromise) {
246
+ return [2 /*return*/, this._recoverPromise];
247
+ }
248
+ this._recoverPromise = this._recover();
249
+ _a.label = 1;
250
+ case 1:
251
+ _a.trys.push([1, , 3, 4]);
252
+ return [4 /*yield*/, this._recoverPromise];
253
+ case 2:
254
+ _a.sent();
255
+ return [3 /*break*/, 4];
256
+ case 3:
257
+ this._recoverPromise = undefined;
258
+ return [7 /*endfinally*/];
259
+ case 4: return [2 /*return*/, undefined];
260
+ }
261
+ });
262
+ });
263
+ };
264
+ WebSocketExtension.prototype._recover = function () {
265
+ return __awaiter(this, void 0, void 0, function () {
266
+ var _a, _b;
267
+ return __generator(this, function (_c) {
268
+ switch (_c.label) {
269
+ case 0:
270
+ 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) {
271
+ return [2 /*return*/];
272
+ }
273
+ if (!(!this.wsc || !this.wsc.token)) return [3 /*break*/, 2];
274
+ return [4 /*yield*/, this.connect(false)];
275
+ case 1:
276
+ _c.sent(); // connect to WSG but do not recover
277
+ return [2 /*return*/];
278
+ case 2:
279
+ if (this.recoverTimestamp === undefined) {
280
+ this.recoverTimestamp = Date.now();
281
+ }
282
+ if (!(this.connectionDetails !== undefined &&
283
+ Date.now() - this.recoverTimestamp >
284
+ this.connectionDetails.recoveryTimeout * 1000)) return [3 /*break*/, 4];
285
+ if (this.options.debugMode) {
286
+ console.debug("connect to WSG but do not recover");
287
+ }
288
+ return [4 /*yield*/, this.connect(false)];
289
+ case 3:
290
+ _c.sent(); // connect to WSG but do not recover
291
+ return [3 /*break*/, 6];
292
+ case 4:
293
+ if (this.options.debugMode) {
294
+ console.debug("connect to WSG and recover");
295
+ }
296
+ return [4 /*yield*/, this.connect(true)];
297
+ case 5:
298
+ _c.sent(); // connect to WSG and recover
299
+ _c.label = 6;
300
+ case 6:
301
+ this.recoverTimestamp = undefined;
302
+ this.enable();
303
+ return [2 /*return*/];
304
+ }
305
+ });
306
+ });
307
+ };
308
+ WebSocketExtension.prototype.pingServer = function () {
309
+ return __awaiter(this, void 0, void 0, function () {
310
+ var e_3;
311
+ var _a, _b;
312
+ return __generator(this, function (_c) {
313
+ switch (_c.label) {
314
+ case 0:
315
+ if (((_a = this.options.autoRecover) === null || _a === void 0 ? void 0 : _a.enabled) !== true) {
316
+ return [2 /*return*/];
317
+ }
318
+ if (((_b = this.ws) === null || _b === void 0 ? void 0 : _b.readyState) !== OPEN) {
319
+ return [2 /*return*/];
320
+ }
321
+ _c.label = 1;
322
+ case 1:
323
+ _c.trys.push([1, 3, , 4]);
324
+ return [4 /*yield*/, this.ws.send(JSON.stringify([
325
+ {
326
+ type: "Heartbeat",
327
+ messageId: uuid(),
328
+ },
329
+ ]))];
330
+ case 2:
331
+ _c.sent();
332
+ return [3 /*break*/, 4];
333
+ case 3:
334
+ e_3 = _c.sent();
335
+ this.ws.close(); // Explicitly mark WS as closed
336
+ return [3 /*break*/, 4];
337
+ case 4: return [2 /*return*/];
338
+ }
339
+ });
340
+ });
341
+ };
342
+ WebSocketExtension.prototype.connect = function (recoverSession) {
343
+ return __awaiter(this, void 0, void 0, function () {
344
+ return __generator(this, function (_a) {
345
+ switch (_a.label) {
346
+ case 0:
347
+ if (this._connectPromise) {
348
+ return [2 /*return*/, this._connectPromise];
349
+ }
350
+ this._connectPromise = this._connect(recoverSession);
351
+ _a.label = 1;
352
+ case 1:
353
+ _a.trys.push([1, , 3, 4]);
354
+ return [4 /*yield*/, this._connectPromise];
355
+ case 2:
356
+ _a.sent();
357
+ return [3 /*break*/, 4];
358
+ case 3:
359
+ this._connectPromise = undefined;
360
+ return [7 /*endfinally*/];
361
+ case 4: return [2 /*return*/, undefined];
362
+ }
363
+ });
364
+ });
365
+ };
366
+ WebSocketExtension.prototype._connect = function () {
367
+ return __awaiter(this, arguments, void 0, function (recoverSession) {
368
+ var r, wsUri, send, _a, meta, body, event;
369
+ var _this = this;
370
+ var _b;
371
+ if (recoverSession === void 0) { recoverSession = false; }
372
+ return __generator(this, function (_c) {
373
+ switch (_c.label) {
374
+ case 0:
375
+ if (!(!this.wsToken || Date.now() > this.wsTokenExpiresAt)) return [3 /*break*/, 2];
376
+ return [4 /*yield*/, this.rc.post("/restapi/oauth/wstoken")];
377
+ case 1:
378
+ r = _c.sent();
379
+ this.wsToken = r.data;
380
+ // `expires_in` default value is 600 seconds. That's why we `* 0.8`
381
+ this.wsTokenExpiresAt = Date.now() + this.wsToken.expires_in * 0.8 * 1000;
382
+ _c.label = 2;
383
+ case 2:
384
+ wsUri = "".concat(this.wsToken.uri, "?access_token=").concat(this.wsToken.ws_access_token);
385
+ if (recoverSession && this.wsc) {
386
+ wsUri += "&wsc=".concat(this.wsc.token);
387
+ }
388
+ this.ws = new isomorphic_ws_1.default(wsUri);
389
+ this.eventEmitter.emit(Events.newWebSocketObject, this.ws);
390
+ send = this.ws.send.bind(this.ws);
391
+ this.ws.send = function (s) { return __awaiter(_this, void 0, void 0, function () {
392
+ var _this = this;
393
+ return __generator(this, function (_a) {
394
+ switch (_a.label) {
395
+ case 0:
396
+ if (!(this.ws.readyState === CONNECTING)) return [3 /*break*/, 2];
397
+ return [4 /*yield*/, (0, wait_for_async_1.default)({
398
+ interval: 100,
399
+ condition: function () { return _this.ws.readyState !== CONNECTING; },
400
+ })];
401
+ case 1:
402
+ _a.sent();
403
+ _a.label = 2;
404
+ case 2: return [4 /*yield*/, send(s)];
405
+ case 3:
406
+ _a.sent();
407
+ return [2 /*return*/];
408
+ }
409
+ });
410
+ }); };
411
+ if ((_b = this.options.autoRecover) === null || _b === void 0 ? void 0 : _b.enabled) {
412
+ this.ws.addEventListener("message", function () {
413
+ if (_this.pingServerHandle) {
414
+ clearTimeout(_this.pingServerHandle);
415
+ }
416
+ _this.pingServerHandle = setTimeout(function () { return _this.pingServer(); }, _this.options.autoRecover.pingServerInterval);
417
+ });
418
+ }
419
+ // debug mode to print all WebSocket traffic
420
+ if (this.options.debugMode) {
421
+ utils_js_1.default.debugWebSocket(this.ws);
422
+ }
423
+ // listen for new wsc data
424
+ this.ws.addEventListener("message", function (mEvent) {
425
+ var event = mEvent;
426
+ var _a = utils_js_1.default.splitWsgData(event.data), meta = _a[0], body = _a[1];
427
+ if (meta.wsc &&
428
+ (!_this.wsc ||
429
+ (meta.type === "ConnectionDetails" && body.recoveryState) ||
430
+ _this.wsc.sequence < meta.wsc.sequence)) {
431
+ _this.wsc = meta.wsc;
432
+ _this.eventEmitter.emit(Events.newWsc, _this.wsc);
433
+ }
434
+ });
435
+ return [4 /*yield*/, utils_js_1.default.waitForWebSocketMessage(this.ws, function (meta) { return meta.type === "ConnectionDetails" || meta.type === "Error"; })];
436
+ case 3:
437
+ _a = _c.sent(), meta = _a[0], body = _a[1], event = _a[2];
438
+ if (meta.type === "Error") {
439
+ throw new ConnectionException_js_1.default(event);
440
+ }
441
+ this.connectionDetails = body;
442
+ // fired when ws connection is ready for creating subscription
443
+ this.eventEmitter.emit(Events.connectionReady, this.ws);
444
+ if (!(this.subscription && this.subscription.enabled)) return [3 /*break*/, 5];
445
+ // because we have a new ws object
446
+ this.subscription.setupWsEventListener();
447
+ if (!(!recoverSession || this.connectionDetails.recoveryState === "Failed")) return [3 /*break*/, 5];
448
+ // create new subscription if don't recover existing one
449
+ return [4 /*yield*/, this.subscription.subscribe()];
450
+ case 4:
451
+ // create new subscription if don't recover existing one
452
+ _c.sent();
453
+ _c.label = 5;
454
+ case 5: return [2 /*return*/];
455
+ }
456
+ });
457
+ });
458
+ };
459
+ // keepInterval means we do not clear the interval
460
+ WebSocketExtension.prototype.revoke = function () {
461
+ return __awaiter(this, arguments, void 0, function (keepInterval) {
462
+ var _a, _b;
463
+ if (keepInterval === void 0) { keepInterval = false; }
464
+ return __generator(this, function (_c) {
465
+ switch (_c.label) {
466
+ case 0: return [4 /*yield*/, ((_a = this.subscription) === null || _a === void 0 ? void 0 : _a.revoke())];
467
+ case 1:
468
+ _c.sent();
469
+ this.subscription = undefined;
470
+ if (!keepInterval && this.intervalHandle) {
471
+ clearInterval(this.intervalHandle);
472
+ }
473
+ if (this.pingServerHandle) {
474
+ clearTimeout(this.pingServerHandle);
475
+ }
476
+ (_b = this.ws) === null || _b === void 0 ? void 0 : _b.close();
477
+ this.wsc = undefined;
478
+ this.wsToken = undefined;
479
+ this.wsTokenExpiresAt = 0;
480
+ this.disable();
481
+ return [2 /*return*/];
482
+ }
483
+ });
484
+ });
485
+ };
486
+ WebSocketExtension.prototype.subscribe = function (eventFilters_1, callback_1) {
487
+ return __awaiter(this, arguments, void 0, function (eventFilters, callback, cache) {
488
+ var subscription;
489
+ if (cache === void 0) { cache = undefined; }
490
+ return __generator(this, function (_a) {
491
+ switch (_a.label) {
492
+ case 0:
493
+ subscription = new subscription_js_1.default(this, eventFilters, callback);
494
+ if (!(cache === undefined || cache === null)) return [3 /*break*/, 2];
495
+ return [4 /*yield*/, subscription.subscribe()];
496
+ case 1:
497
+ _a.sent();
498
+ return [3 /*break*/, 4];
499
+ case 2:
500
+ subscription.subscriptionInfo = cache;
501
+ return [4 /*yield*/, subscription.refresh()];
502
+ case 3:
503
+ _a.sent();
504
+ _a.label = 4;
505
+ case 4:
506
+ this.subscription = subscription;
507
+ return [2 /*return*/, subscription];
508
+ }
509
+ });
510
+ });
511
+ };
512
+ return WebSocketExtension;
513
+ }(SdkExtension_js_1.default));
514
+ exports.default = WebSocketExtension;
515
+ //# sourceMappingURL=index.js.map
package/lib/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import type RingCentral from "@rc-ex/core";
2
- import SdkExtension from "@rc-ex/core/lib/SdkExtension";
2
+ import SdkExtension from "@rc-ex/core/lib/esm/SdkExtension.js";
3
3
  import WS from "isomorphic-ws";
4
4
  import { EventEmitter } from "events";
5
- import type SubscriptionInfo from "@rc-ex/core/lib/definitions/SubscriptionInfo";
6
- import { request } from "./rest";
7
- import type { ConnectionDetails, WebSocketOptions, Wsc, WsToken } from "./types";
8
- import Subscription from "./subscription";
5
+ import type SubscriptionInfo from "@rc-ex/core/lib/esm/definitions/SubscriptionInfo.js";
6
+ import { request } from "./rest.js";
7
+ import type { ConnectionDetails, WebSocketOptions, Wsc, WsToken } from "./types.js";
8
+ import Subscription from "./subscription.js";
9
9
  export declare enum Events {
10
10
  autoRecoverSuccess = "autoRecoverSuccess",
11
11
  autoRecoverFailed = "autoRecoverFailed",
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wFAA+D;AAE/D,gEAA+B;AAC/B,oDAA8B;AAC9B,iCAAsC;AACtC,kEAAqC;AACrC,0FAAiE;AAGjE,qCAAoC;AASpC,sEAA6C;AAC7C,+FAAsE;AACtE,wDAA+B;AAE/B,IAAM,UAAU,GAAG,CAAC,CAAC;AACrB,IAAM,IAAI,GAAG,CAAC,CAAC;AAEf,IAAM,IAAI,GAAG,IAAA,iBAAO,GAAE,CAAC;AAEvB,IAAY,MAOX;AAPD,WAAY,MAAM;IAChB,mDAAyC,CAAA;IACzC,iDAAuC,CAAA;IACvC,+CAAqC,CAAA;IACrC,mDAAyC,CAAA;IACzC,2BAAiB,CAAA;IACjB,6CAAmC,CAAA;AACrC,CAAC,EAPW,MAAM,sBAAN,MAAM,QAOjB;AAED;IAAiC,sCAAY;IAgC3C,4BAAmB,OAA8B;QAA9B,wBAAA,EAAA,YAA8B;;;QAC/C,YAAA,MAAK,WAAE,SAAC;QAhCH,kBAAY,GAAG,IAAI,qBAAY,EAAE,CAAC;QAQlC,sBAAgB,GAAG,CAAC,CAAC;QAqBrB,aAAO,GAAG,iBAAO,CAAC,CAAC,mEAAmE;QAI3F,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,YAAA,KAAI,CAAC,OAAO,EAAC,iBAAiB,uCAAjB,iBAAiB,GAAK,KAAK,EAAC;QACzC,YAAA,KAAI,CAAC,OAAO,EAAC,SAAS,uCAAT,SAAS,GAAK,KAAK,EAAC;QACjC,YAAA,KAAI,CAAC,OAAO,EAAC,WAAW,uCAAX,WAAW,GAAK;YAC3B,OAAO,EAAE,IAAI;SACd,EAAC;QACF,YAAA,KAAI,CAAC,OAAO,CAAC,WAAW,EAAC,aAAa,uCAAb,aAAa,GAAK,UAAC,gBAAgB;YAC1D,IAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAAC;YAChD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC,EAAC;QACF,YAAA,KAAI,CAAC,OAAO,CAAC,WAAW,EAAC,kBAAkB,uCAAlB,kBAAkB,GAAK,KAAK,EAAC;;IACxD,CAAC;IAEM,oCAAO,GAAd;QACE,gBAAK,CAAC,OAAO,WAAE,CAAC;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QACpC,CAAC;IACH,CAAC;IAEY,oCAAO,GAApB,UAAqB,EAAe;;;;;;;wBAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;wBACb,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;4BAC7B,YAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BACpC,EAAE,CAAC,OAAO,GAAG,UACX,MAAkB,EAClB,QAAgB,EAChB,OAAY,EACZ,WAAgB,EAChB,MAA0B;;;oCAE1B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;wCACrD,sBAAO,SAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAC;oCACjE,CAAC;oCACD;oCACE,8CAA8C;oCAC9C,CAAA,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,0CAAE,cAAc,0CAAE,QAAQ,EAAE,0CAAE,QAAQ,CACnD,qBAAqB,CACtB;wCACD,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,MAAK,aAAa;wCACtC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,yBAAyB;sCAChE,CAAC;wCACD,sBAAO,SAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAC;oCACjE,CAAC;oCACD,sBAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAC;;iCACxE,CAAC;wBACJ,CAAC;wBAGG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;4BAC1B,IAAI,CAAC,GAAG,GAAG;gCACT,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gCAC5B,QAAQ,EAAE,CAAC;6BACZ,CAAC;4BACF,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1C,CAAC;6BAEG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,OAAO,EAAlC,wBAAkC;wBACpC,qBAAM,aAAa,EAAE,EAAA;;wBAArB,SAAqB,CAAC;wBACtB,sBAAO;;;wBAKP,qBAAM,aAAa,EAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;wBAEtB,IAAI,GAAC,YAAY,0BAAa,EAAE,CAAC;4BAC/B,MAAM,GAAC,CAAC,CAAC,kCAAkC;wBAC7C,CAAC;wBACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;4BAC3B,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAC,CAAC,CAAC;wBAC9C,CAAC;;;wBAEC,gBAAgB,GAAG,CAAC,CAAC;wBACrB,QAAQ,GAAG,KAAK,CAAC;wBACf,KAAK,GAAG;;;;;;wCACZ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;4CAClB,sBAAO;wCACT,CAAC;wCACD,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,0CAAE,OAAO,MAAK,IAAI,EAAE,CAAC;4CAC/C,sBAAO;wCACT,CAAC;wCACD,IAAI,QAAQ,EAAE,CAAC;4CACb,sBAAO;wCACT,CAAC;wCACD,QAAQ,GAAG,IAAI,CAAC;6CACZ,CAAA,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,IAAI,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,UAAU,CAAA,EAAlE,wBAAkE;wCACpE,aAAa,CAAC,IAAI,CAAC,cAAe,CAAC,CAAC;;;;wCAElC,qBAAM,IAAI,CAAC,OAAO,EAAE,EAAA;;wCAApB,SAAoB,CAAC;wCACrB,gBAAgB,GAAG,CAAC,CAAC;wCACrB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;4CAC3B,OAAO,CAAC,KAAK,CACX,4CAAqC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAE,CAC5E,CAAC;wCACJ,CAAC;wCACD,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,iBAAiB,CAAC,aAAa,KAAK,YAAY;4CACnD,CAAC,CAAC,MAAM,CAAC,kBAAkB;4CAC3B,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAC5B,IAAI,CAAC,EAAE,CACR,CAAC;;;;wCAEF,IAAI,GAAC,YAAY,0BAAa,EAAE,CAAC;4CAC/B,MAAM,GAAC,CAAC,CAAC,kCAAkC;wCAC7C,CAAC;wCACD,gBAAgB,IAAI,CAAC,CAAC;wCACtB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;4CAC3B,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAC,CAAC,CAAC;wCAC1C,CAAC;wCACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,GAAC,CAAC,CAAC;;;wCAErD,IAAI,CAAC,cAAc,GAAG,WAAW,CAC/B,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,aAAc,CAAC,gBAAgB,CAAC,CAC3D,CAAC;;;wCAEJ,QAAQ,GAAG,KAAK,CAAC;;;;6BAClB,CAAC;wBACF,IAAI,CAAC,cAAc,GAAG,WAAW,CAC/B,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,WAAY,CAAC,aAAc,CAAC,gBAAgB,CAAC,CAC3D,CAAC;wBAEF,0BAA0B;wBAC1B,IACE,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW;4BACxC,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAClC,CAAC;4BACD,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE;;gCAC5C,IAAI,KAAI,CAAC,gBAAgB,EAAE,CAAC;oCAC1B,YAAY,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC;gCACtC,CAAC;gCACD,MAAA,KAAI,CAAC,EAAE,0CAAE,KAAK,EAAE,CAAC;4BACnB,CAAC,CAAC,CAAC;4BACH,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gCAC3C,KAAK,EAAE,CAAC;4BACV,CAAC,CAAC,CAAC;wBACL,CAAC;;;;;KAEF;IAEY,oCAAO,GAApB;;;;;wBACE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;4BACzB,sBAAO,IAAI,CAAC,eAAe,EAAC;wBAC9B,CAAC;wBACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;;;;wBAErC,qBAAM,IAAI,CAAC,eAAe,EAAA;;wBAA1B,SAA0B,CAAC;;;wBAE3B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;;4BAEnC,sBAAO,SAAS,EAAC;;;;KAClB;IAEY,qCAAQ,GAArB;;;;;;wBACE,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,IAAI,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,UAAU,EAAE,CAAC;4BACvE,sBAAO;wBACT,CAAC;6BACG,CAAA,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA,EAA5B,wBAA4B;wBAC9B,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAA;;wBAAzB,SAAyB,CAAC,CAAC,oCAAoC;wBAC/D,sBAAO;;wBAET,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;4BACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACrC,CAAC;6BAEC,CAAA,IAAI,CAAC,iBAAiB,KAAK,SAAS;4BACpC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB;gCAChC,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAA,EAF/C,wBAE+C;wBAE/C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;4BAC3B,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;wBACrD,CAAC;wBACD,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAA;;wBAAzB,SAAyB,CAAC,CAAC,oCAAoC;;;wBAE/D,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;4BAC3B,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;wBAC9C,CAAC;wBACD,qBAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAA;;wBAAxB,SAAwB,CAAC,CAAC,6BAA6B;;;wBAEzD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;wBAClC,IAAI,CAAC,MAAM,EAAE,CAAC;;;;;KACf;IAEY,uCAAU,GAAvB;;;;;;;wBACE,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,0CAAE,OAAO,MAAK,IAAI,EAAE,CAAC;4BAC/C,sBAAO;wBACT,CAAC;wBACD,IAAI,CAAA,MAAA,IAAI,CAAC,EAAE,0CAAE,UAAU,MAAK,IAAI,EAAE,CAAC;4BACjC,sBAAO;wBACT,CAAC;;;;wBAEC,qBAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAChB,IAAI,CAAC,SAAS,CAAC;gCACb;oCACE,IAAI,EAAE,WAAW;oCACjB,SAAS,EAAE,IAAI,EAAE;iCAClB;6BACF,CAAC,CACH,EAAA;;wBAPD,SAOC,CAAC;;;;wBAEF,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,+BAA+B;;;;;;KAEnD;IAEY,oCAAO,GAApB,UAAqB,cAAwB;;;;;wBAC3C,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;4BACzB,sBAAO,IAAI,CAAC,eAAe,EAAC;wBAC9B,CAAC;wBACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;;;;wBAEnD,qBAAM,IAAI,CAAC,eAAe,EAAA;;wBAA1B,SAA0B,CAAC;;;wBAE3B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;;4BAEnC,sBAAO,SAAS,EAAC;;;;KAClB;IAEY,qCAAQ,GAArB;4DAAsB,cAAsB;;;;YAAtB,+BAAA,EAAA,sBAAsB;;;;6BACtC,CAAA,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA,EAAnD,wBAAmD;wBAC3C,qBAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAA;;wBAAhD,CAAC,GAAG,SAA4C;wBACtD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAe,CAAC;wBACjC,mEAAmE;wBACnE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC;;;wBAExE,KAAK,GAAG,UAAG,IAAI,CAAC,OAAQ,CAAC,GAAG,2BAC9B,IAAI,CAAC,OAAQ,CAAC,eAAe,CAC7B,CAAC;wBACH,IAAI,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;4BAC/B,KAAK,IAAI,eAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;wBACpC,CAAC;wBACD,IAAI,CAAC,EAAE,GAAG,IAAI,uBAAE,CAAC,KAAK,CAAC,CAAC;wBACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;wBAGrD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACxC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,UAAO,CAAS;;;;;6CACzB,CAAA,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,CAAA,EAAjC,wBAAiC;wCACnC,qBAAM,IAAA,wBAAO,EAAC;gDACZ,QAAQ,EAAE,GAAG;gDACb,SAAS,EAAE,cAAM,OAAA,KAAI,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,EAAjC,CAAiC;6CACnD,CAAC,EAAA;;wCAHF,SAGE,CAAC;;4CAEL,qBAAM,IAAI,CAAC,CAAC,CAAC,EAAA;;wCAAb,SAAa,CAAC;;;;6BACf,CAAC;wBAEF,IAAI,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,0CAAE,OAAO,EAAE,CAAC;4BACtC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE;gCAClC,IAAI,KAAI,CAAC,gBAAgB,EAAE,CAAC;oCAC1B,YAAY,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC;gCACtC,CAAC;gCACD,KAAI,CAAC,gBAAgB,GAAG,UAAU,CAChC,cAAM,OAAA,KAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,EACvB,KAAI,CAAC,OAAO,CAAC,WAAY,CAAC,kBAAkB,CAC7C,CAAC;4BACJ,CAAC,CAAC,CAAC;wBACL,CAAC;wBAED,4CAA4C;wBAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;4BAC3B,kBAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAChC,CAAC;wBAED,0BAA0B;wBAC1B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,MAAoB;4BACvD,IAAM,KAAK,GAAG,MAAkB,CAAC;4BAC3B,IAAA,KAAe,kBAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAA5C,IAAI,QAAA,EAAE,IAAI,QAAkC,CAAC;4BACpD,IACE,IAAI,CAAC,GAAG;gCACR,CAAC,CAAC,KAAI,CAAC,GAAG;oCACR,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,aAAa,CAAC;oCACzD,KAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EACxC,CAAC;gCACD,KAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gCACpB,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAI,CAAC,GAAG,CAAC,CAAC;4BAClD,CAAC;wBACH,CAAC,CAAC,CAAC;wBAGyB,qBAAM,kBAAK,CAAC,uBAAuB,CAC7D,IAAI,CAAC,EAAE,EACP,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAA1D,CAA0D,CACrE,EAAA;;wBAHK,KAAsB,SAG3B,EAHM,IAAI,QAAA,EAAE,IAAI,QAAA,EAAE,KAAK,QAAA;wBAIxB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;4BAC1B,MAAM,IAAI,gCAAmB,CAAC,KAAK,CAAC,CAAC;wBACvC,CAAC;wBACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;wBAE9B,8DAA8D;wBAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;6BAGpD,CAAA,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA,EAA9C,wBAA8C;wBAChD,kCAAkC;wBAClC,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;6BAEvC,CAAA,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,KAAK,QAAQ,CAAA,EAApE,wBAAoE;wBAEpE,wDAAwD;wBACxD,qBAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAA;;wBADnC,wDAAwD;wBACxD,SAAmC,CAAC;;;;;;KAGzC;IAED,kDAAkD;IACrC,mCAAM,GAAnB;4DAAoB,YAAoB;;YAApB,6BAAA,EAAA,oBAAoB;;;4BACtC,qBAAM,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,MAAM,EAAE,CAAA,EAAA;;wBAAjC,SAAiC,CAAC;wBAClC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;wBAC9B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4BACzC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBACrC,CAAC;wBACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BAC1B,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBACtC,CAAC;wBACD,MAAA,IAAI,CAAC,EAAE,0CAAE,KAAK,EAAE,CAAC;wBACjB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;wBACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;wBACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;wBAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;;;;;KAChB;IAEY,sCAAS,GAAtB;4DACE,YAAsB,EACtB,QAA6B,EAC7B,KAAsD;;YAAtD,sBAAA,EAAA,iBAAsD;;;;wBAEhD,YAAY,GAAG,IAAI,yBAAY,CACnC,IAAmC,EACnC,YAAY,EACZ,QAAQ,CACT,CAAC;6BACE,CAAA,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAA,EAArC,wBAAqC;wBACvC,qBAAM,YAAY,CAAC,SAAS,EAAE,EAAA;;wBAA9B,SAA8B,CAAC;;;wBAE/B,YAAY,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBACtC,qBAAM,YAAY,CAAC,OAAO,EAAE,EAAA;;wBAA5B,SAA4B,CAAC;;;wBAE/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;wBACjC,sBAAO,YAAY,EAAC;;;;KACrB;IACH,yBAAC;AAAD,CAAC,AAxXD,CAAiC,yBAAY,GAwX5C;AAED,kBAAe,kBAAkB,CAAC"}