@resolveio/client-lib-core 15.1.0 → 15.1.2
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/esm2020/lib/socket.service.mjs +23 -9
- package/fesm2015/resolveio-client-lib-core.mjs +22 -8
- package/fesm2015/resolveio-client-lib-core.mjs.map +1 -1
- package/fesm2020/resolveio-client-lib-core.mjs +22 -8
- package/fesm2020/resolveio-client-lib-core.mjs.map +1 -1
- package/lib/socket.service.d.ts +2 -0
- package/package.json +1 -1
|
@@ -26,6 +26,7 @@ export class SocketService {
|
|
|
26
26
|
this.onconnecting = function () { };
|
|
27
27
|
this.onmessage = function (event) { };
|
|
28
28
|
this.onerror = function (event) { };
|
|
29
|
+
document.addEventListener('visibilitychange', this.handleVisibilityChange.bind(this));
|
|
29
30
|
}
|
|
30
31
|
openSocket(environment, protocols) {
|
|
31
32
|
this.url = environment.WS_URL;
|
|
@@ -66,7 +67,7 @@ export class SocketService {
|
|
|
66
67
|
this.log(new Date(), 'WS', 'onclose', this.url);
|
|
67
68
|
this.onclose(event);
|
|
68
69
|
setTimeout(() => {
|
|
69
|
-
this.
|
|
70
|
+
this.reconnect();
|
|
70
71
|
}, this.reconnectInterval);
|
|
71
72
|
this.stopPinging();
|
|
72
73
|
};
|
|
@@ -84,7 +85,7 @@ export class SocketService {
|
|
|
84
85
|
this.ws.onerror = (event) => {
|
|
85
86
|
this.log(new Date(), 'WS', 'onerror', this, event);
|
|
86
87
|
this.onerror(event);
|
|
87
|
-
this.
|
|
88
|
+
this.close();
|
|
88
89
|
};
|
|
89
90
|
}
|
|
90
91
|
}
|
|
@@ -110,13 +111,16 @@ export class SocketService {
|
|
|
110
111
|
}
|
|
111
112
|
startPinging() {
|
|
112
113
|
this.pingInterval = setInterval(() => {
|
|
113
|
-
if (this.
|
|
114
|
+
if (this.isWebSocketActive()) {
|
|
114
115
|
this.send('ping');
|
|
115
116
|
this.pongTimeout = setTimeout(() => {
|
|
116
117
|
this.log(new Date(), 'WS', 'pong not received, closing connection');
|
|
117
118
|
this.close();
|
|
118
119
|
}, this.pongTimeoutTime);
|
|
119
120
|
}
|
|
121
|
+
else {
|
|
122
|
+
this.reconnect();
|
|
123
|
+
}
|
|
120
124
|
}, this.pingIntervalTime);
|
|
121
125
|
}
|
|
122
126
|
stopPinging() {
|
|
@@ -142,7 +146,7 @@ export class SocketService {
|
|
|
142
146
|
}
|
|
143
147
|
}
|
|
144
148
|
send(...data) {
|
|
145
|
-
if (this.
|
|
149
|
+
if (this.isWebSocketActive()) {
|
|
146
150
|
data.forEach(item => this.convertDatesToUTC(item));
|
|
147
151
|
this.ws.send(JSON.stringify(data));
|
|
148
152
|
return true;
|
|
@@ -165,12 +169,12 @@ export class SocketService {
|
|
|
165
169
|
}
|
|
166
170
|
reconnect() {
|
|
167
171
|
this.log(new Date(), 'WS', 'reconnect', this.readyState);
|
|
168
|
-
if (this.readyState === WebSocket.
|
|
169
|
-
this.close();
|
|
170
|
-
}
|
|
171
|
-
else if (this.readyState === WebSocket.CLOSING || this.readyState === WebSocket.CLOSED) {
|
|
172
|
+
if (this.readyState === WebSocket.CLOSED) {
|
|
172
173
|
this.connect();
|
|
173
174
|
}
|
|
175
|
+
else if (this.readyState !== WebSocket.CONNECTING) {
|
|
176
|
+
this.close();
|
|
177
|
+
}
|
|
174
178
|
}
|
|
175
179
|
getBufferAmount() {
|
|
176
180
|
if (this.ws) {
|
|
@@ -185,10 +189,20 @@ export class SocketService {
|
|
|
185
189
|
console.log(...args);
|
|
186
190
|
}
|
|
187
191
|
}
|
|
192
|
+
handleVisibilityChange() {
|
|
193
|
+
if (document.visibilityState === 'visible') {
|
|
194
|
+
if (!this.isWebSocketActive()) {
|
|
195
|
+
this.reconnect();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
isWebSocketActive() {
|
|
200
|
+
return this.ws && this.ws.readyState === WebSocket.OPEN;
|
|
201
|
+
}
|
|
188
202
|
}
|
|
189
203
|
SocketService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SocketService, deps: [{ token: i1.LocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
190
204
|
SocketService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SocketService });
|
|
191
205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SocketService, decorators: [{
|
|
192
206
|
type: Injectable
|
|
193
207
|
}], ctorParameters: function () { return [{ type: i1.LocalStorageService }]; } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHdkMsTUFBTSxPQUFPLGFBQWE7SUFrQ3pCLFlBQW9CLFFBQTZCO1FBQTdCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBakNqRCxzQ0FBc0M7UUFDL0IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVyQix3REFBd0Q7UUFDakQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRWhDLG1FQUFtRTtRQUM1RCxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN0QixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBSWhCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUMsaUNBQWlDO1FBQ3pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFNekIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsNENBQTRDO1FBQ3RFLG9CQUFlLEdBQUcsS0FBSyxDQUFDLENBQUMscUVBQXFFO1FBRXpHLDBDQUEwQztRQUNuQyxXQUFNLEdBQXdCLFVBQVUsS0FBWSxJQUFHLENBQUMsQ0FBQztRQUN6RCxZQUFPLEdBQTZCLFVBQVUsS0FBaUIsSUFBRyxDQUFDLENBQUM7UUFDcEUsaUJBQVksR0FBZSxjQUFhLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQStCLFVBQVUsS0FBbUIsSUFBRyxDQUFDLENBQUM7UUFDMUUsWUFBTyxHQUE2QixVQUFV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QUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDO1NBQzlCO2FBQ0k7WUFDSixPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUVPLEdBQUcsQ0FBQyxHQUFHLElBQVc7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ3JCO0lBQ0YsQ0FBQzs7MkdBN05XLGFBQWE7K0dBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJ25neC1sb2NhbHN0b3JhZ2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTb2NrZXRTZXJ2aWNlIHtcblx0Ly9UaGVzZSBjYW4gYmUgYWx0ZXJlZCBieSBjYWxsaW5nIGNvZGVcblx0cHVibGljIGRlYnVnID0gZmFsc2U7XG5cblx0Ly9UaW1lIHRvIHdhaXQgYmVmb3JlIGF0dGVtcHRpbmcgcmVjb25uZWN0IChhZnRlciBjbG9zZSlcblx0cHVibGljIHJlY29ubmVjdEludGVydmFsID0gMTAwMDtcblx0XG5cdC8vVGltZSB0byB3YWl0IGZvciBXZWJTb2NrZXQgdG8gb3BlbiAoYmVmb3JlIGFib3J0aW5nIGFuZCByZXRyeWluZylcblx0cHVibGljIHRpbWVvdXRJbnRlcnZhbCA9IDUwMDA7XG5cdHByaXZhdGUgdGltZW91dCA9IG51bGw7XG5cblx0Ly9TaG91bGQgb25seSBiZSB1c2VkIHRvIHJlYWQgV2ViU29ja2V0IHJlYWR5U3RhdGVcblx0cHVibGljIHJlYWR5U3RhdGU6IG51bWJlcjtcblx0cHVibGljIHJlYWR5U3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcblxuXHQvL0xpc3Qgb2YgV2ViU29ja2V0IHN1Yi1wcm90b2NvbHNcblx0cHJpdmF0ZSBwcm90b2NvbHM6IHN0cmluZ1tdID0gW107XG5cblx0Ly9UaGUgdW5kZXJseWluZyBXZWJTb2NrZXRcblx0cHVibGljIHdzOiBXZWJTb2NrZXQ7XG5cdHByaXZhdGUgdXJsOiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBwaW5nSW50ZXJ2YWwgPSBudWxsO1xuICAgIHByaXZhdGUgcG9uZ1RpbWVvdXQgPSBudWxsO1xuICAgIHByaXZhdGUgcGluZ0ludGVydmFsVGltZSA9IDE1MDAwOyAvLyBUaW1lIGJldHdlZW4gZWFjaCBwaW5nIChlLmcuLCAzMCBzZWNvbmRzKVxuICAgIHByaXZhdGUgcG9uZ1RpbWVvdXRUaW1lID0gMTIwMDA7IC8vIFRpbWUgdG8gd2FpdCBmb3IgcG9uZyBiZWZvcmUgY2xvc2luZyBjb25uZWN0aW9uIChlLmcuLCAxMCBzZWNvbmRzKVxuXG5cdC8vU2V0IHVwIHRoZSBkZWZhdWx0ICdub29wJyBldmVudCBoYW5kbGVyc1xuXHRwdWJsaWMgb25vcGVuOiAoZXY6IEV2ZW50KSA9PiB2b2lkID0gZnVuY3Rpb24gKGV2ZW50OiBFdmVudCkge307XG5cdHB1YmxpYyBvbmNsb3NlOiAoZXY6IENsb3NlRXZlbnQpID0+IHZvaWQgPSBmdW5jdGlvbiAoZXZlbnQ6IENsb3NlRXZlbnQpIHt9O1xuXHRwdWJsaWMgb25jb25uZWN0aW5nOiAoKSA9PiB2b2lkID0gZnVuY3Rpb24gKCkge307XG5cdHB1YmxpYyBvbm1lc3NhZ2U6IChldjogTWVzc2FnZUV2ZW50KSA9PiB2b2lkID0gZnVuY3Rpb24gKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHt9O1xuXHRwdWJsaWMgb25lcnJvcjogKGV2OiBFcnJvckV2ZW50KSA9PiB2b2lkID0gZnVuY3Rpb24gKGV2ZW50OiBFcnJvckV2ZW50KSB7fTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdG9yYWdlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlKSB7fVxuXG5cdHB1YmxpYyBvcGVuU29ja2V0KGVudmlyb25tZW50LCBwcm90b2NvbHMpIHtcblx0XHR0aGlzLnVybCA9IGVudmlyb25tZW50LldTX1VSTDtcblx0XHR0aGlzLnByb3RvY29scyA9IHByb3RvY29scztcblx0XHR0aGlzLmNvbm5lY3QoKTtcblx0fVxuXG5cdHByaXZhdGUgY29ubmVjdCgpIHtcblx0XHRpZiAoIXRoaXMud3MgJiYgdGhpcy5fc3RvcmFnZS5nZXQoJ2FjY2Vzc1Rva2VuJykpIHtcblx0XHRcdGlmICh0aGlzLnRpbWVvdXQpIHtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMud3MgPSBuZXcgV2ViU29ja2V0KHRoaXMudXJsLCB0aGlzLnByb3RvY29scyk7XG5cdFx0XHRcblx0XHRcdHRoaXMucmVhZHlTdGF0ZSA9IFdlYlNvY2tldC5DT05ORUNUSU5HO1xuXHRcdFx0dGhpcy5yZWFkeVN0YXRlJC5uZXh0KHRoaXMucmVhZHlTdGF0ZSk7XG5cdFx0XHR0aGlzLm9uY29ubmVjdGluZygpO1xuXHRcdFx0dGhpcy5sb2cobmV3IERhdGUoKSwgJ1dTJywgJ2F0dGVtcHQtY29ubmVjdCcsIHRoaXMudXJsKTtcblxuXHRcdFx0dGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9nKG5ldyBEYXRlKCksICdXUycsICdjb25uZWN0aW9uLXRpbWVvdXQnLCB0aGlzLnVybCk7XG5cdFx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHRcdH0sIHRoaXMudGltZW91dEludGVydmFsKTtcblxuXHRcdFx0dGhpcy53cy5vbm9wZW4gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuXHRcdFx0XHR0aGlzLnRpbWVvdXQgPSBudWxsO1xuXHRcdFx0XHR0aGlzLmxvZyhuZXcgRGF0ZSgpLCAnV1MnLCAnb25vcGVuJywgdGhpcy51cmwpO1xuXHRcdFx0XHR0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuT1BFTjtcblx0XHRcdFx0dGhpcy5yZWFkeVN0YXRlJC5uZXh0KHRoaXMucmVhZHlTdGF0ZSk7XG5cdFx0XHRcdHRoaXMub25vcGVuKGV2ZW50KTtcblxuXHRcdFx0XHR0aGlzLnN0YXJ0UGluZ2luZygpO1xuXHRcdFx0fTtcblxuXHRcdFx0dGhpcy53cy5vbmNsb3NlID0gKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLnRpbWVvdXQpIHtcblx0XHRcdFx0XHRjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdFx0dGhpcy50aW1lb3V0ID0gbnVsbDtcblxuXHRcdFx0XHR0aGlzLndzID0gbnVsbDtcblxuXHRcdFx0XHR0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuQ0xPU0VEO1xuXHRcdFx0XHR0aGlzLnJlYWR5U3RhdGUkLm5leHQodGhpcy5yZWFkeVN0YXRlKTtcblx0XHRcdFx0XG5cdFx0XHRcdHRoaXMubG9nKG5ldyBEYXRlKCksICdXUycsICdvbmNsb3NlJywgdGhpcy51cmwpO1xuXHRcdFx0XHR0aGlzLm9uY2xvc2UoZXZlbnQpO1xuXG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuY29ubmVjdCgpO1xuXHRcdFx0XHR9LCB0aGlzLnJlY29ubmVjdEludGVydmFsKTtcblxuXHRcdFx0XHR0aGlzLnN0b3BQaW5naW5nKCk7XG5cdFx0XHR9O1xuXG5cdFx0XHR0aGlzLndzLm9ubWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudC5kYXRhID09PSAncG9uZycpIHtcblx0XHRcdFx0XHR0aGlzLmxvZyhuZXcgRGF0ZSgpLCAnV1MnLCAncG9uZyByZWNlaXZlZCcpO1xuXHRcdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBvbmdUaW1lb3V0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRsZXQgbWVzc2FnZURhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuXHRcdFx0XHRcdG1lc3NhZ2VEYXRhID0gdGhpcy5jb252ZXJ0VVRDRGF0ZVRvTG9jYWxEYXRlKG1lc3NhZ2VEYXRhKTtcblx0XHRcdFx0XHR0aGlzLm9ubWVzc2FnZShtZXNzYWdlRGF0YSk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRcdHRoaXMud3Mub25lcnJvciA9IChldmVudDogRXJyb3JFdmVudCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvZyhuZXcgRGF0ZSgpLCAnV1MnLCAnb25lcnJvcicsIHRoaXMsIGV2ZW50KTtcblx0XHRcdFx0dGhpcy5vbmVycm9yKGV2ZW50KTtcblx0XHRcdFx0dGhpcy5yZWNvbm5lY3QoKTtcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjb252ZXJ0VVRDRGF0ZVRvTG9jYWxEYXRlKGRhdGEpIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuXHRcdCAgXHRyZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiB0aGlzLmNvbnZlcnRVVENEYXRlVG9Mb2NhbERhdGUoaXRlbSkpO1xuXHRcdH0gXG5cdFx0ZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmIGRhdGEgIT09IG51bGwpIHtcblx0XHRcdGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcblx0XHRcdGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRcdGRhdGFba2V5XSA9IHRoaXMuY29udmVydFVUQ0RhdGVUb0xvY2FsRGF0ZShkYXRhW2tleV0pO1xuXHRcdFx0fSk7XG5cdFx0ICBcdHJldHVybiBkYXRhO1xuXHRcdH0gXG5cdFx0ZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHQvLyBDaGVjayBpZiB0aGUgc3RyaW5nIGlzIGFuIElTTyBkYXRlIGZvcm1hdFxuXHRcdFx0Y29uc3QgZGF0ZVBhdHRlcm4gPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9KD86XFwuXFxkKyk/WiQvO1xuXHRcdFx0aWYgKGRhdGVQYXR0ZXJuLnRlc3QoZGF0YSkpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBEYXRlKGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cblx0cHJpdmF0ZSBzdGFydFBpbmdpbmcoKSB7XG5cdFx0dGhpcy5waW5nSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy53cyAmJiB0aGlzLndzLnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG5cdFx0XHRcdHRoaXMuc2VuZCgncGluZycpO1xuXG5cdFx0XHRcdHRoaXMucG9uZ1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmxvZyhuZXcgRGF0ZSgpLCAnV1MnLCAncG9uZyBub3QgcmVjZWl2ZWQsIGNsb3NpbmcgY29ubmVjdGlvbicpO1xuXHRcdFx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHRcdFx0fSwgdGhpcy5wb25nVGltZW91dFRpbWUpO1xuXHRcdFx0fVxuXHRcdH0sIHRoaXMucGluZ0ludGVydmFsVGltZSk7XG5cdH1cblxuXHRwcml2YXRlIHN0b3BQaW5naW5nKCkge1xuXHRcdGlmICh0aGlzLnBpbmdJbnRlcnZhbCkge1xuXHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLnBpbmdJbnRlcnZhbCk7XG5cdFx0fVxuXHRcdFxuXHRcdGlmICh0aGlzLnBvbmdUaW1lb3V0KSB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5wb25nVGltZW91dCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjb252ZXJ0RGF0ZXNUb1VUQyhvYmopIHtcblx0XHRmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG5cdFx0XHRpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0XHRcdFx0aWYgKG9ialtrZXldIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHRcdC8vIENvbnZlcnQgRGF0ZSB0byBVVEMgSVNPIFN0cmluZ1xuXHRcdFx0XHRcdG9ialtrZXldID0gb2JqW2tleV0udG9JU09TdHJpbmcoKTtcblx0XHRcdFx0fSBcblx0XHRcdFx0ZWxzZSBpZiAodHlwZW9mIG9ialtrZXldID09PSAnb2JqZWN0JyAmJiBvYmpba2V5XSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdC8vIFJlY3Vyc2l2ZWx5IGxvb2sgZm9yIERhdGUgb2JqZWN0cyB3aXRoaW4gYXJyYXlzIG9yIG5lc3RlZCBvYmplY3RzXG5cdFx0XHRcdFx0dGhpcy5jb252ZXJ0RGF0ZXNUb1VUQyhvYmpba2V5XSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2VuZCguLi5kYXRhOiBhbnlbXSkge1xuXHRcdGlmICh0aGlzLndzICYmIHRoaXMud3MucmVhZHlTdGF0ZSA9PT0gdGhpcy53cy5PUEVOKSB7XG5cdFx0XHRkYXRhLmZvckVhY2goaXRlbSA9PiB0aGlzLmNvbnZlcnREYXRlc1RvVVRDKGl0ZW0pKTtcblx0XHRcdHRoaXMud3Muc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IFxuXHRcdGVsc2Uge1xuXHRcdFx0dGhpcy5sb2cobmV3IERhdGUoKSwgJ1dTJywgJ3NlbmQgZXJyb3InLCB0aGlzLnJlYWR5U3RhdGUpO1xuXHRcdFx0dGhpcy5yZWNvbm5lY3QoKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY2xvc2UoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMud3MpIHtcblx0XHRcdHRoaXMubG9nKG5ldyBEYXRlKCksICdXUycsICdjbG9zaW5nIHNvY2tldCcpO1xuXHRcdFx0dGhpcy5yZWFkeVN0YXRlID0gV2ViU29ja2V0LkNMT1NJTkc7XG5cdFx0XHR0aGlzLnJlYWR5U3RhdGUkLm5leHQodGhpcy5yZWFkeVN0YXRlKTtcblx0XHRcdHRoaXMud3MuY2xvc2UoKTtcblx0XHRcdFxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyByZWNvbm5lY3QoKSB7XG5cdFx0dGhpcy5sb2cobmV3IERhdGUoKSwgJ1dTJywgJ3JlY29ubmVjdCcsIHRoaXMucmVhZHlTdGF0ZSk7XG5cdFx0aWYgKHRoaXMucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcblx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAodGhpcy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuQ0xPU0lORyB8fCB0aGlzLnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5DTE9TRUQpIHtcblx0XHRcdHRoaXMuY29ubmVjdCgpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRCdWZmZXJBbW91bnQoKSB7XG5cdFx0aWYgKHRoaXMud3MpIHtcblx0XHRcdHJldHVybiB0aGlzLndzLmJ1ZmZlcmVkQW1vdW50O1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHJldHVybiAyMDQ4MDtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGxvZyguLi5hcmdzOiBhbnlbXSkge1xuXHRcdGlmICh0aGlzLmRlYnVnKSB7XG5cdFx0XHRjb25zb2xlLmxvZyguLi5hcmdzKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHdkMsTUFBTSxPQUFPLGFBQWE7SUFrQ3pCLFlBQW9CLFFBQTZCO1FBQTdCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBakNqRCxzQ0FBc0M7UUFDL0IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVyQix3REFBd0Q7UUFDakQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRWhDLG1FQUFtRTtRQUM1RCxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN0QixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBSWhCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUMsaUNBQWlDO1FBQ3pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFNekIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsNENBQTRDO1FBQ3RFLG9CQUFlLEdBQUcsS0FBSyxDQUFDLENBQUMscUVBQXFFO1FBRXpHLDBDQUEwQztRQUNuQyxXQUFNLEdBQXdCLFVBQVUsS0FBWSxJQUFHLENBQUMsQ0FBQztRQUN6RCxZQUFPLEdBQTZCLFVBQVUsS0FBaUIsSUFBRyxDQUFDLENBQUM7UUFDcEUsaUJBQVksR0FBZSxjQUFhLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQStCLFVBQVUsS0FBbUIsSUFBRyxDQUFDLENBQUM7UUFDMUUsWUFBTyxHQUE2QixVQUFV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LElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDO1NBQzlCO2FBQ0k7WUFDSixPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUVPLEdBQUcsQ0FBQyxHQUFHLElBQVc7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ3JCO0lBQ0YsQ0FBQztJQUVPLHNCQUFzQjtRQUM3QixJQUFJLFFBQVEsQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ2pCO1NBQ0Q7SUFDRixDQUFDO0lBRU8saUJBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3pELENBQUM7OzJHQTlPVyxhQUFhOytHQUFiLGFBQWE7NEZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICduZ3gtbG9jYWxzdG9yYWdlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU29ja2V0U2VydmljZSB7XG5cdC8vVGhlc2UgY2FuIGJlIGFsdGVyZWQgYnkgY2FsbGluZyBjb2RlXG5cdHB1YmxpYyBkZWJ1ZyA9IGZhbHNlO1xuXG5cdC8vVGltZSB0byB3YWl0IGJlZm9yZSBhdHRlbXB0aW5nIHJlY29ubmVjdCAoYWZ0ZXIgY2xvc2UpXG5cdHB1YmxpYyByZWNvbm5lY3RJbnRlcnZhbCA9IDEwMDA7XG5cdFxuXHQvL1RpbWUgdG8gd2FpdCBmb3IgV2ViU29ja2V0IHRvIG9wZW4gKGJlZm9yZSBhYm9ydGluZyBhbmQgcmV0cnlpbmcpXG5cdHB1YmxpYyB0aW1lb3V0SW50ZXJ2YWwgPSA1MDAwO1xuXHRwcml2YXRlIHRpbWVvdXQgPSBudWxsO1xuXG5cdC8vU2hvdWxkIG9ubHkgYmUgdXNlZCB0byByZWFkIFdlYlNvY2tldCByZWFkeVN0YXRlXG5cdHB1YmxpYyByZWFkeVN0YXRlOiBudW1iZXI7XG5cdHB1YmxpYyByZWFkeVN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG5cblx0Ly9MaXN0IG9mIFdlYlNvY2tldCBzdWItcHJvdG9jb2xzXG5cdHByaXZhdGUgcHJvdG9jb2xzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdC8vVGhlIHVuZGVybHlpbmcgV2ViU29ja2V0XG5cdHB1YmxpYyB3czogV2ViU29ja2V0O1xuXHRwcml2YXRlIHVybDogc3RyaW5nO1xuXG5cdHByaXZhdGUgcGluZ0ludGVydmFsID0gbnVsbDtcbiAgICBwcml2YXRlIHBvbmdUaW1lb3V0ID0gbnVsbDtcbiAgICBwcml2YXRlIHBpbmdJbnRlcnZhbFRpbWUgPSAxNTAwMDsgLy8gVGltZSBiZXR3ZWVuIGVhY2ggcGluZyAoZS5nLiwgMzAgc2Vjb25kcylcbiAgICBwcml2YXRlIHBvbmdUaW1lb3V0VGltZSA9IDEyMDAwOyAvLyBUaW1lIHRvIHdhaXQgZm9yIHBvbmcgYmVmb3JlIGNsb3NpbmcgY29ubmVjdGlvbiAoZS5nLiwgMTAgc2Vjb25kcylcblxuXHQvL1NldCB1cCB0aGUgZGVmYXVsdCAnbm9vcCcgZXZlbnQgaGFuZGxlcnNcblx0cHVibGljIG9ub3BlbjogKGV2OiBFdmVudCkgPT4gdm9pZCA9IGZ1bmN0aW9uIChldmVudDogRXZlbnQpIHt9O1xuXHRwdWJsaWMgb25jbG9zZTogKGV2OiBDbG9zZUV2ZW50KSA9PiB2b2lkID0gZnVuY3Rpb24gKGV2ZW50OiBDbG9zZUV2ZW50KSB7fTtcblx0cHVibGljIG9uY29ubmVjdGluZzogKCkgPT4gdm9pZCA9IGZ1bmN0aW9uICgpIHt9O1xuXHRwdWJsaWMgb25tZXNzYWdlOiAoZXY6IE1lc3NhZ2VFdmVudCkgPT4gdm9pZCA9IGZ1bmN0aW9uIChldmVudDogTWVzc2FnZUV2ZW50KSB7fTtcblx0cHVibGljIG9uZXJyb3I6IChldjogRXJyb3JFdmVudCkgPT4gdm9pZCA9IGZ1bmN0aW9uIChldmVudDogRXJyb3JFdmVudCkge307XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSkge1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLmhhbmRsZVZpc2liaWxpdHlDaGFuZ2UuYmluZCh0aGlzKSk7XG5cdH1cblxuXHRwdWJsaWMgb3BlblNvY2tldChlbnZpcm9ubWVudCwgcHJvdG9jb2xzKSB7XG5cdFx0dGhpcy51cmwgPSBlbnZpcm9ubWVudC5XU19VUkw7XG5cdFx0dGhpcy5wcm90b2NvbHMgPSBwcm90b2NvbHM7XG5cdFx0dGhpcy5jb25uZWN0KCk7XG5cdH1cblxuXHRwcml2YXRlIGNvbm5lY3QoKSB7XG5cdFx0aWYgKCF0aGlzLndzICYmIHRoaXMuX3N0b3JhZ2UuZ2V0KCdhY2Nlc3NUb2tlbicpKSB7XG5cdFx0XHRpZiAodGhpcy50aW1lb3V0KSB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLndzID0gbmV3IFdlYlNvY2tldCh0aGlzLnVybCwgdGhpcy5wcm90b2NvbHMpO1xuXHRcdFx0XG5cdFx0XHR0aGlzLnJlYWR5U3RhdGUgPSBXZWJTb2NrZXQuQ09OTkVDVElORztcblx0XHRcdHRoaXMucmVhZHlTdGF0ZSQubmV4dCh0aGlzLnJlYWR5U3RhdGUpO1xuXHRcdFx0dGhpcy5vbmNvbm5lY3RpbmcoKTtcblx0XHRcdHRoaXMubG9nKG5ldyBEYXRlKCksICdXUycsICdhdHRlbXB0LWNvbm5lY3QnLCB0aGlzLnVybCk7XG5cblx0XHRcdHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvZyhuZXcgRGF0ZSgpLCAnV1MnLCAnY29ubmVjdGlvbi10aW1lb3V0JywgdGhpcy51cmwpO1xuXHRcdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0XHR9LCB0aGlzLnRpbWVvdXRJbnRlcnZhbCk7XG5cblx0XHRcdHRoaXMud3Mub25vcGVuID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuXHRcdFx0XHRjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcblx0XHRcdFx0dGhpcy50aW1lb3V0ID0gbnVsbDtcblx0XHRcdFx0dGhpcy5sb2cobmV3IERhdGUoKSwgJ1dTJywgJ29ub3BlbicsIHRoaXMudXJsKTtcblx0XHRcdFx0dGhpcy5yZWFkeVN0YXRlID0gV2ViU29ja2V0Lk9QRU47XG5cdFx0XHRcdHRoaXMucmVhZHlTdGF0ZSQubmV4dCh0aGlzLnJlYWR5U3RhdGUpO1xuXHRcdFx0XHR0aGlzLm9ub3BlbihldmVudCk7XG5cblx0XHRcdFx0dGhpcy5zdGFydFBpbmdpbmcoKTtcblx0XHRcdH07XG5cblx0XHRcdHRoaXMud3Mub25jbG9zZSA9IChldmVudDogQ2xvc2VFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy50aW1lb3V0KSB7XG5cdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdHRoaXMudGltZW91dCA9IG51bGw7XG5cblx0XHRcdFx0dGhpcy53cyA9IG51bGw7XG5cblx0XHRcdFx0dGhpcy5yZWFkeVN0YXRlID0gV2ViU29ja2V0LkNMT1NFRDtcblx0XHRcdFx0dGhpcy5yZWFkeVN0YXRlJC5uZXh0KHRoaXMucmVhZHlTdGF0ZSk7XG5cdFx0XHRcdFxuXHRcdFx0XHR0aGlzLmxvZyhuZXcgRGF0ZSgpLCAnV1MnLCAnb25jbG9zZScsIHRoaXMudXJsKTtcblx0XHRcdFx0dGhpcy5vbmNsb3NlKGV2ZW50KTtcblxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnJlY29ubmVjdCgpO1xuXHRcdFx0XHR9LCB0aGlzLnJlY29ubmVjdEludGVydmFsKTtcblxuXHRcdFx0XHR0aGlzLnN0b3BQaW5naW5nKCk7XG5cdFx0XHR9O1xuXG5cdFx0XHR0aGlzLndzLm9ubWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudC5kYXRhID09PSAncG9uZycpIHtcblx0XHRcdFx0XHR0aGlzLmxvZyhuZXcgRGF0ZSgpLCAnV1MnLCAncG9uZyByZWNlaXZlZCcpO1xuXHRcdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBvbmdUaW1lb3V0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRsZXQgbWVzc2FnZURhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuXHRcdFx0XHRcdG1lc3NhZ2VEYXRhID0gdGhpcy5jb252ZXJ0VVRDRGF0ZVRvTG9jYWxEYXRlKG1lc3NhZ2VEYXRhKTtcblx0XHRcdFx0XHR0aGlzLm9ubWVzc2FnZShtZXNzYWdlRGF0YSk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRcdHRoaXMud3Mub25lcnJvciA9IChldmVudDogRXJyb3JFdmVudCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvZyhuZXcgRGF0ZSgpLCAnV1MnLCAnb25lcnJvcicsIHRoaXMsIGV2ZW50KTtcblx0XHRcdFx0dGhpcy5vbmVycm9yKGV2ZW50KTtcblx0XHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGNvbnZlcnRVVENEYXRlVG9Mb2NhbERhdGUoZGF0YSkge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG5cdFx0ICBcdHJldHVybiBkYXRhLm1hcChpdGVtID0+IHRoaXMuY29udmVydFVUQ0RhdGVUb0xvY2FsRGF0ZShpdGVtKSk7XG5cdFx0fSBcblx0XHRlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgZGF0YSAhPT0gbnVsbCkge1xuXHRcdFx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGRhdGEpO1xuXHRcdFx0a2V5cy5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdFx0ZGF0YVtrZXldID0gdGhpcy5jb252ZXJ0VVRDRGF0ZVRvTG9jYWxEYXRlKGRhdGFba2V5XSk7XG5cdFx0XHR9KTtcblx0XHQgIFx0cmV0dXJuIGRhdGE7XG5cdFx0fSBcblx0XHRlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdC8vIENoZWNrIGlmIHRoZSBzdHJpbmcgaXMgYW4gSVNPIGRhdGUgZm9ybWF0XG5cdFx0XHRjb25zdCBkYXRlUGF0dGVybiA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT9aJC87XG5cdFx0XHRpZiAoZGF0ZVBhdHRlcm4udGVzdChkYXRhKSkge1xuXHRcdFx0XHRyZXR1cm4gbmV3IERhdGUoZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cblxuXHRwcml2YXRlIHN0YXJ0UGluZ2luZygpIHtcblx0XHR0aGlzLnBpbmdJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdGlmICh0aGlzLmlzV2ViU29ja2V0QWN0aXZlKCkpIHtcblx0XHRcdFx0dGhpcy5zZW5kKCdwaW5nJyk7XG5cblx0XHRcdFx0dGhpcy5wb25nVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubG9nKG5ldyBEYXRlKCksICdXUycsICdwb25nIG5vdCByZWNlaXZlZCwgY2xvc2luZyBjb25uZWN0aW9uJyk7XG5cdFx0XHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdFx0XHR9LCB0aGlzLnBvbmdUaW1lb3V0VGltZSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy5yZWNvbm5lY3QoKTtcblx0XHRcdH1cblx0XHR9LCB0aGlzLnBpbmdJbnRlcnZhbFRpbWUpO1xuXHR9XG5cblx0cHJpdmF0ZSBzdG9wUGluZ2luZygpIHtcblx0XHRpZiAodGhpcy5waW5nSW50ZXJ2YWwpIHtcblx0XHRcdGNsZWFySW50ZXJ2YWwodGhpcy5waW5nSW50ZXJ2YWwpO1xuXHRcdH1cblx0XHRcblx0XHRpZiAodGhpcy5wb25nVGltZW91dCkge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucG9uZ1RpbWVvdXQpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY29udmVydERhdGVzVG9VVEMob2JqKSB7XG5cdFx0Zm9yIChsZXQga2V5IGluIG9iaikge1xuXHRcdFx0aWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG5cdFx0XHRcdGlmIChvYmpba2V5XSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0XHQvLyBDb252ZXJ0IERhdGUgdG8gVVRDIElTTyBTdHJpbmdcblx0XHRcdFx0XHRvYmpba2V5XSA9IG9ialtrZXldLnRvSVNPU3RyaW5nKCk7XG5cdFx0XHRcdH0gXG5cdFx0XHRcdGVsc2UgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcgJiYgb2JqW2tleV0gIT09IG51bGwpIHtcblx0XHRcdFx0XHQvLyBSZWN1cnNpdmVseSBsb29rIGZvciBEYXRlIG9iamVjdHMgd2l0aGluIGFycmF5cyBvciBuZXN0ZWQgb2JqZWN0c1xuXHRcdFx0XHRcdHRoaXMuY29udmVydERhdGVzVG9VVEMob2JqW2tleV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNlbmQoLi4uZGF0YTogYW55W10pIHtcblx0XHRpZiAodGhpcy5pc1dlYlNvY2tldEFjdGl2ZSgpKSB7XG5cdFx0XHRkYXRhLmZvckVhY2goaXRlbSA9PiB0aGlzLmNvbnZlcnREYXRlc1RvVVRDKGl0ZW0pKTtcblx0XHRcdHRoaXMud3Muc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IFxuXHRcdGVsc2Uge1xuXHRcdFx0dGhpcy5sb2cobmV3IERhdGUoKSwgJ1dTJywgJ3NlbmQgZXJyb3InLCB0aGlzLnJlYWR5U3RhdGUpO1xuXHRcdFx0dGhpcy5yZWNvbm5lY3QoKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY2xvc2UoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMud3MpIHtcblx0XHRcdHRoaXMubG9nKG5ldyBEYXRlKCksICdXUycsICdjbG9zaW5nIHNvY2tldCcpO1xuXHRcdFx0dGhpcy5yZWFkeVN0YXRlID0gV2ViU29ja2V0LkNMT1NJTkc7XG5cdFx0XHR0aGlzLnJlYWR5U3RhdGUkLm5leHQodGhpcy5yZWFkeVN0YXRlKTtcblx0XHRcdHRoaXMud3MuY2xvc2UoKTtcblx0XHRcdFxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyByZWNvbm5lY3QoKSB7XG5cdFx0dGhpcy5sb2cobmV3IERhdGUoKSwgJ1dTJywgJ3JlY29ubmVjdCcsIHRoaXMucmVhZHlTdGF0ZSk7XG5cdFx0aWYgKHRoaXMucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0LkNMT1NFRCkge1xuXHRcdFx0dGhpcy5jb25uZWN0KCk7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKHRoaXMucmVhZHlTdGF0ZSAhPT0gV2ViU29ja2V0LkNPTk5FQ1RJTkcpIHtcblx0XHRcdHRoaXMuY2xvc2UoKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0QnVmZmVyQW1vdW50KCkge1xuXHRcdGlmICh0aGlzLndzKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy53cy5idWZmZXJlZEFtb3VudDtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRyZXR1cm4gMjA0ODA7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBsb2coLi4uYXJnczogYW55W10pIHtcblx0XHRpZiAodGhpcy5kZWJ1Zykge1xuXHRcdFx0Y29uc29sZS5sb2coLi4uYXJncyk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCk6IHZvaWQge1xuXHRcdGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xuXHRcdFx0aWYgKCF0aGlzLmlzV2ViU29ja2V0QWN0aXZlKCkpIHtcblx0XHRcdFx0dGhpcy5yZWNvbm5lY3QoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGlzV2ViU29ja2V0QWN0aXZlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLndzICYmIHRoaXMud3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU47XG5cdH1cbn1cbiJdfQ==
|
|
@@ -299,6 +299,7 @@ class SocketService {
|
|
|
299
299
|
this.onconnecting = function () { };
|
|
300
300
|
this.onmessage = function (event) { };
|
|
301
301
|
this.onerror = function (event) { };
|
|
302
|
+
document.addEventListener('visibilitychange', this.handleVisibilityChange.bind(this));
|
|
302
303
|
}
|
|
303
304
|
openSocket(environment, protocols) {
|
|
304
305
|
this.url = environment.WS_URL;
|
|
@@ -339,7 +340,7 @@ class SocketService {
|
|
|
339
340
|
this.log(new Date(), 'WS', 'onclose', this.url);
|
|
340
341
|
this.onclose(event);
|
|
341
342
|
setTimeout(() => {
|
|
342
|
-
this.
|
|
343
|
+
this.reconnect();
|
|
343
344
|
}, this.reconnectInterval);
|
|
344
345
|
this.stopPinging();
|
|
345
346
|
};
|
|
@@ -357,7 +358,7 @@ class SocketService {
|
|
|
357
358
|
this.ws.onerror = (event) => {
|
|
358
359
|
this.log(new Date(), 'WS', 'onerror', this, event);
|
|
359
360
|
this.onerror(event);
|
|
360
|
-
this.
|
|
361
|
+
this.close();
|
|
361
362
|
};
|
|
362
363
|
}
|
|
363
364
|
}
|
|
@@ -383,13 +384,16 @@ class SocketService {
|
|
|
383
384
|
}
|
|
384
385
|
startPinging() {
|
|
385
386
|
this.pingInterval = setInterval(() => {
|
|
386
|
-
if (this.
|
|
387
|
+
if (this.isWebSocketActive()) {
|
|
387
388
|
this.send('ping');
|
|
388
389
|
this.pongTimeout = setTimeout(() => {
|
|
389
390
|
this.log(new Date(), 'WS', 'pong not received, closing connection');
|
|
390
391
|
this.close();
|
|
391
392
|
}, this.pongTimeoutTime);
|
|
392
393
|
}
|
|
394
|
+
else {
|
|
395
|
+
this.reconnect();
|
|
396
|
+
}
|
|
393
397
|
}, this.pingIntervalTime);
|
|
394
398
|
}
|
|
395
399
|
stopPinging() {
|
|
@@ -415,7 +419,7 @@ class SocketService {
|
|
|
415
419
|
}
|
|
416
420
|
}
|
|
417
421
|
send(...data) {
|
|
418
|
-
if (this.
|
|
422
|
+
if (this.isWebSocketActive()) {
|
|
419
423
|
data.forEach(item => this.convertDatesToUTC(item));
|
|
420
424
|
this.ws.send(JSON.stringify(data));
|
|
421
425
|
return true;
|
|
@@ -438,12 +442,12 @@ class SocketService {
|
|
|
438
442
|
}
|
|
439
443
|
reconnect() {
|
|
440
444
|
this.log(new Date(), 'WS', 'reconnect', this.readyState);
|
|
441
|
-
if (this.readyState === WebSocket.
|
|
442
|
-
this.close();
|
|
443
|
-
}
|
|
444
|
-
else if (this.readyState === WebSocket.CLOSING || this.readyState === WebSocket.CLOSED) {
|
|
445
|
+
if (this.readyState === WebSocket.CLOSED) {
|
|
445
446
|
this.connect();
|
|
446
447
|
}
|
|
448
|
+
else if (this.readyState !== WebSocket.CONNECTING) {
|
|
449
|
+
this.close();
|
|
450
|
+
}
|
|
447
451
|
}
|
|
448
452
|
getBufferAmount() {
|
|
449
453
|
if (this.ws) {
|
|
@@ -458,6 +462,16 @@ class SocketService {
|
|
|
458
462
|
console.log(...args);
|
|
459
463
|
}
|
|
460
464
|
}
|
|
465
|
+
handleVisibilityChange() {
|
|
466
|
+
if (document.visibilityState === 'visible') {
|
|
467
|
+
if (!this.isWebSocketActive()) {
|
|
468
|
+
this.reconnect();
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
isWebSocketActive() {
|
|
473
|
+
return this.ws && this.ws.readyState === WebSocket.OPEN;
|
|
474
|
+
}
|
|
461
475
|
}
|
|
462
476
|
SocketService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SocketService, deps: [{ token: i1.LocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
463
477
|
SocketService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SocketService });
|