@checkly/playwright-core 1.41.2-beta.6 → 1.41.23
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/lib/browserServerImpl.js +1 -1
- package/lib/cli/driver.js +11 -3
- package/lib/cli/program.js +13 -5
- package/lib/client/android.js +1 -1
- package/lib/client/artifact.js +2 -2
- package/lib/client/browserContext.js +5 -5
- package/lib/client/browserType.js +1 -1
- package/lib/client/channelOwner.js +3 -3
- package/lib/client/clientHelper.js +5 -1
- package/lib/client/connection.js +2 -2
- package/lib/client/consoleMessage.js +3 -3
- package/lib/client/electron.js +3 -0
- package/lib/client/events.js +1 -0
- package/lib/client/fetch.js +3 -3
- package/lib/client/frame.js +4 -3
- package/lib/client/harRouter.js +7 -1
- package/lib/client/locator.js +2 -2
- package/lib/client/page.js +26 -7
- package/lib/common/socksProxy.js +12 -17
- package/lib/generated/consoleApiSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/recorderSource.js +1 -1
- package/lib/outofprocess.js +3 -3
- package/lib/protocol/validator.js +46 -29
- package/lib/remote/playwrightConnection.js +2 -2
- package/lib/remote/playwrightServer.js +72 -166
- package/lib/server/android/android.js +2 -2
- package/lib/server/android/backendAdb.js +2 -2
- package/lib/server/browser.js +2 -2
- package/lib/server/browserContext.js +8 -9
- package/lib/server/browserType.js +5 -5
- package/lib/server/chromium/chromium.js +5 -4
- package/lib/server/chromium/crBrowser.js +2 -3
- package/lib/server/chromium/crConnection.js +2 -2
- package/lib/server/chromium/crExecutionContext.js +2 -2
- package/lib/server/chromium/crInput.js +2 -2
- package/lib/server/chromium/crNetworkManager.js +10 -11
- package/lib/server/chromium/crPage.js +48 -7
- package/lib/server/chromium/crServiceWorker.js +2 -3
- package/lib/server/console.js +1 -3
- package/lib/server/debugController.js +0 -3
- package/lib/server/deviceDescriptorsSource.json +50 -50
- package/lib/server/dispatchers/browserContextDispatcher.js +7 -6
- package/lib/server/dispatchers/dispatcher.js +19 -20
- package/lib/server/dispatchers/electronDispatcher.js +13 -0
- package/lib/server/dispatchers/frameDispatcher.js +0 -6
- package/lib/server/dispatchers/localUtilsDispatcher.js +4 -4
- package/lib/server/dispatchers/pageDispatcher.js +14 -10
- package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
- package/lib/server/dispatchers/writableStreamDispatcher.js +2 -2
- package/lib/server/dom.js +133 -170
- package/lib/server/electron/electron.js +40 -14
- package/lib/server/electron/loader.js +4 -2
- package/lib/server/fetch.js +4 -4
- package/lib/server/firefox/ffAccessibility.js +2 -1
- package/lib/server/firefox/ffBrowser.js +3 -3
- package/lib/server/firefox/ffConnection.js +1 -1
- package/lib/server/firefox/ffExecutionContext.js +2 -2
- package/lib/server/firefox/ffNetworkManager.js +7 -7
- package/lib/server/firefox/ffPage.js +3 -5
- package/lib/server/firefox/firefox.js +2 -2
- package/lib/server/frames.js +42 -23
- package/lib/server/har/harTracer.js +6 -6
- package/lib/server/helper.js +1 -1
- package/lib/server/input.js +2 -2
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -1
- package/lib/server/javascript.js +2 -2
- package/lib/server/page.js +51 -7
- package/lib/server/pipeTransport.js +1 -1
- package/lib/server/playwright.js +1 -1
- package/lib/server/progress.js +5 -14
- package/lib/server/recorder/csharp.js +1 -1
- package/lib/server/recorder/recorderUtils.js +2 -2
- package/lib/server/recorder.js +14 -14
- package/lib/server/registry/browserFetcher.js +1 -2
- package/lib/server/registry/dependencies.js +7 -6
- package/lib/server/registry/index.js +50 -33
- package/lib/server/registry/nativeDeps.js +0 -94
- package/lib/server/registry/oopDownloadBrowserMain.js +2 -2
- package/lib/server/screenshotter.js +0 -1
- package/lib/server/socksInterceptor.js +2 -2
- package/lib/server/trace/recorder/snapshotter.js +2 -2
- package/lib/server/trace/recorder/tracing.js +12 -11
- package/lib/server/trace/test/inMemorySnapshotter.js +1 -1
- package/lib/server/trace/viewer/traceViewer.js +2 -2
- package/lib/server/transport.js +15 -13
- package/lib/server/webkit/wkBrowser.js +3 -3
- package/lib/server/webkit/wkConnection.js +1 -1
- package/lib/server/webkit/wkExecutionContext.js +2 -2
- package/lib/server/webkit/wkInput.js +2 -2
- package/lib/server/webkit/wkInterceptableRequest.js +2 -2
- package/lib/server/webkit/wkPage.js +10 -12
- package/lib/utils/comparators.js +4 -4
- package/lib/utils/fileUtils.js +4 -0
- package/lib/utils/happy-eyeballs.js +5 -4
- package/lib/utils/hostPlatform.js +1 -1
- package/lib/utils/index.js +11 -0
- package/lib/utils/isomorphic/cssParser.js +2 -2
- package/lib/utils/isomorphic/locatorParser.js +6 -4
- package/lib/utils/isomorphic/selectorParser.js +0 -1
- package/lib/utils/network.js +33 -0
- package/lib/utils/processLauncher.js +9 -2
- package/lib/utils/profiler.js +2 -2
- package/lib/utils/zipFile.js +1 -1
- package/lib/vite/htmlReport/index.html +12 -13
- package/lib/vite/recorder/assets/codeMirrorModule-Hs9-1ZG4.css +1 -0
- package/lib/vite/recorder/assets/codeMirrorModule-I9ks4y7D.js +24 -0
- package/lib/vite/recorder/assets/{index-64ce22d5.css → index-ljsTwXtJ.css} +1 -1
- package/lib/vite/recorder/assets/index-yg8ypzl6.js +47 -0
- package/lib/vite/recorder/index.html +2 -3
- package/lib/vite/traceViewer/assets/codeMirrorModule-A2_PGeGB.js +24 -0
- package/lib/vite/{recorder/assets/codeMirrorModule-85487eb6.js → traceViewer/assets/codeMirrorModule-aUzO-LID.js} +1 -1
- package/lib/vite/traceViewer/assets/wsPort-L8WBvZfK.js +69 -0
- package/lib/vite/traceViewer/assets/wsPort-uVqol1LI.js +69 -0
- package/lib/vite/traceViewer/index.4xhUWj1f.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -5
- package/lib/vite/traceViewer/index.o6j3Cv4u.js +2 -0
- package/lib/vite/traceViewer/sw.bundle.js +4 -4
- package/lib/vite/traceViewer/uiMode.PlLkrJDI.js +10 -0
- package/lib/vite/traceViewer/uiMode.html +4 -5
- package/lib/vite/traceViewer/uiMode.qpn6w4df.js +10 -0
- package/lib/vite/traceViewer/wsPort.zR1WIy9-.css +1 -0
- package/package.json +1 -1
- package/lib/vite/recorder/assets/codeMirrorModule-5d0f417c.css +0 -1
- package/lib/vite/recorder/assets/index-b14c63fe.js +0 -41
- /package/lib/vite/recorder/assets/{codicon-79f233d0.ttf → codicon-zGuYmc9o.ttf} +0 -0
package/lib/browserServerImpl.js
CHANGED
|
@@ -77,7 +77,7 @@ class BrowserServerLauncherImpl {
|
|
|
77
77
|
browserServer._disconnectForTest = () => server.close();
|
|
78
78
|
browserServer._userDataDirForTest = browser._userDataDirForTest;
|
|
79
79
|
browser.options.browserProcess.onclose = (exitCode, signal) => {
|
|
80
|
-
socksProxy === null || socksProxy === void 0
|
|
80
|
+
socksProxy === null || socksProxy === void 0 || socksProxy.close().catch(() => {});
|
|
81
81
|
server.close();
|
|
82
82
|
browserServer.emit('close', exitCode, signal);
|
|
83
83
|
};
|
package/lib/cli/driver.js
CHANGED
|
@@ -13,8 +13,8 @@ var _server = require("../server");
|
|
|
13
13
|
var _transport = require("../protocol/transport");
|
|
14
14
|
var _playwrightServer = require("../remote/playwrightServer");
|
|
15
15
|
var _processLauncher = require("../utils/processLauncher");
|
|
16
|
-
function _getRequireWildcardCache(
|
|
17
|
-
function _interopRequireWildcard(
|
|
16
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
/**
|
|
20
20
|
* Copyright (c) Microsoft Corporation.
|
|
@@ -50,7 +50,15 @@ function runDriver() {
|
|
|
50
50
|
});
|
|
51
51
|
const transport = new _transport.PipeTransport(process.stdout, process.stdin);
|
|
52
52
|
transport.onmessage = message => dispatcherConnection.dispatch(JSON.parse(message));
|
|
53
|
-
|
|
53
|
+
// Certain Language Binding JSON parsers (e.g. .NET) do not like strings with lone surrogates.
|
|
54
|
+
const isJavaScriptLanguageBinding = !process.env.PW_LANG_NAME || process.env.PW_LANG_NAME === 'javascript';
|
|
55
|
+
const replacer = !isJavaScriptLanguageBinding && String.prototype.toWellFormed ? (key, value) => {
|
|
56
|
+
if (typeof value === 'string')
|
|
57
|
+
// @ts-expect-error
|
|
58
|
+
return value.toWellFormed();
|
|
59
|
+
return value;
|
|
60
|
+
} : undefined;
|
|
61
|
+
dispatcherConnection.onmessage = message => transport.send(JSON.stringify(message, replacer));
|
|
54
62
|
transport.onclose = () => {
|
|
55
63
|
// Drop any messages during shutdown on the floor.
|
|
56
64
|
dispatcherConnection.onmessage = () => {};
|
package/lib/cli/program.js
CHANGED
|
@@ -3,7 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
Object.defineProperty(exports, "program", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _utilsBundle.program;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
7
12
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
13
|
var _os = _interopRequireDefault(require("os"));
|
|
9
14
|
var _path = _interopRequireDefault(require("path"));
|
|
@@ -15,8 +20,8 @@ var _child_process = require("child_process");
|
|
|
15
20
|
var _utils = require("../utils");
|
|
16
21
|
var _server = require("../server");
|
|
17
22
|
var _errors = require("../client/errors");
|
|
18
|
-
function _getRequireWildcardCache(
|
|
19
|
-
function _interopRequireWildcard(
|
|
23
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
24
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
20
25
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
26
|
/**
|
|
22
27
|
* Copyright (c) Microsoft Corporation.
|
|
@@ -111,6 +116,10 @@ _utilsBundle.program.command('install [browser...]').description('ensure browser
|
|
|
111
116
|
} else {
|
|
112
117
|
const forceReinstall = hasNoArguments ? false : !!options.force;
|
|
113
118
|
await _server.registry.install(executables, forceReinstall);
|
|
119
|
+
await _server.registry.validateHostRequirementsForExecutablesIfNeeded(executables, process.env.PW_LANG_NAME || 'javascript').catch(e => {
|
|
120
|
+
e.name = 'Playwright Host validation warning';
|
|
121
|
+
console.error(e);
|
|
122
|
+
});
|
|
114
123
|
}
|
|
115
124
|
} catch (e) {
|
|
116
125
|
console.log(`Failed to install browsers\n${e}`);
|
|
@@ -570,5 +579,4 @@ function buildBasePlaywrightCLICommand(cliTargetLang) {
|
|
|
570
579
|
return `${packageManagerCommand} playwright`;
|
|
571
580
|
}
|
|
572
581
|
}
|
|
573
|
-
}
|
|
574
|
-
var _default = exports.default = _utilsBundle.program;
|
|
582
|
+
}
|
package/lib/client/android.js
CHANGED
|
@@ -83,7 +83,7 @@ class Android extends _channelOwner.ChannelOwner {
|
|
|
83
83
|
let closeError;
|
|
84
84
|
const onPipeClosed = () => {
|
|
85
85
|
var _device;
|
|
86
|
-
(_device = device) === null || _device === void 0
|
|
86
|
+
(_device = device) === null || _device === void 0 || _device._didClose();
|
|
87
87
|
connection.close(closeError);
|
|
88
88
|
};
|
|
89
89
|
pipe.on('closed', onPipeClosed);
|
package/lib/client/artifact.js
CHANGED
|
@@ -8,8 +8,8 @@ var fs = _interopRequireWildcard(require("fs"));
|
|
|
8
8
|
var _stream = require("./stream");
|
|
9
9
|
var _fileUtils = require("../utils/fileUtils");
|
|
10
10
|
var _channelOwner = require("./channelOwner");
|
|
11
|
-
function _getRequireWildcardCache(
|
|
12
|
-
function _interopRequireWildcard(
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
13
|
/**
|
|
14
14
|
* Copyright (c) Microsoft Corporation.
|
|
15
15
|
*
|
|
@@ -47,8 +47,8 @@ let _Symbol$asyncDispose;
|
|
|
47
47
|
* limitations under the License.
|
|
48
48
|
*/
|
|
49
49
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
50
|
-
function _getRequireWildcardCache(
|
|
51
|
-
function _interopRequireWildcard(
|
|
50
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
51
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
52
52
|
_Symbol$asyncDispose = Symbol.asyncDispose;
|
|
53
53
|
class BrowserContext extends _channelOwner.ChannelOwner {
|
|
54
54
|
static from(context) {
|
|
@@ -79,7 +79,7 @@ class BrowserContext extends _channelOwner.ChannelOwner {
|
|
|
79
79
|
this._closeReason = void 0;
|
|
80
80
|
this._harRouters = [];
|
|
81
81
|
if (parent instanceof _browser.Browser) this._browser = parent;
|
|
82
|
-
(_this$_browser = this._browser) === null || _this$_browser === void 0
|
|
82
|
+
(_this$_browser = this._browser) === null || _this$_browser === void 0 || _this$_browser._contexts.add(this);
|
|
83
83
|
this._isChromium = ((_this$_browser2 = this._browser) === null || _this$_browser2 === void 0 ? void 0 : _this$_browser2._name) === 'chromium';
|
|
84
84
|
this.tracing = _tracing.Tracing.from(initializer.tracing);
|
|
85
85
|
this.request = _fetch.APIRequestContext.from(initializer.requestContext);
|
|
@@ -413,9 +413,9 @@ class BrowserContext extends _channelOwner.ChannelOwner {
|
|
|
413
413
|
return _cdpSession.CDPSession.from(result.session);
|
|
414
414
|
}
|
|
415
415
|
_onClose() {
|
|
416
|
-
var _this$_browserType
|
|
416
|
+
var _this$_browserType;
|
|
417
417
|
if (this._browser) this._browser._contexts.delete(this);
|
|
418
|
-
(_this$_browserType = this._browserType) === null || _this$_browserType === void 0
|
|
418
|
+
(_this$_browserType = this._browserType) === null || _this$_browserType === void 0 || (_this$_browserType = _this$_browserType._contexts) === null || _this$_browserType === void 0 || _this$_browserType.delete(this);
|
|
419
419
|
this._disposeHarRouters();
|
|
420
420
|
this.emit(_events.Events.BrowserContext.Close, this);
|
|
421
421
|
}
|
|
@@ -150,7 +150,7 @@ class BrowserType extends _channelOwner.ChannelOwner {
|
|
|
150
150
|
for (const page of context.pages()) page._onClose();
|
|
151
151
|
context._onClose();
|
|
152
152
|
}
|
|
153
|
-
(_browser2 = browser) === null || _browser2 === void 0
|
|
153
|
+
(_browser2 = browser) === null || _browser2 === void 0 || _browser2._didClose();
|
|
154
154
|
connection.close(closeError);
|
|
155
155
|
};
|
|
156
156
|
pipe.on('closed', onPipeClosed);
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.ChannelOwner = void 0;
|
|
7
7
|
var _events = require("events");
|
|
8
8
|
var _validator = require("../protocol/validator");
|
|
9
|
-
var _debugLogger = require("../
|
|
9
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
10
10
|
var _stackTrace = require("../utils/stackTrace");
|
|
11
11
|
var _utils = require("../utils");
|
|
12
12
|
var _zones = require("../utils/zones");
|
|
@@ -185,7 +185,7 @@ class ChannelOwner extends _events.EventEmitter {
|
|
|
185
185
|
const result = await _zones.zones.run('apiZone', apiZone, async () => {
|
|
186
186
|
return await func(apiZone);
|
|
187
187
|
});
|
|
188
|
-
csi === null || csi === void 0
|
|
188
|
+
csi === null || csi === void 0 || csi.onApiCallEnd(callCookie);
|
|
189
189
|
logApiCall(logger, `<= ${apiName} succeeded`, isInternal);
|
|
190
190
|
return result;
|
|
191
191
|
} catch (e) {
|
|
@@ -193,7 +193,7 @@ class ChannelOwner extends _events.EventEmitter {
|
|
|
193
193
|
if (apiName && !apiName.includes('<anonymous>')) e.message = apiName + ': ' + e.message;
|
|
194
194
|
const stackFrames = '\n' + (0, _stackTrace.stringifyStackFrames)(stackTrace.frames).join('\n') + innerError;
|
|
195
195
|
if (stackFrames.trim()) e.stack = e.message + stackFrames;else e.stack = '';
|
|
196
|
-
csi === null || csi === void 0
|
|
196
|
+
csi === null || csi === void 0 || csi.onApiCallEnd(callCookie, e);
|
|
197
197
|
logApiCall(logger, `<= ${apiName} failed`, isInternal);
|
|
198
198
|
throw e;
|
|
199
199
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.addSourceUrlToScript = addSourceUrlToScript;
|
|
6
7
|
exports.envObjectToArray = envObjectToArray;
|
|
7
8
|
exports.evaluationScript = evaluationScript;
|
|
8
9
|
var _fs = _interopRequireDefault(require("fs"));
|
|
@@ -46,8 +47,11 @@ async function evaluationScript(fun, arg, addSourceUrl = true) {
|
|
|
46
47
|
if (fun.content !== undefined) return fun.content;
|
|
47
48
|
if (fun.path !== undefined) {
|
|
48
49
|
let source = await _fs.default.promises.readFile(fun.path, 'utf8');
|
|
49
|
-
if (addSourceUrl) source
|
|
50
|
+
if (addSourceUrl) source = addSourceUrlToScript(source, fun.path);
|
|
50
51
|
return source;
|
|
51
52
|
}
|
|
52
53
|
throw new Error('Either path or content property must be present');
|
|
54
|
+
}
|
|
55
|
+
function addSourceUrlToScript(source, path) {
|
|
56
|
+
return `${source}\n//# sourceURL=${path.replace(/\n/g, '')}`;
|
|
53
57
|
}
|
package/lib/client/connection.js
CHANGED
|
@@ -21,7 +21,7 @@ var _playwright = require("./playwright");
|
|
|
21
21
|
var _electron = require("./electron");
|
|
22
22
|
var _stream = require("./stream");
|
|
23
23
|
var _writableStream = require("./writableStream");
|
|
24
|
-
var _debugLogger = require("../
|
|
24
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
25
25
|
var _selectors = require("./selectors");
|
|
26
26
|
var _android = require("./android");
|
|
27
27
|
var _artifact = require("./artifact");
|
|
@@ -132,7 +132,7 @@ class Connection extends _events.EventEmitter {
|
|
|
132
132
|
location,
|
|
133
133
|
internal: !apiName
|
|
134
134
|
};
|
|
135
|
-
if (this._tracingCount && frames && type !== 'LocalUtils') (_this$_localUtils = this._localUtils) === null || _this$_localUtils === void 0
|
|
135
|
+
if (this._tracingCount && frames && type !== 'LocalUtils') (_this$_localUtils = this._localUtils) === null || _this$_localUtils === void 0 || _this$_localUtils._channel.addStackToTracingNoReply({
|
|
136
136
|
callData: {
|
|
137
137
|
stack: frames,
|
|
138
138
|
id
|
|
@@ -23,14 +23,14 @@ let _util$inspect$custom;
|
|
|
23
23
|
* See the License for the specific language governing permissions and
|
|
24
24
|
* limitations under the License.
|
|
25
25
|
*/
|
|
26
|
-
function _getRequireWildcardCache(
|
|
27
|
-
function _interopRequireWildcard(
|
|
26
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
27
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
28
28
|
_util$inspect$custom = util.inspect.custom;
|
|
29
29
|
class ConsoleMessage {
|
|
30
30
|
constructor(event) {
|
|
31
31
|
this._page = void 0;
|
|
32
32
|
this._event = void 0;
|
|
33
|
-
this._page = event.page ? _page.Page.from(event.page) : null;
|
|
33
|
+
this._page = 'page' in event && event.page ? _page.Page.from(event.page) : null;
|
|
34
34
|
this._event = event;
|
|
35
35
|
}
|
|
36
36
|
page() {
|
package/lib/client/electron.js
CHANGED
|
@@ -10,6 +10,7 @@ var _channelOwner = require("./channelOwner");
|
|
|
10
10
|
var _clientHelper = require("./clientHelper");
|
|
11
11
|
var _events = require("./events");
|
|
12
12
|
var _jsHandle = require("./jsHandle");
|
|
13
|
+
var _consoleMessage = require("./consoleMessage");
|
|
13
14
|
var _waiter = require("./waiter");
|
|
14
15
|
var _errors = require("./errors");
|
|
15
16
|
let _Symbol$asyncDispose;
|
|
@@ -65,6 +66,8 @@ class ElectronApplication extends _channelOwner.ChannelOwner {
|
|
|
65
66
|
this._isClosed = true;
|
|
66
67
|
this.emit(_events.Events.ElectronApplication.Close);
|
|
67
68
|
});
|
|
69
|
+
this._channel.on('console', event => this.emit(_events.Events.ElectronApplication.Console, new _consoleMessage.ConsoleMessage(event)));
|
|
70
|
+
this._setEventToSubscriptionMapping(new Map([[_events.Events.ElectronApplication.Console, 'console']]));
|
|
68
71
|
}
|
|
69
72
|
process() {
|
|
70
73
|
return this._toImpl().process();
|
package/lib/client/events.js
CHANGED
package/lib/client/fetch.js
CHANGED
|
@@ -30,8 +30,8 @@ let _Symbol$asyncDispose, _Symbol$asyncDispose2, _util$inspect$custom;
|
|
|
30
30
|
* See the License for the specific language governing permissions and
|
|
31
31
|
* limitations under the License.
|
|
32
32
|
*/
|
|
33
|
-
function _getRequireWildcardCache(
|
|
34
|
-
function _interopRequireWildcard(
|
|
33
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
34
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
35
35
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
36
36
|
class APIRequest {
|
|
37
37
|
constructor(playwright) {
|
|
@@ -85,7 +85,7 @@ class APIRequestContext extends _channelOwner.ChannelOwner {
|
|
|
85
85
|
var _this$_request;
|
|
86
86
|
await this._instrumentation.onWillCloseRequestContext(this);
|
|
87
87
|
await this._channel.dispose();
|
|
88
|
-
(_this$_request = this._request) === null || _this$_request === void 0
|
|
88
|
+
(_this$_request = this._request) === null || _this$_request === void 0 || _this$_request._contexts.delete(this);
|
|
89
89
|
}
|
|
90
90
|
async delete(url, options) {
|
|
91
91
|
return await this.fetch(url, {
|
package/lib/client/frame.js
CHANGED
|
@@ -18,8 +18,9 @@ var _waiter = require("./waiter");
|
|
|
18
18
|
var _events2 = require("./events");
|
|
19
19
|
var _types = require("./types");
|
|
20
20
|
var _network2 = require("../utils/network");
|
|
21
|
-
|
|
22
|
-
function
|
|
21
|
+
var _clientHelper = require("./clientHelper");
|
|
22
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
23
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
23
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
25
|
/**
|
|
25
26
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
@@ -270,7 +271,7 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
270
271
|
};
|
|
271
272
|
if (copy.path) {
|
|
272
273
|
copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
|
|
273
|
-
copy.content
|
|
274
|
+
copy.content = (0, _clientHelper.addSourceUrlToScript)(copy.content, copy.path);
|
|
274
275
|
}
|
|
275
276
|
return _elementHandle.ElementHandle.from((await this._channel.addScriptTag({
|
|
276
277
|
...copy
|
package/lib/client/harRouter.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.HarRouter = void 0;
|
|
7
|
-
var _debugLogger = require("../
|
|
7
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
8
8
|
let _Symbol$asyncDispose;
|
|
9
9
|
/**
|
|
10
10
|
* Copyright (c) Microsoft Corporation.
|
|
@@ -59,6 +59,12 @@ class HarRouter {
|
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
if (response.action === 'fulfill') {
|
|
62
|
+
// If the response status is -1, the request was canceled or stalled, so we just stall it here.
|
|
63
|
+
// See https://github.com/microsoft/playwright/issues/29311.
|
|
64
|
+
// TODO: it'd be better to abort such requests, but then we likely need to respect the timing,
|
|
65
|
+
// because the request might have been stalled for a long time until the very end of the
|
|
66
|
+
// test when HAR was recorded but we'd abort it immediately.
|
|
67
|
+
if (response.status === -1) return;
|
|
62
68
|
await route.fulfill({
|
|
63
69
|
status: response.status,
|
|
64
70
|
headers: Object.fromEntries(response.headers.map(h => [h.name, h.value])),
|
package/lib/client/locator.js
CHANGED
|
@@ -28,8 +28,8 @@ let _util$inspect$custom;
|
|
|
28
28
|
* See the License for the specific language governing permissions and
|
|
29
29
|
* limitations under the License.
|
|
30
30
|
*/
|
|
31
|
-
function _getRequireWildcardCache(
|
|
32
|
-
function _interopRequireWildcard(
|
|
31
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
32
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
33
33
|
_util$inspect$custom = util.inspect.custom;
|
|
34
34
|
class Locator {
|
|
35
35
|
constructor(frame, selector, options) {
|
package/lib/client/page.js
CHANGED
|
@@ -79,6 +79,7 @@ class Page extends _channelOwner.ChannelOwner {
|
|
|
79
79
|
this._closeReason = void 0;
|
|
80
80
|
this._closeWasCalled = false;
|
|
81
81
|
this._harRouters = [];
|
|
82
|
+
this._locatorHandlers = new Map();
|
|
82
83
|
this._browserContext = parent;
|
|
83
84
|
this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._browserContext._timeoutSettings);
|
|
84
85
|
this.accessibility = new _accessibility.Accessibility(this._channel);
|
|
@@ -115,6 +116,9 @@ class Page extends _channelOwner.ChannelOwner {
|
|
|
115
116
|
this._channel.on('frameDetached', ({
|
|
116
117
|
frame
|
|
117
118
|
}) => this._onFrameDetached(_frame.Frame.from(frame)));
|
|
119
|
+
this._channel.on('locatorHandlerTriggered', ({
|
|
120
|
+
uid
|
|
121
|
+
}) => this._onLocatorHandlerTriggered(uid));
|
|
118
122
|
this._channel.on('route', ({
|
|
119
123
|
route
|
|
120
124
|
}) => this._onRoute(_network2.Route.from(route)));
|
|
@@ -304,6 +308,25 @@ class Page extends _channelOwner.ChannelOwner {
|
|
|
304
308
|
waitUntil
|
|
305
309
|
})).response);
|
|
306
310
|
}
|
|
311
|
+
async addLocatorHandler(locator, handler) {
|
|
312
|
+
if (locator._frame !== this._mainFrame) throw new Error(`Locator must belong to the main frame of this page`);
|
|
313
|
+
const {
|
|
314
|
+
uid
|
|
315
|
+
} = await this._channel.registerLocatorHandler({
|
|
316
|
+
selector: locator._selector
|
|
317
|
+
});
|
|
318
|
+
this._locatorHandlers.set(uid, handler);
|
|
319
|
+
}
|
|
320
|
+
async _onLocatorHandlerTriggered(uid) {
|
|
321
|
+
try {
|
|
322
|
+
const handler = this._locatorHandlers.get(uid);
|
|
323
|
+
await (handler === null || handler === void 0 ? void 0 : handler());
|
|
324
|
+
} finally {
|
|
325
|
+
this._wrapApiCall(() => this._channel.resolveLocatorHandlerNoReply({
|
|
326
|
+
uid
|
|
327
|
+
}), true).catch(() => {});
|
|
328
|
+
}
|
|
329
|
+
}
|
|
307
330
|
async waitForLoadState(state, options) {
|
|
308
331
|
return await this._mainFrame.waitForLoadState(state, options);
|
|
309
332
|
}
|
|
@@ -462,8 +485,7 @@ class Page extends _channelOwner.ChannelOwner {
|
|
|
462
485
|
return result.binary;
|
|
463
486
|
}
|
|
464
487
|
async _expectScreenshot(options) {
|
|
465
|
-
|
|
466
|
-
const mask = (_options$screenshotOp = options.screenshotOptions) !== null && _options$screenshotOp !== void 0 && _options$screenshotOp.mask ? (_options$screenshotOp2 = options.screenshotOptions) === null || _options$screenshotOp2 === void 0 ? void 0 : _options$screenshotOp2.mask.map(locator => ({
|
|
488
|
+
const mask = options !== null && options !== void 0 && options.mask ? options === null || options === void 0 ? void 0 : options.mask.map(locator => ({
|
|
467
489
|
frame: locator._frame._channel,
|
|
468
490
|
selector: locator._selector
|
|
469
491
|
})) : undefined;
|
|
@@ -475,10 +497,7 @@ class Page extends _channelOwner.ChannelOwner {
|
|
|
475
497
|
...options,
|
|
476
498
|
isNot: !!options.isNot,
|
|
477
499
|
locator,
|
|
478
|
-
|
|
479
|
-
...options.screenshotOptions,
|
|
480
|
-
mask
|
|
481
|
-
}
|
|
500
|
+
mask
|
|
482
501
|
});
|
|
483
502
|
}
|
|
484
503
|
async title() {
|
|
@@ -621,7 +640,7 @@ class Page extends _channelOwner.ChannelOwner {
|
|
|
621
640
|
const defaultTimeout = this._browserContext._timeoutSettings.defaultTimeout();
|
|
622
641
|
this._browserContext.setDefaultNavigationTimeout(0);
|
|
623
642
|
this._browserContext.setDefaultTimeout(0);
|
|
624
|
-
(_this$_instrumentatio = this._instrumentation) === null || _this$_instrumentatio === void 0
|
|
643
|
+
(_this$_instrumentatio = this._instrumentation) === null || _this$_instrumentatio === void 0 || _this$_instrumentatio.onWillPause();
|
|
625
644
|
await this._closedOrCrashedScope.safeRace(this.context()._channel.pause());
|
|
626
645
|
this._browserContext.setDefaultNavigationTimeout(defaultNavigationTimeout);
|
|
627
646
|
this._browserContext.setDefaultTimeout(defaultTimeout);
|
package/lib/common/socksProxy.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.SocksProxyHandler = exports.SocksProxy = void 0;
|
|
|
7
7
|
exports.parsePattern = parsePattern;
|
|
8
8
|
var _events = _interopRequireDefault(require("events"));
|
|
9
9
|
var _net = _interopRequireDefault(require("net"));
|
|
10
|
-
var _debugLogger = require("
|
|
10
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
11
11
|
var _happyEyeballs = require("../utils/happy-eyeballs");
|
|
12
12
|
var _utils = require("../utils");
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -94,7 +94,6 @@ class SocksConnection {
|
|
|
94
94
|
// Address
|
|
95
95
|
0x00, 0x00 // Port
|
|
96
96
|
]));
|
|
97
|
-
|
|
98
97
|
return;
|
|
99
98
|
}
|
|
100
99
|
this._socket.off('data', this._boundOnData);
|
|
@@ -212,7 +211,6 @@ class SocksConnection {
|
|
|
212
211
|
// ATYP, Address
|
|
213
212
|
port >> 8, port & 0xFF // Port
|
|
214
213
|
]));
|
|
215
|
-
|
|
216
214
|
this._socket.on('data', data => this._client.onSocketData({
|
|
217
215
|
uid: this._uid,
|
|
218
216
|
data
|
|
@@ -225,7 +223,6 @@ class SocksConnection {
|
|
|
225
223
|
// ATYP, Address
|
|
226
224
|
0, 0 // Port
|
|
227
225
|
]);
|
|
228
|
-
|
|
229
226
|
switch (errorCode) {
|
|
230
227
|
case 'ENOENT':
|
|
231
228
|
case 'ENOTFOUND':
|
|
@@ -279,7 +276,6 @@ function ipToSocksAddress(address) {
|
|
|
279
276
|
...address.split('.', 4).map(t => +t & 0xFF) // Address
|
|
280
277
|
];
|
|
281
278
|
}
|
|
282
|
-
|
|
283
279
|
if (_net.default.isIPv6(address)) {
|
|
284
280
|
const result = [0x04]; // IPv6
|
|
285
281
|
const tokens = address.split(':', 8);
|
|
@@ -288,7 +284,6 @@ function ipToSocksAddress(address) {
|
|
|
288
284
|
const value = hexToNumber(token);
|
|
289
285
|
result.push(value >> 8 & 0xFF, value & 0xFF); // Big-endian
|
|
290
286
|
}
|
|
291
|
-
|
|
292
287
|
return result;
|
|
293
288
|
}
|
|
294
289
|
throw new Error('Only IPv4 and IPv6 addresses are supported');
|
|
@@ -370,21 +365,21 @@ class SocksProxy extends _events.default {
|
|
|
370
365
|
});
|
|
371
366
|
socket.on('error', error => {
|
|
372
367
|
var _this$_connections$ge2;
|
|
373
|
-
(_this$_connections$ge2 = this._connections.get(request.uid)) === null || _this$_connections$ge2 === void 0
|
|
368
|
+
(_this$_connections$ge2 = this._connections.get(request.uid)) === null || _this$_connections$ge2 === void 0 || _this$_connections$ge2.error(error.message);
|
|
374
369
|
this._directSockets.delete(request.uid);
|
|
375
370
|
});
|
|
376
371
|
socket.on('end', () => {
|
|
377
372
|
var _this$_connections$ge3;
|
|
378
|
-
(_this$_connections$ge3 = this._connections.get(request.uid)) === null || _this$_connections$ge3 === void 0
|
|
373
|
+
(_this$_connections$ge3 = this._connections.get(request.uid)) === null || _this$_connections$ge3 === void 0 || _this$_connections$ge3.end();
|
|
379
374
|
this._directSockets.delete(request.uid);
|
|
380
375
|
});
|
|
381
376
|
const localAddress = socket.localAddress;
|
|
382
377
|
const localPort = socket.localPort;
|
|
383
378
|
this._directSockets.set(request.uid, socket);
|
|
384
|
-
(_this$_connections$ge4 = this._connections.get(request.uid)) === null || _this$_connections$ge4 === void 0
|
|
379
|
+
(_this$_connections$ge4 = this._connections.get(request.uid)) === null || _this$_connections$ge4 === void 0 || _this$_connections$ge4.socketConnected(localAddress, localPort);
|
|
385
380
|
} catch (error) {
|
|
386
381
|
var _this$_connections$ge5;
|
|
387
|
-
(_this$_connections$ge5 = this._connections.get(request.uid)) === null || _this$_connections$ge5 === void 0
|
|
382
|
+
(_this$_connections$ge5 = this._connections.get(request.uid)) === null || _this$_connections$ge5 === void 0 || _this$_connections$ge5.socketFailed(error.code);
|
|
388
383
|
}
|
|
389
384
|
}
|
|
390
385
|
port() {
|
|
@@ -436,34 +431,34 @@ class SocksProxy extends _events.default {
|
|
|
436
431
|
port
|
|
437
432
|
}) {
|
|
438
433
|
var _this$_connections$ge6;
|
|
439
|
-
(_this$_connections$ge6 = this._connections.get(uid)) === null || _this$_connections$ge6 === void 0
|
|
434
|
+
(_this$_connections$ge6 = this._connections.get(uid)) === null || _this$_connections$ge6 === void 0 || _this$_connections$ge6.socketConnected(host, port);
|
|
440
435
|
}
|
|
441
436
|
socketFailed({
|
|
442
437
|
uid,
|
|
443
438
|
errorCode
|
|
444
439
|
}) {
|
|
445
440
|
var _this$_connections$ge7;
|
|
446
|
-
(_this$_connections$ge7 = this._connections.get(uid)) === null || _this$_connections$ge7 === void 0
|
|
441
|
+
(_this$_connections$ge7 = this._connections.get(uid)) === null || _this$_connections$ge7 === void 0 || _this$_connections$ge7.socketFailed(errorCode);
|
|
447
442
|
}
|
|
448
443
|
sendSocketData({
|
|
449
444
|
uid,
|
|
450
445
|
data
|
|
451
446
|
}) {
|
|
452
447
|
var _this$_connections$ge8;
|
|
453
|
-
(_this$_connections$ge8 = this._connections.get(uid)) === null || _this$_connections$ge8 === void 0
|
|
448
|
+
(_this$_connections$ge8 = this._connections.get(uid)) === null || _this$_connections$ge8 === void 0 || _this$_connections$ge8.sendData(data);
|
|
454
449
|
}
|
|
455
450
|
sendSocketEnd({
|
|
456
451
|
uid
|
|
457
452
|
}) {
|
|
458
453
|
var _this$_connections$ge9;
|
|
459
|
-
(_this$_connections$ge9 = this._connections.get(uid)) === null || _this$_connections$ge9 === void 0
|
|
454
|
+
(_this$_connections$ge9 = this._connections.get(uid)) === null || _this$_connections$ge9 === void 0 || _this$_connections$ge9.end();
|
|
460
455
|
}
|
|
461
456
|
sendSocketError({
|
|
462
457
|
uid,
|
|
463
458
|
error
|
|
464
459
|
}) {
|
|
465
460
|
var _this$_connections$ge10;
|
|
466
|
-
(_this$_connections$ge10 = this._connections.get(uid)) === null || _this$_connections$ge10 === void 0
|
|
461
|
+
(_this$_connections$ge10 = this._connections.get(uid)) === null || _this$_connections$ge10 === void 0 || _this$_connections$ge10.error(error);
|
|
467
462
|
}
|
|
468
463
|
}
|
|
469
464
|
exports.SocksProxy = SocksProxy;
|
|
@@ -553,14 +548,14 @@ class SocksProxyHandler extends _events.default {
|
|
|
553
548
|
data
|
|
554
549
|
}) {
|
|
555
550
|
var _this$_sockets$get;
|
|
556
|
-
(_this$_sockets$get = this._sockets.get(uid)) === null || _this$_sockets$get === void 0
|
|
551
|
+
(_this$_sockets$get = this._sockets.get(uid)) === null || _this$_sockets$get === void 0 || _this$_sockets$get.write(data);
|
|
557
552
|
}
|
|
558
553
|
socketClosed({
|
|
559
554
|
uid
|
|
560
555
|
}) {
|
|
561
556
|
var _this$_sockets$get2;
|
|
562
557
|
_debugLogger.debugLogger.log('socks', `[${uid}] <= browser socket closed`);
|
|
563
|
-
(_this$_sockets$get2 = this._sockets.get(uid)) === null || _this$_sockets$get2 === void 0
|
|
558
|
+
(_this$_sockets$get2 = this._sockets.get(uid)) === null || _this$_sockets$get2 === void 0 || _this$_sockets$get2.destroy();
|
|
564
559
|
this._sockets.delete(uid);
|
|
565
560
|
}
|
|
566
561
|
}
|