@checkly/playwright-core 1.41.2-beta.0 → 1.41.2-beta.1
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/cli.js +61 -0
- package/lib/cli/driver.js +3 -11
- package/lib/cli/program.js +5 -13
- 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 +1 -5
- package/lib/client/connection.js +2 -2
- package/lib/client/consoleMessage.js +2 -2
- package/lib/client/fetch.js +3 -3
- package/lib/client/frame.js +3 -4
- package/lib/client/harRouter.js +1 -1
- package/lib/client/locator.js +2 -2
- package/lib/client/page.js +1 -24
- package/lib/common/debugLogger.js +90 -0
- package/lib/common/socksProxy.js +17 -12
- 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 +7 -13
- package/lib/remote/playwrightConnection.js +2 -2
- package/lib/remote/playwrightServer.js +166 -72
- 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 +9 -8
- package/lib/server/browserType.js +5 -5
- package/lib/server/chromium/chromium.js +1 -1
- package/lib/server/chromium/crBrowser.js +3 -2
- 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 +23 -37
- package/lib/server/chromium/crPage.js +7 -48
- package/lib/server/chromium/crServiceWorker.js +3 -2
- package/lib/server/debugController.js +3 -0
- package/lib/server/deviceDescriptorsSource.json +50 -50
- package/lib/server/dispatchers/browserContextDispatcher.js +4 -4
- package/lib/server/dispatchers/dispatcher.js +10 -10
- package/lib/server/dispatchers/localUtilsDispatcher.js +4 -4
- package/lib/server/dispatchers/pageDispatcher.js +0 -12
- package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
- package/lib/server/dispatchers/writableStreamDispatcher.js +2 -2
- package/lib/server/dom.js +170 -133
- package/lib/server/electron/electron.js +4 -5
- package/lib/server/electron/loader.js +2 -4
- package/lib/server/fetch.js +4 -4
- 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 +5 -3
- package/lib/server/firefox/firefox.js +2 -2
- package/lib/server/frames.js +23 -31
- 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 +1 -0
- package/lib/server/javascript.js +2 -2
- package/lib/server/network.js +23 -5
- package/lib/server/page.js +3 -44
- package/lib/server/pipeTransport.js +1 -1
- package/lib/server/playwright.js +1 -1
- package/lib/server/progress.js +14 -5
- 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 +2 -1
- package/lib/server/registry/dependencies.js +6 -7
- package/lib/server/registry/index.js +33 -50
- package/lib/server/registry/nativeDeps.js +94 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +2 -2
- package/lib/server/screenshotter.js +1 -0
- package/lib/server/socksInterceptor.js +2 -2
- package/lib/server/trace/recorder/snapshotter.js +2 -2
- package/lib/server/trace/recorder/tracing.js +9 -7
- package/lib/server/trace/test/inMemorySnapshotter.js +1 -1
- package/lib/server/trace/viewer/traceViewer.js +2 -2
- package/lib/server/transport.js +13 -15
- 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 +12 -10
- package/lib/utils/fileUtils.js +0 -4
- package/lib/utils/happy-eyeballs.js +4 -5
- package/lib/utils/hostPlatform.js +1 -1
- package/lib/utils/index.js +0 -11
- package/lib/utils/isomorphic/cssParser.js +2 -2
- package/lib/utils/isomorphic/locatorParser.js +4 -6
- package/lib/utils/isomorphic/selectorParser.js +1 -0
- package/lib/utils/network.js +0 -33
- package/lib/utils/processLauncher.js +2 -9
- package/lib/utils/profiler.js +2 -2
- package/lib/utils/zipFile.js +1 -1
- package/lib/vite/htmlReport/index.html +13 -12
- package/lib/vite/recorder/assets/codeMirrorModule-2a26f817.js +24 -0
- package/lib/vite/recorder/assets/codeMirrorModule-5d0f417c.css +1 -0
- package/lib/vite/recorder/assets/{index-ljsTwXtJ.css → index-64ce22d5.css} +1 -1
- package/lib/vite/recorder/assets/index-bbf80321.js +41 -0
- package/lib/vite/recorder/index.html +3 -2
- package/lib/vite/{recorder/assets/codeMirrorModule-I9ks4y7D.js → traceViewer/assets/codeMirrorModule-56536a77.js} +13 -13
- package/lib/vite/traceViewer/assets/wsPort-722747dc.js +64 -0
- package/lib/vite/traceViewer/assets/xtermModule-443332e6.js +9 -0
- package/lib/vite/traceViewer/codeMirrorModule.5d0f417c.css +1 -0
- package/lib/vite/traceViewer/codicon.79f233d0.ttf +0 -0
- package/lib/vite/traceViewer/index.1a1fe659.css +1 -0
- package/lib/vite/traceViewer/index.d05939c9.js +2 -0
- package/lib/vite/traceViewer/index.html +5 -4
- package/lib/vite/traceViewer/sw.bundle.js +1 -1
- package/lib/vite/traceViewer/uiMode.8b41a49d.css +1 -0
- package/lib/vite/traceViewer/uiMode.8e0454c4.js +4 -0
- package/lib/vite/traceViewer/uiMode.html +5 -4
- package/lib/vite/traceViewer/wsPort.9c9a6767.css +1 -0
- package/lib/vite/traceViewer/xtermModule.6428296b.css +32 -0
- package/package.json +1 -1
- package/lib/vite/recorder/assets/codeMirrorModule-Hs9-1ZG4.css +0 -1
- package/lib/vite/recorder/assets/index-yg8ypzl6.js +0 -47
- /package/lib/vite/recorder/assets/{codicon-zGuYmc9o.ttf → codicon-79f233d0.ttf} +0 -0
package/lib/outofprocess.js
CHANGED
|
@@ -9,8 +9,8 @@ var _transport = require("./protocol/transport");
|
|
|
9
9
|
var childProcess = _interopRequireWildcard(require("child_process"));
|
|
10
10
|
var path = _interopRequireWildcard(require("path"));
|
|
11
11
|
var _manualPromise = require("./utils/manualPromise");
|
|
12
|
-
function _getRequireWildcardCache(
|
|
13
|
-
function _interopRequireWildcard(
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
14
|
/**
|
|
15
15
|
* Copyright (c) Microsoft Corporation.
|
|
16
16
|
*
|
|
@@ -41,7 +41,7 @@ class PlaywrightClient {
|
|
|
41
41
|
this._playwright = void 0;
|
|
42
42
|
this._driverProcess = void 0;
|
|
43
43
|
this._closePromise = new _manualPromise.ManualPromise();
|
|
44
|
-
this._driverProcess = childProcess.fork(path.join(__dirname, '
|
|
44
|
+
this._driverProcess = childProcess.fork(path.join(__dirname, 'cli', 'cli.js'), ['run-driver'], {
|
|
45
45
|
stdio: 'pipe',
|
|
46
46
|
detached: true,
|
|
47
47
|
env: {
|
|
@@ -408,6 +408,13 @@ _validatorPrimitives.scheme.DebugControllerSourceChangedEvent = (0, _validatorPr
|
|
|
408
408
|
_validatorPrimitives.scheme.DebugControllerPausedEvent = (0, _validatorPrimitives.tObject)({
|
|
409
409
|
paused: _validatorPrimitives.tBoolean
|
|
410
410
|
});
|
|
411
|
+
_validatorPrimitives.scheme.DebugControllerBrowsersChangedEvent = (0, _validatorPrimitives.tObject)({
|
|
412
|
+
browsers: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tObject)({
|
|
413
|
+
contexts: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tObject)({
|
|
414
|
+
pages: (0, _validatorPrimitives.tArray)(_validatorPrimitives.tString)
|
|
415
|
+
}))
|
|
416
|
+
}))
|
|
417
|
+
});
|
|
411
418
|
_validatorPrimitives.scheme.DebugControllerInitializeParams = (0, _validatorPrimitives.tObject)({
|
|
412
419
|
codegenId: _validatorPrimitives.tString,
|
|
413
420
|
sdkLanguage: (0, _validatorPrimitives.tEnum)(['javascript', 'python', 'java', 'csharp'])
|
|
@@ -1002,9 +1009,6 @@ _validatorPrimitives.scheme.PageFrameAttachedEvent = (0, _validatorPrimitives.tO
|
|
|
1002
1009
|
_validatorPrimitives.scheme.PageFrameDetachedEvent = (0, _validatorPrimitives.tObject)({
|
|
1003
1010
|
frame: (0, _validatorPrimitives.tChannel)(['Frame'])
|
|
1004
1011
|
});
|
|
1005
|
-
_validatorPrimitives.scheme.PageLocatorHandlerTriggeredEvent = (0, _validatorPrimitives.tObject)({
|
|
1006
|
-
uid: _validatorPrimitives.tNumber
|
|
1007
|
-
});
|
|
1008
1012
|
_validatorPrimitives.scheme.PageRouteEvent = (0, _validatorPrimitives.tObject)({
|
|
1009
1013
|
route: (0, _validatorPrimitives.tChannel)(['Route'])
|
|
1010
1014
|
});
|
|
@@ -1060,16 +1064,6 @@ _validatorPrimitives.scheme.PageGoForwardParams = (0, _validatorPrimitives.tObje
|
|
|
1060
1064
|
_validatorPrimitives.scheme.PageGoForwardResult = (0, _validatorPrimitives.tObject)({
|
|
1061
1065
|
response: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tChannel)(['Response']))
|
|
1062
1066
|
});
|
|
1063
|
-
_validatorPrimitives.scheme.PageRegisterLocatorHandlerParams = (0, _validatorPrimitives.tObject)({
|
|
1064
|
-
selector: _validatorPrimitives.tString
|
|
1065
|
-
});
|
|
1066
|
-
_validatorPrimitives.scheme.PageRegisterLocatorHandlerResult = (0, _validatorPrimitives.tObject)({
|
|
1067
|
-
uid: _validatorPrimitives.tNumber
|
|
1068
|
-
});
|
|
1069
|
-
_validatorPrimitives.scheme.PageResolveLocatorHandlerNoReplyParams = (0, _validatorPrimitives.tObject)({
|
|
1070
|
-
uid: _validatorPrimitives.tNumber
|
|
1071
|
-
});
|
|
1072
|
-
_validatorPrimitives.scheme.PageResolveLocatorHandlerNoReplyResult = (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tObject)({}));
|
|
1073
1067
|
_validatorPrimitives.scheme.PageReloadParams = (0, _validatorPrimitives.tObject)({
|
|
1074
1068
|
timeout: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tNumber),
|
|
1075
1069
|
waitUntil: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tType)('LifecycleEvent'))
|
|
@@ -11,7 +11,7 @@ var _socksProxy = require("../common/socksProxy");
|
|
|
11
11
|
var _utils = require("../utils");
|
|
12
12
|
var _android = require("../server/android/android");
|
|
13
13
|
var _debugControllerDispatcher = require("../server/dispatchers/debugControllerDispatcher");
|
|
14
|
-
var _debugLogger = require("../
|
|
14
|
+
var _debugLogger = require("../common/debugLogger");
|
|
15
15
|
/**
|
|
16
16
|
* Copyright (c) Microsoft Corporation.
|
|
17
17
|
*
|
|
@@ -109,7 +109,7 @@ class PlaywrightConnection {
|
|
|
109
109
|
const playwright = this._preLaunched.playwright;
|
|
110
110
|
|
|
111
111
|
// Note: connected client owns the socks proxy and configures the pattern.
|
|
112
|
-
(_this$_preLaunched$so = this._preLaunched.socksProxy) === null || _this$_preLaunched$so === void 0
|
|
112
|
+
(_this$_preLaunched$so = this._preLaunched.socksProxy) === null || _this$_preLaunched$so === void 0 ? void 0 : _this$_preLaunched$so.setPattern(this._options.socksProxyPattern);
|
|
113
113
|
const browser = this._preLaunched.browser;
|
|
114
114
|
browser.on(_browser.Browser.Events.Disconnected, () => {
|
|
115
115
|
// Underlying browser did close for some reason - force disconnect the client.
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.PlaywrightServer = void 0;
|
|
6
|
+
exports.Semaphore = exports.PlaywrightServer = void 0;
|
|
7
|
+
var _utilsBundle = require("../utilsBundle");
|
|
7
8
|
var _playwright = require("../server/playwright");
|
|
8
9
|
var _playwrightConnection = require("./playwrightConnection");
|
|
9
|
-
var
|
|
10
|
-
var _debugLogger = require("../
|
|
10
|
+
var _manualPromise = require("../utils/manualPromise");
|
|
11
|
+
var _debugLogger = require("../common/debugLogger");
|
|
11
12
|
var _utils = require("../utils");
|
|
12
|
-
var
|
|
13
|
+
var _transport = require("../server/transport");
|
|
13
14
|
/**
|
|
14
15
|
* Copyright (c) Microsoft Corporation.
|
|
15
16
|
*
|
|
@@ -26,85 +27,178 @@ var _wsServer = require("../utils/wsServer");
|
|
|
26
27
|
* limitations under the License.
|
|
27
28
|
*/
|
|
28
29
|
|
|
30
|
+
let lastConnectionId = 0;
|
|
31
|
+
const kConnectionSymbol = Symbol('kConnection');
|
|
29
32
|
class PlaywrightServer {
|
|
30
33
|
constructor(options) {
|
|
31
34
|
this._preLaunchedPlaywright = void 0;
|
|
32
|
-
this._options = void 0;
|
|
33
35
|
this._wsServer = void 0;
|
|
36
|
+
this._server = void 0;
|
|
37
|
+
this._options = void 0;
|
|
34
38
|
this._options = options;
|
|
35
39
|
if (options.preLaunchedBrowser) this._preLaunchedPlaywright = options.preLaunchedBrowser.attribution.playwright;
|
|
36
40
|
if (options.preLaunchedAndroidDevice) this._preLaunchedPlaywright = options.preLaunchedAndroidDevice._android.attribution.playwright;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
let launchOptions = {};
|
|
59
|
-
try {
|
|
60
|
-
launchOptions = JSON.parse(launchOptionsParam || launchOptionsHeaderValue);
|
|
61
|
-
} catch (e) {}
|
|
62
|
-
|
|
63
|
-
// Instantiate playwright for the extension modes.
|
|
64
|
-
const isExtension = this._options.mode === 'extension';
|
|
65
|
-
if (isExtension) {
|
|
66
|
-
if (!this._preLaunchedPlaywright) this._preLaunchedPlaywright = (0, _playwright.createPlaywright)({
|
|
67
|
-
sdkLanguage: 'javascript',
|
|
68
|
-
isServer: true
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
let clientType = 'launch-browser';
|
|
72
|
-
let semaphore = browserSemaphore;
|
|
73
|
-
if (isExtension && url.searchParams.has('debug-controller')) {
|
|
74
|
-
clientType = 'controller';
|
|
75
|
-
semaphore = controllerSemaphore;
|
|
76
|
-
} else if (isExtension) {
|
|
77
|
-
clientType = 'reuse-browser';
|
|
78
|
-
semaphore = reuseBrowserSemaphore;
|
|
79
|
-
} else if (this._options.mode === 'launchServer') {
|
|
80
|
-
clientType = 'pre-launched-browser-or-android';
|
|
81
|
-
semaphore = browserSemaphore;
|
|
41
|
+
}
|
|
42
|
+
async listen(port = 0, hostname) {
|
|
43
|
+
_debugLogger.debugLogger.log('server', `Server started at ${new Date()}`);
|
|
44
|
+
const server = (0, _utils.createHttpServer)((request, response) => {
|
|
45
|
+
if (request.method === 'GET' && request.url === '/json') {
|
|
46
|
+
response.setHeader('Content-Type', 'application/json');
|
|
47
|
+
response.end(JSON.stringify({
|
|
48
|
+
wsEndpointPath: this._options.path
|
|
49
|
+
}));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
response.end('Running');
|
|
53
|
+
});
|
|
54
|
+
server.on('error', error => _debugLogger.debugLogger.log('server', String(error)));
|
|
55
|
+
this._server = server;
|
|
56
|
+
const wsEndpoint = await new Promise((resolve, reject) => {
|
|
57
|
+
server.listen(port, hostname, () => {
|
|
58
|
+
const address = server.address();
|
|
59
|
+
if (!address) {
|
|
60
|
+
reject(new Error('Could not bind server socket'));
|
|
61
|
+
return;
|
|
82
62
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
63
|
+
const wsEndpoint = typeof address === 'string' ? `${address}${this._options.path}` : `ws://${hostname || 'localhost'}:${address.port}${this._options.path}`;
|
|
64
|
+
resolve(wsEndpoint);
|
|
65
|
+
}).on('error', reject);
|
|
66
|
+
});
|
|
67
|
+
_debugLogger.debugLogger.log('server', 'Listening at ' + wsEndpoint);
|
|
68
|
+
this._wsServer = new _utilsBundle.wsServer({
|
|
69
|
+
noServer: true,
|
|
70
|
+
perMessageDeflate: _transport.perMessageDeflate
|
|
71
|
+
});
|
|
72
|
+
const browserSemaphore = new Semaphore(this._options.maxConnections);
|
|
73
|
+
const controllerSemaphore = new Semaphore(1);
|
|
74
|
+
const reuseBrowserSemaphore = new Semaphore(1);
|
|
75
|
+
if (process.env.PWTEST_SERVER_WS_HEADERS) {
|
|
76
|
+
this._wsServer.on('headers', (headers, request) => {
|
|
77
|
+
headers.push(process.env.PWTEST_SERVER_WS_HEADERS);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
server.on('upgrade', (request, socket, head) => {
|
|
81
|
+
var _this$_wsServer;
|
|
82
|
+
const pathname = new URL('http://localhost' + request.url).pathname;
|
|
83
|
+
if (pathname !== this._options.path) {
|
|
84
|
+
socket.write(`HTTP/${request.httpVersion} 400 Bad Request\r\n\r\n`);
|
|
85
|
+
socket.destroy();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const uaError = (0, _utils.userAgentVersionMatchesErrorMessage)(request.headers['user-agent'] || '');
|
|
89
|
+
if (uaError) {
|
|
90
|
+
socket.write(`HTTP/${request.httpVersion} 428 Precondition Required\r\n\r\n${uaError}`);
|
|
91
|
+
socket.destroy();
|
|
92
|
+
return;
|
|
100
93
|
}
|
|
94
|
+
(_this$_wsServer = this._wsServer) === null || _this$_wsServer === void 0 ? void 0 : _this$_wsServer.handleUpgrade(request, socket, head, ws => {
|
|
95
|
+
var _this$_wsServer2;
|
|
96
|
+
return (_this$_wsServer2 = this._wsServer) === null || _this$_wsServer2 === void 0 ? void 0 : _this$_wsServer2.emit('connection', ws, request);
|
|
97
|
+
});
|
|
101
98
|
});
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
99
|
+
this._wsServer.on('connection', (ws, request) => {
|
|
100
|
+
_debugLogger.debugLogger.log('server', 'Connected client ws.extension=' + ws.extensions);
|
|
101
|
+
const url = new URL('http://localhost' + (request.url || ''));
|
|
102
|
+
const browserHeader = request.headers['x-playwright-browser'];
|
|
103
|
+
const browserName = url.searchParams.get('browser') || (Array.isArray(browserHeader) ? browserHeader[0] : browserHeader) || null;
|
|
104
|
+
const proxyHeader = request.headers['x-playwright-proxy'];
|
|
105
|
+
const proxyValue = url.searchParams.get('proxy') || (Array.isArray(proxyHeader) ? proxyHeader[0] : proxyHeader);
|
|
106
|
+
const launchOptionsHeader = request.headers['x-playwright-launch-options'] || '';
|
|
107
|
+
const launchOptionsHeaderValue = Array.isArray(launchOptionsHeader) ? launchOptionsHeader[0] : launchOptionsHeader;
|
|
108
|
+
const launchOptionsParam = url.searchParams.get('launch-options');
|
|
109
|
+
let launchOptions = {};
|
|
110
|
+
try {
|
|
111
|
+
launchOptions = JSON.parse(launchOptionsParam || launchOptionsHeaderValue);
|
|
112
|
+
} catch (e) {}
|
|
113
|
+
const id = String(++lastConnectionId);
|
|
114
|
+
_debugLogger.debugLogger.log('server', `[${id}] serving connection: ${request.url}`);
|
|
115
|
+
|
|
116
|
+
// Instantiate playwright for the extension modes.
|
|
117
|
+
const isExtension = this._options.mode === 'extension';
|
|
118
|
+
if (isExtension) {
|
|
119
|
+
if (!this._preLaunchedPlaywright) this._preLaunchedPlaywright = (0, _playwright.createPlaywright)({
|
|
120
|
+
sdkLanguage: 'javascript',
|
|
121
|
+
isServer: true
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
let clientType = 'launch-browser';
|
|
125
|
+
let semaphore = browserSemaphore;
|
|
126
|
+
if (isExtension && url.searchParams.has('debug-controller')) {
|
|
127
|
+
clientType = 'controller';
|
|
128
|
+
semaphore = controllerSemaphore;
|
|
129
|
+
} else if (isExtension) {
|
|
130
|
+
clientType = 'reuse-browser';
|
|
131
|
+
semaphore = reuseBrowserSemaphore;
|
|
132
|
+
} else if (this._options.mode === 'launchServer') {
|
|
133
|
+
clientType = 'pre-launched-browser-or-android';
|
|
134
|
+
semaphore = browserSemaphore;
|
|
135
|
+
}
|
|
136
|
+
const connection = new _playwrightConnection.PlaywrightConnection(semaphore.acquire(), clientType, ws, {
|
|
137
|
+
socksProxyPattern: proxyValue,
|
|
138
|
+
browserName,
|
|
139
|
+
launchOptions
|
|
140
|
+
}, {
|
|
141
|
+
playwright: this._preLaunchedPlaywright,
|
|
142
|
+
browser: this._options.preLaunchedBrowser,
|
|
143
|
+
androidDevice: this._options.preLaunchedAndroidDevice,
|
|
144
|
+
socksProxy: this._options.preLaunchedSocksProxy
|
|
145
|
+
}, id, () => semaphore.release());
|
|
146
|
+
ws[kConnectionSymbol] = connection;
|
|
147
|
+
});
|
|
148
|
+
return wsEndpoint;
|
|
105
149
|
}
|
|
106
150
|
async close() {
|
|
107
|
-
|
|
151
|
+
const server = this._wsServer;
|
|
152
|
+
if (!server) return;
|
|
153
|
+
_debugLogger.debugLogger.log('server', 'closing websocket server');
|
|
154
|
+
const waitForClose = new Promise(f => server.close(f));
|
|
155
|
+
// First disconnect all remaining clients.
|
|
156
|
+
await Promise.all(Array.from(server.clients).map(async ws => {
|
|
157
|
+
const connection = ws[kConnectionSymbol];
|
|
158
|
+
if (connection) await connection.close();
|
|
159
|
+
try {
|
|
160
|
+
ws.terminate();
|
|
161
|
+
} catch (e) {}
|
|
162
|
+
}));
|
|
163
|
+
await waitForClose;
|
|
164
|
+
_debugLogger.debugLogger.log('server', 'closing http server');
|
|
165
|
+
if (this._server) await new Promise(f => this._server.close(f));
|
|
166
|
+
this._wsServer = undefined;
|
|
167
|
+
this._server = undefined;
|
|
168
|
+
_debugLogger.debugLogger.log('server', 'closed server');
|
|
169
|
+
_debugLogger.debugLogger.log('server', 'closing browsers');
|
|
170
|
+
if (this._preLaunchedPlaywright) await Promise.all(this._preLaunchedPlaywright.allBrowsers().map(browser => browser.close({
|
|
171
|
+
reason: 'Playwright Server stopped'
|
|
172
|
+
})));
|
|
173
|
+
_debugLogger.debugLogger.log('server', 'closed browsers');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.PlaywrightServer = PlaywrightServer;
|
|
177
|
+
class Semaphore {
|
|
178
|
+
constructor(max) {
|
|
179
|
+
this._max = void 0;
|
|
180
|
+
this._acquired = 0;
|
|
181
|
+
this._queue = [];
|
|
182
|
+
this._max = max;
|
|
183
|
+
}
|
|
184
|
+
setMax(max) {
|
|
185
|
+
this._max = max;
|
|
186
|
+
}
|
|
187
|
+
acquire() {
|
|
188
|
+
const lock = new _manualPromise.ManualPromise();
|
|
189
|
+
this._queue.push(lock);
|
|
190
|
+
this._flush();
|
|
191
|
+
return lock;
|
|
192
|
+
}
|
|
193
|
+
release() {
|
|
194
|
+
--this._acquired;
|
|
195
|
+
this._flush();
|
|
196
|
+
}
|
|
197
|
+
_flush() {
|
|
198
|
+
while (this._acquired < this._max && this._queue.length) {
|
|
199
|
+
++this._acquired;
|
|
200
|
+
this._queue.shift().resolve();
|
|
201
|
+
}
|
|
108
202
|
}
|
|
109
203
|
}
|
|
110
|
-
exports.
|
|
204
|
+
exports.Semaphore = Semaphore;
|
|
@@ -16,7 +16,7 @@ var _progress = require("../progress");
|
|
|
16
16
|
var _crBrowser = require("../chromium/crBrowser");
|
|
17
17
|
var _helper = require("../helper");
|
|
18
18
|
var _transport = require("../../protocol/transport");
|
|
19
|
-
var _debugLogger = require("../../
|
|
19
|
+
var _debugLogger = require("../../common/debugLogger");
|
|
20
20
|
var _processLauncher = require("../../utils/processLauncher");
|
|
21
21
|
var _timeoutSettings = require("../../common/timeoutSettings");
|
|
22
22
|
var _instrumentation = require("../instrumentation");
|
|
@@ -204,7 +204,7 @@ class AndroidDevice extends _instrumentation.SdkObject {
|
|
|
204
204
|
for (const connection of this._browserConnections) await connection.close();
|
|
205
205
|
if (this._driverPromise) {
|
|
206
206
|
const driver = await this._driver();
|
|
207
|
-
driver === null || driver === void 0
|
|
207
|
+
driver === null || driver === void 0 ? void 0 : driver.close();
|
|
208
208
|
}
|
|
209
209
|
await this._backend.close();
|
|
210
210
|
this._android._deviceClosed(this);
|
|
@@ -8,8 +8,8 @@ var _utilsBundle = require("../../utilsBundle");
|
|
|
8
8
|
var net = _interopRequireWildcard(require("net"));
|
|
9
9
|
var _events = require("events");
|
|
10
10
|
var _utils = require("../../utils");
|
|
11
|
-
function _getRequireWildcardCache(
|
|
12
|
-
function _interopRequireWildcard(
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
13
|
/**
|
|
14
14
|
* Copyright Microsoft Corporation. All rights reserved.
|
|
15
15
|
*
|
package/lib/server/browser.js
CHANGED
|
@@ -68,8 +68,8 @@ class Browser extends _instrumentation.SdkObject {
|
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
70
|
async stopPendingOperations(reason) {
|
|
71
|
-
var _this$_contextForReus;
|
|
72
|
-
await ((_this$_contextForReus = this._contextForReuse) === null || _this$_contextForReus === void 0
|
|
71
|
+
var _this$_contextForReus, _this$_contextForReus2;
|
|
72
|
+
await ((_this$_contextForReus = this._contextForReuse) === null || _this$_contextForReus === void 0 ? void 0 : (_this$_contextForReus2 = _this$_contextForReus.context) === null || _this$_contextForReus2 === void 0 ? void 0 : _this$_contextForReus2.stopPendingOperations(reason));
|
|
73
73
|
}
|
|
74
74
|
_downloadCreated(page, uuid, url, suggestedFilename) {
|
|
75
75
|
const download = new _download.Download(page, this.options.downloadsPath || '', uuid, url, suggestedFilename);
|
|
@@ -25,8 +25,8 @@ var _recorder = require("./recorder");
|
|
|
25
25
|
var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
|
|
26
26
|
var _fetch = require("./fetch");
|
|
27
27
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
28
|
-
function _getRequireWildcardCache(
|
|
29
|
-
function _interopRequireWildcard(
|
|
28
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
30
30
|
/**
|
|
31
31
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
32
32
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -158,13 +158,13 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
// Unless dialogs are dismissed, setting extra http headers below does not respond.
|
|
161
|
-
(_page = page) === null || _page === void 0
|
|
161
|
+
(_page = page) === null || _page === void 0 ? void 0 : _page._frameManager.setCloseAllOpeningDialogs(true);
|
|
162
162
|
await ((_page2 = page) === null || _page2 === void 0 ? void 0 : _page2._frameManager.closeOpenDialogs());
|
|
163
163
|
// Navigate to about:blank first to ensure no page scripts are running after this point.
|
|
164
164
|
await ((_page3 = page) === null || _page3 === void 0 ? void 0 : _page3.mainFrame().goto(metadata, 'about:blank', {
|
|
165
165
|
timeout: 0
|
|
166
166
|
}));
|
|
167
|
-
(_page4 = page) === null || _page4 === void 0
|
|
167
|
+
(_page4 = page) === null || _page4 === void 0 ? void 0 : _page4._frameManager.setCloseAllOpeningDialogs(false);
|
|
168
168
|
await this._resetStorage();
|
|
169
169
|
await this._removeExposedBindings();
|
|
170
170
|
await this._removeInitScripts();
|
|
@@ -401,9 +401,9 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
401
401
|
return result;
|
|
402
402
|
}
|
|
403
403
|
async _resetStorage() {
|
|
404
|
-
var _this$_options$storag;
|
|
404
|
+
var _this$_options$storag, _this$_options$storag2;
|
|
405
405
|
const oldOrigins = this._origins;
|
|
406
|
-
const newOrigins = new Map(((_this$_options$storag = this._options.storageState) === null || _this$_options$storag === void 0
|
|
406
|
+
const newOrigins = new Map(((_this$_options$storag = this._options.storageState) === null || _this$_options$storag === void 0 ? void 0 : (_this$_options$storag2 = _this$_options$storag.origins) === null || _this$_options$storag2 === void 0 ? void 0 : _this$_options$storag2.map(p => [p.origin, p])) || []);
|
|
407
407
|
if (!oldOrigins.size && !newOrigins.size) return;
|
|
408
408
|
let page = this.pages()[0];
|
|
409
409
|
const internalMetadata = (0, _instrumentation.serverSideCallMetadata)();
|
|
@@ -429,10 +429,11 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
429
429
|
this._origins = new Set([...newOrigins.keys()]);
|
|
430
430
|
// It is safe to not restore the URL to about:blank since we are doing it in Page::resetForReuse.
|
|
431
431
|
}
|
|
432
|
+
|
|
432
433
|
async _resetCookies() {
|
|
433
|
-
var _this$_options$
|
|
434
|
+
var _this$_options$storag3, _this$_options$storag4;
|
|
434
435
|
await this.clearCookies();
|
|
435
|
-
if ((_this$_options$
|
|
436
|
+
if ((_this$_options$storag3 = this._options.storageState) !== null && _this$_options$storag3 !== void 0 && _this$_options$storag3.cookies) await this.addCookies((_this$_options$storag4 = this._options.storageState) === null || _this$_options$storag4 === void 0 ? void 0 : _this$_options$storag4.cookies);
|
|
436
437
|
}
|
|
437
438
|
isSettingStorageState() {
|
|
438
439
|
return this._settingStorageState;
|
|
@@ -17,12 +17,12 @@ var _timeoutSettings = require("../common/timeoutSettings");
|
|
|
17
17
|
var _utils = require("../utils");
|
|
18
18
|
var _fileUtils = require("../utils/fileUtils");
|
|
19
19
|
var _helper = require("./helper");
|
|
20
|
-
var _debugLogger = require("../
|
|
20
|
+
var _debugLogger = require("../common/debugLogger");
|
|
21
21
|
var _instrumentation = require("./instrumentation");
|
|
22
22
|
var _manualPromise = require("../utils/manualPromise");
|
|
23
23
|
var _protocolError = require("./protocolError");
|
|
24
|
-
function _getRequireWildcardCache(
|
|
25
|
-
function _interopRequireWildcard(
|
|
24
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
27
|
/**
|
|
28
28
|
* Copyright (c) Microsoft Corporation.
|
|
@@ -164,7 +164,7 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
164
164
|
const registryExecutable = _registry.registry.findExecutable(options.channel || this._name);
|
|
165
165
|
if (!registryExecutable || registryExecutable.browserName !== this._name) throw new Error(`Unsupported ${this._name} channel "${options.channel}"`);
|
|
166
166
|
executable = registryExecutable.executablePathOrDie(this.attribution.playwright.options.sdkLanguage);
|
|
167
|
-
await
|
|
167
|
+
await registryExecutable.validateHostRequirements(this.attribution.playwright.options.sdkLanguage);
|
|
168
168
|
}
|
|
169
169
|
const waitForWSEndpoint = options.useWebSocket || (_options$args = options.args) !== null && _options$args !== void 0 && _options$args.some(a => a.startsWith('--remote-debugging-port')) ? new _manualPromise.ManualPromise() : undefined;
|
|
170
170
|
const waitForJuggler = this._name === 'firefox' ? new _manualPromise.ManualPromise() : undefined;
|
|
@@ -203,7 +203,7 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
203
203
|
},
|
|
204
204
|
onExit: (exitCode, signal) => {
|
|
205
205
|
// Unblock launch when browser prematurely exits.
|
|
206
|
-
waitForJuggler === null || waitForJuggler === void 0
|
|
206
|
+
waitForJuggler === null || waitForJuggler === void 0 ? void 0 : waitForJuggler.resolve();
|
|
207
207
|
if (browserProcess && browserProcess.onclose) browserProcess.onclose(exitCode, signal);
|
|
208
208
|
}
|
|
209
209
|
});
|
|
@@ -19,7 +19,7 @@ var _userAgent = require("../../utils/userAgent");
|
|
|
19
19
|
var _ascii = require("../../utils/ascii");
|
|
20
20
|
var _utils = require("../../utils");
|
|
21
21
|
var _fileUtils = require("../../utils/fileUtils");
|
|
22
|
-
var _debugLogger = require("../../
|
|
22
|
+
var _debugLogger = require("../../common/debugLogger");
|
|
23
23
|
var _progress = require("../progress");
|
|
24
24
|
var _timeoutSettings = require("../../common/timeoutSettings");
|
|
25
25
|
var _helper = require("../helper");
|
|
@@ -16,8 +16,8 @@ var _crPage = require("./crPage");
|
|
|
16
16
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
17
17
|
var _crServiceWorker = require("./crServiceWorker");
|
|
18
18
|
var _artifact = require("../artifact");
|
|
19
|
-
function _getRequireWildcardCache(
|
|
20
|
-
function _interopRequireWildcard(
|
|
19
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
21
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
22
|
/**
|
|
23
23
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
@@ -405,6 +405,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
405
405
|
for (const page of this.pages()) await page._delegate.updateUserAgent();
|
|
406
406
|
// TODO: service workers don't have Emulation domain?
|
|
407
407
|
}
|
|
408
|
+
|
|
408
409
|
async setOffline(offline) {
|
|
409
410
|
this._options.offline = offline;
|
|
410
411
|
for (const page of this.pages()) await page._delegate.updateOffline();
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.kBrowserCloseMessageId = exports.ConnectionEvents = exports.CRSession = exports.CRConnection = exports.CDPSession = void 0;
|
|
7
7
|
var _utils = require("../../utils");
|
|
8
8
|
var _events = require("events");
|
|
9
|
-
var _debugLogger = require("../../
|
|
9
|
+
var _debugLogger = require("../../common/debugLogger");
|
|
10
10
|
var _helper = require("../helper");
|
|
11
11
|
var _protocolError = require("../protocolError");
|
|
12
12
|
/**
|
|
@@ -154,7 +154,7 @@ class CRSession extends _events.EventEmitter {
|
|
|
154
154
|
// Message to a closed session, just ignore it.
|
|
155
155
|
} else {
|
|
156
156
|
var _object$error2;
|
|
157
|
-
(0, _utils.assert)(!object.id, (object === null || object === void 0
|
|
157
|
+
(0, _utils.assert)(!object.id, (object === null || object === void 0 ? void 0 : (_object$error2 = object.error) === null || _object$error2 === void 0 ? void 0 : _object$error2.message) || undefined);
|
|
158
158
|
Promise.resolve().then(() => {
|
|
159
159
|
if (this._eventListener) this._eventListener(object.method, object.params);
|
|
160
160
|
this.emit(object.method, object.params);
|
|
@@ -9,8 +9,8 @@ var js = _interopRequireWildcard(require("../javascript"));
|
|
|
9
9
|
var _stackTrace = require("../../utils/stackTrace");
|
|
10
10
|
var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
|
|
11
11
|
var _protocolError = require("../protocolError");
|
|
12
|
-
function _getRequireWildcardCache(
|
|
13
|
-
function _interopRequireWildcard(
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
14
|
/**
|
|
15
15
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
16
16
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -8,8 +8,8 @@ var input = _interopRequireWildcard(require("../input"));
|
|
|
8
8
|
var _macEditingCommands = require("../macEditingCommands");
|
|
9
9
|
var _utils = require("../../utils");
|
|
10
10
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
11
|
-
function _getRequireWildcardCache(
|
|
12
|
-
function _interopRequireWildcard(
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
13
|
/**
|
|
14
14
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
15
15
|
* Modifications copyright (c) Microsoft Corporation.
|