rebrowser-playwright-core 1.49.0 → 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/ThirdPartyNotices.txt +381 -55
- package/bin/reinstall_msedge_beta_linux.sh +6 -0
- package/bin/reinstall_msedge_dev_linux.sh +6 -0
- package/bin/reinstall_msedge_stable_linux.sh +6 -0
- package/browsers.json +28 -13
- package/index.js +0 -1
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +60 -64
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +314 -354
- package/lib/cli/programWithTestStub.js +51 -44
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +146 -254
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -39
- package/lib/client/browser.js +59 -68
- package/lib/client/browserContext.js +302 -322
- package/lib/client/browserType.js +95 -143
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +109 -139
- package/lib/client/clientHelper.js +49 -42
- package/lib/client/clientInstrumentation.js +40 -35
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +203 -218
- package/lib/client/consoleMessage.js +33 -33
- 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 +74 -76
- package/lib/client/elementHandle.js +126 -163
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +127 -127
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +154 -178
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +189 -307
- package/lib/client/harRouter.js +44 -56
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +55 -71
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +53 -28
- package/lib/client/locator.js +144 -230
- package/lib/client/network.js +285 -301
- package/lib/client/page.js +273 -312
- package/lib/client/platform.js +74 -0
- package/lib/client/playwright.js +62 -57
- package/lib/client/selectors.js +51 -43
- package/lib/client/stream.js +30 -45
- package/lib/client/timeoutSettings.js +75 -0
- package/lib/client/tracing.js +49 -82
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +71 -91
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +111 -0
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +28 -43
- 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 -48
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -42
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2712 -2667
- package/lib/protocol/validatorPrimitives.js +115 -75
- package/lib/remote/playwrightConnection.js +144 -152
- package/lib/remote/playwrightServer.js +106 -77
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -206
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +227 -158
- package/lib/server/bidi/bidiChromium.js +106 -78
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +161 -97
- package/lib/server/bidi/bidiFirefox.js +76 -68
- package/lib/server/bidi/bidiInput.js +90 -102
- package/lib/server/bidi/bidiNetworkManager.js +141 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +262 -261
- 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 +241 -223
- 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 +149 -111
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +343 -360
- package/lib/server/browserType.js +169 -181
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +99 -44
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +262 -280
- package/lib/server/chromium/crConnection.js +121 -178
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +64 -55
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +100 -91
- package/lib/server/chromium/crInput.js +101 -88
- package/lib/server/chromium/crNetworkManager.js +269 -370
- package/lib/server/chromium/crPage.js +509 -595
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +85 -69
- 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 +58 -46
- package/lib/server/codegen/csharp.js +191 -156
- package/lib/server/codegen/java.js +163 -125
- package/lib/server/codegen/javascript.js +166 -143
- package/lib/server/codegen/jsonl.js +33 -29
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +141 -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 +102 -154
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +131 -131
- 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 +177 -217
- 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 -64
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +180 -229
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
- package/lib/server/dispatchers/frameDispatcher.js +93 -162
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
- package/lib/server/dispatchers/networkDispatchers.js +92 -109
- package/lib/server/dispatchers/pageDispatcher.js +130 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -44
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
- package/lib/server/dom.js +424 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -175
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +302 -331
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -57
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +218 -274
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +103 -77
- package/lib/server/firefox/ffInput.js +72 -63
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +244 -302
- package/lib/server/firefox/firefox.js +76 -69
- 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 +719 -855
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +288 -224
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -106
- package/lib/server/input.js +136 -166
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +157 -151
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +211 -0
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +263 -297
- package/lib/server/page.js +353 -432
- 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 +161 -0
- package/lib/server/recorder/contextRecorder.js +135 -148
- package/lib/server/recorder/recorderApp.js +129 -132
- package/lib/server/recorder/recorderCollection.js +57 -57
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +80 -100
- package/lib/server/recorder/recorderUtils.js +59 -72
- package/lib/server/recorder/throttledFile.js +42 -31
- package/lib/server/recorder.js +186 -190
- package/lib/server/registry/browserFetcher.js +107 -100
- package/lib/server/registry/dependencies.js +247 -198
- package/lib/server/registry/index.js +928 -709
- package/lib/server/registry/nativeDeps.js +1073 -461
- 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 -67
- package/lib/server/storageScript.js +154 -0
- package/lib/server/timeoutSettings.js +89 -0
- package/lib/server/trace/recorder/snapshotter.js +70 -88
- package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
- package/lib/server/trace/recorder/tracing.js +324 -327
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +172 -137
- package/lib/server/transport.js +125 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +44 -0
- package/lib/server/utils/comparators.js +161 -0
- package/lib/server/utils/crypto.js +216 -0
- package/lib/server/utils/debug.js +47 -0
- package/lib/server/utils/debugLogger.js +114 -0
- package/lib/server/utils/env.js +68 -0
- package/lib/server/utils/eventsHelper.js +39 -0
- package/lib/server/utils/expectUtils.js +38 -0
- package/lib/server/utils/fileUtils.js +191 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +109 -0
- package/lib/server/utils/httpServer.js +218 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +217 -0
- package/lib/server/utils/nodePlatform.js +148 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +238 -0
- package/lib/server/utils/profiler.js +65 -0
- package/lib/server/utils/socksProxy.js +511 -0
- package/lib/server/utils/spawnAsync.js +41 -0
- package/lib/server/utils/task.js +51 -0
- package/lib/server/utils/userAgent.js +98 -0
- package/lib/server/utils/wsServer.js +132 -0
- package/lib/server/utils/zipFile.js +74 -0
- package/lib/server/utils/zones.js +57 -0
- 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 +163 -180
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +96 -73
- package/lib/server/webkit/wkInput.js +87 -75
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +536 -645
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +123 -127
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/locatorGenerators.js +344 -349
- package/lib/utils/isomorphic/locatorParser.js +103 -106
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +115 -0
- package/lib/utils/isomorphic/mimeType.js +453 -22
- package/lib/utils/isomorphic/multimap.js +81 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +44 -0
- package/lib/utils/isomorphic/timeoutRunner.js +67 -0
- package/lib/utils/isomorphic/traceUtils.js +52 -32
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +114 -71
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +101 -0
- package/lib/utilsBundle.js +101 -76
- package/lib/utilsBundleImpl/index.js +114 -116
- package/lib/vite/htmlReport/index.html +26 -20
- package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
- package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -7
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
- package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -7
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +819 -127
- package/types/types.d.ts +196 -75
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +0 -2
- package/lib/common/socksProxy.js +0 -569
- package/lib/common/timeoutSettings.js +0 -73
- package/lib/common/types.js +0 -5
- package/lib/image_tools/colorUtils.js +0 -98
- package/lib/image_tools/imageChannel.js +0 -70
- package/lib/protocol/transport.js +0 -82
- package/lib/server/ariaSnapshot.js +0 -33
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
- package/lib/server/recorder/recorderInTraceViewer.js +0 -144
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -153
- package/lib/utils/crypto.js +0 -171
- package/lib/utils/debug.js +0 -46
- package/lib/utils/debugLogger.js +0 -91
- package/lib/utils/env.js +0 -49
- package/lib/utils/eventsHelper.js +0 -38
- package/lib/utils/expectUtils.js +0 -33
- package/lib/utils/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -194
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -139
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- package/lib/utils/isomorphic/recorderUtils.js +0 -227
- package/lib/utils/linuxUtils.js +0 -78
- package/lib/utils/manualPromise.js +0 -109
- package/lib/utils/multimap.js +0 -75
- package/lib/utils/network.js +0 -160
- package/lib/utils/processLauncher.js +0 -248
- package/lib/utils/profiler.js +0 -53
- package/lib/utils/rtti.js +0 -44
- package/lib/utils/semaphore.js +0 -51
- package/lib/utils/sequence.js +0 -64
- package/lib/utils/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -134
- package/lib/utils/task.js +0 -58
- package/lib/utils/time.js +0 -37
- package/lib/utils/timeoutRunner.js +0 -66
- package/lib/utils/traceUtils.js +0 -44
- package/lib/utils/userAgent.js +0 -105
- package/lib/utils/wsServer.js +0 -127
- package/lib/utils/zipFile.js +0 -75
- package/lib/utils/zones.js +0 -71
- package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
- package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
- package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
- package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
- package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
- package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
- package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
|
@@ -1,111 +1,94 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var crConnection_exports = {};
|
|
20
|
+
__export(crConnection_exports, {
|
|
21
|
+
CDPSession: () => CDPSession,
|
|
22
|
+
CRConnection: () => CRConnection,
|
|
23
|
+
CRSession: () => CRSession,
|
|
24
|
+
ConnectionEvents: () => ConnectionEvents,
|
|
25
|
+
kBrowserCloseMessageId: () => kBrowserCloseMessageId
|
|
5
26
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* Modifications copyright (c) Microsoft Corporation.
|
|
15
|
-
*
|
|
16
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17
|
-
* you may not use this file except in compliance with the License.
|
|
18
|
-
* You may obtain a copy of the License at
|
|
19
|
-
*
|
|
20
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
21
|
-
*
|
|
22
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
23
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
24
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
25
|
-
* See the License for the specific language governing permissions and
|
|
26
|
-
* limitations under the License.
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
const ConnectionEvents = exports.ConnectionEvents = {
|
|
30
|
-
Disconnected: Symbol('ConnectionEvents.Disconnected')
|
|
27
|
+
module.exports = __toCommonJS(crConnection_exports);
|
|
28
|
+
var import_events = require("events");
|
|
29
|
+
var import_utils = require("../../utils");
|
|
30
|
+
var import_debugLogger = require("../utils/debugLogger");
|
|
31
|
+
var import_helper = require("../helper");
|
|
32
|
+
var import_protocolError = require("../protocolError");
|
|
33
|
+
const ConnectionEvents = {
|
|
34
|
+
Disconnected: Symbol("ConnectionEvents.Disconnected")
|
|
31
35
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// should ignore.
|
|
35
|
-
const kBrowserCloseMessageId = exports.kBrowserCloseMessageId = -9999;
|
|
36
|
-
class CRConnection extends _events.EventEmitter {
|
|
36
|
+
const kBrowserCloseMessageId = -9999;
|
|
37
|
+
class CRConnection extends import_events.EventEmitter {
|
|
37
38
|
constructor(transport, protocolLogger, browserLogsCollector) {
|
|
38
39
|
super();
|
|
39
40
|
this._lastId = 0;
|
|
40
|
-
this.
|
|
41
|
-
this._sessions = new Map();
|
|
42
|
-
this._protocolLogger = void 0;
|
|
43
|
-
this._browserLogsCollector = void 0;
|
|
44
|
-
this._browserDisconnectedLogs = void 0;
|
|
45
|
-
this.rootSession = void 0;
|
|
41
|
+
this._sessions = /* @__PURE__ */ new Map();
|
|
46
42
|
this._closed = false;
|
|
47
43
|
this.setMaxListeners(0);
|
|
48
44
|
this._transport = transport;
|
|
49
45
|
this._protocolLogger = protocolLogger;
|
|
50
46
|
this._browserLogsCollector = browserLogsCollector;
|
|
51
|
-
this.rootSession = new CRSession(this, null,
|
|
52
|
-
this._sessions.set(
|
|
47
|
+
this.rootSession = new CRSession(this, null, "");
|
|
48
|
+
this._sessions.set("", this.rootSession);
|
|
53
49
|
this._transport.onmessage = this._onMessage.bind(this);
|
|
54
|
-
// onclose should be set last, since it can be immediately called.
|
|
55
50
|
this._transport.onclose = this._onClose.bind(this);
|
|
56
51
|
}
|
|
57
52
|
_rawSend(sessionId, method, params) {
|
|
58
53
|
const id = ++this._lastId;
|
|
59
|
-
const message = {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
if (sessionId) message.sessionId = sessionId;
|
|
65
|
-
this._protocolLogger('send', message);
|
|
54
|
+
const message = { id, method, params };
|
|
55
|
+
if (sessionId)
|
|
56
|
+
message.sessionId = sessionId;
|
|
57
|
+
this._protocolLogger("send", message);
|
|
66
58
|
this._transport.send(message);
|
|
67
59
|
return id;
|
|
68
60
|
}
|
|
69
61
|
async _onMessage(message) {
|
|
70
|
-
this._protocolLogger(
|
|
71
|
-
if (message.id === kBrowserCloseMessageId)
|
|
72
|
-
|
|
73
|
-
|
|
62
|
+
this._protocolLogger("receive", message);
|
|
63
|
+
if (message.id === kBrowserCloseMessageId)
|
|
64
|
+
return;
|
|
65
|
+
const session = this._sessions.get(message.sessionId || "");
|
|
66
|
+
if (session)
|
|
67
|
+
session._onMessage(message);
|
|
74
68
|
}
|
|
75
69
|
_onClose(reason) {
|
|
76
70
|
this._closed = true;
|
|
77
|
-
this._transport.onmessage =
|
|
78
|
-
this._transport.onclose =
|
|
79
|
-
this._browserDisconnectedLogs =
|
|
71
|
+
this._transport.onmessage = void 0;
|
|
72
|
+
this._transport.onclose = void 0;
|
|
73
|
+
this._browserDisconnectedLogs = import_helper.helper.formatBrowserLogs(this._browserLogsCollector.recentLogs(), reason);
|
|
80
74
|
this.rootSession.dispose();
|
|
81
75
|
Promise.resolve().then(() => this.emit(ConnectionEvents.Disconnected));
|
|
82
76
|
}
|
|
83
77
|
close() {
|
|
84
|
-
if (!this._closed)
|
|
78
|
+
if (!this._closed)
|
|
79
|
+
this._transport.close();
|
|
85
80
|
}
|
|
86
81
|
async createBrowserSession() {
|
|
87
|
-
const {
|
|
88
|
-
sessionId
|
|
89
|
-
} = await this.rootSession.send('Target.attachToBrowserTarget');
|
|
82
|
+
const { sessionId } = await this.rootSession.send("Target.attachToBrowserTarget");
|
|
90
83
|
return new CDPSession(this.rootSession, sessionId);
|
|
91
84
|
}
|
|
92
85
|
}
|
|
93
|
-
|
|
94
|
-
class CRSession extends _events.EventEmitter {
|
|
86
|
+
class CRSession extends import_events.EventEmitter {
|
|
95
87
|
constructor(connection, parentSession, sessionId, eventListener) {
|
|
96
88
|
super();
|
|
97
|
-
this.
|
|
98
|
-
this._eventListener = void 0;
|
|
99
|
-
this._callbacks = new Map();
|
|
100
|
-
this._sessionId = void 0;
|
|
101
|
-
this._parentSession = void 0;
|
|
89
|
+
this._callbacks = /* @__PURE__ */ new Map();
|
|
102
90
|
this._crashed = false;
|
|
103
91
|
this._closed = false;
|
|
104
|
-
this.on = void 0;
|
|
105
|
-
this.addListener = void 0;
|
|
106
|
-
this.off = void 0;
|
|
107
|
-
this.removeListener = void 0;
|
|
108
|
-
this.once = void 0;
|
|
109
92
|
this.setMaxListeners(0);
|
|
110
93
|
this._connection = connection;
|
|
111
94
|
this._parentSession = parentSession;
|
|
@@ -126,21 +109,17 @@ class CRSession extends _events.EventEmitter {
|
|
|
126
109
|
return session;
|
|
127
110
|
}
|
|
128
111
|
async send(method, params) {
|
|
129
|
-
if (this._crashed || this._closed || this._connection._closed || this._connection._browserDisconnectedLogs)
|
|
112
|
+
if (this._crashed || this._closed || this._connection._closed || this._connection._browserDisconnectedLogs)
|
|
113
|
+
throw new import_protocolError.ProtocolError(this._crashed ? "crashed" : "closed", void 0, this._connection._browserDisconnectedLogs);
|
|
130
114
|
const id = this._connection._rawSend(this._sessionId, method, params);
|
|
131
115
|
return new Promise((resolve, reject) => {
|
|
132
|
-
this._callbacks.set(id, {
|
|
133
|
-
resolve,
|
|
134
|
-
reject,
|
|
135
|
-
error: new _protocolError.ProtocolError('error', method)
|
|
136
|
-
});
|
|
116
|
+
this._callbacks.set(id, { resolve, reject, error: new import_protocolError.ProtocolError("error", method) });
|
|
137
117
|
});
|
|
138
118
|
}
|
|
139
119
|
_sendMayFail(method, params) {
|
|
140
|
-
return this.send(method, params).catch(error =>
|
|
120
|
+
return this.send(method, params).catch((error) => import_debugLogger.debugLogger.log("error", error));
|
|
141
121
|
}
|
|
142
122
|
_onMessage(object) {
|
|
143
|
-
var _object$error;
|
|
144
123
|
if (object.id && this._callbacks.has(object.id)) {
|
|
145
124
|
const callback = this._callbacks.get(object.id);
|
|
146
125
|
this._callbacks.delete(object.id);
|
|
@@ -150,26 +129,23 @@ class CRSession extends _events.EventEmitter {
|
|
|
150
129
|
} else {
|
|
151
130
|
callback.resolve(object.result);
|
|
152
131
|
}
|
|
153
|
-
} else if (object.id &&
|
|
154
|
-
// Message to a closed session, just ignore it.
|
|
132
|
+
} else if (object.id && object.error?.code === -32001) {
|
|
155
133
|
} else {
|
|
156
|
-
|
|
157
|
-
(0, _utils.assert)(!object.id, (object === null || object === void 0 || (_object$error2 = object.error) === null || _object$error2 === void 0 ? void 0 : _object$error2.message) || undefined);
|
|
134
|
+
(0, import_utils.assert)(!object.id, object?.error?.message || void 0);
|
|
158
135
|
Promise.resolve().then(() => {
|
|
159
|
-
if (this._eventListener)
|
|
136
|
+
if (this._eventListener)
|
|
137
|
+
this._eventListener(object.method, object.params);
|
|
160
138
|
this.emit(object.method, object.params);
|
|
161
139
|
});
|
|
162
140
|
}
|
|
163
141
|
}
|
|
164
142
|
async detach() {
|
|
165
|
-
if (this._closed)
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
await this._sendMayFail(
|
|
170
|
-
await this._parentSession.send(
|
|
171
|
-
sessionId: this._sessionId
|
|
172
|
-
});
|
|
143
|
+
if (this._closed)
|
|
144
|
+
throw new Error(`Session already detached. Most likely the page has been closed.`);
|
|
145
|
+
if (!this._parentSession)
|
|
146
|
+
throw new Error("Root session cannot be closed");
|
|
147
|
+
await this._sendMayFail("Runtime.runIfWaitingForDebugger");
|
|
148
|
+
await this._parentSession.send("Target.detachFromTarget", { sessionId: this._sessionId });
|
|
173
149
|
this.dispose();
|
|
174
150
|
}
|
|
175
151
|
dispose() {
|
|
@@ -177,7 +153,7 @@ class CRSession extends _events.EventEmitter {
|
|
|
177
153
|
this._connection._sessions.delete(this._sessionId);
|
|
178
154
|
for (const callback of this._callbacks.values()) {
|
|
179
155
|
callback.error.setMessage(`Internal server error, session closed.`);
|
|
180
|
-
callback.error.type = this._crashed ?
|
|
156
|
+
callback.error.type = this._crashed ? "crashed" : "closed";
|
|
181
157
|
callback.error.logs = this._connection._browserDisconnectedLogs;
|
|
182
158
|
callback.reject(callback.error);
|
|
183
159
|
}
|
|
@@ -188,36 +164,36 @@ class CRSession extends _events.EventEmitter {
|
|
|
188
164
|
targetId,
|
|
189
165
|
frame = null
|
|
190
166
|
}) {
|
|
191
|
-
const fixMode = process.env[
|
|
192
|
-
const utilityWorldName = process.env[
|
|
193
|
-
process.env[
|
|
167
|
+
const fixMode = process.env["REBROWSER_PATCHES_RUNTIME_FIX_MODE"] || "addBinding";
|
|
168
|
+
const utilityWorldName = process.env["REBROWSER_PATCHES_UTILITY_WORLD_NAME"] !== "0" ? process.env["REBROWSER_PATCHES_UTILITY_WORLD_NAME"] || "util" : "__playwright_utility_world__";
|
|
169
|
+
process.env["REBROWSER_PATCHES_DEBUG"] && console.log(`[rebrowser-patches][crSession] targetId = ${targetId}, world = ${world}, frame = ${frame ? "Y" : "N"}, fixMode = ${fixMode}`);
|
|
194
170
|
let getWorldPromise;
|
|
195
|
-
if (fixMode ===
|
|
196
|
-
if (world ===
|
|
171
|
+
if (fixMode === "addBinding") {
|
|
172
|
+
if (world === "utility") {
|
|
197
173
|
getWorldPromise = this.__re__getIsolatedWorld({
|
|
198
174
|
client: this,
|
|
199
175
|
frameId: targetId,
|
|
200
176
|
worldName: utilityWorldName
|
|
201
|
-
}).then(contextId => {
|
|
177
|
+
}).then((contextId) => {
|
|
202
178
|
return {
|
|
203
179
|
id: contextId,
|
|
204
180
|
// use UTILITY_WORLD_NAME value from crPage.ts otherwise _onExecutionContextCreated will ignore it
|
|
205
|
-
name:
|
|
181
|
+
name: "__playwright_utility_world__",
|
|
206
182
|
auxData: {
|
|
207
183
|
frameId: targetId,
|
|
208
184
|
isDefault: false
|
|
209
185
|
}
|
|
210
186
|
};
|
|
211
187
|
});
|
|
212
|
-
} else if (world ===
|
|
188
|
+
} else if (world === "main") {
|
|
213
189
|
getWorldPromise = this.__re__getMainWorld({
|
|
214
190
|
client: this,
|
|
215
191
|
frameId: targetId,
|
|
216
192
|
isWorker: frame === null
|
|
217
|
-
}).then(contextId => {
|
|
193
|
+
}).then((contextId) => {
|
|
218
194
|
return {
|
|
219
195
|
id: contextId,
|
|
220
|
-
name:
|
|
196
|
+
name: "",
|
|
221
197
|
auxData: {
|
|
222
198
|
frameId: targetId,
|
|
223
199
|
isDefault: true
|
|
@@ -225,17 +201,15 @@ class CRSession extends _events.EventEmitter {
|
|
|
225
201
|
};
|
|
226
202
|
});
|
|
227
203
|
}
|
|
228
|
-
} else if (fixMode ===
|
|
229
|
-
// use only utility context
|
|
204
|
+
} else if (fixMode === "alwaysIsolated") {
|
|
230
205
|
getWorldPromise = this.__re__getIsolatedWorld({
|
|
231
206
|
client: this,
|
|
232
207
|
frameId: targetId,
|
|
233
208
|
worldName: utilityWorldName
|
|
234
|
-
}).then(contextId => {
|
|
235
|
-
// make it look as main world
|
|
209
|
+
}).then((contextId) => {
|
|
236
210
|
return {
|
|
237
211
|
id: contextId,
|
|
238
|
-
name:
|
|
212
|
+
name: "",
|
|
239
213
|
auxData: {
|
|
240
214
|
frameId: targetId,
|
|
241
215
|
isDefault: true
|
|
@@ -244,115 +218,86 @@ class CRSession extends _events.EventEmitter {
|
|
|
244
218
|
});
|
|
245
219
|
}
|
|
246
220
|
const contextPayload = await getWorldPromise;
|
|
247
|
-
this.emit(
|
|
221
|
+
this.emit("Runtime.executionContextCreated", {
|
|
248
222
|
context: contextPayload
|
|
249
223
|
});
|
|
250
224
|
}
|
|
251
|
-
async __re__getMainWorld({
|
|
252
|
-
client,
|
|
253
|
-
frameId,
|
|
254
|
-
isWorker = false
|
|
255
|
-
}) {
|
|
225
|
+
async __re__getMainWorld({ client, frameId, isWorker = false }) {
|
|
256
226
|
let contextId;
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
process.env['REBROWSER_PATCHES_DEBUG'] && console.log(`[rebrowser-patches][getMainWorld] binding name = ${randomName}`);
|
|
261
|
-
|
|
262
|
-
// add the binding
|
|
263
|
-
await client.send('Runtime.addBinding', {
|
|
227
|
+
const randomName = [...Array(Math.floor(Math.random() * (10 + 1)) + 10)].map(() => Math.random().toString(36)[2]).join("");
|
|
228
|
+
process.env["REBROWSER_PATCHES_DEBUG"] && console.log(`[rebrowser-patches][getMainWorld] binding name = ${randomName}`);
|
|
229
|
+
await client.send("Runtime.addBinding", {
|
|
264
230
|
name: randomName
|
|
265
231
|
});
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const bindingCalledHandler = ({
|
|
269
|
-
name,
|
|
270
|
-
payload,
|
|
271
|
-
executionContextId
|
|
272
|
-
}) => {
|
|
273
|
-
process.env['REBROWSER_PATCHES_DEBUG'] && console.log('[rebrowser-patches][bindingCalledHandler]', {
|
|
232
|
+
const bindingCalledHandler = ({ name, payload, executionContextId }) => {
|
|
233
|
+
process.env["REBROWSER_PATCHES_DEBUG"] && console.log("[rebrowser-patches][bindingCalledHandler]", {
|
|
274
234
|
name,
|
|
275
235
|
payload,
|
|
276
236
|
executionContextId
|
|
277
237
|
});
|
|
278
238
|
if (contextId > 0) {
|
|
279
|
-
// already acquired the id
|
|
280
239
|
return;
|
|
281
240
|
}
|
|
282
241
|
if (name !== randomName) {
|
|
283
|
-
// ignore irrelevant bindings
|
|
284
242
|
return;
|
|
285
243
|
}
|
|
286
244
|
if (payload !== frameId) {
|
|
287
|
-
// ignore irrelevant frames
|
|
288
245
|
return;
|
|
289
246
|
}
|
|
290
247
|
contextId = executionContextId;
|
|
291
|
-
|
|
292
|
-
client.off('Runtime.bindingCalled', bindingCalledHandler);
|
|
248
|
+
client.off("Runtime.bindingCalled", bindingCalledHandler);
|
|
293
249
|
};
|
|
294
|
-
client.on(
|
|
250
|
+
client.on("Runtime.bindingCalled", bindingCalledHandler);
|
|
295
251
|
if (isWorker) {
|
|
296
|
-
|
|
297
|
-
await client.send('Runtime.evaluate', {
|
|
252
|
+
await client.send("Runtime.evaluate", {
|
|
298
253
|
expression: `this['${randomName}']('${frameId}')`
|
|
299
254
|
});
|
|
300
255
|
} else {
|
|
301
|
-
|
|
302
|
-
await client.send('Page.addScriptToEvaluateOnNewDocument', {
|
|
256
|
+
await client.send("Page.addScriptToEvaluateOnNewDocument", {
|
|
303
257
|
source: `document.addEventListener('${randomName}', (e) => self['${randomName}'](e.detail.frameId))`,
|
|
304
258
|
runImmediately: true
|
|
305
259
|
});
|
|
306
|
-
|
|
307
|
-
// create new isolated world for this frame
|
|
308
|
-
const createIsolatedWorldResult = await client.send('Page.createIsolatedWorld', {
|
|
260
|
+
const createIsolatedWorldResult = await client.send("Page.createIsolatedWorld", {
|
|
309
261
|
frameId,
|
|
310
262
|
// use randomName for worldName to distinguish from normal utility world
|
|
311
263
|
worldName: randomName,
|
|
312
264
|
grantUniveralAccess: true
|
|
313
265
|
});
|
|
314
|
-
|
|
315
|
-
// emit event in the specific frame from the isolated world
|
|
316
|
-
await client.send('Runtime.evaluate', {
|
|
266
|
+
await client.send("Runtime.evaluate", {
|
|
317
267
|
expression: `document.dispatchEvent(new CustomEvent('${randomName}', { detail: { frameId: '${frameId}' } }))`,
|
|
318
268
|
contextId: createIsolatedWorldResult.executionContextId
|
|
319
269
|
});
|
|
320
270
|
}
|
|
321
|
-
process.env[
|
|
322
|
-
contextId
|
|
323
|
-
});
|
|
271
|
+
process.env["REBROWSER_PATCHES_DEBUG"] && console.log(`[rebrowser-patches][getMainWorld] result:`, { contextId });
|
|
324
272
|
return contextId;
|
|
325
273
|
}
|
|
326
|
-
async __re__getIsolatedWorld({
|
|
327
|
-
client,
|
|
328
|
-
frameId,
|
|
329
|
-
worldName
|
|
330
|
-
}) {
|
|
331
|
-
const createIsolatedWorldResult = await client.send('Page.createIsolatedWorld', {
|
|
274
|
+
async __re__getIsolatedWorld({ client, frameId, worldName }) {
|
|
275
|
+
const createIsolatedWorldResult = await client.send("Page.createIsolatedWorld", {
|
|
332
276
|
frameId,
|
|
333
277
|
worldName,
|
|
334
278
|
grantUniveralAccess: true
|
|
335
279
|
});
|
|
336
|
-
process.env[
|
|
280
|
+
process.env["REBROWSER_PATCHES_DEBUG"] && console.log(`[rebrowser-patches][getIsolatedWorld] result:`, createIsolatedWorldResult);
|
|
337
281
|
return createIsolatedWorldResult.executionContextId;
|
|
338
282
|
}
|
|
339
283
|
}
|
|
340
|
-
|
|
341
|
-
class CDPSession extends _events.EventEmitter {
|
|
284
|
+
class CDPSession extends import_events.EventEmitter {
|
|
342
285
|
constructor(parentSession, sessionId) {
|
|
343
286
|
super();
|
|
344
|
-
this.guid = void 0;
|
|
345
|
-
this._session = void 0;
|
|
346
287
|
this._listeners = [];
|
|
347
288
|
this.guid = `cdp-session@${sessionId}`;
|
|
348
|
-
this._session = parentSession.createChildSession(sessionId, (method, params) => this.emit(CDPSession.Events.Event, {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
this._listeners = [_utils.eventsHelper.addEventListener(parentSession, 'Target.detachedFromTarget', event => {
|
|
353
|
-
if (event.sessionId === sessionId) this._onClose();
|
|
289
|
+
this._session = parentSession.createChildSession(sessionId, (method, params) => this.emit(CDPSession.Events.Event, { method, params }));
|
|
290
|
+
this._listeners = [import_utils.eventsHelper.addEventListener(parentSession, "Target.detachedFromTarget", (event) => {
|
|
291
|
+
if (event.sessionId === sessionId)
|
|
292
|
+
this._onClose();
|
|
354
293
|
})];
|
|
355
294
|
}
|
|
295
|
+
static {
|
|
296
|
+
this.Events = {
|
|
297
|
+
Event: "event",
|
|
298
|
+
Closed: "close"
|
|
299
|
+
};
|
|
300
|
+
}
|
|
356
301
|
async send(method, params) {
|
|
357
302
|
return await this._session.send(method, params);
|
|
358
303
|
}
|
|
@@ -360,22 +305,20 @@ class CDPSession extends _events.EventEmitter {
|
|
|
360
305
|
return await this._session.detach();
|
|
361
306
|
}
|
|
362
307
|
async attachToTarget(targetId) {
|
|
363
|
-
const {
|
|
364
|
-
sessionId
|
|
365
|
-
} = await this.send('Target.attachToTarget', {
|
|
366
|
-
targetId,
|
|
367
|
-
flatten: true
|
|
368
|
-
});
|
|
308
|
+
const { sessionId } = await this.send("Target.attachToTarget", { targetId, flatten: true });
|
|
369
309
|
return new CDPSession(this._session, sessionId);
|
|
370
310
|
}
|
|
371
311
|
_onClose() {
|
|
372
|
-
|
|
312
|
+
import_utils.eventsHelper.removeEventListeners(this._listeners);
|
|
373
313
|
this._session.dispose();
|
|
374
314
|
this.emit(CDPSession.Events.Closed);
|
|
375
315
|
}
|
|
376
316
|
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
317
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
318
|
+
0 && (module.exports = {
|
|
319
|
+
CDPSession,
|
|
320
|
+
CRConnection,
|
|
321
|
+
CRSession,
|
|
322
|
+
ConnectionEvents,
|
|
323
|
+
kBrowserCloseMessageId
|
|
324
|
+
});
|