patchright-core 1.51.3 → 1.52.0
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/browsers.json +15 -13
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +54 -67
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +312 -328
- package/lib/cli/programWithTestStub.js +51 -45
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +141 -228
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -36
- package/lib/client/browser.js +57 -61
- package/lib/client/browserContext.js +297 -326
- package/lib/client/browserType.js +92 -106
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +82 -95
- package/lib/client/clientHelper.js +46 -38
- package/lib/client/clientInstrumentation.js +40 -37
- package/lib/client/clientStackTrace.js +41 -37
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +190 -212
- package/lib/client/consoleMessage.js +31 -28
- package/lib/client/coverage.js +25 -22
- package/lib/client/dialog.js +30 -31
- package/lib/client/download.js +25 -25
- package/lib/client/electron.js +73 -75
- package/lib/client/elementHandle.js +111 -147
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +124 -121
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +135 -158
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +31 -28
- package/lib/client/frame.js +187 -306
- package/lib/client/harRouter.js +42 -52
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +54 -69
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +29 -28
- package/lib/client/locator.js +161 -245
- package/lib/client/network.js +277 -295
- package/lib/client/page.js +270 -318
- package/lib/client/platform.js +46 -43
- package/lib/client/playwright.js +51 -66
- package/lib/client/selectors.js +48 -46
- package/lib/client/stream.js +29 -25
- package/lib/client/timeoutSettings.js +49 -39
- package/lib/client/tracing.js +48 -84
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +69 -88
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +61 -56
- package/lib/client/worker.js +48 -58
- package/lib/client/writableStream.js +27 -23
- package/lib/generated/clockSource.js +26 -5
- package/lib/generated/consoleApiSource.js +26 -5
- package/lib/generated/injectedScriptSource.js +26 -5
- package/lib/generated/pollingRecorderSource.js +26 -5
- package/lib/generated/utilityScriptSource.js +26 -5
- package/lib/generated/webSocketMockSource.js +375 -4
- package/lib/inProcessFactory.js +53 -53
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -46
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2714 -2714
- package/lib/protocol/validatorPrimitives.js +114 -73
- package/lib/remote/playwrightConnection.js +140 -157
- package/lib/remote/playwrightServer.js +99 -84
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -209
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +221 -155
- package/lib/server/bidi/bidiChromium.js +106 -79
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +128 -113
- package/lib/server/bidi/bidiFirefox.js +76 -69
- package/lib/server/bidi/bidiInput.js +86 -97
- package/lib/server/bidi/bidiNetworkManager.js +137 -154
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +247 -219
- package/lib/server/bidi/bidiPdf.js +52 -86
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
- package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
- package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +321 -346
- package/lib/server/browserType.js +169 -182
- package/lib/server/callLog.js +47 -44
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +86 -64
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +253 -273
- package/lib/server/chromium/crConnection.js +91 -116
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +59 -51
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +88 -83
- package/lib/server/chromium/crInput.js +97 -95
- package/lib/server/chromium/crNetworkManager.js +284 -404
- package/lib/server/chromium/crPage.js +522 -608
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +82 -67
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +65 -99
- package/lib/server/clock.js +62 -50
- package/lib/server/codegen/csharp.js +185 -160
- package/lib/server/codegen/java.js +155 -128
- package/lib/server/codegen/javascript.js +163 -148
- package/lib/server/codegen/jsonl.js +32 -28
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +140 -125
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +105 -86
- package/lib/server/debugController.js +97 -124
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +50 -50
- package/lib/server/dialog.js +36 -35
- package/lib/server/dispatchers/androidDispatcher.js +196 -107
- package/lib/server/dispatchers/artifactDispatcher.js +62 -62
- package/lib/server/dispatchers/browserContextDispatcher.js +176 -205
- package/lib/server/dispatchers/browserDispatcher.js +78 -97
- package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
- package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
- package/lib/server/dispatchers/debugControllerDispatcher.js +48 -66
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +169 -220
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
- package/lib/server/dispatchers/frameDispatcher.js +99 -163
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
- package/lib/server/dispatchers/networkDispatchers.js +90 -107
- package/lib/server/dispatchers/pageDispatcher.js +128 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -45
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
- package/lib/server/dom.js +413 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -176
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +289 -323
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +65 -59
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +213 -277
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +91 -73
- package/lib/server/firefox/ffInput.js +67 -69
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +236 -273
- package/lib/server/firefox/firefox.js +76 -67
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +77 -111
- package/lib/server/frames.js +730 -894
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +287 -222
- package/lib/server/harBackend.js +80 -80
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -99
- package/lib/server/input.js +134 -163
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +143 -134
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +130 -122
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +262 -296
- package/lib/server/page.js +329 -426
- package/lib/server/pageBinding.js +88 -0
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +60 -67
- package/lib/server/progress.js +56 -51
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +70 -86
- package/lib/server/recorder/contextRecorder.js +134 -138
- package/lib/server/recorder/recorderApp.js +127 -136
- package/lib/server/recorder/recorderCollection.js +56 -44
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +79 -103
- package/lib/server/recorder/recorderUtils.js +56 -45
- package/lib/server/recorder/throttledFile.js +42 -30
- package/lib/server/recorder.js +177 -186
- package/lib/server/registry/browserFetcher.js +106 -101
- package/lib/server/registry/dependencies.js +245 -196
- package/lib/server/registry/index.js +904 -792
- package/lib/server/registry/nativeDeps.js +1073 -464
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +166 -182
- package/lib/server/selectors.js +85 -46
- package/lib/server/socksClientCertificatesInterceptor.js +166 -185
- package/lib/server/socksInterceptor.js +62 -70
- package/lib/server/storageScript.js +94 -100
- package/lib/server/timeoutSettings.js +58 -43
- package/lib/server/trace/recorder/snapshotter.js +70 -89
- package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
- package/lib/server/trace/recorder/tracing.js +321 -333
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +168 -146
- package/lib/server/transport.js +124 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +39 -26
- package/lib/server/utils/comparators.js +105 -103
- package/lib/server/utils/crypto.js +157 -112
- package/lib/server/utils/debug.js +37 -28
- package/lib/server/utils/debugLogger.js +69 -48
- package/lib/server/utils/env.js +52 -37
- package/lib/server/utils/eventsHelper.js +29 -28
- package/lib/server/utils/expectUtils.js +31 -26
- package/lib/server/utils/fileUtils.js +123 -136
- package/lib/server/utils/happyEyeballs.js +138 -123
- package/lib/server/utils/hostPlatform.js +84 -120
- package/lib/server/utils/httpServer.js +106 -121
- package/lib/server/utils/image_tools/colorUtils.js +42 -51
- package/lib/server/utils/image_tools/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +38 -30
- package/lib/server/utils/image_tools/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +50 -37
- package/lib/server/utils/network.js +143 -86
- package/lib/server/utils/nodePlatform.js +87 -79
- package/lib/server/utils/pipeTransport.js +44 -42
- package/lib/server/utils/processLauncher.js +111 -121
- package/lib/server/utils/profiler.js +52 -39
- package/lib/server/utils/socksProxy.js +280 -339
- package/lib/server/utils/spawnAsync.js +37 -41
- package/lib/server/utils/task.js +31 -38
- package/lib/server/utils/userAgent.js +73 -66
- package/lib/server/utils/wsServer.js +73 -69
- package/lib/server/utils/zipFile.js +36 -37
- package/lib/server/utils/zones.js +37 -34
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +76 -63
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +159 -176
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +84 -70
- package/lib/server/webkit/wkInput.js +82 -80
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +525 -619
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
- package/lib/utils/isomorphic/assert.js +28 -22
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +66 -59
- package/lib/utils/isomorphic/cssParser.js +121 -125
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +38 -37
- package/lib/utils/isomorphic/locatorGenerators.js +340 -357
- package/lib/utils/isomorphic/locatorParser.js +96 -105
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +47 -39
- package/lib/utils/isomorphic/mimeType.js +448 -25
- package/lib/utils/isomorphic/multimap.js +35 -27
- package/lib/utils/isomorphic/rtti.js +35 -33
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +27 -24
- package/lib/utils/isomorphic/stackTrace.js +87 -98
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +41 -22
- package/lib/utils/isomorphic/timeoutRunner.js +55 -54
- package/lib/utils/isomorphic/traceUtils.js +38 -41
- package/lib/utils/isomorphic/types.js +15 -4
- package/lib/utils/isomorphic/urlMatch.js +112 -67
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +97 -443
- package/lib/utilsBundle.js +101 -52
- package/lib/vite/htmlReport/index.html +21 -15
- package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-DVQi6prl.js} +1 -1
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/index.html +1 -1
- package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-dvXVzLxY.js} +1 -1
- package/lib/vite/traceViewer/assets/defaultSettingsView-BjymbO6M.js +265 -0
- package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
- package/lib/vite/traceViewer/index.ChIUCJnj.js +2 -0
- package/lib/vite/traceViewer/index.html +3 -3
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.html +3 -3
- package/lib/vite/traceViewer/uiMode.jUCiCtdp.js +5 -0
- package/lib/zipBundle.js +32 -23
- package/package.json +1 -1
- package/types/protocol.d.ts +436 -17
- package/types/types.d.ts +35 -16
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
- package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
- package/lib/vite/traceViewer/assets/defaultSettingsView-l0TyP_G8.js +0 -259
- package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
- package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
package/lib/server/javascript.js
CHANGED
|
@@ -1,45 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty
|
|
4
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var javascript_exports = {};
|
|
30
|
+
__export(javascript_exports, {
|
|
31
|
+
ExecutionContext: () => ExecutionContext,
|
|
32
|
+
JSHandle: () => JSHandle,
|
|
33
|
+
JavaScriptErrorInEvaluate: () => JavaScriptErrorInEvaluate,
|
|
34
|
+
evaluate: () => evaluate,
|
|
35
|
+
evaluateExpression: () => evaluateExpression,
|
|
36
|
+
isJavaScriptErrorInEvaluate: () => isJavaScriptErrorInEvaluate,
|
|
37
|
+
normalizeEvaluationExpression: () => normalizeEvaluationExpression,
|
|
38
|
+
parseEvaluationResultValue: () => parseEvaluationResultValue,
|
|
39
|
+
parseUnserializableValue: () => parseUnserializableValue,
|
|
40
|
+
serializeAsCallArgument: () => serializeAsCallArgument,
|
|
41
|
+
sparseArrayToString: () => sparseArrayToString
|
|
5
42
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var _manualPromise = require("../utils/isomorphic/manualPromise");
|
|
18
|
-
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); }
|
|
19
|
-
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 && {}.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
|
-
/**
|
|
21
|
-
* Copyright (c) Microsoft Corporation.
|
|
22
|
-
*
|
|
23
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
24
|
-
* you may not use this file except in compliance with the License.
|
|
25
|
-
* You may obtain a copy of the License at
|
|
26
|
-
*
|
|
27
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
28
|
-
*
|
|
29
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
30
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
31
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
32
|
-
* See the License for the specific language governing permissions and
|
|
33
|
-
* limitations under the License.
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
class ExecutionContext extends _instrumentation.SdkObject {
|
|
43
|
+
module.exports = __toCommonJS(javascript_exports);
|
|
44
|
+
var import_instrumentation = require("./instrumentation");
|
|
45
|
+
var utilityScriptSource = __toESM(require("../generated/utilityScriptSource"));
|
|
46
|
+
var import_utils = require("../utils");
|
|
47
|
+
var import_builtins = require("../utils/isomorphic/builtins");
|
|
48
|
+
var import_utilityScriptSerializers = require("../utils/isomorphic/utilityScriptSerializers");
|
|
49
|
+
var import_manualPromise = require("../utils/isomorphic/manualPromise");
|
|
50
|
+
const utilityScriptSerializers = (0, import_utilityScriptSerializers.source)((0, import_builtins.builtins)());
|
|
51
|
+
const parseEvaluationResultValue = utilityScriptSerializers.parseEvaluationResultValue;
|
|
52
|
+
const serializeAsCallArgument = utilityScriptSerializers.serializeAsCallArgument;
|
|
53
|
+
class ExecutionContext extends import_instrumentation.SdkObject {
|
|
37
54
|
constructor(parent, delegate, worldNameForTest) {
|
|
38
|
-
super(parent,
|
|
39
|
-
this.
|
|
40
|
-
this._utilityScriptPromise = void 0;
|
|
41
|
-
this._contextDestroyedScope = new _manualPromise.LongStandingScope();
|
|
42
|
-
this.worldNameForTest = void 0;
|
|
55
|
+
super(parent, "execution-context");
|
|
56
|
+
this._contextDestroyedScope = new import_manualPromise.LongStandingScope();
|
|
43
57
|
this.worldNameForTest = worldNameForTest;
|
|
44
58
|
this.delegate = delegate;
|
|
45
59
|
}
|
|
@@ -70,60 +84,51 @@ class ExecutionContext extends _instrumentation.SdkObject {
|
|
|
70
84
|
}
|
|
71
85
|
_utilityScript() {
|
|
72
86
|
if (!this._utilityScriptPromise) {
|
|
73
|
-
const
|
|
87
|
+
const source2 = `
|
|
74
88
|
(() => {
|
|
75
89
|
const module = {};
|
|
76
90
|
${utilityScriptSource.source}
|
|
77
|
-
return new (module.exports.UtilityScript())(${(0,
|
|
91
|
+
return new (module.exports.UtilityScript())(${(0, import_utils.isUnderTest)()});
|
|
78
92
|
})();`;
|
|
79
|
-
this._utilityScriptPromise = this._raceAgainstContextDestroyed(this.delegate.rawEvaluateHandle(this,
|
|
80
|
-
handle._setPreview(
|
|
93
|
+
this._utilityScriptPromise = this._raceAgainstContextDestroyed(this.delegate.rawEvaluateHandle(this, source2)).then((handle) => {
|
|
94
|
+
handle._setPreview("UtilityScript");
|
|
81
95
|
return handle;
|
|
82
96
|
});
|
|
83
97
|
}
|
|
84
98
|
return this._utilityScriptPromise;
|
|
85
99
|
}
|
|
86
100
|
async doSlowMo() {
|
|
87
|
-
// overridden in FrameExecutionContext
|
|
88
101
|
}
|
|
89
102
|
}
|
|
90
|
-
|
|
91
|
-
class JSHandle extends _instrumentation.SdkObject {
|
|
103
|
+
class JSHandle extends import_instrumentation.SdkObject {
|
|
92
104
|
constructor(context, type, preview, objectId, value) {
|
|
93
|
-
super(context,
|
|
105
|
+
super(context, "handle");
|
|
94
106
|
this.__jshandle = true;
|
|
95
|
-
this._context = void 0;
|
|
96
107
|
this._disposed = false;
|
|
97
|
-
this._objectId = void 0;
|
|
98
|
-
this._value = void 0;
|
|
99
|
-
this._objectType = void 0;
|
|
100
|
-
this._preview = void 0;
|
|
101
|
-
this._previewCallback = void 0;
|
|
102
108
|
this._context = context;
|
|
103
109
|
this._objectId = objectId;
|
|
104
110
|
this._value = value;
|
|
105
111
|
this._objectType = type;
|
|
106
112
|
this._preview = this._objectId ? preview || `JSHandle@${this._objectType}` : String(value);
|
|
107
|
-
if (this._objectId && globalThis.leakedJSHandles)
|
|
113
|
+
if (this._objectId && globalThis.leakedJSHandles)
|
|
114
|
+
globalThis.leakedJSHandles.set(this, new Error("Leaked JSHandle"));
|
|
108
115
|
}
|
|
109
116
|
async evaluate(pageFunction, arg) {
|
|
110
|
-
return evaluate(this._context, true
|
|
117
|
+
return evaluate(this._context, true, pageFunction, this, arg);
|
|
111
118
|
}
|
|
112
119
|
async evaluateHandle(pageFunction, arg) {
|
|
113
|
-
return evaluate(this._context, false
|
|
120
|
+
return evaluate(this._context, false, pageFunction, this, arg);
|
|
114
121
|
}
|
|
115
122
|
async evaluateExpression(expression, options, arg, isolatedContext) {
|
|
116
123
|
let context = this._context;
|
|
117
124
|
if (context.constructor.name === "FrameExecutionContext") {
|
|
118
125
|
const frame = context.frame;
|
|
119
126
|
if (frame) {
|
|
120
|
-
if (isolatedContext) context = await frame._utilityContext();
|
|
127
|
+
if (isolatedContext) context = await frame._utilityContext();
|
|
128
|
+
else if (!isolatedContext) context = await frame._mainContext();
|
|
121
129
|
}
|
|
122
130
|
}
|
|
123
|
-
const value = await evaluateExpression(context, expression, {
|
|
124
|
-
...options,
|
|
125
|
-
returnByValue: true
|
|
126
|
-
}, this, arg);
|
|
131
|
+
const value = await evaluateExpression(context, expression, { ...options, returnByValue: true }, this, arg);
|
|
127
132
|
await context.doSlowMo();
|
|
128
133
|
return value;
|
|
129
134
|
}
|
|
@@ -132,23 +137,19 @@ class JSHandle extends _instrumentation.SdkObject {
|
|
|
132
137
|
if (this._context.constructor.name === "FrameExecutionContext") {
|
|
133
138
|
const frame = this._context.frame;
|
|
134
139
|
if (frame) {
|
|
135
|
-
if (isolatedContext) context = await frame._utilityContext();
|
|
140
|
+
if (isolatedContext) context = await frame._utilityContext();
|
|
141
|
+
else if (!isolatedContext) context = await frame._mainContext();
|
|
136
142
|
}
|
|
137
143
|
}
|
|
138
|
-
const value = await evaluateExpression(context, expression, {
|
|
139
|
-
...options,
|
|
140
|
-
returnByValue: false
|
|
141
|
-
}, this, arg);
|
|
144
|
+
const value = await evaluateExpression(context, expression, { ...options, returnByValue: false }, this, arg);
|
|
142
145
|
await context.doSlowMo();
|
|
143
146
|
return value;
|
|
144
147
|
}
|
|
145
148
|
async getProperty(propertyName) {
|
|
146
|
-
const objectHandle = await this.evaluateHandle((object,
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
result[propertyName] = object[propertyName];
|
|
151
|
-
return result;
|
|
149
|
+
const objectHandle = await this.evaluateHandle((object, propertyName2) => {
|
|
150
|
+
const result2 = { __proto__: null };
|
|
151
|
+
result2[propertyName2] = object[propertyName2];
|
|
152
|
+
return result2;
|
|
152
153
|
}, propertyName);
|
|
153
154
|
const properties = await objectHandle.getProperties();
|
|
154
155
|
const result = properties.get(propertyName);
|
|
@@ -156,14 +157,16 @@ class JSHandle extends _instrumentation.SdkObject {
|
|
|
156
157
|
return result;
|
|
157
158
|
}
|
|
158
159
|
async getProperties() {
|
|
159
|
-
if (!this._objectId)
|
|
160
|
+
if (!this._objectId)
|
|
161
|
+
return /* @__PURE__ */ new Map();
|
|
160
162
|
return this._context.getProperties(this);
|
|
161
163
|
}
|
|
162
164
|
rawValue() {
|
|
163
165
|
return this._value;
|
|
164
166
|
}
|
|
165
167
|
async jsonValue() {
|
|
166
|
-
if (!this._objectId)
|
|
168
|
+
if (!this._objectId)
|
|
169
|
+
return this._value;
|
|
167
170
|
const script = `(utilityScript, ...args) => utilityScript.jsonValue(...args)`;
|
|
168
171
|
return this._context.evaluateWithArguments(script, true, [true], [this]);
|
|
169
172
|
}
|
|
@@ -171,11 +174,14 @@ class JSHandle extends _instrumentation.SdkObject {
|
|
|
171
174
|
return null;
|
|
172
175
|
}
|
|
173
176
|
dispose() {
|
|
174
|
-
if (this._disposed)
|
|
177
|
+
if (this._disposed)
|
|
178
|
+
return;
|
|
175
179
|
this._disposed = true;
|
|
176
180
|
if (this._objectId) {
|
|
177
|
-
this._context.releaseHandle(this).catch(e => {
|
|
178
|
-
|
|
181
|
+
this._context.releaseHandle(this).catch((e) => {
|
|
182
|
+
});
|
|
183
|
+
if (globalThis.leakedJSHandles)
|
|
184
|
+
globalThis.leakedJSHandles.delete(this);
|
|
179
185
|
}
|
|
180
186
|
}
|
|
181
187
|
toString() {
|
|
@@ -192,115 +198,118 @@ class JSHandle extends _instrumentation.SdkObject {
|
|
|
192
198
|
}
|
|
193
199
|
_setPreview(preview) {
|
|
194
200
|
this._preview = preview;
|
|
195
|
-
if (this._previewCallback)
|
|
201
|
+
if (this._previewCallback)
|
|
202
|
+
this._previewCallback(preview);
|
|
196
203
|
}
|
|
197
204
|
}
|
|
198
|
-
exports.JSHandle = JSHandle;
|
|
199
205
|
async function evaluate(context, returnByValue, pageFunction, ...args) {
|
|
200
|
-
return evaluateExpression(context, String(pageFunction), {
|
|
201
|
-
returnByValue,
|
|
202
|
-
isFunction: typeof pageFunction === 'function'
|
|
203
|
-
}, ...args);
|
|
206
|
+
return evaluateExpression(context, String(pageFunction), { returnByValue, isFunction: typeof pageFunction === "function" }, ...args);
|
|
204
207
|
}
|
|
205
208
|
async function evaluateExpression(context, expression, options, ...args) {
|
|
206
209
|
expression = normalizeEvaluationExpression(expression, options.isFunction);
|
|
207
210
|
const handles = [];
|
|
208
211
|
const toDispose = [];
|
|
209
|
-
const pushHandle = handle => {
|
|
212
|
+
const pushHandle = (handle) => {
|
|
210
213
|
handles.push(handle);
|
|
211
214
|
return handles.length - 1;
|
|
212
215
|
};
|
|
213
|
-
args = args.map(arg =>
|
|
216
|
+
args = args.map((arg) => serializeAsCallArgument(arg, (handle) => {
|
|
214
217
|
if (handle instanceof JSHandle) {
|
|
215
|
-
if (!handle._objectId)
|
|
216
|
-
fallThrough: handle._value
|
|
217
|
-
|
|
218
|
-
|
|
218
|
+
if (!handle._objectId)
|
|
219
|
+
return { fallThrough: handle._value };
|
|
220
|
+
if (handle._disposed)
|
|
221
|
+
throw new JavaScriptErrorInEvaluate("JSHandle is disposed!");
|
|
219
222
|
const adopted = context.adoptIfNeeded(handle);
|
|
220
|
-
if (adopted === null)
|
|
221
|
-
h: pushHandle(Promise.resolve(handle))
|
|
222
|
-
};
|
|
223
|
+
if (adopted === null)
|
|
224
|
+
return { h: pushHandle(Promise.resolve(handle)) };
|
|
223
225
|
toDispose.push(adopted);
|
|
224
|
-
return {
|
|
225
|
-
h: pushHandle(adopted)
|
|
226
|
-
};
|
|
226
|
+
return { h: pushHandle(adopted) };
|
|
227
227
|
}
|
|
228
|
-
return {
|
|
229
|
-
fallThrough: handle
|
|
230
|
-
};
|
|
228
|
+
return { fallThrough: handle };
|
|
231
229
|
}));
|
|
232
230
|
const utilityScriptObjects = [];
|
|
233
231
|
for (const handle of await Promise.all(handles)) {
|
|
234
|
-
if (handle._context !== context)
|
|
232
|
+
if (handle._context !== context)
|
|
233
|
+
throw new JavaScriptErrorInEvaluate("JSHandles can be evaluated only in the context they were created!");
|
|
235
234
|
utilityScriptObjects.push(handle);
|
|
236
235
|
}
|
|
237
|
-
|
|
238
|
-
// See UtilityScript for arguments.
|
|
239
236
|
const utilityScriptValues = [options.isFunction, options.returnByValue, expression, args.length, ...args];
|
|
240
237
|
const script = `(utilityScript, ...args) => utilityScript.evaluate(...args)`;
|
|
241
238
|
try {
|
|
242
239
|
return await context.evaluateWithArguments(script, options.returnByValue || false, utilityScriptValues, utilityScriptObjects);
|
|
243
240
|
} finally {
|
|
244
|
-
toDispose.map(handlePromise => handlePromise.then(handle => handle.dispose()));
|
|
241
|
+
toDispose.map((handlePromise) => handlePromise.then((handle) => handle.dispose()));
|
|
245
242
|
}
|
|
246
243
|
}
|
|
247
244
|
function parseUnserializableValue(unserializableValue) {
|
|
248
|
-
if (unserializableValue ===
|
|
249
|
-
|
|
250
|
-
if (unserializableValue ===
|
|
251
|
-
|
|
245
|
+
if (unserializableValue === "NaN")
|
|
246
|
+
return NaN;
|
|
247
|
+
if (unserializableValue === "Infinity")
|
|
248
|
+
return Infinity;
|
|
249
|
+
if (unserializableValue === "-Infinity")
|
|
250
|
+
return -Infinity;
|
|
251
|
+
if (unserializableValue === "-0")
|
|
252
|
+
return -0;
|
|
252
253
|
}
|
|
253
254
|
function normalizeEvaluationExpression(expression, isFunction) {
|
|
254
255
|
expression = expression.trim();
|
|
255
256
|
if (isFunction) {
|
|
256
257
|
try {
|
|
257
|
-
new Function(
|
|
258
|
+
new Function("(" + expression + ")");
|
|
258
259
|
} catch (e1) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
260
|
+
if (expression.startsWith("async "))
|
|
261
|
+
expression = "async function " + expression.substring("async ".length);
|
|
262
|
+
else
|
|
263
|
+
expression = "function " + expression;
|
|
262
264
|
try {
|
|
263
|
-
new Function(
|
|
265
|
+
new Function("(" + expression + ")");
|
|
264
266
|
} catch (e2) {
|
|
265
|
-
|
|
266
|
-
throw new Error('Passed function is not well-serializable!');
|
|
267
|
+
throw new Error("Passed function is not well-serializable!");
|
|
267
268
|
}
|
|
268
269
|
}
|
|
269
270
|
}
|
|
270
|
-
if (/^(async)?\s*function(\s|\()/.test(expression))
|
|
271
|
+
if (/^(async)?\s*function(\s|\()/.test(expression))
|
|
272
|
+
expression = "(" + expression + ")";
|
|
271
273
|
return expression;
|
|
272
274
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
class JavaScriptErrorInEvaluate extends Error {}
|
|
276
|
-
exports.JavaScriptErrorInEvaluate = JavaScriptErrorInEvaluate;
|
|
275
|
+
class JavaScriptErrorInEvaluate extends Error {
|
|
276
|
+
}
|
|
277
277
|
function isJavaScriptErrorInEvaluate(error) {
|
|
278
278
|
return error instanceof JavaScriptErrorInEvaluate;
|
|
279
279
|
}
|
|
280
280
|
function sparseArrayToString(entries) {
|
|
281
281
|
const arrayEntries = [];
|
|
282
|
-
for (const {
|
|
283
|
-
name,
|
|
284
|
-
value
|
|
285
|
-
} of entries) {
|
|
282
|
+
for (const { name, value } of entries) {
|
|
286
283
|
const index = +name;
|
|
287
|
-
if (isNaN(index) || index < 0)
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
value
|
|
291
|
-
});
|
|
284
|
+
if (isNaN(index) || index < 0)
|
|
285
|
+
continue;
|
|
286
|
+
arrayEntries.push({ index, value });
|
|
292
287
|
}
|
|
293
288
|
arrayEntries.sort((a, b) => a.index - b.index);
|
|
294
289
|
let lastIndex = -1;
|
|
295
290
|
const tokens = [];
|
|
296
|
-
for (const {
|
|
297
|
-
index,
|
|
298
|
-
value
|
|
299
|
-
} of arrayEntries) {
|
|
291
|
+
for (const { index, value } of arrayEntries) {
|
|
300
292
|
const emptyItems = index - lastIndex - 1;
|
|
301
|
-
if (emptyItems === 1)
|
|
293
|
+
if (emptyItems === 1)
|
|
294
|
+
tokens.push(`empty`);
|
|
295
|
+
else if (emptyItems > 1)
|
|
296
|
+
tokens.push(`empty x ${emptyItems}`);
|
|
302
297
|
tokens.push(String(value));
|
|
303
298
|
lastIndex = index;
|
|
304
299
|
}
|
|
305
|
-
return
|
|
306
|
-
}
|
|
300
|
+
return "[" + tokens.join(", ") + "]";
|
|
301
|
+
}
|
|
302
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
303
|
+
0 && (module.exports = {
|
|
304
|
+
ExecutionContext,
|
|
305
|
+
JSHandle,
|
|
306
|
+
JavaScriptErrorInEvaluate,
|
|
307
|
+
evaluate,
|
|
308
|
+
evaluateExpression,
|
|
309
|
+
isJavaScriptErrorInEvaluate,
|
|
310
|
+
normalizeEvaluationExpression,
|
|
311
|
+
parseEvaluationResultValue,
|
|
312
|
+
parseUnserializableValue,
|
|
313
|
+
serializeAsCallArgument,
|
|
314
|
+
sparseArrayToString
|
|
315
|
+
});
|
package/lib/server/launchApp.js
CHANGED
|
@@ -1,91 +1,110 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty
|
|
4
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var launchApp_exports = {};
|
|
30
|
+
__export(launchApp_exports, {
|
|
31
|
+
launchApp: () => launchApp,
|
|
32
|
+
syncLocalStorageWithSettings: () => syncLocalStorageWithSettings
|
|
5
33
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
/**
|
|
15
|
-
* Copyright (c) Microsoft Corporation.
|
|
16
|
-
*
|
|
17
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18
|
-
* you may not use this file except in compliance with the License.
|
|
19
|
-
* You may obtain a copy of the License at
|
|
20
|
-
*
|
|
21
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
22
|
-
*
|
|
23
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
24
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
25
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
26
|
-
* See the License for the specific language governing permissions and
|
|
27
|
-
* limitations under the License.
|
|
28
|
-
*/
|
|
29
|
-
|
|
34
|
+
module.exports = __toCommonJS(launchApp_exports);
|
|
35
|
+
var import_fs = __toESM(require("fs"));
|
|
36
|
+
var import_path = __toESM(require("path"));
|
|
37
|
+
var import_utils = require("../utils");
|
|
38
|
+
var import_instrumentation = require("./instrumentation");
|
|
39
|
+
var import_registry = require("./registry");
|
|
40
|
+
var import_registry2 = require("./registry");
|
|
30
41
|
async function launchApp(browserType, options) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (browserType.name() ===
|
|
34
|
-
args.push(
|
|
42
|
+
const args = [...options.persistentContextOptions?.args ?? []];
|
|
43
|
+
let channel = options.persistentContextOptions?.channel;
|
|
44
|
+
if (browserType.name() === "chromium") {
|
|
45
|
+
args.push(
|
|
46
|
+
"--app=data:text/html,",
|
|
47
|
+
`--window-size=${options.windowSize.width},${options.windowSize.height}`,
|
|
48
|
+
...options.windowPosition ? [`--window-position=${options.windowPosition.x},${options.windowPosition.y}`] : [],
|
|
49
|
+
"--test-type="
|
|
50
|
+
);
|
|
51
|
+
if (!channel && !options.persistentContextOptions?.executablePath)
|
|
52
|
+
channel = (0, import_registry.findChromiumChannel)(options.sdkLanguage);
|
|
35
53
|
}
|
|
36
|
-
const context = await browserType.launchPersistentContext((0,
|
|
37
|
-
ignoreDefaultArgs: [
|
|
38
|
-
...
|
|
39
|
-
channel
|
|
40
|
-
noDefaultViewport:
|
|
41
|
-
acceptDownloads:
|
|
42
|
-
colorScheme:
|
|
54
|
+
const context = await browserType.launchPersistentContext((0, import_instrumentation.serverSideCallMetadata)(), "", {
|
|
55
|
+
ignoreDefaultArgs: ["--enable-automation"],
|
|
56
|
+
...options?.persistentContextOptions,
|
|
57
|
+
channel,
|
|
58
|
+
noDefaultViewport: options.persistentContextOptions?.noDefaultViewport ?? true,
|
|
59
|
+
acceptDownloads: options?.persistentContextOptions?.acceptDownloads ?? ((0, import_utils.isUnderTest)() ? "accept" : "internal-browser-default"),
|
|
60
|
+
colorScheme: options?.persistentContextOptions?.colorScheme ?? "no-override",
|
|
43
61
|
args
|
|
44
62
|
});
|
|
45
63
|
const [page] = context.pages();
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
context.on('page', async newPage => {
|
|
50
|
-
if (newPage.mainFrame().url() === 'chrome://new-tab-page/') {
|
|
64
|
+
if (browserType.name() === "chromium" && process.platform === "darwin") {
|
|
65
|
+
context.on("page", async (newPage) => {
|
|
66
|
+
if (newPage.mainFrame().url() === "chrome://new-tab-page/") {
|
|
51
67
|
await page.bringToFront();
|
|
52
|
-
await newPage.close((0,
|
|
68
|
+
await newPage.close((0, import_instrumentation.serverSideCallMetadata)());
|
|
53
69
|
}
|
|
54
70
|
});
|
|
55
71
|
}
|
|
56
|
-
if (browserType.name() ===
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
page
|
|
60
|
-
};
|
|
72
|
+
if (browserType.name() === "chromium")
|
|
73
|
+
await installAppIcon(page);
|
|
74
|
+
return { context, page };
|
|
61
75
|
}
|
|
62
76
|
async function installAppIcon(page) {
|
|
63
|
-
const icon = await
|
|
77
|
+
const icon = await import_fs.default.promises.readFile(require.resolve("./chromium/appIcon.png"));
|
|
64
78
|
const crPage = page._delegate;
|
|
65
|
-
await crPage._mainFrameSession._client.send(
|
|
66
|
-
image: icon.toString(
|
|
79
|
+
await crPage._mainFrameSession._client.send("Browser.setDockTile", {
|
|
80
|
+
image: icon.toString("base64")
|
|
67
81
|
});
|
|
68
82
|
}
|
|
69
83
|
async function syncLocalStorageWithSettings(page, appName) {
|
|
70
|
-
if ((0,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
_fs.default.writeFileSync(settingsFile, settings);
|
|
84
|
+
if ((0, import_utils.isUnderTest)())
|
|
85
|
+
return;
|
|
86
|
+
const settingsFile = import_path.default.join(import_registry2.registryDirectory, ".settings", `${appName}.json`);
|
|
87
|
+
await page.exposeBinding("_saveSerializedSettings", false, (_, settings2) => {
|
|
88
|
+
import_fs.default.mkdirSync(import_path.default.dirname(settingsFile), { recursive: true });
|
|
89
|
+
import_fs.default.writeFileSync(settingsFile, settings2);
|
|
77
90
|
});
|
|
78
|
-
const settings = await
|
|
79
|
-
await page.addInitScript(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
`
|
|
91
|
-
|
|
91
|
+
const settings = await import_fs.default.promises.readFile(settingsFile, "utf-8").catch(() => "{}");
|
|
92
|
+
await page.addInitScript(
|
|
93
|
+
`(${String((settings2) => {
|
|
94
|
+
if (location && location.protocol === "data:")
|
|
95
|
+
return;
|
|
96
|
+
if (window.top !== window)
|
|
97
|
+
return;
|
|
98
|
+
Object.entries(settings2).map(([k, v]) => localStorage[k] = v);
|
|
99
|
+
window.saveSettings = () => {
|
|
100
|
+
window._saveSerializedSettings(JSON.stringify({ ...localStorage }));
|
|
101
|
+
};
|
|
102
|
+
})})(${settings});
|
|
103
|
+
`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
107
|
+
0 && (module.exports = {
|
|
108
|
+
launchApp,
|
|
109
|
+
syncLocalStorageWithSettings
|
|
110
|
+
});
|