@checkly/playwright-core 1.41.21 → 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/server/transport.js
CHANGED
|
@@ -42,21 +42,21 @@ class WebSocketTransport {
|
|
|
42
42
|
}
|
|
43
43
|
static async _connect(progress, url, headers, redirect, debugLogHeader) {
|
|
44
44
|
const logUrl = stripQueryParams(url);
|
|
45
|
-
progress === null || progress === void 0
|
|
45
|
+
progress === null || progress === void 0 || progress.log(`<ws connecting> ${logUrl}`);
|
|
46
46
|
const transport = new WebSocketTransport(progress, url, logUrl, headers, redirect.follow && redirect.hadRedirects, debugLogHeader);
|
|
47
47
|
let success = false;
|
|
48
|
-
progress === null || progress === void 0
|
|
48
|
+
progress === null || progress === void 0 || progress.cleanupWhenAborted(async () => {
|
|
49
49
|
if (!success) await transport.closeAndWait().catch(e => null);
|
|
50
50
|
});
|
|
51
51
|
const result = await new Promise((fulfill, reject) => {
|
|
52
52
|
transport._ws.on('open', async () => {
|
|
53
|
-
progress === null || progress === void 0
|
|
53
|
+
progress === null || progress === void 0 || progress.log(`<ws connected> ${logUrl}`);
|
|
54
54
|
fulfill({
|
|
55
55
|
transport
|
|
56
56
|
});
|
|
57
57
|
});
|
|
58
58
|
transport._ws.on('error', event => {
|
|
59
|
-
progress === null || progress === void 0
|
|
59
|
+
progress === null || progress === void 0 || progress.log(`<ws connect error> ${logUrl} ${event.message}`);
|
|
60
60
|
reject(new Error('WebSocket error: ' + event.message));
|
|
61
61
|
transport._ws.close();
|
|
62
62
|
});
|
|
@@ -69,22 +69,24 @@ class WebSocketTransport {
|
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
for (let i = 0; i < response.rawHeaders.length; i += 2) {
|
|
72
|
-
if (debugLogHeader && response.rawHeaders[i] === debugLogHeader) progress === null || progress === void 0
|
|
72
|
+
if (debugLogHeader && response.rawHeaders[i] === debugLogHeader) progress === null || progress === void 0 || progress.log(response.rawHeaders[i + 1]);
|
|
73
73
|
}
|
|
74
74
|
const chunks = [];
|
|
75
75
|
const errorPrefix = `${logUrl} ${response.statusCode} ${response.statusMessage}`;
|
|
76
76
|
response.on('data', chunk => chunks.push(chunk));
|
|
77
77
|
response.on('close', () => {
|
|
78
78
|
const error = chunks.length ? `${errorPrefix}\n${Buffer.concat(chunks)}` : errorPrefix;
|
|
79
|
-
progress === null || progress === void 0
|
|
79
|
+
progress === null || progress === void 0 || progress.log(`<ws unexpected response> ${error}`);
|
|
80
80
|
reject(new Error('WebSocket error: ' + error));
|
|
81
81
|
transport._ws.close();
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
84
|
});
|
|
85
85
|
if (result.redirect) {
|
|
86
|
-
// Strip
|
|
87
|
-
const newHeaders = Object.fromEntries(Object.entries(headers || {}).filter(([name]) =>
|
|
86
|
+
// Strip authorization headers from the redirected request.
|
|
87
|
+
const newHeaders = Object.fromEntries(Object.entries(headers || {}).filter(([name]) => {
|
|
88
|
+
return !name.includes('access-key') && name.toLowerCase() !== 'authorization';
|
|
89
|
+
}));
|
|
88
90
|
return WebSocketTransport._connect(progress, result.redirect.headers.location, newHeaders, {
|
|
89
91
|
follow: true,
|
|
90
92
|
hadRedirects: true
|
|
@@ -120,7 +122,7 @@ class WebSocketTransport {
|
|
|
120
122
|
name: response.rawHeaders[i],
|
|
121
123
|
value: response.rawHeaders[i + 1]
|
|
122
124
|
});
|
|
123
|
-
if (debugLogHeader && response.rawHeaders[i] === debugLogHeader) progress === null || progress === void 0
|
|
125
|
+
if (debugLogHeader && response.rawHeaders[i] === debugLogHeader) progress === null || progress === void 0 || progress.log(response.rawHeaders[i + 1]);
|
|
124
126
|
}
|
|
125
127
|
});
|
|
126
128
|
this._progress = progress;
|
|
@@ -137,7 +139,7 @@ class WebSocketTransport {
|
|
|
137
139
|
parsedJson = JSON.parse(eventData);
|
|
138
140
|
} catch (e) {
|
|
139
141
|
var _this$_progress;
|
|
140
|
-
(_this$_progress = this._progress) === null || _this$_progress === void 0
|
|
142
|
+
(_this$_progress = this._progress) === null || _this$_progress === void 0 || _this$_progress.log(`<closing ws> Closing websocket due to malformed JSON. eventData=${eventData} e=${e === null || e === void 0 ? void 0 : e.message}`);
|
|
141
143
|
this._ws.close();
|
|
142
144
|
return;
|
|
143
145
|
}
|
|
@@ -145,14 +147,14 @@ class WebSocketTransport {
|
|
|
145
147
|
if (this.onmessage) this.onmessage.call(null, parsedJson);
|
|
146
148
|
} catch (e) {
|
|
147
149
|
var _this$_progress2;
|
|
148
|
-
(_this$_progress2 = this._progress) === null || _this$_progress2 === void 0
|
|
150
|
+
(_this$_progress2 = this._progress) === null || _this$_progress2 === void 0 || _this$_progress2.log(`<closing ws> Closing websocket due to failed onmessage callback. eventData=${eventData} e=${e === null || e === void 0 ? void 0 : e.message}`);
|
|
149
151
|
this._ws.close();
|
|
150
152
|
}
|
|
151
153
|
});
|
|
152
154
|
});
|
|
153
155
|
this._ws.addEventListener('close', event => {
|
|
154
156
|
var _this$_progress3;
|
|
155
|
-
(_this$_progress3 = this._progress) === null || _this$_progress3 === void 0
|
|
157
|
+
(_this$_progress3 = this._progress) === null || _this$_progress3 === void 0 || _this$_progress3.log(`<ws disconnected> ${logUrl} code=${event.code} reason=${event.reason}`);
|
|
156
158
|
if (this.onclose) this.onclose.call(null);
|
|
157
159
|
});
|
|
158
160
|
// Prevent Error: read ECONNRESET.
|
|
@@ -166,7 +168,7 @@ class WebSocketTransport {
|
|
|
166
168
|
}
|
|
167
169
|
close() {
|
|
168
170
|
var _this$_progress5;
|
|
169
|
-
(_this$_progress5 = this._progress) === null || _this$_progress5 === void 0
|
|
171
|
+
(_this$_progress5 = this._progress) === null || _this$_progress5 === void 0 || _this$_progress5.log(`<ws disconnecting> ${this._logUrl}`);
|
|
170
172
|
this._ws.close();
|
|
171
173
|
}
|
|
172
174
|
async closeAndWait() {
|
|
@@ -12,8 +12,8 @@ var network = _interopRequireWildcard(require("../network"));
|
|
|
12
12
|
var _wkConnection = require("./wkConnection");
|
|
13
13
|
var _wkPage = require("./wkPage");
|
|
14
14
|
var _errors = require("../errors");
|
|
15
|
-
function _getRequireWildcardCache(
|
|
16
|
-
function _interopRequireWildcard(
|
|
15
|
+
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); }
|
|
16
|
+
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; }
|
|
17
17
|
/**
|
|
18
18
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
19
19
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -120,7 +120,7 @@ class WKBrowser extends _browser.Browser {
|
|
|
120
120
|
}
|
|
121
121
|
_onScreencastFinished(payload) {
|
|
122
122
|
var _this$_takeVideo;
|
|
123
|
-
(_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0
|
|
123
|
+
(_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0 || _this$_takeVideo.reportFinished();
|
|
124
124
|
}
|
|
125
125
|
_onPageProxyCreated(event) {
|
|
126
126
|
const pageProxyId = event.pageProxyId;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.kPageProxyMessageReceived = exports.kBrowserCloseMessageId = exports.WKSession = exports.WKConnection = void 0;
|
|
7
7
|
var _events = require("events");
|
|
8
8
|
var _utils = require("../../utils");
|
|
9
|
-
var _debugLogger = require("../../
|
|
9
|
+
var _debugLogger = require("../../utils/debugLogger");
|
|
10
10
|
var _helper = require("../helper");
|
|
11
11
|
var _protocolError = require("../protocolError");
|
|
12
12
|
/**
|
|
@@ -7,8 +7,8 @@ exports.WKExecutionContext = void 0;
|
|
|
7
7
|
var js = _interopRequireWildcard(require("../javascript"));
|
|
8
8
|
var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
|
|
9
9
|
var _protocolError = require("../protocolError");
|
|
10
|
-
function _getRequireWildcardCache(
|
|
11
|
-
function _interopRequireWildcard(
|
|
10
|
+
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); }
|
|
11
|
+
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; }
|
|
12
12
|
/**
|
|
13
13
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
14
14
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -7,8 +7,8 @@ exports.RawTouchscreenImpl = exports.RawMouseImpl = exports.RawKeyboardImpl = vo
|
|
|
7
7
|
var input = _interopRequireWildcard(require("../input"));
|
|
8
8
|
var _macEditingCommands = require("../macEditingCommands");
|
|
9
9
|
var _utils = require("../../utils");
|
|
10
|
-
function _getRequireWildcardCache(
|
|
11
|
-
function _interopRequireWildcard(
|
|
10
|
+
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); }
|
|
11
|
+
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; }
|
|
12
12
|
/**
|
|
13
13
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
14
14
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.WKRouteImpl = exports.WKInterceptableRequest = void 0;
|
|
7
7
|
var network = _interopRequireWildcard(require("../network"));
|
|
8
8
|
var _utils = require("../../utils");
|
|
9
|
-
function _getRequireWildcardCache(
|
|
10
|
-
function _interopRequireWildcard(
|
|
9
|
+
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); }
|
|
10
|
+
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; }
|
|
11
11
|
/**
|
|
12
12
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
13
13
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -22,12 +22,12 @@ var _wkInput = require("./wkInput");
|
|
|
22
22
|
var _wkInterceptableRequest = require("./wkInterceptableRequest");
|
|
23
23
|
var _wkProvisionalPage = require("./wkProvisionalPage");
|
|
24
24
|
var _wkWorkers = require("./wkWorkers");
|
|
25
|
-
var _debugLogger = require("../../
|
|
25
|
+
var _debugLogger = require("../../utils/debugLogger");
|
|
26
26
|
var _manualPromise = require("../../utils/manualPromise");
|
|
27
27
|
var _browserContext = require("../browserContext");
|
|
28
28
|
var _errors = require("../errors");
|
|
29
|
-
function _getRequireWildcardCache(
|
|
30
|
-
function _interopRequireWildcard(
|
|
29
|
+
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); }
|
|
30
|
+
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; }
|
|
31
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
32
|
/**
|
|
33
33
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
@@ -641,7 +641,6 @@ class WKPage {
|
|
|
641
641
|
headers: (0, _utils.headersArrayToObject)(this._calculateExtraHTTPHeaders(), false /* lowerCase */)
|
|
642
642
|
});
|
|
643
643
|
}
|
|
644
|
-
|
|
645
644
|
_calculateExtraHTTPHeaders() {
|
|
646
645
|
const locale = this._browserContext._options.locale;
|
|
647
646
|
const headers = network.mergeHeaders([this._browserContext._options.extraHTTPHeaders, this._page.extraHTTPHeaders(), locale ? network.singleHeader('Accept-Language', locale) : undefined]);
|
|
@@ -727,7 +726,6 @@ class WKPage {
|
|
|
727
726
|
enabled
|
|
728
727
|
}).catch(() => {}); // target can be closed.
|
|
729
728
|
}
|
|
730
|
-
|
|
731
729
|
async reload() {
|
|
732
730
|
await this._session.send('Page.reload');
|
|
733
731
|
}
|
|
@@ -766,7 +764,7 @@ class WKPage {
|
|
|
766
764
|
scripts.push('delete window.ondevicemotion');
|
|
767
765
|
scripts.push('delete window.ondeviceorientation');
|
|
768
766
|
}
|
|
769
|
-
scripts.push('if (!window.safari) window.safari = {};');
|
|
767
|
+
scripts.push('if (!window.safari) window.safari = { pushNotification: { toString() { return "[object SafariRemoteNotification]"; } } };');
|
|
770
768
|
scripts.push('if (!window.GestureEvent) window.GestureEvent = function GestureEvent() {};');
|
|
771
769
|
for (const binding of this._page.allBindings()) scripts.push(binding.source);
|
|
772
770
|
scripts.push(...this._browserContext.initScripts);
|
|
@@ -1072,14 +1070,14 @@ class WKPage {
|
|
|
1072
1070
|
// event from protocol. @see https://crbug.com/883475
|
|
1073
1071
|
const response = request.request._existingResponse();
|
|
1074
1072
|
if (response) {
|
|
1075
|
-
var _event$metrics, _event$metrics2,
|
|
1073
|
+
var _event$metrics, _event$metrics2, _responseReceivedPayl, _responseReceivedPayl2, _responseReceivedPayl3, _event$metrics3, _event$metrics$respon, _event$metrics4, _event$metrics$respon2, _event$metrics5;
|
|
1076
1074
|
const responseReceivedPayload = this._requestIdToResponseReceivedPayloadEvent.get(request._requestId);
|
|
1077
|
-
response._serverAddrFinished(parseRemoteAddress(event === null || event === void 0
|
|
1075
|
+
response._serverAddrFinished(parseRemoteAddress(event === null || event === void 0 || (_event$metrics = event.metrics) === null || _event$metrics === void 0 ? void 0 : _event$metrics.remoteAddress));
|
|
1078
1076
|
response._securityDetailsFinished({
|
|
1079
|
-
protocol: isLoadedSecurely(response.url(), response.timing()) ? (_event$metrics2 = event.metrics) === null || _event$metrics2 === void 0
|
|
1080
|
-
subjectName: responseReceivedPayload === null || responseReceivedPayload === void 0
|
|
1081
|
-
validFrom: responseReceivedPayload === null || responseReceivedPayload === void 0
|
|
1082
|
-
validTo: responseReceivedPayload === null || responseReceivedPayload === void 0
|
|
1077
|
+
protocol: isLoadedSecurely(response.url(), response.timing()) ? (_event$metrics2 = event.metrics) === null || _event$metrics2 === void 0 || (_event$metrics2 = _event$metrics2.securityConnection) === null || _event$metrics2 === void 0 ? void 0 : _event$metrics2.protocol : undefined,
|
|
1078
|
+
subjectName: responseReceivedPayload === null || responseReceivedPayload === void 0 || (_responseReceivedPayl = responseReceivedPayload.response.security) === null || _responseReceivedPayl === void 0 || (_responseReceivedPayl = _responseReceivedPayl.certificate) === null || _responseReceivedPayl === void 0 ? void 0 : _responseReceivedPayl.subject,
|
|
1079
|
+
validFrom: responseReceivedPayload === null || responseReceivedPayload === void 0 || (_responseReceivedPayl2 = responseReceivedPayload.response.security) === null || _responseReceivedPayl2 === void 0 || (_responseReceivedPayl2 = _responseReceivedPayl2.certificate) === null || _responseReceivedPayl2 === void 0 ? void 0 : _responseReceivedPayl2.validFrom,
|
|
1080
|
+
validTo: responseReceivedPayload === null || responseReceivedPayload === void 0 || (_responseReceivedPayl3 = responseReceivedPayload.response.security) === null || _responseReceivedPayl3 === void 0 || (_responseReceivedPayl3 = _responseReceivedPayl3.certificate) === null || _responseReceivedPayl3 === void 0 ? void 0 : _responseReceivedPayl3.validUntil
|
|
1083
1081
|
});
|
|
1084
1082
|
if ((_event$metrics3 = event.metrics) !== null && _event$metrics3 !== void 0 && _event$metrics3.protocol) response._setHttpVersion(event.metrics.protocol);
|
|
1085
1083
|
response.setEncodedBodySize((_event$metrics$respon = (_event$metrics4 = event.metrics) === null || _event$metrics4 === void 0 ? void 0 : _event$metrics4.responseBodyBytesReceived) !== null && _event$metrics$respon !== void 0 ? _event$metrics$respon : null);
|
package/lib/utils/comparators.js
CHANGED
|
@@ -49,7 +49,7 @@ function compareBuffersOrStrings(actualBuffer, expectedBuffer) {
|
|
|
49
49
|
return null;
|
|
50
50
|
}
|
|
51
51
|
function compareImages(mimeType, actualBuffer, expectedBuffer, options = {}) {
|
|
52
|
-
var _options$
|
|
52
|
+
var _options$comparator, _ref;
|
|
53
53
|
if (!actualBuffer || !(actualBuffer instanceof Buffer)) return {
|
|
54
54
|
errorMessage: 'Actual result should be a Buffer.'
|
|
55
55
|
};
|
|
@@ -75,19 +75,19 @@ function compareImages(mimeType, actualBuffer, expectedBuffer, options = {}) {
|
|
|
75
75
|
height: size.height
|
|
76
76
|
});
|
|
77
77
|
let count;
|
|
78
|
-
if (options.
|
|
78
|
+
if (options.comparator === 'ssim-cie94') {
|
|
79
79
|
count = (0, _compare.compare)(expected.data, actual.data, diff.data, size.width, size.height, {
|
|
80
80
|
// All ΔE* formulae are originally designed to have the difference of 1.0 stand for a "just noticeable difference" (JND).
|
|
81
81
|
// See https://en.wikipedia.org/wiki/Color_difference#CIELAB_%CE%94E*
|
|
82
82
|
maxColorDeltaE94: 1.0
|
|
83
83
|
});
|
|
84
|
-
} else if (((_options$
|
|
84
|
+
} else if (((_options$comparator = options.comparator) !== null && _options$comparator !== void 0 ? _options$comparator : 'pixelmatch') === 'pixelmatch') {
|
|
85
85
|
var _options$threshold;
|
|
86
86
|
count = pixelmatch(expected.data, actual.data, diff.data, size.width, size.height, {
|
|
87
87
|
threshold: (_options$threshold = options.threshold) !== null && _options$threshold !== void 0 ? _options$threshold : 0.2
|
|
88
88
|
});
|
|
89
89
|
} else {
|
|
90
|
-
throw new Error(`Configuration specifies unknown comparator "${options.
|
|
90
|
+
throw new Error(`Configuration specifies unknown comparator "${options.comparator}"`);
|
|
91
91
|
}
|
|
92
92
|
const maxDiffPixels1 = options.maxDiffPixels;
|
|
93
93
|
const maxDiffPixels2 = options.maxDiffPixelRatio !== undefined ? expected.width * expected.height * options.maxDiffPixelRatio : undefined;
|
package/lib/utils/fileUtils.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.fileUploadSizeLimit = exports.existsAsync = void 0;
|
|
|
9
9
|
exports.mkdirIfNeeded = mkdirIfNeeded;
|
|
10
10
|
exports.removeFolders = removeFolders;
|
|
11
11
|
exports.sanitizeForFilePath = sanitizeForFilePath;
|
|
12
|
+
exports.toPosixPath = toPosixPath;
|
|
12
13
|
var _fs = _interopRequireDefault(require("fs"));
|
|
13
14
|
var _path = _interopRequireDefault(require("path"));
|
|
14
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -59,4 +60,7 @@ async function copyFileAndMakeWritable(from, to) {
|
|
|
59
60
|
}
|
|
60
61
|
function sanitizeForFilePath(s) {
|
|
61
62
|
return s.replace(/[\x00-\x2C\x2E-\x2F\x3A-\x40\x5B-\x60\x7B-\x7F]+/g, '-');
|
|
63
|
+
}
|
|
64
|
+
function toPosixPath(aPath) {
|
|
65
|
+
return aPath.split(_path.default.sep).join(_path.default.posix.sep);
|
|
62
66
|
}
|
|
@@ -11,8 +11,8 @@ var https = _interopRequireWildcard(require("https"));
|
|
|
11
11
|
var net = _interopRequireWildcard(require("net"));
|
|
12
12
|
var tls = _interopRequireWildcard(require("tls"));
|
|
13
13
|
var _manualPromise = require("./manualPromise");
|
|
14
|
-
function _getRequireWildcardCache(
|
|
15
|
-
function _interopRequireWildcard(
|
|
14
|
+
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); }
|
|
15
|
+
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; }
|
|
16
16
|
/**
|
|
17
17
|
* Copyright (c) Microsoft Corporation.
|
|
18
18
|
*
|
|
@@ -31,6 +31,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
31
31
|
|
|
32
32
|
// Implementation(partial) of Happy Eyeballs 2 algorithm described in
|
|
33
33
|
// https://www.rfc-editor.org/rfc/rfc8305
|
|
34
|
+
|
|
34
35
|
// Same as in Chromium (https://source.chromium.org/chromium/chromium/src/+/5666ff4f5077a7e2f72902f3a95f5d553ea0d88d:net/socket/transport_connect_job.cc;l=102)
|
|
35
36
|
const connectionAttemptDelayMs = 300;
|
|
36
37
|
const timings = {
|
|
@@ -93,7 +94,7 @@ async function createConnectionAsync(options, oncreate, useTLS) {
|
|
|
93
94
|
if (!sockets.delete(socket)) return;
|
|
94
95
|
++errorCount;
|
|
95
96
|
(_firstError = firstError) !== null && _firstError !== void 0 ? _firstError : firstError = err;
|
|
96
|
-
if (errorCount === addresses.length) oncreate === null || oncreate === void 0
|
|
97
|
+
if (errorCount === addresses.length) oncreate === null || oncreate === void 0 || oncreate(firstError);
|
|
97
98
|
};
|
|
98
99
|
const connected = new _manualPromise.ManualPromise();
|
|
99
100
|
for (const {
|
|
@@ -117,7 +118,7 @@ async function createConnectionAsync(options, oncreate, useTLS) {
|
|
|
117
118
|
socket.on('connect', () => {
|
|
118
119
|
timings.values.connect = performance.now() - timings.values.startTimeNow;
|
|
119
120
|
connected.resolve();
|
|
120
|
-
oncreate === null || oncreate === void 0
|
|
121
|
+
oncreate === null || oncreate === void 0 || oncreate(null, socket);
|
|
121
122
|
// TODO: Cache the result?
|
|
122
123
|
// Close other outstanding sockets.
|
|
123
124
|
sockets.delete(socket);
|
|
@@ -63,7 +63,7 @@ function calculatePlatform() {
|
|
|
63
63
|
const isOfficiallySupportedPlatform = (distroInfo === null || distroInfo === void 0 ? void 0 : distroInfo.id) === 'ubuntu';
|
|
64
64
|
if (parseInt(distroInfo.version, 10) <= 19) return {
|
|
65
65
|
hostPlatform: 'ubuntu18.04' + archSuffix,
|
|
66
|
-
isOfficiallySupportedPlatform
|
|
66
|
+
isOfficiallySupportedPlatform: false
|
|
67
67
|
};
|
|
68
68
|
if (parseInt(distroInfo.version, 10) <= 21) return {
|
|
69
69
|
hostPlatform: 'ubuntu20.04' + archSuffix,
|
package/lib/utils/index.js
CHANGED
|
@@ -201,6 +201,17 @@ Object.keys(_rtti).forEach(function (key) {
|
|
|
201
201
|
}
|
|
202
202
|
});
|
|
203
203
|
});
|
|
204
|
+
var _semaphore = require("./semaphore");
|
|
205
|
+
Object.keys(_semaphore).forEach(function (key) {
|
|
206
|
+
if (key === "default" || key === "__esModule") return;
|
|
207
|
+
if (key in exports && exports[key] === _semaphore[key]) return;
|
|
208
|
+
Object.defineProperty(exports, key, {
|
|
209
|
+
enumerable: true,
|
|
210
|
+
get: function () {
|
|
211
|
+
return _semaphore[key];
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
});
|
|
204
215
|
var _spawnAsync = require("./spawnAsync");
|
|
205
216
|
Object.keys(_spawnAsync).forEach(function (key) {
|
|
206
217
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -8,8 +8,8 @@ exports.isInvalidSelectorError = isInvalidSelectorError;
|
|
|
8
8
|
exports.parseCSS = parseCSS;
|
|
9
9
|
exports.serializeSelector = serializeSelector;
|
|
10
10
|
var css = _interopRequireWildcard(require("./cssTokenizer"));
|
|
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
|
*
|
|
@@ -167,11 +167,13 @@ function locatorOrSelectorAsSelector(language, locator, testIdAttributeName) {
|
|
|
167
167
|
preferredQuote
|
|
168
168
|
} = parseLocator(locator, testIdAttributeName);
|
|
169
169
|
const locators = (0, _locatorGenerators.asLocators)(language, selector, undefined, undefined, preferredQuote);
|
|
170
|
-
const digest = digestForComparison(locator);
|
|
171
|
-
if (locators.some(candidate => digestForComparison(candidate) === digest)) return selector;
|
|
170
|
+
const digest = digestForComparison(language, locator);
|
|
171
|
+
if (locators.some(candidate => digestForComparison(language, candidate) === digest)) return selector;
|
|
172
172
|
} catch (e) {}
|
|
173
173
|
return '';
|
|
174
174
|
}
|
|
175
|
-
function digestForComparison(locator) {
|
|
176
|
-
|
|
175
|
+
function digestForComparison(language, locator) {
|
|
176
|
+
locator = locator.replace(/\s/g, '');
|
|
177
|
+
if (language === 'javascript') locator = locator.replace(/\\?["`]/g, '\'');
|
|
178
|
+
return locator;
|
|
177
179
|
}
|
package/lib/utils/network.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.createHttpServer = createHttpServer;
|
|
|
9
9
|
exports.createHttpsServer = createHttpsServer;
|
|
10
10
|
exports.fetchData = fetchData;
|
|
11
11
|
exports.httpRequest = httpRequest;
|
|
12
|
+
exports.isURLAvailable = isURLAvailable;
|
|
12
13
|
exports.urlMatches = urlMatches;
|
|
13
14
|
exports.urlMatchesEqual = urlMatchesEqual;
|
|
14
15
|
var _http = _interopRequireDefault(require("http"));
|
|
@@ -141,6 +142,38 @@ function createHttpsServer(...args) {
|
|
|
141
142
|
decorateServer(server);
|
|
142
143
|
return server;
|
|
143
144
|
}
|
|
145
|
+
async function isURLAvailable(url, ignoreHTTPSErrors, onLog, onStdErr) {
|
|
146
|
+
let statusCode = await httpStatusCode(url, ignoreHTTPSErrors, onLog, onStdErr);
|
|
147
|
+
if (statusCode === 404 && url.pathname === '/') {
|
|
148
|
+
const indexUrl = new URL(url);
|
|
149
|
+
indexUrl.pathname = '/index.html';
|
|
150
|
+
statusCode = await httpStatusCode(indexUrl, ignoreHTTPSErrors, onLog, onStdErr);
|
|
151
|
+
}
|
|
152
|
+
return statusCode >= 200 && statusCode < 404;
|
|
153
|
+
}
|
|
154
|
+
async function httpStatusCode(url, ignoreHTTPSErrors, onLog, onStdErr) {
|
|
155
|
+
return new Promise(resolve => {
|
|
156
|
+
onLog === null || onLog === void 0 || onLog(`HTTP HEAD: ${url}`);
|
|
157
|
+
httpRequest({
|
|
158
|
+
method: 'HEAD',
|
|
159
|
+
url: url.toString(),
|
|
160
|
+
headers: {
|
|
161
|
+
Accept: '*/*'
|
|
162
|
+
},
|
|
163
|
+
rejectUnauthorized: !ignoreHTTPSErrors
|
|
164
|
+
}, res => {
|
|
165
|
+
var _res$statusCode;
|
|
166
|
+
res.resume();
|
|
167
|
+
const statusCode = (_res$statusCode = res.statusCode) !== null && _res$statusCode !== void 0 ? _res$statusCode : 0;
|
|
168
|
+
onLog === null || onLog === void 0 || onLog(`HTTP Status: ${statusCode}`);
|
|
169
|
+
resolve(statusCode);
|
|
170
|
+
}, error => {
|
|
171
|
+
if (error.code === 'DEPTH_ZERO_SELF_SIGNED_CERT') onStdErr === null || onStdErr === void 0 || onStdErr(`[WebServer] Self-signed certificate detected. Try adding ignoreHTTPSErrors: true to config.webServer.`);
|
|
172
|
+
onLog === null || onLog === void 0 || onLog(`Error while checking if ${url} is available: ${error.message}`);
|
|
173
|
+
resolve(0);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}
|
|
144
177
|
function decorateServer(server) {
|
|
145
178
|
const sockets = new Set();
|
|
146
179
|
server.on('connection', socket => {
|
|
@@ -13,8 +13,8 @@ var childProcess = _interopRequireWildcard(require("child_process"));
|
|
|
13
13
|
var readline = _interopRequireWildcard(require("readline"));
|
|
14
14
|
var _ = require("./");
|
|
15
15
|
var _fileUtils = require("./fileUtils");
|
|
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 2017 Google Inc. All rights reserved.
|
|
@@ -95,6 +95,11 @@ function addProcessHandlerIfNeeded(name) {
|
|
|
95
95
|
process.on(name, processHandlers[name]);
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
+
function removeProcessHandlersIfNeeded() {
|
|
99
|
+
if (killSet.size) return;
|
|
100
|
+
for (const handler of installedHandlers) process.off(handler, processHandlers[handler]);
|
|
101
|
+
installedHandlers.clear();
|
|
102
|
+
}
|
|
98
103
|
async function launchProcess(options) {
|
|
99
104
|
const stdio = options.stdio === 'pipe' ? ['ignore', 'pipe', 'pipe', 'pipe', 'pipe'] : ['pipe', 'pipe', 'pipe'];
|
|
100
105
|
options.log(`<launching> ${options.command} ${options.args ? options.args.join(' ') : ''}`);
|
|
@@ -149,6 +154,7 @@ async function launchProcess(options) {
|
|
|
149
154
|
processClosed = true;
|
|
150
155
|
gracefullyCloseSet.delete(gracefullyClose);
|
|
151
156
|
killSet.delete(killProcessAndCleanup);
|
|
157
|
+
removeProcessHandlersIfNeeded();
|
|
152
158
|
options.onExit(exitCode, signal);
|
|
153
159
|
// Cleanup as process exits.
|
|
154
160
|
cleanup().then(fulfillCleanup);
|
|
@@ -182,6 +188,7 @@ async function launchProcess(options) {
|
|
|
182
188
|
function killProcess() {
|
|
183
189
|
gracefullyCloseSet.delete(gracefullyClose);
|
|
184
190
|
killSet.delete(killProcessAndCleanup);
|
|
191
|
+
removeProcessHandlersIfNeeded();
|
|
185
192
|
options.log(`[pid=${spawnedProcess.pid}] <kill>`);
|
|
186
193
|
if (spawnedProcess.pid && !spawnedProcess.killed && !processClosed) {
|
|
187
194
|
options.log(`[pid=${spawnedProcess.pid}] <will force kill>`);
|
package/lib/utils/profiler.js
CHANGED
|
@@ -7,8 +7,8 @@ exports.startProfiling = startProfiling;
|
|
|
7
7
|
exports.stopProfiling = stopProfiling;
|
|
8
8
|
var fs = _interopRequireWildcard(require("fs"));
|
|
9
9
|
var path = _interopRequireWildcard(require("path"));
|
|
10
|
-
function _getRequireWildcardCache(
|
|
11
|
-
function _interopRequireWildcard(
|
|
10
|
+
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); }
|
|
11
|
+
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; }
|
|
12
12
|
/**
|
|
13
13
|
* Copyright Microsoft Corporation. All rights reserved.
|
|
14
14
|
*
|
package/lib/utils/zipFile.js
CHANGED
|
@@ -69,7 +69,7 @@ class ZipFile {
|
|
|
69
69
|
}
|
|
70
70
|
close() {
|
|
71
71
|
var _this$_zipFile;
|
|
72
|
-
(_this$_zipFile = this._zipFile) === null || _this$_zipFile === void 0
|
|
72
|
+
(_this$_zipFile = this._zipFile) === null || _this$_zipFile === void 0 || _this$_zipFile.close();
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
exports.ZipFile = ZipFile;
|