videomail-client 15.7.12 → 15.7.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +107 -18
- package/dist/esm/index.js +95 -7
- package/dist/esm/util/error/getEventDetails.d.ts +2 -0
- package/dist/esm/wrappers/visuals/recorder.d.ts +1 -0
- package/dist/umd/index.js +105 -16
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -1575,7 +1575,7 @@ var __webpack_modules__ = {
|
|
|
1575
1575
|
return intrinsic;
|
|
1576
1576
|
};
|
|
1577
1577
|
},
|
|
1578
|
-
|
|
1578
|
+
rX (module) {
|
|
1579
1579
|
module.exports = Emitter;
|
|
1580
1580
|
function Emitter(obj) {
|
|
1581
1581
|
if (obj) return mixin(obj);
|
|
@@ -1832,7 +1832,7 @@ var __webpack_modules__ = {
|
|
|
1832
1832
|
xF (module, __unused_rspack_exports, __webpack_require__) {
|
|
1833
1833
|
"use strict";
|
|
1834
1834
|
var document1 = __webpack_require__("g");
|
|
1835
|
-
var
|
|
1835
|
+
var Event1 = __webpack_require__("cE");
|
|
1836
1836
|
var Keys = __webpack_require__("Dy");
|
|
1837
1837
|
module.exports = Visibility;
|
|
1838
1838
|
function Visibility() {
|
|
@@ -1840,7 +1840,7 @@ var __webpack_modules__ = {
|
|
|
1840
1840
|
if (!keys) return noopShim();
|
|
1841
1841
|
return {
|
|
1842
1842
|
visible: visible,
|
|
1843
|
-
onChange:
|
|
1843
|
+
onChange: Event1(listen)
|
|
1844
1844
|
};
|
|
1845
1845
|
function visible() {
|
|
1846
1846
|
return !document1[keys.hidden];
|
|
@@ -4868,8 +4868,8 @@ var __webpack_modules__ = {
|
|
|
4868
4868
|
} : null;
|
|
4869
4869
|
},
|
|
4870
4870
|
Ne (module) {
|
|
4871
|
-
module.exports =
|
|
4872
|
-
function
|
|
4871
|
+
module.exports = Event1;
|
|
4872
|
+
function Event1() {
|
|
4873
4873
|
var listeners = [];
|
|
4874
4874
|
return {
|
|
4875
4875
|
broadcast: broadcast,
|
|
@@ -4889,10 +4889,10 @@ var __webpack_modules__ = {
|
|
|
4889
4889
|
}
|
|
4890
4890
|
},
|
|
4891
4891
|
cE (module, __unused_rspack_exports, __webpack_require__) {
|
|
4892
|
-
var
|
|
4892
|
+
var Event1 = __webpack_require__("Ne");
|
|
4893
4893
|
module.exports = Source;
|
|
4894
4894
|
function Source(broadcaster) {
|
|
4895
|
-
var tuple =
|
|
4895
|
+
var tuple = Event1();
|
|
4896
4896
|
broadcaster(tuple.broadcast);
|
|
4897
4897
|
return tuple.listen;
|
|
4898
4898
|
}
|
|
@@ -6783,7 +6783,7 @@ var __webpack_modules__ = {
|
|
|
6783
6783
|
return fn;
|
|
6784
6784
|
};
|
|
6785
6785
|
},
|
|
6786
|
-
|
|
6786
|
+
x (module, __unused_rspack_exports, __webpack_require__) {
|
|
6787
6787
|
"use strict";
|
|
6788
6788
|
var inspect = __webpack_require__("L");
|
|
6789
6789
|
var $TypeError = __webpack_require__("N");
|
|
@@ -6944,7 +6944,7 @@ var __webpack_modules__ = {
|
|
|
6944
6944
|
"use strict";
|
|
6945
6945
|
var $TypeError = __webpack_require__("N");
|
|
6946
6946
|
var inspect = __webpack_require__("L");
|
|
6947
|
-
var getSideChannelList = __webpack_require__("
|
|
6947
|
+
var getSideChannelList = __webpack_require__("x");
|
|
6948
6948
|
var getSideChannelMap = __webpack_require__("J");
|
|
6949
6949
|
var getSideChannelWeakMap = __webpack_require__("c");
|
|
6950
6950
|
var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;
|
|
@@ -7041,7 +7041,7 @@ var __webpack_modules__ = {
|
|
|
7041
7041
|
console.warn('Using browser-only version of superagent in non-browser environment');
|
|
7042
7042
|
root = void 0;
|
|
7043
7043
|
} else root = self;
|
|
7044
|
-
const Emitter = __webpack_require__("
|
|
7044
|
+
const Emitter = __webpack_require__("rX");
|
|
7045
7045
|
const safeStringify = __webpack_require__("X");
|
|
7046
7046
|
const qs = __webpack_require__("b");
|
|
7047
7047
|
const RequestBase = __webpack_require__("d");
|
|
@@ -10970,7 +10970,7 @@ var __webpack_exports__ = {};
|
|
|
10970
10970
|
var client = __webpack_require__("Q");
|
|
10971
10971
|
var client_default = /*#__PURE__*/ __webpack_require__.n(client);
|
|
10972
10972
|
var package_namespaceObject = {
|
|
10973
|
-
rE: "15.7.
|
|
10973
|
+
rE: "15.7.14"
|
|
10974
10974
|
};
|
|
10975
10975
|
function isAudioEnabled(options) {
|
|
10976
10976
|
return Boolean(options.audio.enabled);
|
|
@@ -10984,6 +10984,52 @@ var __webpack_exports__ = {};
|
|
|
10984
10984
|
}
|
|
10985
10985
|
var util = __webpack_require__("S");
|
|
10986
10986
|
var util_default = /*#__PURE__*/ __webpack_require__.n(util);
|
|
10987
|
+
function getEventDetails(event) {
|
|
10988
|
+
const eventWithErrorDetails = event;
|
|
10989
|
+
const details = {
|
|
10990
|
+
constructor: event.constructor.name,
|
|
10991
|
+
type: event.type,
|
|
10992
|
+
isTrusted: event.isTrusted,
|
|
10993
|
+
bubbles: event.bubbles,
|
|
10994
|
+
cancelable: event.cancelable,
|
|
10995
|
+
composed: event.composed,
|
|
10996
|
+
defaultPrevented: event.defaultPrevented,
|
|
10997
|
+
eventPhase: event.eventPhase,
|
|
10998
|
+
timeStamp: event.timeStamp,
|
|
10999
|
+
returnValue: eventWithErrorDetails.returnValue,
|
|
11000
|
+
cancelBubble: eventWithErrorDetails.cancelBubble
|
|
11001
|
+
};
|
|
11002
|
+
for (const property of [
|
|
11003
|
+
"message",
|
|
11004
|
+
"filename",
|
|
11005
|
+
"lineno",
|
|
11006
|
+
"colno"
|
|
11007
|
+
]){
|
|
11008
|
+
const value = eventWithErrorDetails[property];
|
|
11009
|
+
if (void 0 !== value) details[property] = value;
|
|
11010
|
+
}
|
|
11011
|
+
if (eventWithErrorDetails.error instanceof Error) details.error = serializeError(eventWithErrorDetails.error);
|
|
11012
|
+
if (event.target) {
|
|
11013
|
+
const target = event.target;
|
|
11014
|
+
const targetDetails = {
|
|
11015
|
+
constructor: target.constructor.name
|
|
11016
|
+
};
|
|
11017
|
+
for (const property of [
|
|
11018
|
+
"url",
|
|
11019
|
+
"readyState",
|
|
11020
|
+
"protocol",
|
|
11021
|
+
"extensions",
|
|
11022
|
+
"binaryType",
|
|
11023
|
+
"bufferedAmount"
|
|
11024
|
+
]){
|
|
11025
|
+
const value = target[property];
|
|
11026
|
+
if (void 0 !== value) targetDetails[property] = value;
|
|
11027
|
+
}
|
|
11028
|
+
details.target = targetDetails;
|
|
11029
|
+
}
|
|
11030
|
+
return details;
|
|
11031
|
+
}
|
|
11032
|
+
const error_getEventDetails = getEventDetails;
|
|
10987
11033
|
function inspect(element) {
|
|
10988
11034
|
return util_default().inspect(element, {
|
|
10989
11035
|
colors: false,
|
|
@@ -10999,6 +11045,7 @@ var __webpack_exports__ = {};
|
|
|
10999
11045
|
else if (anything.className) return `.${anything.className}`;
|
|
11000
11046
|
return "(No HTML identifier available)";
|
|
11001
11047
|
}
|
|
11048
|
+
if ("u" > typeof Event && anything instanceof Event) return inspect(error_getEventDetails(anything));
|
|
11002
11049
|
return inspect(anything);
|
|
11003
11050
|
}
|
|
11004
11051
|
const util_pretty = pretty;
|
|
@@ -17596,7 +17643,7 @@ var __webpack_exports__ = {};
|
|
|
17596
17643
|
this.connectionTimeout = void 0;
|
|
17597
17644
|
}
|
|
17598
17645
|
failConnection(params) {
|
|
17599
|
-
var _ref, _ref1;
|
|
17646
|
+
var _ref, _this_unloaded, _this_userMediaLoaded, _ref1;
|
|
17600
17647
|
if (this.connectionFailed || this.connected || this.unloaded) return;
|
|
17601
17648
|
this.connectionFailed = true;
|
|
17602
17649
|
this.connecting = false;
|
|
@@ -17605,10 +17652,27 @@ var __webpack_exports__ = {};
|
|
|
17605
17652
|
const online = navigator.onLine;
|
|
17606
17653
|
const elapsedMs = this.connectingStartedAt ? Date.now() - this.connectingStartedAt : void 0;
|
|
17607
17654
|
const closeEvent = this.lastCloseEvent;
|
|
17608
|
-
const
|
|
17655
|
+
const socketError = this.lastSocketError;
|
|
17656
|
+
const diagnosticLines = [
|
|
17657
|
+
` • cause: ${cause}`,
|
|
17658
|
+
` • closeCode: ${null != (_ref = null == closeEvent ? void 0 : closeEvent.code) ? _ref : "undefined"}`,
|
|
17659
|
+
` • closeReason: ${(null == closeEvent ? void 0 : closeEvent.reason) || "undefined"}`,
|
|
17660
|
+
` • elapsedMs: ${null != elapsedMs ? elapsedMs : "undefined"}`,
|
|
17661
|
+
` • online: ${online}`,
|
|
17662
|
+
` • unloaded: ${null != (_this_unloaded = this.unloaded) ? _this_unloaded : "undefined"}`,
|
|
17663
|
+
` • userMediaLoaded: ${null != (_this_userMediaLoaded = this.userMediaLoaded) ? _this_userMediaLoaded : "undefined"}`,
|
|
17664
|
+
` • userMediaLoading: ${this.userMediaLoading}`,
|
|
17665
|
+
` • wasClean: ${null != (_ref1 = null == closeEvent ? void 0 : closeEvent.wasClean) ? _ref1 : "undefined"}`,
|
|
17666
|
+
` • socketError: ${socketError ? util_pretty(socketError) : "undefined"}`
|
|
17667
|
+
];
|
|
17668
|
+
const debugLine = [
|
|
17669
|
+
"🔎 Recorder: failConnection() diagnostic",
|
|
17670
|
+
...diagnosticLines
|
|
17671
|
+
].join("\n");
|
|
17609
17672
|
this.options.logger.debug(debugLine);
|
|
17610
17673
|
let explanation;
|
|
17611
17674
|
if (online) if ("timeout" === cause) explanation = `The server at ${url2Connect} did not respond within ${this.options.timeouts.connection}ms, even though your device is online. This usually points to a firewall or proxy silently dropping the connection. Please try a different network. If the problem persists, contact us.`;
|
|
17675
|
+
else if ("error" === cause) explanation = `The WebSocket reported an error while connecting to ${url2Connect}. Details: ${util_pretty(null != socketError ? socketError : {})} Please check your internet connection and try again. If the problem persists, contact us.`;
|
|
17612
17676
|
else {
|
|
17613
17677
|
const closeSuffix = closeEvent ? ` (code ${closeEvent.code})` : "";
|
|
17614
17678
|
explanation = `Connection to ${url2Connect} is closed${closeSuffix}. Please check your internet connection and try again. If the problem persists, contact us.`;
|
|
@@ -17621,7 +17685,10 @@ var __webpack_exports__ = {};
|
|
|
17621
17685
|
const err = error_createError({
|
|
17622
17686
|
message: "Unable to connect to the server",
|
|
17623
17687
|
explanation,
|
|
17624
|
-
options: this.options
|
|
17688
|
+
options: this.options,
|
|
17689
|
+
exc: socketError ? new Error("WebSocket connection error", {
|
|
17690
|
+
cause: socketError
|
|
17691
|
+
}) : void 0
|
|
17625
17692
|
});
|
|
17626
17693
|
this.emit("ERROR", {
|
|
17627
17694
|
err
|
|
@@ -17707,6 +17774,7 @@ var __webpack_exports__ = {};
|
|
|
17707
17774
|
this.connectionFailed = false;
|
|
17708
17775
|
this.connectingStartedAt = Date.now();
|
|
17709
17776
|
this.lastCloseEvent = void 0;
|
|
17777
|
+
this.lastSocketError = void 0;
|
|
17710
17778
|
this.emit("CONNECTING");
|
|
17711
17779
|
let url2Connect;
|
|
17712
17780
|
try {
|
|
@@ -17737,6 +17805,9 @@ var __webpack_exports__ = {};
|
|
|
17737
17805
|
wasClean: event.wasClean
|
|
17738
17806
|
};
|
|
17739
17807
|
});
|
|
17808
|
+
nativeSocket.addEventListener("error", (event)=>{
|
|
17809
|
+
this.lastSocketError = error_getEventDetails(event);
|
|
17810
|
+
});
|
|
17740
17811
|
} catch (exc) {
|
|
17741
17812
|
this.connecting = this.connected = false;
|
|
17742
17813
|
const diagnostic = error_getWebSocketDiagnostic(url2Connect);
|
|
@@ -17776,11 +17847,11 @@ var __webpack_exports__ = {};
|
|
|
17776
17847
|
});
|
|
17777
17848
|
}, connectionTimeoutMs);
|
|
17778
17849
|
this.stream.on("close", ()=>{
|
|
17779
|
-
this.options.logger.debug(`${PIPE_SYMBOL}Stream has closed, connecting=${this.connecting}, connected=${this.connected}
|
|
17780
|
-
const tryReconnect = this.
|
|
17850
|
+
this.options.logger.debug(`${PIPE_SYMBOL}Stream has closed, connecting=${this.connecting}, connected=${this.connected}, userMediaLoaded=${this.userMediaLoaded}`);
|
|
17851
|
+
const tryReconnect = this.connected && this.userMediaLoaded;
|
|
17781
17852
|
this.connected = false;
|
|
17782
17853
|
if (tryReconnect) this.initSocket();
|
|
17783
|
-
else window.setTimeout(()=>{
|
|
17854
|
+
else if (!this.connecting) window.setTimeout(()=>{
|
|
17784
17855
|
this.failConnection({
|
|
17785
17856
|
url2Connect,
|
|
17786
17857
|
cause: "closed"
|
|
@@ -17818,7 +17889,25 @@ var __webpack_exports__ = {};
|
|
|
17818
17889
|
}
|
|
17819
17890
|
});
|
|
17820
17891
|
this.stream.on("error", (err)=>{
|
|
17892
|
+
var _this_lastSocketError;
|
|
17893
|
+
if ("u" > typeof Event && err instanceof Event) this.lastSocketError = error_getEventDetails(err);
|
|
17894
|
+
else this.lastSocketError = serializeError(err);
|
|
17821
17895
|
this.options.logger.debug(`${PIPE_SYMBOL}Stream *error* event emitted: ${util_pretty(err)}`);
|
|
17896
|
+
if (!this.connected) return void this.failConnection({
|
|
17897
|
+
url2Connect,
|
|
17898
|
+
cause: "error"
|
|
17899
|
+
});
|
|
17900
|
+
const streamError = err instanceof Error ? err : new Error("WebSocket stream emitted an error event", {
|
|
17901
|
+
cause: null != (_this_lastSocketError = this.lastSocketError) ? _this_lastSocketError : err
|
|
17902
|
+
});
|
|
17903
|
+
this.emit("ERROR", {
|
|
17904
|
+
err: error_createError({
|
|
17905
|
+
message: "WebSocket stream error",
|
|
17906
|
+
explanation: `The WebSocket stream emitted an error event. Details: ${util_pretty(err)}`,
|
|
17907
|
+
options: this.options,
|
|
17908
|
+
exc: streamError
|
|
17909
|
+
})
|
|
17910
|
+
});
|
|
17822
17911
|
});
|
|
17823
17912
|
this.stream.on("drain", ()=>{
|
|
17824
17913
|
this.options.logger.debug(`${PIPE_SYMBOL}Stream *drain* event emitted (should not happen!)`);
|
|
@@ -18567,7 +18656,7 @@ var __webpack_exports__ = {};
|
|
|
18567
18656
|
return this.userMediaLoaded;
|
|
18568
18657
|
}
|
|
18569
18658
|
constructor(visuals, replay, options){
|
|
18570
|
-
super("Recorder", options), recorder_define_property(this, "visuals", void 0), recorder_define_property(this, "replay", void 0), recorder_define_property(this, "loop", void 0), recorder_define_property(this, "originalAnimationFrameObject", void 0), recorder_define_property(this, "samplesCount", 0), recorder_define_property(this, "framesCount", 0), recorder_define_property(this, "recordingStats", void 0), recorder_define_property(this, "confirmedFrameNumber", 0), recorder_define_property(this, "confirmedSampleNumber", 0), recorder_define_property(this, "recorderElement", void 0), recorder_define_property(this, "userMedia", void 0), recorder_define_property(this, "userMediaTimeout", void 0), recorder_define_property(this, "retryTimeout", void 0), recorder_define_property(this, "connectionTimeout", void 0), recorder_define_property(this, "frameProgress", void 0), recorder_define_property(this, "sampleProgress", void 0), recorder_define_property(this, "canvas", void 0), recorder_define_property(this, "ctx", void 0), recorder_define_property(this, "userMediaLoaded", void 0), recorder_define_property(this, "userMediaLoading", false), recorder_define_property(this, "submitting", false), recorder_define_property(this, "unloaded", void 0), recorder_define_property(this, "stopTime", void 0), recorder_define_property(this, "stream", void 0), recorder_define_property(this, "connecting", false), recorder_define_property(this, "connected", false), recorder_define_property(this, "connectionFailed", false), recorder_define_property(this, "blocking", false), recorder_define_property(this, "built", false), recorder_define_property(this, "key", void 0), recorder_define_property(this, "waitingTime", void 0), recorder_define_property(this, "connectingStartedAt", void 0), recorder_define_property(this, "lastCloseEvent", void 0), recorder_define_property(this, "pingInterval", void 0), recorder_define_property(this, "frame", void 0), recorder_define_property(this, "recordingBuffer", void 0), recorder_define_property(this, "facingMode", void 0);
|
|
18659
|
+
super("Recorder", options), recorder_define_property(this, "visuals", void 0), recorder_define_property(this, "replay", void 0), recorder_define_property(this, "loop", void 0), recorder_define_property(this, "originalAnimationFrameObject", void 0), recorder_define_property(this, "samplesCount", 0), recorder_define_property(this, "framesCount", 0), recorder_define_property(this, "recordingStats", void 0), recorder_define_property(this, "confirmedFrameNumber", 0), recorder_define_property(this, "confirmedSampleNumber", 0), recorder_define_property(this, "recorderElement", void 0), recorder_define_property(this, "userMedia", void 0), recorder_define_property(this, "userMediaTimeout", void 0), recorder_define_property(this, "retryTimeout", void 0), recorder_define_property(this, "connectionTimeout", void 0), recorder_define_property(this, "frameProgress", void 0), recorder_define_property(this, "sampleProgress", void 0), recorder_define_property(this, "canvas", void 0), recorder_define_property(this, "ctx", void 0), recorder_define_property(this, "userMediaLoaded", void 0), recorder_define_property(this, "userMediaLoading", false), recorder_define_property(this, "submitting", false), recorder_define_property(this, "unloaded", void 0), recorder_define_property(this, "stopTime", void 0), recorder_define_property(this, "stream", void 0), recorder_define_property(this, "connecting", false), recorder_define_property(this, "connected", false), recorder_define_property(this, "connectionFailed", false), recorder_define_property(this, "blocking", false), recorder_define_property(this, "built", false), recorder_define_property(this, "key", void 0), recorder_define_property(this, "waitingTime", void 0), recorder_define_property(this, "connectingStartedAt", void 0), recorder_define_property(this, "lastCloseEvent", void 0), recorder_define_property(this, "lastSocketError", void 0), recorder_define_property(this, "pingInterval", void 0), recorder_define_property(this, "frame", void 0), recorder_define_property(this, "recordingBuffer", void 0), recorder_define_property(this, "facingMode", void 0);
|
|
18571
18660
|
this.visuals = visuals;
|
|
18572
18661
|
this.replay = replay;
|
|
18573
18662
|
this.facingMode = options.video.facingMode;
|
package/dist/esm/index.js
CHANGED
|
@@ -3619,7 +3619,7 @@ const constants = {
|
|
|
3619
3619
|
}
|
|
3620
3620
|
};
|
|
3621
3621
|
var package_namespaceObject = {
|
|
3622
|
-
rE: "15.7.
|
|
3622
|
+
rE: "15.7.14"
|
|
3623
3623
|
};
|
|
3624
3624
|
function isAudioEnabled(options) {
|
|
3625
3625
|
return Boolean(options.audio.enabled);
|
|
@@ -3631,6 +3631,52 @@ function setAudioEnabled(enabled, options) {
|
|
|
3631
3631
|
function isAutoPauseEnabled(options) {
|
|
3632
3632
|
return options.enableAutoPause && options.enablePause;
|
|
3633
3633
|
}
|
|
3634
|
+
function getEventDetails(event) {
|
|
3635
|
+
const eventWithErrorDetails = event;
|
|
3636
|
+
const details = {
|
|
3637
|
+
constructor: event.constructor.name,
|
|
3638
|
+
type: event.type,
|
|
3639
|
+
isTrusted: event.isTrusted,
|
|
3640
|
+
bubbles: event.bubbles,
|
|
3641
|
+
cancelable: event.cancelable,
|
|
3642
|
+
composed: event.composed,
|
|
3643
|
+
defaultPrevented: event.defaultPrevented,
|
|
3644
|
+
eventPhase: event.eventPhase,
|
|
3645
|
+
timeStamp: event.timeStamp,
|
|
3646
|
+
returnValue: eventWithErrorDetails.returnValue,
|
|
3647
|
+
cancelBubble: eventWithErrorDetails.cancelBubble
|
|
3648
|
+
};
|
|
3649
|
+
for (const property of [
|
|
3650
|
+
"message",
|
|
3651
|
+
"filename",
|
|
3652
|
+
"lineno",
|
|
3653
|
+
"colno"
|
|
3654
|
+
]){
|
|
3655
|
+
const value = eventWithErrorDetails[property];
|
|
3656
|
+
if (void 0 !== value) details[property] = value;
|
|
3657
|
+
}
|
|
3658
|
+
if (eventWithErrorDetails.error instanceof Error) details.error = serializeError(eventWithErrorDetails.error);
|
|
3659
|
+
if (event.target) {
|
|
3660
|
+
const target = event.target;
|
|
3661
|
+
const targetDetails = {
|
|
3662
|
+
constructor: target.constructor.name
|
|
3663
|
+
};
|
|
3664
|
+
for (const property of [
|
|
3665
|
+
"url",
|
|
3666
|
+
"readyState",
|
|
3667
|
+
"protocol",
|
|
3668
|
+
"extensions",
|
|
3669
|
+
"binaryType",
|
|
3670
|
+
"bufferedAmount"
|
|
3671
|
+
]){
|
|
3672
|
+
const value = target[property];
|
|
3673
|
+
if (void 0 !== value) targetDetails[property] = value;
|
|
3674
|
+
}
|
|
3675
|
+
details.target = targetDetails;
|
|
3676
|
+
}
|
|
3677
|
+
return details;
|
|
3678
|
+
}
|
|
3679
|
+
const error_getEventDetails = getEventDetails;
|
|
3634
3680
|
const util = __webpack_require__("Sy");
|
|
3635
3681
|
var util_default = /*#__PURE__*/ __webpack_require__.n(util);
|
|
3636
3682
|
function inspect(element) {
|
|
@@ -3648,6 +3694,7 @@ function pretty(anything) {
|
|
|
3648
3694
|
else if (anything.className) return `.${anything.className}`;
|
|
3649
3695
|
return "(No HTML identifier available)";
|
|
3650
3696
|
}
|
|
3697
|
+
if ("u" > typeof Event && anything instanceof Event) return inspect(error_getEventDetails(anything));
|
|
3651
3698
|
return inspect(anything);
|
|
3652
3699
|
}
|
|
3653
3700
|
const util_pretty = pretty;
|
|
@@ -6627,10 +6674,27 @@ class Recorder extends util_Despot {
|
|
|
6627
6674
|
const online = navigator.onLine;
|
|
6628
6675
|
const elapsedMs = this.connectingStartedAt ? Date.now() - this.connectingStartedAt : void 0;
|
|
6629
6676
|
const closeEvent = this.lastCloseEvent;
|
|
6630
|
-
const
|
|
6677
|
+
const socketError = this.lastSocketError;
|
|
6678
|
+
const diagnosticLines = [
|
|
6679
|
+
` • cause: ${cause}`,
|
|
6680
|
+
` • closeCode: ${closeEvent?.code ?? "undefined"}`,
|
|
6681
|
+
` • closeReason: ${closeEvent?.reason || "undefined"}`,
|
|
6682
|
+
` • elapsedMs: ${elapsedMs ?? "undefined"}`,
|
|
6683
|
+
` • online: ${online}`,
|
|
6684
|
+
` • unloaded: ${this.unloaded ?? "undefined"}`,
|
|
6685
|
+
` • userMediaLoaded: ${this.userMediaLoaded ?? "undefined"}`,
|
|
6686
|
+
` • userMediaLoading: ${this.userMediaLoading}`,
|
|
6687
|
+
` • wasClean: ${closeEvent?.wasClean ?? "undefined"}`,
|
|
6688
|
+
` • socketError: ${socketError ? util_pretty(socketError) : "undefined"}`
|
|
6689
|
+
];
|
|
6690
|
+
const debugLine = [
|
|
6691
|
+
"🔎 Recorder: failConnection() diagnostic",
|
|
6692
|
+
...diagnosticLines
|
|
6693
|
+
].join("\n");
|
|
6631
6694
|
this.options.logger.debug(debugLine);
|
|
6632
6695
|
let explanation;
|
|
6633
6696
|
if (online) if ("timeout" === cause) explanation = `The server at ${url2Connect} did not respond within ${this.options.timeouts.connection}ms, even though your device is online. This usually points to a firewall or proxy silently dropping the connection. Please try a different network. If the problem persists, contact us.`;
|
|
6697
|
+
else if ("error" === cause) explanation = `The WebSocket reported an error while connecting to ${url2Connect}. Details: ${util_pretty(socketError ?? {})} Please check your internet connection and try again. If the problem persists, contact us.`;
|
|
6634
6698
|
else {
|
|
6635
6699
|
const closeSuffix = closeEvent ? ` (code ${closeEvent.code})` : "";
|
|
6636
6700
|
explanation = `Connection to ${url2Connect} is closed${closeSuffix}. Please check your internet connection and try again. If the problem persists, contact us.`;
|
|
@@ -6643,7 +6707,10 @@ class Recorder extends util_Despot {
|
|
|
6643
6707
|
const err = error_createError({
|
|
6644
6708
|
message: "Unable to connect to the server",
|
|
6645
6709
|
explanation,
|
|
6646
|
-
options: this.options
|
|
6710
|
+
options: this.options,
|
|
6711
|
+
exc: socketError ? new Error("WebSocket connection error", {
|
|
6712
|
+
cause: socketError
|
|
6713
|
+
}) : void 0
|
|
6647
6714
|
});
|
|
6648
6715
|
this.emit("ERROR", {
|
|
6649
6716
|
err
|
|
@@ -6728,6 +6795,7 @@ class Recorder extends util_Despot {
|
|
|
6728
6795
|
this.connectionFailed = false;
|
|
6729
6796
|
this.connectingStartedAt = Date.now();
|
|
6730
6797
|
this.lastCloseEvent = void 0;
|
|
6798
|
+
this.lastSocketError = void 0;
|
|
6731
6799
|
this.emit("CONNECTING");
|
|
6732
6800
|
let url2Connect;
|
|
6733
6801
|
try {
|
|
@@ -6758,6 +6826,9 @@ class Recorder extends util_Despot {
|
|
|
6758
6826
|
wasClean: event.wasClean
|
|
6759
6827
|
};
|
|
6760
6828
|
});
|
|
6829
|
+
nativeSocket.addEventListener("error", (event)=>{
|
|
6830
|
+
this.lastSocketError = error_getEventDetails(event);
|
|
6831
|
+
});
|
|
6761
6832
|
} catch (exc) {
|
|
6762
6833
|
this.connecting = this.connected = false;
|
|
6763
6834
|
const diagnostic = error_getWebSocketDiagnostic(url2Connect);
|
|
@@ -6797,11 +6868,11 @@ class Recorder extends util_Despot {
|
|
|
6797
6868
|
});
|
|
6798
6869
|
}, connectionTimeoutMs);
|
|
6799
6870
|
this.stream.on("close", ()=>{
|
|
6800
|
-
this.options.logger.debug(`${PIPE_SYMBOL}Stream has closed, connecting=${this.connecting}, connected=${this.connected}
|
|
6801
|
-
const tryReconnect = this.
|
|
6871
|
+
this.options.logger.debug(`${PIPE_SYMBOL}Stream has closed, connecting=${this.connecting}, connected=${this.connected}, userMediaLoaded=${this.userMediaLoaded}`);
|
|
6872
|
+
const tryReconnect = this.connected && this.userMediaLoaded;
|
|
6802
6873
|
this.connected = false;
|
|
6803
6874
|
if (tryReconnect) this.initSocket();
|
|
6804
|
-
else window.setTimeout(()=>{
|
|
6875
|
+
else if (!this.connecting) window.setTimeout(()=>{
|
|
6805
6876
|
this.failConnection({
|
|
6806
6877
|
url2Connect,
|
|
6807
6878
|
cause: "closed"
|
|
@@ -6838,7 +6909,24 @@ class Recorder extends util_Despot {
|
|
|
6838
6909
|
}
|
|
6839
6910
|
});
|
|
6840
6911
|
this.stream.on("error", (err)=>{
|
|
6912
|
+
if ("u" > typeof Event && err instanceof Event) this.lastSocketError = error_getEventDetails(err);
|
|
6913
|
+
else this.lastSocketError = serializeError(err);
|
|
6841
6914
|
this.options.logger.debug(`${PIPE_SYMBOL}Stream *error* event emitted: ${util_pretty(err)}`);
|
|
6915
|
+
if (!this.connected) return void this.failConnection({
|
|
6916
|
+
url2Connect,
|
|
6917
|
+
cause: "error"
|
|
6918
|
+
});
|
|
6919
|
+
const streamError = err instanceof Error ? err : new Error("WebSocket stream emitted an error event", {
|
|
6920
|
+
cause: this.lastSocketError ?? err
|
|
6921
|
+
});
|
|
6922
|
+
this.emit("ERROR", {
|
|
6923
|
+
err: error_createError({
|
|
6924
|
+
message: "WebSocket stream error",
|
|
6925
|
+
explanation: `The WebSocket stream emitted an error event. Details: ${util_pretty(err)}`,
|
|
6926
|
+
options: this.options,
|
|
6927
|
+
exc: streamError
|
|
6928
|
+
})
|
|
6929
|
+
});
|
|
6842
6930
|
});
|
|
6843
6931
|
this.stream.on("drain", ()=>{
|
|
6844
6932
|
this.options.logger.debug(`${PIPE_SYMBOL}Stream *drain* event emitted (should not happen!)`);
|
|
@@ -7572,7 +7660,7 @@ class Recorder extends util_Despot {
|
|
|
7572
7660
|
return this.userMediaLoaded;
|
|
7573
7661
|
}
|
|
7574
7662
|
constructor(visuals, replay, options){
|
|
7575
|
-
super("Recorder", options), recorder_define_property(this, "visuals", void 0), recorder_define_property(this, "replay", void 0), recorder_define_property(this, "loop", void 0), recorder_define_property(this, "originalAnimationFrameObject", void 0), recorder_define_property(this, "samplesCount", 0), recorder_define_property(this, "framesCount", 0), recorder_define_property(this, "recordingStats", void 0), recorder_define_property(this, "confirmedFrameNumber", 0), recorder_define_property(this, "confirmedSampleNumber", 0), recorder_define_property(this, "recorderElement", void 0), recorder_define_property(this, "userMedia", void 0), recorder_define_property(this, "userMediaTimeout", void 0), recorder_define_property(this, "retryTimeout", void 0), recorder_define_property(this, "connectionTimeout", void 0), recorder_define_property(this, "frameProgress", void 0), recorder_define_property(this, "sampleProgress", void 0), recorder_define_property(this, "canvas", void 0), recorder_define_property(this, "ctx", void 0), recorder_define_property(this, "userMediaLoaded", void 0), recorder_define_property(this, "userMediaLoading", false), recorder_define_property(this, "submitting", false), recorder_define_property(this, "unloaded", void 0), recorder_define_property(this, "stopTime", void 0), recorder_define_property(this, "stream", void 0), recorder_define_property(this, "connecting", false), recorder_define_property(this, "connected", false), recorder_define_property(this, "connectionFailed", false), recorder_define_property(this, "blocking", false), recorder_define_property(this, "built", false), recorder_define_property(this, "key", void 0), recorder_define_property(this, "waitingTime", void 0), recorder_define_property(this, "connectingStartedAt", void 0), recorder_define_property(this, "lastCloseEvent", void 0), recorder_define_property(this, "pingInterval", void 0), recorder_define_property(this, "frame", void 0), recorder_define_property(this, "recordingBuffer", void 0), recorder_define_property(this, "facingMode", void 0);
|
|
7663
|
+
super("Recorder", options), recorder_define_property(this, "visuals", void 0), recorder_define_property(this, "replay", void 0), recorder_define_property(this, "loop", void 0), recorder_define_property(this, "originalAnimationFrameObject", void 0), recorder_define_property(this, "samplesCount", 0), recorder_define_property(this, "framesCount", 0), recorder_define_property(this, "recordingStats", void 0), recorder_define_property(this, "confirmedFrameNumber", 0), recorder_define_property(this, "confirmedSampleNumber", 0), recorder_define_property(this, "recorderElement", void 0), recorder_define_property(this, "userMedia", void 0), recorder_define_property(this, "userMediaTimeout", void 0), recorder_define_property(this, "retryTimeout", void 0), recorder_define_property(this, "connectionTimeout", void 0), recorder_define_property(this, "frameProgress", void 0), recorder_define_property(this, "sampleProgress", void 0), recorder_define_property(this, "canvas", void 0), recorder_define_property(this, "ctx", void 0), recorder_define_property(this, "userMediaLoaded", void 0), recorder_define_property(this, "userMediaLoading", false), recorder_define_property(this, "submitting", false), recorder_define_property(this, "unloaded", void 0), recorder_define_property(this, "stopTime", void 0), recorder_define_property(this, "stream", void 0), recorder_define_property(this, "connecting", false), recorder_define_property(this, "connected", false), recorder_define_property(this, "connectionFailed", false), recorder_define_property(this, "blocking", false), recorder_define_property(this, "built", false), recorder_define_property(this, "key", void 0), recorder_define_property(this, "waitingTime", void 0), recorder_define_property(this, "connectingStartedAt", void 0), recorder_define_property(this, "lastCloseEvent", void 0), recorder_define_property(this, "lastSocketError", void 0), recorder_define_property(this, "pingInterval", void 0), recorder_define_property(this, "frame", void 0), recorder_define_property(this, "recordingBuffer", void 0), recorder_define_property(this, "facingMode", void 0);
|
|
7576
7664
|
this.visuals = visuals;
|
|
7577
7665
|
this.replay = replay;
|
|
7578
7666
|
this.facingMode = options.video.facingMode;
|
package/dist/umd/index.js
CHANGED
|
@@ -1581,7 +1581,7 @@
|
|
|
1581
1581
|
return intrinsic;
|
|
1582
1582
|
};
|
|
1583
1583
|
},
|
|
1584
|
-
|
|
1584
|
+
rX (module1) {
|
|
1585
1585
|
module1.exports = Emitter;
|
|
1586
1586
|
function Emitter(obj) {
|
|
1587
1587
|
if (obj) return mixin(obj);
|
|
@@ -1838,7 +1838,7 @@
|
|
|
1838
1838
|
xF (module1, __unused_rspack_exports, __webpack_require__) {
|
|
1839
1839
|
"use strict";
|
|
1840
1840
|
var document1 = __webpack_require__("g");
|
|
1841
|
-
var
|
|
1841
|
+
var Event1 = __webpack_require__("cE");
|
|
1842
1842
|
var Keys = __webpack_require__("Dy");
|
|
1843
1843
|
module1.exports = Visibility;
|
|
1844
1844
|
function Visibility() {
|
|
@@ -1846,7 +1846,7 @@
|
|
|
1846
1846
|
if (!keys) return noopShim();
|
|
1847
1847
|
return {
|
|
1848
1848
|
visible: visible,
|
|
1849
|
-
onChange:
|
|
1849
|
+
onChange: Event1(listen)
|
|
1850
1850
|
};
|
|
1851
1851
|
function visible() {
|
|
1852
1852
|
return !document1[keys.hidden];
|
|
@@ -4874,8 +4874,8 @@
|
|
|
4874
4874
|
} : null;
|
|
4875
4875
|
},
|
|
4876
4876
|
Ne (module1) {
|
|
4877
|
-
module1.exports =
|
|
4878
|
-
function
|
|
4877
|
+
module1.exports = Event1;
|
|
4878
|
+
function Event1() {
|
|
4879
4879
|
var listeners = [];
|
|
4880
4880
|
return {
|
|
4881
4881
|
broadcast: broadcast,
|
|
@@ -4895,10 +4895,10 @@
|
|
|
4895
4895
|
}
|
|
4896
4896
|
},
|
|
4897
4897
|
cE (module1, __unused_rspack_exports, __webpack_require__) {
|
|
4898
|
-
var
|
|
4898
|
+
var Event1 = __webpack_require__("Ne");
|
|
4899
4899
|
module1.exports = Source;
|
|
4900
4900
|
function Source(broadcaster) {
|
|
4901
|
-
var tuple =
|
|
4901
|
+
var tuple = Event1();
|
|
4902
4902
|
broadcaster(tuple.broadcast);
|
|
4903
4903
|
return tuple.listen;
|
|
4904
4904
|
}
|
|
@@ -6789,7 +6789,7 @@
|
|
|
6789
6789
|
return fn;
|
|
6790
6790
|
};
|
|
6791
6791
|
},
|
|
6792
|
-
|
|
6792
|
+
x (module1, __unused_rspack_exports, __webpack_require__) {
|
|
6793
6793
|
"use strict";
|
|
6794
6794
|
var inspect = __webpack_require__("L");
|
|
6795
6795
|
var $TypeError = __webpack_require__("N");
|
|
@@ -6950,7 +6950,7 @@
|
|
|
6950
6950
|
"use strict";
|
|
6951
6951
|
var $TypeError = __webpack_require__("N");
|
|
6952
6952
|
var inspect = __webpack_require__("L");
|
|
6953
|
-
var getSideChannelList = __webpack_require__("
|
|
6953
|
+
var getSideChannelList = __webpack_require__("x");
|
|
6954
6954
|
var getSideChannelMap = __webpack_require__("J");
|
|
6955
6955
|
var getSideChannelWeakMap = __webpack_require__("c");
|
|
6956
6956
|
var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;
|
|
@@ -7047,7 +7047,7 @@
|
|
|
7047
7047
|
console.warn('Using browser-only version of superagent in non-browser environment');
|
|
7048
7048
|
root = void 0;
|
|
7049
7049
|
} else root = self;
|
|
7050
|
-
const Emitter = __webpack_require__("
|
|
7050
|
+
const Emitter = __webpack_require__("rX");
|
|
7051
7051
|
const safeStringify = __webpack_require__("X");
|
|
7052
7052
|
const qs = __webpack_require__("b");
|
|
7053
7053
|
const RequestBase = __webpack_require__("d");
|
|
@@ -10976,7 +10976,7 @@
|
|
|
10976
10976
|
var client = __webpack_require__("Q");
|
|
10977
10977
|
var client_default = /*#__PURE__*/ __webpack_require__.n(client);
|
|
10978
10978
|
var package_namespaceObject = {
|
|
10979
|
-
rE: "15.7.
|
|
10979
|
+
rE: "15.7.14"
|
|
10980
10980
|
};
|
|
10981
10981
|
function isAudioEnabled(options) {
|
|
10982
10982
|
return Boolean(options.audio.enabled);
|
|
@@ -10990,6 +10990,52 @@
|
|
|
10990
10990
|
}
|
|
10991
10991
|
var util = __webpack_require__("S");
|
|
10992
10992
|
var util_default = /*#__PURE__*/ __webpack_require__.n(util);
|
|
10993
|
+
function getEventDetails(event) {
|
|
10994
|
+
const eventWithErrorDetails = event;
|
|
10995
|
+
const details = {
|
|
10996
|
+
constructor: event.constructor.name,
|
|
10997
|
+
type: event.type,
|
|
10998
|
+
isTrusted: event.isTrusted,
|
|
10999
|
+
bubbles: event.bubbles,
|
|
11000
|
+
cancelable: event.cancelable,
|
|
11001
|
+
composed: event.composed,
|
|
11002
|
+
defaultPrevented: event.defaultPrevented,
|
|
11003
|
+
eventPhase: event.eventPhase,
|
|
11004
|
+
timeStamp: event.timeStamp,
|
|
11005
|
+
returnValue: eventWithErrorDetails.returnValue,
|
|
11006
|
+
cancelBubble: eventWithErrorDetails.cancelBubble
|
|
11007
|
+
};
|
|
11008
|
+
for (const property of [
|
|
11009
|
+
"message",
|
|
11010
|
+
"filename",
|
|
11011
|
+
"lineno",
|
|
11012
|
+
"colno"
|
|
11013
|
+
]){
|
|
11014
|
+
const value = eventWithErrorDetails[property];
|
|
11015
|
+
if (void 0 !== value) details[property] = value;
|
|
11016
|
+
}
|
|
11017
|
+
if (eventWithErrorDetails.error instanceof Error) details.error = serializeError(eventWithErrorDetails.error);
|
|
11018
|
+
if (event.target) {
|
|
11019
|
+
const target = event.target;
|
|
11020
|
+
const targetDetails = {
|
|
11021
|
+
constructor: target.constructor.name
|
|
11022
|
+
};
|
|
11023
|
+
for (const property of [
|
|
11024
|
+
"url",
|
|
11025
|
+
"readyState",
|
|
11026
|
+
"protocol",
|
|
11027
|
+
"extensions",
|
|
11028
|
+
"binaryType",
|
|
11029
|
+
"bufferedAmount"
|
|
11030
|
+
]){
|
|
11031
|
+
const value = target[property];
|
|
11032
|
+
if (void 0 !== value) targetDetails[property] = value;
|
|
11033
|
+
}
|
|
11034
|
+
details.target = targetDetails;
|
|
11035
|
+
}
|
|
11036
|
+
return details;
|
|
11037
|
+
}
|
|
11038
|
+
const error_getEventDetails = getEventDetails;
|
|
10993
11039
|
function inspect(element) {
|
|
10994
11040
|
return util_default().inspect(element, {
|
|
10995
11041
|
colors: false,
|
|
@@ -11005,6 +11051,7 @@
|
|
|
11005
11051
|
else if (anything.className) return `.${anything.className}`;
|
|
11006
11052
|
return "(No HTML identifier available)";
|
|
11007
11053
|
}
|
|
11054
|
+
if ("u" > typeof Event && anything instanceof Event) return inspect(error_getEventDetails(anything));
|
|
11008
11055
|
return inspect(anything);
|
|
11009
11056
|
}
|
|
11010
11057
|
const util_pretty = pretty;
|
|
@@ -17265,6 +17312,7 @@
|
|
|
17265
17312
|
waitingTime;
|
|
17266
17313
|
connectingStartedAt;
|
|
17267
17314
|
lastCloseEvent;
|
|
17315
|
+
lastSocketError;
|
|
17268
17316
|
pingInterval;
|
|
17269
17317
|
frame;
|
|
17270
17318
|
recordingBuffer;
|
|
@@ -17376,10 +17424,27 @@
|
|
|
17376
17424
|
const online = navigator.onLine;
|
|
17377
17425
|
const elapsedMs = this.connectingStartedAt ? Date.now() - this.connectingStartedAt : void 0;
|
|
17378
17426
|
const closeEvent = this.lastCloseEvent;
|
|
17379
|
-
const
|
|
17427
|
+
const socketError = this.lastSocketError;
|
|
17428
|
+
const diagnosticLines = [
|
|
17429
|
+
` • cause: ${cause}`,
|
|
17430
|
+
` • closeCode: ${closeEvent?.code ?? "undefined"}`,
|
|
17431
|
+
` • closeReason: ${closeEvent?.reason || "undefined"}`,
|
|
17432
|
+
` • elapsedMs: ${elapsedMs ?? "undefined"}`,
|
|
17433
|
+
` • online: ${online}`,
|
|
17434
|
+
` • unloaded: ${this.unloaded ?? "undefined"}`,
|
|
17435
|
+
` • userMediaLoaded: ${this.userMediaLoaded ?? "undefined"}`,
|
|
17436
|
+
` • userMediaLoading: ${this.userMediaLoading}`,
|
|
17437
|
+
` • wasClean: ${closeEvent?.wasClean ?? "undefined"}`,
|
|
17438
|
+
` • socketError: ${socketError ? util_pretty(socketError) : "undefined"}`
|
|
17439
|
+
];
|
|
17440
|
+
const debugLine = [
|
|
17441
|
+
"🔎 Recorder: failConnection() diagnostic",
|
|
17442
|
+
...diagnosticLines
|
|
17443
|
+
].join("\n");
|
|
17380
17444
|
this.options.logger.debug(debugLine);
|
|
17381
17445
|
let explanation;
|
|
17382
17446
|
if (online) if ("timeout" === cause) explanation = `The server at ${url2Connect} did not respond within ${this.options.timeouts.connection}ms, even though your device is online. This usually points to a firewall or proxy silently dropping the connection. Please try a different network. If the problem persists, contact us.`;
|
|
17447
|
+
else if ("error" === cause) explanation = `The WebSocket reported an error while connecting to ${url2Connect}. Details: ${util_pretty(socketError ?? {})} Please check your internet connection and try again. If the problem persists, contact us.`;
|
|
17383
17448
|
else {
|
|
17384
17449
|
const closeSuffix = closeEvent ? ` (code ${closeEvent.code})` : "";
|
|
17385
17450
|
explanation = `Connection to ${url2Connect} is closed${closeSuffix}. Please check your internet connection and try again. If the problem persists, contact us.`;
|
|
@@ -17392,7 +17457,10 @@
|
|
|
17392
17457
|
const err = error_createError({
|
|
17393
17458
|
message: "Unable to connect to the server",
|
|
17394
17459
|
explanation,
|
|
17395
|
-
options: this.options
|
|
17460
|
+
options: this.options,
|
|
17461
|
+
exc: socketError ? new Error("WebSocket connection error", {
|
|
17462
|
+
cause: socketError
|
|
17463
|
+
}) : void 0
|
|
17396
17464
|
});
|
|
17397
17465
|
this.emit("ERROR", {
|
|
17398
17466
|
err
|
|
@@ -17477,6 +17545,7 @@
|
|
|
17477
17545
|
this.connectionFailed = false;
|
|
17478
17546
|
this.connectingStartedAt = Date.now();
|
|
17479
17547
|
this.lastCloseEvent = void 0;
|
|
17548
|
+
this.lastSocketError = void 0;
|
|
17480
17549
|
this.emit("CONNECTING");
|
|
17481
17550
|
let url2Connect;
|
|
17482
17551
|
try {
|
|
@@ -17507,6 +17576,9 @@
|
|
|
17507
17576
|
wasClean: event.wasClean
|
|
17508
17577
|
};
|
|
17509
17578
|
});
|
|
17579
|
+
nativeSocket.addEventListener("error", (event)=>{
|
|
17580
|
+
this.lastSocketError = error_getEventDetails(event);
|
|
17581
|
+
});
|
|
17510
17582
|
} catch (exc) {
|
|
17511
17583
|
this.connecting = this.connected = false;
|
|
17512
17584
|
const diagnostic = error_getWebSocketDiagnostic(url2Connect);
|
|
@@ -17546,11 +17618,11 @@
|
|
|
17546
17618
|
});
|
|
17547
17619
|
}, connectionTimeoutMs);
|
|
17548
17620
|
this.stream.on("close", ()=>{
|
|
17549
|
-
this.options.logger.debug(`${PIPE_SYMBOL}Stream has closed, connecting=${this.connecting}, connected=${this.connected}
|
|
17550
|
-
const tryReconnect = this.
|
|
17621
|
+
this.options.logger.debug(`${PIPE_SYMBOL}Stream has closed, connecting=${this.connecting}, connected=${this.connected}, userMediaLoaded=${this.userMediaLoaded}`);
|
|
17622
|
+
const tryReconnect = this.connected && this.userMediaLoaded;
|
|
17551
17623
|
this.connected = false;
|
|
17552
17624
|
if (tryReconnect) this.initSocket();
|
|
17553
|
-
else window.setTimeout(()=>{
|
|
17625
|
+
else if (!this.connecting) window.setTimeout(()=>{
|
|
17554
17626
|
this.failConnection({
|
|
17555
17627
|
url2Connect,
|
|
17556
17628
|
cause: "closed"
|
|
@@ -17587,7 +17659,24 @@
|
|
|
17587
17659
|
}
|
|
17588
17660
|
});
|
|
17589
17661
|
this.stream.on("error", (err)=>{
|
|
17662
|
+
if ("u" > typeof Event && err instanceof Event) this.lastSocketError = error_getEventDetails(err);
|
|
17663
|
+
else this.lastSocketError = serializeError(err);
|
|
17590
17664
|
this.options.logger.debug(`${PIPE_SYMBOL}Stream *error* event emitted: ${util_pretty(err)}`);
|
|
17665
|
+
if (!this.connected) return void this.failConnection({
|
|
17666
|
+
url2Connect,
|
|
17667
|
+
cause: "error"
|
|
17668
|
+
});
|
|
17669
|
+
const streamError = err instanceof Error ? err : new Error("WebSocket stream emitted an error event", {
|
|
17670
|
+
cause: this.lastSocketError ?? err
|
|
17671
|
+
});
|
|
17672
|
+
this.emit("ERROR", {
|
|
17673
|
+
err: error_createError({
|
|
17674
|
+
message: "WebSocket stream error",
|
|
17675
|
+
explanation: `The WebSocket stream emitted an error event. Details: ${util_pretty(err)}`,
|
|
17676
|
+
options: this.options,
|
|
17677
|
+
exc: streamError
|
|
17678
|
+
})
|
|
17679
|
+
});
|
|
17591
17680
|
});
|
|
17592
17681
|
this.stream.on("drain", ()=>{
|
|
17593
17682
|
this.options.logger.debug(`${PIPE_SYMBOL}Stream *drain* event emitted (should not happen!)`);
|