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,74 +1,69 @@
|
|
|
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 socksInterceptor_exports = {};
|
|
30
|
+
__export(socksInterceptor_exports, {
|
|
31
|
+
SocksInterceptor: () => SocksInterceptor
|
|
5
32
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
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
|
-
/**
|
|
14
|
-
* 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
|
-
|
|
33
|
+
module.exports = __toCommonJS(socksInterceptor_exports);
|
|
34
|
+
var import_events = __toESM(require("events"));
|
|
35
|
+
var socks = __toESM(require("./utils/socksProxy"));
|
|
36
|
+
var import_validator = require("../protocol/validator");
|
|
37
|
+
var import_debug = require("./utils/debug");
|
|
29
38
|
class SocksInterceptor {
|
|
30
39
|
constructor(transport, pattern, redirectPortForTest) {
|
|
31
|
-
this.
|
|
32
|
-
this._channel = void 0;
|
|
33
|
-
this._socksSupportObjectGuid = void 0;
|
|
34
|
-
this._ids = new Set();
|
|
40
|
+
this._ids = /* @__PURE__ */ new Set();
|
|
35
41
|
this._handler = new socks.SocksProxyHandler(pattern, redirectPortForTest);
|
|
36
42
|
let lastId = -1;
|
|
37
|
-
this._channel = new Proxy(new
|
|
43
|
+
this._channel = new Proxy(new import_events.default(), {
|
|
38
44
|
get: (obj, prop) => {
|
|
39
|
-
if (prop in obj || obj[prop] !==
|
|
40
|
-
|
|
45
|
+
if (prop in obj || obj[prop] !== void 0 || typeof prop !== "string")
|
|
46
|
+
return obj[prop];
|
|
47
|
+
return (params) => {
|
|
41
48
|
try {
|
|
42
49
|
const id = --lastId;
|
|
43
50
|
this._ids.add(id);
|
|
44
|
-
const validator = (0,
|
|
45
|
-
params = validator(params,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
transport.send({
|
|
50
|
-
id,
|
|
51
|
-
guid: this._socksSupportObjectGuid,
|
|
52
|
-
method: prop,
|
|
53
|
-
params,
|
|
54
|
-
metadata: {
|
|
55
|
-
stack: [],
|
|
56
|
-
apiName: '',
|
|
57
|
-
internal: true
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
} catch (e) {}
|
|
51
|
+
const validator = (0, import_validator.findValidator)("SocksSupport", prop, "Params");
|
|
52
|
+
params = validator(params, "", { tChannelImpl: tChannelForSocks, binary: "toBase64", isUnderTest: import_debug.isUnderTest });
|
|
53
|
+
transport.send({ id, guid: this._socksSupportObjectGuid, method: prop, params, metadata: { stack: [], apiName: "", internal: true } });
|
|
54
|
+
} catch (e) {
|
|
55
|
+
}
|
|
61
56
|
};
|
|
62
57
|
}
|
|
63
58
|
});
|
|
64
|
-
this._handler.on(socks.SocksProxyHandler.Events.SocksConnected, payload => this._channel.socksConnected(payload));
|
|
65
|
-
this._handler.on(socks.SocksProxyHandler.Events.SocksData, payload => this._channel.socksData(payload));
|
|
66
|
-
this._handler.on(socks.SocksProxyHandler.Events.SocksError, payload => this._channel.socksError(payload));
|
|
67
|
-
this._handler.on(socks.SocksProxyHandler.Events.SocksFailed, payload => this._channel.socksFailed(payload));
|
|
68
|
-
this._handler.on(socks.SocksProxyHandler.Events.SocksEnd, payload => this._channel.socksEnd(payload));
|
|
69
|
-
this._channel.on(
|
|
70
|
-
this._channel.on(
|
|
71
|
-
this._channel.on(
|
|
59
|
+
this._handler.on(socks.SocksProxyHandler.Events.SocksConnected, (payload) => this._channel.socksConnected(payload));
|
|
60
|
+
this._handler.on(socks.SocksProxyHandler.Events.SocksData, (payload) => this._channel.socksData(payload));
|
|
61
|
+
this._handler.on(socks.SocksProxyHandler.Events.SocksError, (payload) => this._channel.socksError(payload));
|
|
62
|
+
this._handler.on(socks.SocksProxyHandler.Events.SocksFailed, (payload) => this._channel.socksFailed(payload));
|
|
63
|
+
this._handler.on(socks.SocksProxyHandler.Events.SocksEnd, (payload) => this._channel.socksEnd(payload));
|
|
64
|
+
this._channel.on("socksRequested", (payload) => this._handler.socketRequested(payload));
|
|
65
|
+
this._channel.on("socksClosed", (payload) => this._handler.socketClosed(payload));
|
|
66
|
+
this._channel.on("socksData", (payload) => this._handler.sendSocketData(payload));
|
|
72
67
|
}
|
|
73
68
|
cleanup() {
|
|
74
69
|
this._handler.cleanup();
|
|
@@ -78,23 +73,23 @@ class SocksInterceptor {
|
|
|
78
73
|
this._ids.delete(message.id);
|
|
79
74
|
return true;
|
|
80
75
|
}
|
|
81
|
-
if (message.method ===
|
|
76
|
+
if (message.method === "__create__" && message.params.type === "SocksSupport") {
|
|
82
77
|
this._socksSupportObjectGuid = message.params.guid;
|
|
83
78
|
return false;
|
|
84
79
|
}
|
|
85
80
|
if (this._socksSupportObjectGuid && message.guid === this._socksSupportObjectGuid) {
|
|
86
|
-
const validator = (0,
|
|
87
|
-
const params = validator(message.params,
|
|
88
|
-
tChannelImpl: tChannelForSocks,
|
|
89
|
-
binary: 'fromBase64'
|
|
90
|
-
});
|
|
81
|
+
const validator = (0, import_validator.findValidator)("SocksSupport", message.method, "Event");
|
|
82
|
+
const params = validator(message.params, "", { tChannelImpl: tChannelForSocks, binary: "fromBase64", isUnderTest: import_debug.isUnderTest });
|
|
91
83
|
this._channel.emit(message.method, params);
|
|
92
84
|
return true;
|
|
93
85
|
}
|
|
94
86
|
return false;
|
|
95
87
|
}
|
|
96
88
|
}
|
|
97
|
-
exports.SocksInterceptor = SocksInterceptor;
|
|
98
89
|
function tChannelForSocks(names, arg, path, context) {
|
|
99
|
-
throw new
|
|
100
|
-
}
|
|
90
|
+
throw new import_validator.ValidationError(`${path}: channels are not expected in SocksSupport`);
|
|
91
|
+
}
|
|
92
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
93
|
+
0 && (module.exports = {
|
|
94
|
+
SocksInterceptor
|
|
95
|
+
});
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
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 storageScript_exports = {};
|
|
20
|
+
__export(storageScript_exports, {
|
|
21
|
+
collect: () => collect,
|
|
22
|
+
restore: () => restore
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(storageScript_exports);
|
|
25
|
+
async function collect(serializersSource, builtins, isFirefox, recordIndexedDB) {
|
|
26
|
+
const { serializeAsCallArgument } = serializersSource(builtins);
|
|
27
|
+
async function collectDB(dbInfo) {
|
|
28
|
+
if (!dbInfo.name)
|
|
29
|
+
throw new Error("Database name is empty");
|
|
30
|
+
if (!dbInfo.version)
|
|
31
|
+
throw new Error("Database version is unset");
|
|
32
|
+
function idbRequestToPromise(request) {
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
request.addEventListener("success", () => resolve(request.result));
|
|
35
|
+
request.addEventListener("error", () => reject(request.error));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function isPlainObject(v) {
|
|
39
|
+
const ctor = v?.constructor;
|
|
40
|
+
if (isFirefox) {
|
|
41
|
+
const constructorImpl = ctor?.toString();
|
|
42
|
+
if (constructorImpl?.startsWith("function Object() {") && constructorImpl?.includes("[native code]"))
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return ctor === Object;
|
|
46
|
+
}
|
|
47
|
+
function trySerialize(value) {
|
|
48
|
+
let trivial = true;
|
|
49
|
+
const encoded = serializeAsCallArgument(value, (v) => {
|
|
50
|
+
const isTrivial = isPlainObject(v) || Array.isArray(v) || typeof v === "string" || typeof v === "number" || typeof v === "boolean" || Object.is(v, null);
|
|
51
|
+
if (!isTrivial)
|
|
52
|
+
trivial = false;
|
|
53
|
+
return { fallThrough: v };
|
|
54
|
+
});
|
|
55
|
+
if (trivial)
|
|
56
|
+
return { trivial: value };
|
|
57
|
+
return { encoded };
|
|
58
|
+
}
|
|
59
|
+
const db = await idbRequestToPromise(indexedDB.open(dbInfo.name));
|
|
60
|
+
const transaction = db.transaction(db.objectStoreNames, "readonly");
|
|
61
|
+
const stores = await Promise.all([...db.objectStoreNames].map(async (storeName) => {
|
|
62
|
+
const objectStore = transaction.objectStore(storeName);
|
|
63
|
+
const keys = await idbRequestToPromise(objectStore.getAllKeys());
|
|
64
|
+
const records = await Promise.all(keys.map(async (key) => {
|
|
65
|
+
const record = {};
|
|
66
|
+
if (objectStore.keyPath === null) {
|
|
67
|
+
const { encoded: encoded2, trivial: trivial2 } = trySerialize(key);
|
|
68
|
+
if (trivial2)
|
|
69
|
+
record.key = trivial2;
|
|
70
|
+
else
|
|
71
|
+
record.keyEncoded = encoded2;
|
|
72
|
+
}
|
|
73
|
+
const value = await idbRequestToPromise(objectStore.get(key));
|
|
74
|
+
const { encoded, trivial } = trySerialize(value);
|
|
75
|
+
if (trivial)
|
|
76
|
+
record.value = trivial;
|
|
77
|
+
else
|
|
78
|
+
record.valueEncoded = encoded;
|
|
79
|
+
return record;
|
|
80
|
+
}));
|
|
81
|
+
const indexes = [...objectStore.indexNames].map((indexName) => {
|
|
82
|
+
const index = objectStore.index(indexName);
|
|
83
|
+
return {
|
|
84
|
+
name: index.name,
|
|
85
|
+
keyPath: typeof index.keyPath === "string" ? index.keyPath : void 0,
|
|
86
|
+
keyPathArray: Array.isArray(index.keyPath) ? index.keyPath : void 0,
|
|
87
|
+
multiEntry: index.multiEntry,
|
|
88
|
+
unique: index.unique
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
name: storeName,
|
|
93
|
+
records,
|
|
94
|
+
indexes,
|
|
95
|
+
autoIncrement: objectStore.autoIncrement,
|
|
96
|
+
keyPath: typeof objectStore.keyPath === "string" ? objectStore.keyPath : void 0,
|
|
97
|
+
keyPathArray: Array.isArray(objectStore.keyPath) ? objectStore.keyPath : void 0
|
|
98
|
+
};
|
|
99
|
+
}));
|
|
100
|
+
return {
|
|
101
|
+
name: dbInfo.name,
|
|
102
|
+
version: dbInfo.version,
|
|
103
|
+
stores
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
localStorage: Object.keys(localStorage).map((name) => ({ name, value: localStorage.getItem(name) })),
|
|
108
|
+
indexedDB: recordIndexedDB ? await Promise.all((await indexedDB.databases()).map(collectDB)).catch((e) => {
|
|
109
|
+
throw new Error("Unable to serialize IndexedDB: " + e.message);
|
|
110
|
+
}) : void 0
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
async function restore(serializersSource, builtins, originState) {
|
|
114
|
+
const { parseEvaluationResultValue } = serializersSource(builtins);
|
|
115
|
+
for (const { name, value } of originState.localStorage || [])
|
|
116
|
+
localStorage.setItem(name, value);
|
|
117
|
+
await Promise.all((originState.indexedDB ?? []).map(async (dbInfo) => {
|
|
118
|
+
const openRequest = indexedDB.open(dbInfo.name, dbInfo.version);
|
|
119
|
+
openRequest.addEventListener("upgradeneeded", () => {
|
|
120
|
+
const db2 = openRequest.result;
|
|
121
|
+
for (const store of dbInfo.stores) {
|
|
122
|
+
const objectStore = db2.createObjectStore(store.name, { autoIncrement: store.autoIncrement, keyPath: store.keyPathArray ?? store.keyPath });
|
|
123
|
+
for (const index of store.indexes)
|
|
124
|
+
objectStore.createIndex(index.name, index.keyPathArray ?? index.keyPath, { unique: index.unique, multiEntry: index.multiEntry });
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
function idbRequestToPromise(request) {
|
|
128
|
+
return new Promise((resolve, reject) => {
|
|
129
|
+
request.addEventListener("success", () => resolve(request.result));
|
|
130
|
+
request.addEventListener("error", () => reject(request.error));
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
const db = await idbRequestToPromise(openRequest);
|
|
134
|
+
const transaction = db.transaction(db.objectStoreNames, "readwrite");
|
|
135
|
+
await Promise.all(dbInfo.stores.map(async (store) => {
|
|
136
|
+
const objectStore = transaction.objectStore(store.name);
|
|
137
|
+
await Promise.all(store.records.map(async (record) => {
|
|
138
|
+
await idbRequestToPromise(
|
|
139
|
+
objectStore.add(
|
|
140
|
+
record.value ?? parseEvaluationResultValue(record.valueEncoded),
|
|
141
|
+
record.key ?? parseEvaluationResultValue(record.keyEncoded)
|
|
142
|
+
)
|
|
143
|
+
);
|
|
144
|
+
}));
|
|
145
|
+
}));
|
|
146
|
+
})).catch((e) => {
|
|
147
|
+
throw new Error("Unable to restore IndexedDB: " + e.message);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
151
|
+
0 && (module.exports = {
|
|
152
|
+
collect,
|
|
153
|
+
restore
|
|
154
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
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 timeoutSettings_exports = {};
|
|
20
|
+
__export(timeoutSettings_exports, {
|
|
21
|
+
DEFAULT_LAUNCH_TIMEOUT: () => DEFAULT_LAUNCH_TIMEOUT,
|
|
22
|
+
DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT,
|
|
23
|
+
TimeoutSettings: () => TimeoutSettings
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(timeoutSettings_exports);
|
|
26
|
+
var import_debug = require("./utils/debug");
|
|
27
|
+
const DEFAULT_TIMEOUT = 3e4;
|
|
28
|
+
const DEFAULT_LAUNCH_TIMEOUT = 3 * 60 * 1e3;
|
|
29
|
+
class TimeoutSettings {
|
|
30
|
+
constructor(parent) {
|
|
31
|
+
this._parent = parent;
|
|
32
|
+
}
|
|
33
|
+
setDefaultTimeout(timeout) {
|
|
34
|
+
this._defaultTimeout = timeout;
|
|
35
|
+
}
|
|
36
|
+
setDefaultNavigationTimeout(timeout) {
|
|
37
|
+
this._defaultNavigationTimeout = timeout;
|
|
38
|
+
}
|
|
39
|
+
defaultNavigationTimeout() {
|
|
40
|
+
return this._defaultNavigationTimeout;
|
|
41
|
+
}
|
|
42
|
+
defaultTimeout() {
|
|
43
|
+
return this._defaultTimeout;
|
|
44
|
+
}
|
|
45
|
+
navigationTimeout(options) {
|
|
46
|
+
if (typeof options.timeout === "number")
|
|
47
|
+
return options.timeout;
|
|
48
|
+
if (this._defaultNavigationTimeout !== void 0)
|
|
49
|
+
return this._defaultNavigationTimeout;
|
|
50
|
+
if ((0, import_debug.debugMode)())
|
|
51
|
+
return 0;
|
|
52
|
+
if (this._defaultTimeout !== void 0)
|
|
53
|
+
return this._defaultTimeout;
|
|
54
|
+
if (this._parent)
|
|
55
|
+
return this._parent.navigationTimeout(options);
|
|
56
|
+
return DEFAULT_TIMEOUT;
|
|
57
|
+
}
|
|
58
|
+
timeout(options) {
|
|
59
|
+
if (typeof options.timeout === "number")
|
|
60
|
+
return options.timeout;
|
|
61
|
+
if ((0, import_debug.debugMode)())
|
|
62
|
+
return 0;
|
|
63
|
+
if (this._defaultTimeout !== void 0)
|
|
64
|
+
return this._defaultTimeout;
|
|
65
|
+
if (this._parent)
|
|
66
|
+
return this._parent.timeout(options);
|
|
67
|
+
return DEFAULT_TIMEOUT;
|
|
68
|
+
}
|
|
69
|
+
static timeout(options) {
|
|
70
|
+
if (typeof options.timeout === "number")
|
|
71
|
+
return options.timeout;
|
|
72
|
+
if ((0, import_debug.debugMode)())
|
|
73
|
+
return 0;
|
|
74
|
+
return DEFAULT_TIMEOUT;
|
|
75
|
+
}
|
|
76
|
+
static launchTimeout(options) {
|
|
77
|
+
if (typeof options.timeout === "number")
|
|
78
|
+
return options.timeout;
|
|
79
|
+
if ((0, import_debug.debugMode)())
|
|
80
|
+
return 0;
|
|
81
|
+
return DEFAULT_LAUNCH_TIMEOUT;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
85
|
+
0 && (module.exports = {
|
|
86
|
+
DEFAULT_LAUNCH_TIMEOUT,
|
|
87
|
+
DEFAULT_TIMEOUT,
|
|
88
|
+
TimeoutSettings
|
|
89
|
+
});
|
|
@@ -1,44 +1,43 @@
|
|
|
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 snapshotter_exports = {};
|
|
20
|
+
__export(snapshotter_exports, {
|
|
21
|
+
Snapshotter: () => Snapshotter
|
|
5
22
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
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
|
-
|
|
23
|
+
module.exports = __toCommonJS(snapshotter_exports);
|
|
24
|
+
var import_snapshotterInjected = require("./snapshotterInjected");
|
|
25
|
+
var import_time = require("../../../utils/isomorphic/time");
|
|
26
|
+
var import_crypto = require("../../utils/crypto");
|
|
27
|
+
var import_debugLogger = require("../../utils/debugLogger");
|
|
28
|
+
var import_eventsHelper = require("../../utils/eventsHelper");
|
|
29
|
+
var import_utilsBundle = require("../../../utilsBundle");
|
|
30
|
+
var import_browserContext = require("../../browserContext");
|
|
31
|
+
var import_page = require("../../page");
|
|
30
32
|
class Snapshotter {
|
|
31
33
|
constructor(context, delegate) {
|
|
32
|
-
this._context = void 0;
|
|
33
|
-
this._delegate = void 0;
|
|
34
34
|
this._eventListeners = [];
|
|
35
|
-
this._snapshotStreamer = void 0;
|
|
36
35
|
this._initialized = false;
|
|
37
36
|
this._started = false;
|
|
38
37
|
this._context = context;
|
|
39
38
|
this._delegate = delegate;
|
|
40
|
-
const guid = (0,
|
|
41
|
-
this._snapshotStreamer =
|
|
39
|
+
const guid = (0, import_crypto.createGuid)();
|
|
40
|
+
this._snapshotStreamer = "__playwright_snapshot_streamer_" + guid;
|
|
42
41
|
}
|
|
43
42
|
started() {
|
|
44
43
|
return this._started;
|
|
@@ -52,44 +51,43 @@ class Snapshotter {
|
|
|
52
51
|
await this.reset();
|
|
53
52
|
}
|
|
54
53
|
async reset() {
|
|
55
|
-
if (this._started)
|
|
54
|
+
if (this._started)
|
|
55
|
+
await this._runInAllFrames(`window["${this._snapshotStreamer}"].reset()`);
|
|
56
56
|
}
|
|
57
57
|
async stop() {
|
|
58
58
|
this._started = false;
|
|
59
59
|
}
|
|
60
60
|
resetForReuse() {
|
|
61
|
-
// Next time we start recording, we will call addInitScript again.
|
|
62
61
|
this._initialized = false;
|
|
63
62
|
}
|
|
64
63
|
async _initialize() {
|
|
65
|
-
for (const page of this._context.pages())
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
64
|
+
for (const page of this._context.pages())
|
|
65
|
+
this._onPage(page);
|
|
66
|
+
this._eventListeners = [
|
|
67
|
+
import_eventsHelper.eventsHelper.addEventListener(this._context, import_browserContext.BrowserContext.Events.Page, this._onPage.bind(this))
|
|
68
|
+
];
|
|
69
|
+
const { javaScriptEnabled } = this._context._options;
|
|
70
|
+
const initScript = `(${import_snapshotterInjected.frameSnapshotStreamer})("${this._snapshotStreamer}", ${javaScriptEnabled || javaScriptEnabled === void 0})`;
|
|
71
71
|
await this._context.addInitScript(initScript);
|
|
72
72
|
await this._runInAllFrames(initScript);
|
|
73
73
|
}
|
|
74
74
|
async _runInAllFrames(expression) {
|
|
75
75
|
const frames = [];
|
|
76
|
-
for (const page of this._context.pages())
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
for (const page of this._context.pages())
|
|
77
|
+
frames.push(...page.frames());
|
|
78
|
+
await Promise.all(frames.map((frame) => {
|
|
79
|
+
return frame.nonStallingRawEvaluateInExistingMainContext(expression).catch((e) => import_debugLogger.debugLogger.log("error", e));
|
|
79
80
|
}));
|
|
80
81
|
}
|
|
81
82
|
dispose() {
|
|
82
|
-
|
|
83
|
+
import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
|
|
83
84
|
}
|
|
84
85
|
async captureSnapshot(page, callId, snapshotName) {
|
|
85
|
-
// Prepare expression synchronously.
|
|
86
86
|
const expression = `window["${this._snapshotStreamer}"].captureSnapshot(${JSON.stringify(snapshotName)})`;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
// Something went wrong -> bail out, our snapshots are best-efforty.
|
|
92
|
-
if (!data || !this._started) return;
|
|
87
|
+
const snapshots = page.frames().map(async (frame) => {
|
|
88
|
+
const data = await frame.nonStallingRawEvaluateInExistingMainContext(expression).catch((e) => import_debugLogger.debugLogger.log("error", e));
|
|
89
|
+
if (!data || !this._started)
|
|
90
|
+
return;
|
|
93
91
|
const snapshot = {
|
|
94
92
|
callId,
|
|
95
93
|
snapshotName,
|
|
@@ -99,33 +97,20 @@ class Snapshotter {
|
|
|
99
97
|
doctype: data.doctype,
|
|
100
98
|
html: data.html,
|
|
101
99
|
viewport: data.viewport,
|
|
102
|
-
timestamp: (0,
|
|
100
|
+
timestamp: (0, import_time.monotonicTime)(),
|
|
103
101
|
wallTime: data.wallTime,
|
|
104
102
|
collectionTime: data.collectionTime,
|
|
105
103
|
resourceOverrides: [],
|
|
106
104
|
isMainFrame: page.mainFrame() === frame
|
|
107
105
|
};
|
|
108
|
-
for (const {
|
|
109
|
-
|
|
110
|
-
content,
|
|
111
|
-
contentType
|
|
112
|
-
} of data.resourceOverrides) {
|
|
113
|
-
if (typeof content === 'string') {
|
|
106
|
+
for (const { url, content, contentType } of data.resourceOverrides) {
|
|
107
|
+
if (typeof content === "string") {
|
|
114
108
|
const buffer = Buffer.from(content);
|
|
115
|
-
const sha1 = (0,
|
|
116
|
-
this._delegate.onSnapshotterBlob({
|
|
117
|
-
|
|
118
|
-
buffer
|
|
119
|
-
});
|
|
120
|
-
snapshot.resourceOverrides.push({
|
|
121
|
-
url,
|
|
122
|
-
sha1
|
|
123
|
-
});
|
|
109
|
+
const sha1 = (0, import_crypto.calculateSha1)(buffer) + "." + (import_utilsBundle.mime.getExtension(contentType) || "dat");
|
|
110
|
+
this._delegate.onSnapshotterBlob({ sha1, buffer });
|
|
111
|
+
snapshot.resourceOverrides.push({ url, sha1 });
|
|
124
112
|
} else {
|
|
125
|
-
snapshot.resourceOverrides.push({
|
|
126
|
-
url,
|
|
127
|
-
ref: content
|
|
128
|
-
});
|
|
113
|
+
snapshot.resourceOverrides.push({ url, ref: content });
|
|
129
114
|
}
|
|
130
115
|
}
|
|
131
116
|
this._delegate.onFrameSnapshot(snapshot);
|
|
@@ -133,29 +118,26 @@ class Snapshotter {
|
|
|
133
118
|
await Promise.all(snapshots);
|
|
134
119
|
}
|
|
135
120
|
_onPage(page) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
this._eventListeners.push(
|
|
121
|
+
for (const frame of page.frames())
|
|
122
|
+
this._annotateFrameHierarchy(frame);
|
|
123
|
+
this._eventListeners.push(import_eventsHelper.eventsHelper.addEventListener(page, import_page.Page.Events.FrameAttached, (frame) => this._annotateFrameHierarchy(frame)));
|
|
139
124
|
}
|
|
140
125
|
async _annotateFrameHierarchy(frame) {
|
|
141
126
|
try {
|
|
142
127
|
const frameElement = await frame.frameElement();
|
|
143
128
|
const parent = frame.parentFrame();
|
|
144
|
-
if (!parent)
|
|
129
|
+
if (!parent)
|
|
130
|
+
return;
|
|
145
131
|
const context = await parent._mainContext();
|
|
146
|
-
await (
|
|
147
|
-
snapshotStreamer,
|
|
148
|
-
|
|
149
|
-
frameId
|
|
150
|
-
}) => {
|
|
151
|
-
window[snapshotStreamer].markIframe(frameElement, frameId);
|
|
152
|
-
}, {
|
|
153
|
-
snapshotStreamer: this._snapshotStreamer,
|
|
154
|
-
frameElement,
|
|
155
|
-
frameId: frame.guid
|
|
156
|
-
}));
|
|
132
|
+
await context?.evaluate(({ snapshotStreamer, frameElement: frameElement2, frameId }) => {
|
|
133
|
+
window[snapshotStreamer].markIframe(frameElement2, frameId);
|
|
134
|
+
}, { snapshotStreamer: this._snapshotStreamer, frameElement, frameId: frame.guid });
|
|
157
135
|
frameElement.dispose();
|
|
158
|
-
} catch (e) {
|
|
136
|
+
} catch (e) {
|
|
137
|
+
}
|
|
159
138
|
}
|
|
160
139
|
}
|
|
161
|
-
|
|
140
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
141
|
+
0 && (module.exports = {
|
|
142
|
+
Snapshotter
|
|
143
|
+
});
|