@stablyai/internal-playwright-core 0.1.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/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +3 -0
- package/ThirdPartyNotices.txt +1134 -0
- package/bin/install_media_pack.ps1 +5 -0
- package/bin/install_webkit_wsl.ps1 +35 -0
- package/bin/reinstall_chrome_beta_linux.sh +42 -0
- package/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/bin/reinstall_chrome_beta_win.ps1 +24 -0
- package/bin/reinstall_chrome_stable_linux.sh +42 -0
- package/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/bin/reinstall_chrome_stable_win.ps1 +24 -0
- package/bin/reinstall_msedge_beta_linux.sh +48 -0
- package/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/bin/reinstall_msedge_beta_win.ps1 +23 -0
- package/bin/reinstall_msedge_dev_linux.sh +48 -0
- package/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/bin/reinstall_msedge_dev_win.ps1 +23 -0
- package/bin/reinstall_msedge_stable_linux.sh +48 -0
- package/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/bin/reinstall_msedge_stable_win.ps1 +24 -0
- package/browsers.json +80 -0
- package/cli.js +18 -0
- package/index.d.ts +17 -0
- package/index.js +32 -0
- package/index.mjs +28 -0
- package/lib/androidServerImpl.js +65 -0
- package/lib/browserServerImpl.js +120 -0
- package/lib/cli/cli.js +58 -0
- package/lib/cli/driver.js +97 -0
- package/lib/cli/program.js +634 -0
- package/lib/cli/programWithTestStub.js +74 -0
- package/lib/client/accessibility.js +49 -0
- package/lib/client/android.js +361 -0
- package/lib/client/api.js +137 -0
- package/lib/client/artifact.js +79 -0
- package/lib/client/browser.js +163 -0
- package/lib/client/browserContext.js +529 -0
- package/lib/client/browserType.js +184 -0
- package/lib/client/cdpSession.js +51 -0
- package/lib/client/channelOwner.js +194 -0
- package/lib/client/clientHelper.js +64 -0
- package/lib/client/clientInstrumentation.js +55 -0
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +68 -0
- package/lib/client/connection.js +314 -0
- package/lib/client/consoleMessage.js +54 -0
- package/lib/client/coverage.js +44 -0
- package/lib/client/dialog.js +56 -0
- package/lib/client/download.js +62 -0
- package/lib/client/electron.js +138 -0
- package/lib/client/elementHandle.js +281 -0
- package/lib/client/errors.js +77 -0
- package/lib/client/eventEmitter.js +314 -0
- package/lib/client/events.js +99 -0
- package/lib/client/fetch.js +369 -0
- package/lib/client/fileChooser.js +46 -0
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +408 -0
- package/lib/client/harRouter.js +87 -0
- package/lib/client/input.js +84 -0
- package/lib/client/jsHandle.js +109 -0
- package/lib/client/jsonPipe.js +39 -0
- package/lib/client/localUtils.js +60 -0
- package/lib/client/locator.js +368 -0
- package/lib/client/network.js +747 -0
- package/lib/client/page.js +721 -0
- package/lib/client/platform.js +74 -0
- package/lib/client/playwright.js +71 -0
- package/lib/client/selectors.js +55 -0
- package/lib/client/stream.js +39 -0
- package/lib/client/timeoutSettings.js +79 -0
- package/lib/client/tracing.js +117 -0
- package/lib/client/types.js +28 -0
- package/lib/client/video.js +59 -0
- package/lib/client/waiter.js +142 -0
- package/lib/client/webError.js +39 -0
- package/lib/client/webSocket.js +93 -0
- package/lib/client/worker.js +63 -0
- package/lib/client/writableStream.js +39 -0
- package/lib/common/debugLogger.js +90 -0
- package/lib/common/socksProxy.js +569 -0
- package/lib/common/timeoutSettings.js +73 -0
- package/lib/common/types.js +5 -0
- package/lib/generated/bindingsControllerSource.js +28 -0
- package/lib/generated/clockSource.js +28 -0
- package/lib/generated/consoleApiSource.js +28 -0
- package/lib/generated/injectedScriptSource.js +28 -0
- package/lib/generated/pollingRecorderSource.js +28 -0
- package/lib/generated/recorderSource.js +28 -0
- package/lib/generated/storageScriptSource.js +28 -0
- package/lib/generated/utilityScriptSource.js +28 -0
- package/lib/generated/webSocketMockSource.js +336 -0
- package/lib/image_tools/colorUtils.js +98 -0
- package/lib/image_tools/compare.js +108 -0
- package/lib/image_tools/imageChannel.js +70 -0
- package/lib/image_tools/stats.js +102 -0
- package/lib/inProcessFactory.js +60 -0
- package/lib/index.js +19 -0
- package/lib/inprocess.js +3 -0
- package/lib/outofprocess.js +76 -0
- package/lib/protocol/debug.js +27 -0
- package/lib/protocol/serializers.js +192 -0
- package/lib/protocol/transport.js +82 -0
- package/lib/protocol/validator.js +2919 -0
- package/lib/protocol/validatorPrimitives.js +193 -0
- package/lib/remote/playwrightConnection.js +129 -0
- package/lib/remote/playwrightServer.js +335 -0
- package/lib/server/accessibility.js +69 -0
- package/lib/server/android/android.js +465 -0
- package/lib/server/android/backendAdb.js +177 -0
- package/lib/server/artifact.js +127 -0
- package/lib/server/bidi/bidiBrowser.js +490 -0
- package/lib/server/bidi/bidiChromium.js +153 -0
- package/lib/server/bidi/bidiConnection.js +212 -0
- package/lib/server/bidi/bidiExecutionContext.js +221 -0
- package/lib/server/bidi/bidiFirefox.js +130 -0
- package/lib/server/bidi/bidiInput.js +146 -0
- package/lib/server/bidi/bidiNetworkManager.js +383 -0
- package/lib/server/bidi/bidiOverCdp.js +102 -0
- package/lib/server/bidi/bidiPage.js +552 -0
- package/lib/server/bidi/bidiPdf.js +106 -0
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +98 -0
- package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
- package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
- package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
- package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
- package/lib/server/browser.js +149 -0
- package/lib/server/browserContext.js +695 -0
- package/lib/server/browserType.js +328 -0
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/appIcon.png +0 -0
- package/lib/server/chromium/chromium.js +402 -0
- package/lib/server/chromium/chromiumSwitches.js +95 -0
- package/lib/server/chromium/crAccessibility.js +263 -0
- package/lib/server/chromium/crBrowser.js +501 -0
- package/lib/server/chromium/crConnection.js +202 -0
- package/lib/server/chromium/crCoverage.js +235 -0
- package/lib/server/chromium/crDevTools.js +113 -0
- package/lib/server/chromium/crDragDrop.js +131 -0
- package/lib/server/chromium/crExecutionContext.js +146 -0
- package/lib/server/chromium/crInput.js +187 -0
- package/lib/server/chromium/crNetworkManager.js +666 -0
- package/lib/server/chromium/crPage.js +1069 -0
- package/lib/server/chromium/crPdf.js +121 -0
- package/lib/server/chromium/crProtocolHelper.js +145 -0
- package/lib/server/chromium/crServiceWorker.js +123 -0
- package/lib/server/chromium/defaultFontFamilies.js +162 -0
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +113 -0
- package/lib/server/clock.js +149 -0
- package/lib/server/codegen/csharp.js +327 -0
- package/lib/server/codegen/java.js +274 -0
- package/lib/server/codegen/javascript.js +270 -0
- package/lib/server/codegen/jsonl.js +52 -0
- package/lib/server/codegen/language.js +132 -0
- package/lib/server/codegen/languages.js +68 -0
- package/lib/server/codegen/python.js +279 -0
- package/lib/server/codegen/types.js +16 -0
- package/lib/server/console.js +53 -0
- package/lib/server/cookieStore.js +206 -0
- package/lib/server/debugController.js +191 -0
- package/lib/server/debugger.js +119 -0
- package/lib/server/deviceDescriptors.js +39 -0
- package/lib/server/deviceDescriptorsSource.json +1779 -0
- package/lib/server/dialog.js +116 -0
- package/lib/server/dispatchers/androidDispatcher.js +325 -0
- package/lib/server/dispatchers/artifactDispatcher.js +118 -0
- package/lib/server/dispatchers/browserContextDispatcher.js +364 -0
- package/lib/server/dispatchers/browserDispatcher.js +118 -0
- package/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
- package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
- package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
- package/lib/server/dispatchers/dialogDispatcher.js +47 -0
- package/lib/server/dispatchers/dispatcher.js +371 -0
- package/lib/server/dispatchers/electronDispatcher.js +89 -0
- package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
- package/lib/server/dispatchers/frameDispatcher.js +227 -0
- package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
- package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
- package/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
- package/lib/server/dispatchers/networkDispatchers.js +213 -0
- package/lib/server/dispatchers/pageDispatcher.js +401 -0
- package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
- package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
- package/lib/server/dispatchers/streamDispatcher.js +67 -0
- package/lib/server/dispatchers/tracingDispatcher.js +68 -0
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
- package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
- package/lib/server/dom.js +806 -0
- package/lib/server/download.js +70 -0
- package/lib/server/electron/electron.js +270 -0
- package/lib/server/electron/loader.js +29 -0
- package/lib/server/errors.js +69 -0
- package/lib/server/fetch.js +621 -0
- package/lib/server/fileChooser.js +43 -0
- package/lib/server/fileUploadUtils.js +84 -0
- package/lib/server/firefox/ffAccessibility.js +238 -0
- package/lib/server/firefox/ffBrowser.js +428 -0
- package/lib/server/firefox/ffConnection.js +147 -0
- package/lib/server/firefox/ffExecutionContext.js +150 -0
- package/lib/server/firefox/ffInput.js +159 -0
- package/lib/server/firefox/ffNetworkManager.js +256 -0
- package/lib/server/firefox/ffPage.js +503 -0
- package/lib/server/firefox/firefox.js +116 -0
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +147 -0
- package/lib/server/frameSelectors.js +156 -0
- package/lib/server/frames.js +1502 -0
- package/lib/server/har/harRecorder.js +147 -0
- package/lib/server/har/harTracer.js +607 -0
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +96 -0
- package/lib/server/index.js +58 -0
- package/lib/server/input.js +273 -0
- package/lib/server/instrumentation.js +69 -0
- package/lib/server/isomorphic/utilityScriptSerializers.js +212 -0
- package/lib/server/javascript.js +291 -0
- package/lib/server/launchApp.js +128 -0
- package/lib/server/localUtils.js +218 -0
- package/lib/server/macEditingCommands.js +143 -0
- package/lib/server/network.js +629 -0
- package/lib/server/page.js +871 -0
- package/lib/server/pipeTransport.js +89 -0
- package/lib/server/playwright.js +69 -0
- package/lib/server/progress.js +112 -0
- package/lib/server/protocolError.js +52 -0
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/codeGenerator.js +153 -0
- package/lib/server/recorder/csharp.js +310 -0
- package/lib/server/recorder/java.js +248 -0
- package/lib/server/recorder/javascript.js +229 -0
- package/lib/server/recorder/jsonl.js +47 -0
- package/lib/server/recorder/language.js +44 -0
- package/lib/server/recorder/python.js +276 -0
- package/lib/server/recorder/recorderActions.js +5 -0
- package/lib/server/recorder/recorderApp.js +387 -0
- package/lib/server/recorder/recorderRunner.js +138 -0
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +157 -0
- package/lib/server/recorder/throttledFile.js +57 -0
- package/lib/server/recorder/utils.js +45 -0
- package/lib/server/recorder.js +499 -0
- package/lib/server/registry/browserFetcher.js +175 -0
- package/lib/server/registry/dependencies.js +371 -0
- package/lib/server/registry/index.js +1331 -0
- package/lib/server/registry/nativeDeps.js +1280 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +120 -0
- package/lib/server/screenshotter.js +333 -0
- package/lib/server/selectors.js +112 -0
- package/lib/server/socksClientCertificatesInterceptor.js +383 -0
- package/lib/server/socksInterceptor.js +95 -0
- package/lib/server/stably/ai-tools/http-request.js +70 -0
- package/lib/server/stably/ai-tools/stablyApiCaller.js +137 -0
- package/lib/server/stably/autohealing/elementHandleFromCoordinates.js +64 -0
- package/lib/server/stably/autohealing/healingService.js +228 -0
- package/lib/server/stably/autohealing/screenshotFrame.js +41 -0
- package/lib/server/stably/constants.js +31 -0
- package/lib/server/trace/recorder/snapshotter.js +147 -0
- package/lib/server/trace/recorder/snapshotterInjected.js +541 -0
- package/lib/server/trace/recorder/tracing.js +602 -0
- package/lib/server/trace/test/inMemorySnapshotter.js +87 -0
- package/lib/server/trace/viewer/traceViewer.js +240 -0
- package/lib/server/transport.js +181 -0
- package/lib/server/types.js +28 -0
- package/lib/server/usKeyboardLayout.js +145 -0
- 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 +42 -0
- package/lib/server/utils/debugLogger.js +122 -0
- package/lib/server/utils/env.js +73 -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 +111 -0
- package/lib/server/utils/httpServer.js +218 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/server/utils/image_tools/compare.js +109 -0
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/server/utils/image_tools/stats.js +102 -0
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +233 -0
- package/lib/server/utils/nodePlatform.js +148 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +241 -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 +121 -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 +119 -0
- package/lib/server/webkit/wkAccessibility.js +237 -0
- package/lib/server/webkit/wkBrowser.js +339 -0
- package/lib/server/webkit/wkConnection.js +149 -0
- package/lib/server/webkit/wkExecutionContext.js +154 -0
- package/lib/server/webkit/wkInput.js +181 -0
- package/lib/server/webkit/wkInterceptableRequest.js +169 -0
- package/lib/server/webkit/wkPage.js +1134 -0
- package/lib/server/webkit/wkProvisionalPage.js +83 -0
- package/lib/server/webkit/wkWorkers.js +104 -0
- package/lib/server/webkit/wsl/webkit-wsl-transport-client.js +74 -0
- package/lib/server/webkit/wsl/webkit-wsl-transport-server.js +113 -0
- package/lib/third_party/diff_match_patch.js +2222 -0
- package/lib/third_party/pixelmatch.js +255 -0
- package/lib/utils/ascii.js +31 -0
- package/lib/utils/comparators.js +171 -0
- package/lib/utils/crypto.js +33 -0
- package/lib/utils/debug.js +46 -0
- package/lib/utils/debugLogger.js +89 -0
- package/lib/utils/env.js +49 -0
- package/lib/utils/eventsHelper.js +38 -0
- package/lib/utils/fileUtils.js +205 -0
- package/lib/utils/glob.js +83 -0
- package/lib/utils/happy-eyeballs.js +160 -0
- package/lib/utils/headers.js +52 -0
- package/lib/utils/hostPlatform.js +128 -0
- package/lib/utils/httpServer.js +236 -0
- package/lib/utils/index.js +346 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +245 -0
- package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/locatorGenerators.js +673 -0
- package/lib/utils/isomorphic/locatorParser.js +176 -0
- package/lib/utils/isomorphic/locatorUtils.js +81 -0
- package/lib/utils/isomorphic/manualPromise.js +114 -0
- package/lib/utils/isomorphic/mimeType.js +459 -0
- package/lib/utils/isomorphic/multimap.js +80 -0
- package/lib/utils/isomorphic/protocolFormatter.js +78 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +386 -0
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +155 -0
- package/lib/utils/isomorphic/time.js +49 -0
- package/lib/utils/isomorphic/timeoutRunner.js +66 -0
- package/lib/utils/isomorphic/traceUtils.js +58 -0
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +176 -0
- package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
- package/lib/utils/linuxUtils.js +78 -0
- package/lib/utils/manualPromise.js +109 -0
- package/lib/utils/mimeType.js +29 -0
- package/lib/utils/multimap.js +75 -0
- package/lib/utils/network.js +188 -0
- package/lib/utils/processLauncher.js +248 -0
- package/lib/utils/profiler.js +53 -0
- package/lib/utils/rtti.js +44 -0
- package/lib/utils/semaphore.js +51 -0
- package/lib/utils/spawnAsync.js +45 -0
- package/lib/utils/stackTrace.js +121 -0
- package/lib/utils/task.js +58 -0
- package/lib/utils/time.js +37 -0
- package/lib/utils/timeoutRunner.js +66 -0
- package/lib/utils/traceUtils.js +44 -0
- package/lib/utils/userAgent.js +105 -0
- package/lib/utils/wsServer.js +127 -0
- package/lib/utils/zipFile.js +75 -0
- package/lib/utils/zones.js +62 -0
- package/lib/utils.js +107 -0
- package/lib/utilsBundle.js +109 -0
- package/lib/utilsBundleImpl/index.js +218 -0
- package/lib/utilsBundleImpl/xdg-open +1066 -0
- package/lib/vite/htmlReport/index.html +84 -0
- package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +1 -0
- package/lib/vite/recorder/assets/codeMirrorModule-RJCXzfmE.js +24 -0
- package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/recorder/assets/index-Ri0uHF7I.css +1 -0
- package/lib/vite/recorder/assets/index-Y-X2TGJv.js +193 -0
- package/lib/vite/recorder/index.html +29 -0
- package/lib/vite/recorder/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-Bhnc5o2x.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-ClwvkA2N.js +265 -0
- package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
- package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +1 -0
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/defaultSettingsView.TQ8_7ybu.css +1 -0
- package/lib/vite/traceViewer/index.DFO9NNF5.js +2 -0
- package/lib/vite/traceViewer/index.I8N9v4jT.css +1 -0
- package/lib/vite/traceViewer/index.html +43 -0
- package/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/snapshot.html +21 -0
- package/lib/vite/traceViewer/sw.bundle.js +3 -0
- package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
- package/lib/vite/traceViewer/uiMode.Shu3QS-1.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +17 -0
- package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
- package/lib/zipBundle.js +34 -0
- package/lib/zipBundleImpl.js +5 -0
- package/package.json +43 -0
- package/types/protocol.d.ts +23130 -0
- package/types/structs.d.ts +45 -0
- package/types/types.d.ts +22857 -0
@@ -0,0 +1,121 @@
|
|
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 crPdf_exports = {};
|
20
|
+
__export(crPdf_exports, {
|
21
|
+
CRPDF: () => CRPDF
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(crPdf_exports);
|
24
|
+
var import_crProtocolHelper = require("./crProtocolHelper");
|
25
|
+
var import_utils = require("../../utils");
|
26
|
+
const PagePaperFormats = {
|
27
|
+
letter: { width: 8.5, height: 11 },
|
28
|
+
legal: { width: 8.5, height: 14 },
|
29
|
+
tabloid: { width: 11, height: 17 },
|
30
|
+
ledger: { width: 17, height: 11 },
|
31
|
+
a0: { width: 33.1, height: 46.8 },
|
32
|
+
a1: { width: 23.4, height: 33.1 },
|
33
|
+
a2: { width: 16.54, height: 23.4 },
|
34
|
+
a3: { width: 11.7, height: 16.54 },
|
35
|
+
a4: { width: 8.27, height: 11.7 },
|
36
|
+
a5: { width: 5.83, height: 8.27 },
|
37
|
+
a6: { width: 4.13, height: 5.83 }
|
38
|
+
};
|
39
|
+
const unitToPixels = {
|
40
|
+
"px": 1,
|
41
|
+
"in": 96,
|
42
|
+
"cm": 37.8,
|
43
|
+
"mm": 3.78
|
44
|
+
};
|
45
|
+
function convertPrintParameterToInches(text) {
|
46
|
+
if (text === void 0)
|
47
|
+
return void 0;
|
48
|
+
let unit = text.substring(text.length - 2).toLowerCase();
|
49
|
+
let valueText = "";
|
50
|
+
if (unitToPixels.hasOwnProperty(unit)) {
|
51
|
+
valueText = text.substring(0, text.length - 2);
|
52
|
+
} else {
|
53
|
+
unit = "px";
|
54
|
+
valueText = text;
|
55
|
+
}
|
56
|
+
const value = Number(valueText);
|
57
|
+
(0, import_utils.assert)(!isNaN(value), "Failed to parse parameter value: " + text);
|
58
|
+
const pixels = value * unitToPixels[unit];
|
59
|
+
return pixels / 96;
|
60
|
+
}
|
61
|
+
class CRPDF {
|
62
|
+
constructor(client) {
|
63
|
+
this._client = client;
|
64
|
+
}
|
65
|
+
async generate(options) {
|
66
|
+
const {
|
67
|
+
scale = 1,
|
68
|
+
displayHeaderFooter = false,
|
69
|
+
headerTemplate = "",
|
70
|
+
footerTemplate = "",
|
71
|
+
printBackground = false,
|
72
|
+
landscape = false,
|
73
|
+
pageRanges = "",
|
74
|
+
preferCSSPageSize = false,
|
75
|
+
margin = {},
|
76
|
+
tagged = false,
|
77
|
+
outline = false
|
78
|
+
} = options;
|
79
|
+
let paperWidth = 8.5;
|
80
|
+
let paperHeight = 11;
|
81
|
+
if (options.format) {
|
82
|
+
const format = PagePaperFormats[options.format.toLowerCase()];
|
83
|
+
(0, import_utils.assert)(format, "Unknown paper format: " + options.format);
|
84
|
+
paperWidth = format.width;
|
85
|
+
paperHeight = format.height;
|
86
|
+
} else {
|
87
|
+
paperWidth = convertPrintParameterToInches(options.width) || paperWidth;
|
88
|
+
paperHeight = convertPrintParameterToInches(options.height) || paperHeight;
|
89
|
+
}
|
90
|
+
const marginTop = convertPrintParameterToInches(margin.top) || 0;
|
91
|
+
const marginLeft = convertPrintParameterToInches(margin.left) || 0;
|
92
|
+
const marginBottom = convertPrintParameterToInches(margin.bottom) || 0;
|
93
|
+
const marginRight = convertPrintParameterToInches(margin.right) || 0;
|
94
|
+
const generateDocumentOutline = outline;
|
95
|
+
const generateTaggedPDF = tagged;
|
96
|
+
const result = await this._client.send("Page.printToPDF", {
|
97
|
+
transferMode: "ReturnAsStream",
|
98
|
+
landscape,
|
99
|
+
displayHeaderFooter,
|
100
|
+
headerTemplate,
|
101
|
+
footerTemplate,
|
102
|
+
printBackground,
|
103
|
+
scale,
|
104
|
+
paperWidth,
|
105
|
+
paperHeight,
|
106
|
+
marginTop,
|
107
|
+
marginBottom,
|
108
|
+
marginLeft,
|
109
|
+
marginRight,
|
110
|
+
pageRanges,
|
111
|
+
preferCSSPageSize,
|
112
|
+
generateTaggedPDF,
|
113
|
+
generateDocumentOutline
|
114
|
+
});
|
115
|
+
return await (0, import_crProtocolHelper.readProtocolStream)(this._client, result.stream);
|
116
|
+
}
|
117
|
+
}
|
118
|
+
// Annotate the CommonJS export names for ESM import in node:
|
119
|
+
0 && (module.exports = {
|
120
|
+
CRPDF
|
121
|
+
});
|
@@ -0,0 +1,145 @@
|
|
1
|
+
"use strict";
|
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 crProtocolHelper_exports = {};
|
30
|
+
__export(crProtocolHelper_exports, {
|
31
|
+
exceptionToError: () => exceptionToError,
|
32
|
+
getExceptionMessage: () => getExceptionMessage,
|
33
|
+
readProtocolStream: () => readProtocolStream,
|
34
|
+
releaseObject: () => releaseObject,
|
35
|
+
saveProtocolStream: () => saveProtocolStream,
|
36
|
+
toButtonsMask: () => toButtonsMask,
|
37
|
+
toConsoleMessageLocation: () => toConsoleMessageLocation,
|
38
|
+
toModifiersMask: () => toModifiersMask
|
39
|
+
});
|
40
|
+
module.exports = __toCommonJS(crProtocolHelper_exports);
|
41
|
+
var import_fs = __toESM(require("fs"));
|
42
|
+
var import_stackTrace = require("../../utils/isomorphic/stackTrace");
|
43
|
+
var import_fileUtils = require("../utils/fileUtils");
|
44
|
+
function getExceptionMessage(exceptionDetails) {
|
45
|
+
if (exceptionDetails.exception)
|
46
|
+
return exceptionDetails.exception.description || String(exceptionDetails.exception.value);
|
47
|
+
let message = exceptionDetails.text;
|
48
|
+
if (exceptionDetails.stackTrace) {
|
49
|
+
for (const callframe of exceptionDetails.stackTrace.callFrames) {
|
50
|
+
const location = callframe.url + ":" + callframe.lineNumber + ":" + callframe.columnNumber;
|
51
|
+
const functionName = callframe.functionName || "<anonymous>";
|
52
|
+
message += `
|
53
|
+
at ${functionName} (${location})`;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
return message;
|
57
|
+
}
|
58
|
+
async function releaseObject(client, objectId) {
|
59
|
+
await client.send("Runtime.releaseObject", { objectId }).catch((error) => {
|
60
|
+
});
|
61
|
+
}
|
62
|
+
async function saveProtocolStream(client, handle, path) {
|
63
|
+
let eof = false;
|
64
|
+
await (0, import_fileUtils.mkdirIfNeeded)(path);
|
65
|
+
const fd = await import_fs.default.promises.open(path, "w");
|
66
|
+
while (!eof) {
|
67
|
+
const response = await client.send("IO.read", { handle });
|
68
|
+
eof = response.eof;
|
69
|
+
const buf = Buffer.from(response.data, response.base64Encoded ? "base64" : void 0);
|
70
|
+
await fd.write(buf);
|
71
|
+
}
|
72
|
+
await fd.close();
|
73
|
+
await client.send("IO.close", { handle });
|
74
|
+
}
|
75
|
+
async function readProtocolStream(client, handle) {
|
76
|
+
let eof = false;
|
77
|
+
const chunks = [];
|
78
|
+
while (!eof) {
|
79
|
+
const response = await client.send("IO.read", { handle });
|
80
|
+
eof = response.eof;
|
81
|
+
const buf = Buffer.from(response.data, response.base64Encoded ? "base64" : void 0);
|
82
|
+
chunks.push(buf);
|
83
|
+
}
|
84
|
+
await client.send("IO.close", { handle });
|
85
|
+
return Buffer.concat(chunks);
|
86
|
+
}
|
87
|
+
function toConsoleMessageLocation(stackTrace) {
|
88
|
+
return stackTrace && stackTrace.callFrames.length ? {
|
89
|
+
url: stackTrace.callFrames[0].url,
|
90
|
+
lineNumber: stackTrace.callFrames[0].lineNumber,
|
91
|
+
columnNumber: stackTrace.callFrames[0].columnNumber
|
92
|
+
} : { url: "", lineNumber: 0, columnNumber: 0 };
|
93
|
+
}
|
94
|
+
function exceptionToError(exceptionDetails) {
|
95
|
+
const messageWithStack = getExceptionMessage(exceptionDetails);
|
96
|
+
const lines = messageWithStack.split("\n");
|
97
|
+
const firstStackTraceLine = lines.findIndex((line) => line.startsWith(" at"));
|
98
|
+
let messageWithName = "";
|
99
|
+
let stack = "";
|
100
|
+
if (firstStackTraceLine === -1) {
|
101
|
+
messageWithName = messageWithStack;
|
102
|
+
} else {
|
103
|
+
messageWithName = lines.slice(0, firstStackTraceLine).join("\n");
|
104
|
+
stack = messageWithStack;
|
105
|
+
}
|
106
|
+
const { name, message } = (0, import_stackTrace.splitErrorMessage)(messageWithName);
|
107
|
+
const err = new Error(message);
|
108
|
+
err.stack = stack;
|
109
|
+
const nameOverride = exceptionDetails.exception?.preview?.properties.find((o) => o.name === "name");
|
110
|
+
err.name = nameOverride ? nameOverride.value ?? "Error" : name;
|
111
|
+
return err;
|
112
|
+
}
|
113
|
+
function toModifiersMask(modifiers) {
|
114
|
+
let mask = 0;
|
115
|
+
if (modifiers.has("Alt"))
|
116
|
+
mask |= 1;
|
117
|
+
if (modifiers.has("Control"))
|
118
|
+
mask |= 2;
|
119
|
+
if (modifiers.has("Meta"))
|
120
|
+
mask |= 4;
|
121
|
+
if (modifiers.has("Shift"))
|
122
|
+
mask |= 8;
|
123
|
+
return mask;
|
124
|
+
}
|
125
|
+
function toButtonsMask(buttons) {
|
126
|
+
let mask = 0;
|
127
|
+
if (buttons.has("left"))
|
128
|
+
mask |= 1;
|
129
|
+
if (buttons.has("right"))
|
130
|
+
mask |= 2;
|
131
|
+
if (buttons.has("middle"))
|
132
|
+
mask |= 4;
|
133
|
+
return mask;
|
134
|
+
}
|
135
|
+
// Annotate the CommonJS export names for ESM import in node:
|
136
|
+
0 && (module.exports = {
|
137
|
+
exceptionToError,
|
138
|
+
getExceptionMessage,
|
139
|
+
readProtocolStream,
|
140
|
+
releaseObject,
|
141
|
+
saveProtocolStream,
|
142
|
+
toButtonsMask,
|
143
|
+
toConsoleMessageLocation,
|
144
|
+
toModifiersMask
|
145
|
+
});
|
@@ -0,0 +1,123 @@
|
|
1
|
+
"use strict";
|
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 crServiceWorker_exports = {};
|
30
|
+
__export(crServiceWorker_exports, {
|
31
|
+
CRServiceWorker: () => CRServiceWorker
|
32
|
+
});
|
33
|
+
module.exports = __toCommonJS(crServiceWorker_exports);
|
34
|
+
var import_page = require("../page");
|
35
|
+
var import_crExecutionContext = require("./crExecutionContext");
|
36
|
+
var import_crNetworkManager = require("./crNetworkManager");
|
37
|
+
var import_browserContext = require("../browserContext");
|
38
|
+
var network = __toESM(require("../network"));
|
39
|
+
class CRServiceWorker extends import_page.Worker {
|
40
|
+
constructor(browserContext, session, url) {
|
41
|
+
super(browserContext, url);
|
42
|
+
this._session = session;
|
43
|
+
this.browserContext = browserContext;
|
44
|
+
if (!!process.env.PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS)
|
45
|
+
this._networkManager = new import_crNetworkManager.CRNetworkManager(null, this);
|
46
|
+
session.once("Runtime.executionContextCreated", (event) => {
|
47
|
+
this.createExecutionContext(new import_crExecutionContext.CRExecutionContext(session, event.context));
|
48
|
+
});
|
49
|
+
if (this._networkManager && this._isNetworkInspectionEnabled()) {
|
50
|
+
this.updateRequestInterception();
|
51
|
+
this.updateExtraHTTPHeaders();
|
52
|
+
this.updateHttpCredentials();
|
53
|
+
this.updateOffline();
|
54
|
+
this._networkManager.addSession(
|
55
|
+
session,
|
56
|
+
void 0,
|
57
|
+
true
|
58
|
+
/* isMain */
|
59
|
+
).catch(() => {
|
60
|
+
});
|
61
|
+
}
|
62
|
+
session.send("Runtime.enable", {}).catch((e) => {
|
63
|
+
});
|
64
|
+
session.send("Runtime.runIfWaitingForDebugger").catch((e) => {
|
65
|
+
});
|
66
|
+
session.on("Inspector.targetReloadedAfterCrash", () => {
|
67
|
+
session._sendMayFail("Runtime.runIfWaitingForDebugger", {});
|
68
|
+
});
|
69
|
+
}
|
70
|
+
didClose() {
|
71
|
+
this._networkManager?.removeSession(this._session);
|
72
|
+
this._session.dispose();
|
73
|
+
super.didClose();
|
74
|
+
}
|
75
|
+
async updateOffline() {
|
76
|
+
if (!this._isNetworkInspectionEnabled())
|
77
|
+
return;
|
78
|
+
await this._networkManager?.setOffline(!!this.browserContext._options.offline).catch(() => {
|
79
|
+
});
|
80
|
+
}
|
81
|
+
async updateHttpCredentials() {
|
82
|
+
if (!this._isNetworkInspectionEnabled())
|
83
|
+
return;
|
84
|
+
await this._networkManager?.authenticate(this.browserContext._options.httpCredentials || null).catch(() => {
|
85
|
+
});
|
86
|
+
}
|
87
|
+
async updateExtraHTTPHeaders() {
|
88
|
+
if (!this._isNetworkInspectionEnabled())
|
89
|
+
return;
|
90
|
+
await this._networkManager?.setExtraHTTPHeaders(this.browserContext._options.extraHTTPHeaders || []).catch(() => {
|
91
|
+
});
|
92
|
+
}
|
93
|
+
async updateRequestInterception() {
|
94
|
+
if (!this._isNetworkInspectionEnabled())
|
95
|
+
return;
|
96
|
+
await this._networkManager?.setRequestInterception(this.needsRequestInterception()).catch(() => {
|
97
|
+
});
|
98
|
+
}
|
99
|
+
needsRequestInterception() {
|
100
|
+
return this._isNetworkInspectionEnabled() && this.browserContext.requestInterceptors.length > 0;
|
101
|
+
}
|
102
|
+
reportRequestFinished(request, response) {
|
103
|
+
this.browserContext.emit(import_browserContext.BrowserContext.Events.RequestFinished, { request, response });
|
104
|
+
}
|
105
|
+
requestFailed(request, _canceled) {
|
106
|
+
this.browserContext.emit(import_browserContext.BrowserContext.Events.RequestFailed, request);
|
107
|
+
}
|
108
|
+
requestReceivedResponse(response) {
|
109
|
+
this.browserContext.emit(import_browserContext.BrowserContext.Events.Response, response);
|
110
|
+
}
|
111
|
+
requestStarted(request, route) {
|
112
|
+
this.browserContext.emit(import_browserContext.BrowserContext.Events.Request, request);
|
113
|
+
if (route)
|
114
|
+
new network.Route(request, route).handle(this.browserContext.requestInterceptors);
|
115
|
+
}
|
116
|
+
_isNetworkInspectionEnabled() {
|
117
|
+
return this.browserContext._options.serviceWorkers !== "block";
|
118
|
+
}
|
119
|
+
}
|
120
|
+
// Annotate the CommonJS export names for ESM import in node:
|
121
|
+
0 && (module.exports = {
|
122
|
+
CRServiceWorker
|
123
|
+
});
|
@@ -0,0 +1,162 @@
|
|
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 defaultFontFamilies_exports = {};
|
20
|
+
__export(defaultFontFamilies_exports, {
|
21
|
+
platformToFontFamilies: () => platformToFontFamilies
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(defaultFontFamilies_exports);
|
24
|
+
const platformToFontFamilies = {
|
25
|
+
"linux": {
|
26
|
+
"fontFamilies": {
|
27
|
+
"standard": "Times New Roman",
|
28
|
+
"fixed": "Monospace",
|
29
|
+
"serif": "Times New Roman",
|
30
|
+
"sansSerif": "Arial",
|
31
|
+
"cursive": "Comic Sans MS",
|
32
|
+
"fantasy": "Impact"
|
33
|
+
}
|
34
|
+
},
|
35
|
+
"mac": {
|
36
|
+
"fontFamilies": {
|
37
|
+
"standard": "Times",
|
38
|
+
"fixed": "Courier",
|
39
|
+
"serif": "Times",
|
40
|
+
"sansSerif": "Helvetica",
|
41
|
+
"cursive": "Apple Chancery",
|
42
|
+
"fantasy": "Papyrus"
|
43
|
+
},
|
44
|
+
"forScripts": [
|
45
|
+
{
|
46
|
+
"script": "jpan",
|
47
|
+
"fontFamilies": {
|
48
|
+
"standard": "Hiragino Kaku Gothic ProN",
|
49
|
+
"fixed": "Osaka-Mono",
|
50
|
+
"serif": "Hiragino Mincho ProN",
|
51
|
+
"sansSerif": "Hiragino Kaku Gothic ProN"
|
52
|
+
}
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"script": "hang",
|
56
|
+
"fontFamilies": {
|
57
|
+
"standard": "Apple SD Gothic Neo",
|
58
|
+
"serif": "AppleMyungjo",
|
59
|
+
"sansSerif": "Apple SD Gothic Neo"
|
60
|
+
}
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"script": "hans",
|
64
|
+
"fontFamilies": {
|
65
|
+
"standard": ",PingFang SC,STHeiti",
|
66
|
+
"serif": "Songti SC",
|
67
|
+
"sansSerif": ",PingFang SC,STHeiti",
|
68
|
+
"cursive": "Kaiti SC"
|
69
|
+
}
|
70
|
+
},
|
71
|
+
{
|
72
|
+
"script": "hant",
|
73
|
+
"fontFamilies": {
|
74
|
+
"standard": ",PingFang TC,Heiti TC",
|
75
|
+
"serif": "Songti TC",
|
76
|
+
"sansSerif": ",PingFang TC,Heiti TC",
|
77
|
+
"cursive": "Kaiti TC"
|
78
|
+
}
|
79
|
+
}
|
80
|
+
]
|
81
|
+
},
|
82
|
+
"win": {
|
83
|
+
"fontFamilies": {
|
84
|
+
"standard": "Times New Roman",
|
85
|
+
"fixed": "Consolas",
|
86
|
+
"serif": "Times New Roman",
|
87
|
+
"sansSerif": "Arial",
|
88
|
+
"cursive": "Comic Sans MS",
|
89
|
+
"fantasy": "Impact"
|
90
|
+
},
|
91
|
+
"forScripts": [
|
92
|
+
{
|
93
|
+
"script": "cyrl",
|
94
|
+
"fontFamilies": {
|
95
|
+
"standard": "Times New Roman",
|
96
|
+
"fixed": "Courier New",
|
97
|
+
"serif": "Times New Roman",
|
98
|
+
"sansSerif": "Arial"
|
99
|
+
}
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"script": "arab",
|
103
|
+
"fontFamilies": {
|
104
|
+
"fixed": "Courier New",
|
105
|
+
"sansSerif": "Segoe UI"
|
106
|
+
}
|
107
|
+
},
|
108
|
+
{
|
109
|
+
"script": "grek",
|
110
|
+
"fontFamilies": {
|
111
|
+
"standard": "Times New Roman",
|
112
|
+
"fixed": "Courier New",
|
113
|
+
"serif": "Times New Roman",
|
114
|
+
"sansSerif": "Arial"
|
115
|
+
}
|
116
|
+
},
|
117
|
+
{
|
118
|
+
"script": "jpan",
|
119
|
+
"fontFamilies": {
|
120
|
+
"standard": ",Meiryo,Yu Gothic",
|
121
|
+
"fixed": "MS Gothic",
|
122
|
+
"serif": ",Yu Mincho,MS PMincho",
|
123
|
+
"sansSerif": ",Meiryo,Yu Gothic"
|
124
|
+
}
|
125
|
+
},
|
126
|
+
{
|
127
|
+
"script": "hang",
|
128
|
+
"fontFamilies": {
|
129
|
+
"standard": "Malgun Gothic",
|
130
|
+
"fixed": "Gulimche",
|
131
|
+
"serif": "Batang",
|
132
|
+
"sansSerif": "Malgun Gothic",
|
133
|
+
"cursive": "Gungsuh"
|
134
|
+
}
|
135
|
+
},
|
136
|
+
{
|
137
|
+
"script": "hans",
|
138
|
+
"fontFamilies": {
|
139
|
+
"standard": "Microsoft YaHei",
|
140
|
+
"fixed": "NSimsun",
|
141
|
+
"serif": "Simsun",
|
142
|
+
"sansSerif": "Microsoft YaHei",
|
143
|
+
"cursive": "KaiTi"
|
144
|
+
}
|
145
|
+
},
|
146
|
+
{
|
147
|
+
"script": "hant",
|
148
|
+
"fontFamilies": {
|
149
|
+
"standard": "Microsoft JhengHei",
|
150
|
+
"fixed": "MingLiU",
|
151
|
+
"serif": "PMingLiU",
|
152
|
+
"sansSerif": "Microsoft JhengHei",
|
153
|
+
"cursive": "DFKai-SB"
|
154
|
+
}
|
155
|
+
}
|
156
|
+
]
|
157
|
+
}
|
158
|
+
};
|
159
|
+
// Annotate the CommonJS export names for ESM import in node:
|
160
|
+
0 && (module.exports = {
|
161
|
+
platformToFontFamilies
|
162
|
+
});
|
@@ -0,0 +1,16 @@
|
|
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 __copyProps = (to, from, except, desc) => {
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
8
|
+
for (let key of __getOwnPropNames(from))
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
11
|
+
}
|
12
|
+
return to;
|
13
|
+
};
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
15
|
+
var protocol_d_exports = {};
|
16
|
+
module.exports = __toCommonJS(protocol_d_exports);
|
@@ -0,0 +1,113 @@
|
|
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 videoRecorder_exports = {};
|
20
|
+
__export(videoRecorder_exports, {
|
21
|
+
VideoRecorder: () => VideoRecorder
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(videoRecorder_exports);
|
24
|
+
var import_utils = require("../../utils");
|
25
|
+
var import_page = require("../page");
|
26
|
+
var import_processLauncher = require("../utils/processLauncher");
|
27
|
+
const fps = 25;
|
28
|
+
class VideoRecorder {
|
29
|
+
constructor(page, ffmpegPath) {
|
30
|
+
this._process = null;
|
31
|
+
this._gracefullyClose = null;
|
32
|
+
this._lastWritePromise = Promise.resolve();
|
33
|
+
this._lastFrameTimestamp = 0;
|
34
|
+
this._lastFrameBuffer = null;
|
35
|
+
this._lastWriteTimestamp = 0;
|
36
|
+
this._frameQueue = [];
|
37
|
+
this._isStopped = false;
|
38
|
+
this._ffmpegPath = ffmpegPath;
|
39
|
+
page.on(import_page.Page.Events.ScreencastFrame, (frame) => this.writeFrame(frame.buffer, frame.frameSwapWallTime / 1e3));
|
40
|
+
}
|
41
|
+
static async launch(page, ffmpegPath, options) {
|
42
|
+
if (!options.outputFile.endsWith(".webm"))
|
43
|
+
throw new Error("File must have .webm extension");
|
44
|
+
const recorder = new VideoRecorder(page, ffmpegPath);
|
45
|
+
await recorder._launch(options);
|
46
|
+
return recorder;
|
47
|
+
}
|
48
|
+
async _launch(options) {
|
49
|
+
const w = options.width;
|
50
|
+
const h = options.height;
|
51
|
+
const args = `-loglevel error -f image2pipe -avioflags direct -fpsprobesize 0 -probesize 32 -analyzeduration 0 -c:v mjpeg -i pipe:0 -y -an -r ${fps} -c:v vp8 -qmin 0 -qmax 50 -crf 8 -deadline realtime -speed 8 -b:v 1M -threads 1 -vf pad=${w}:${h}:0:0:gray,crop=${w}:${h}:0:0`.split(" ");
|
52
|
+
args.push(options.outputFile);
|
53
|
+
const { launchedProcess, gracefullyClose } = await (0, import_processLauncher.launchProcess)({
|
54
|
+
command: this._ffmpegPath,
|
55
|
+
args,
|
56
|
+
stdio: "stdin",
|
57
|
+
log: (message) => import_utils.debugLogger.log("browser", message),
|
58
|
+
tempDirectories: [],
|
59
|
+
attemptToGracefullyClose: async () => {
|
60
|
+
import_utils.debugLogger.log("browser", "Closing stdin...");
|
61
|
+
launchedProcess.stdin.end();
|
62
|
+
},
|
63
|
+
onExit: (exitCode, signal) => {
|
64
|
+
import_utils.debugLogger.log("browser", `ffmpeg onkill exitCode=${exitCode} signal=${signal}`);
|
65
|
+
}
|
66
|
+
});
|
67
|
+
launchedProcess.stdin.on("finish", () => {
|
68
|
+
import_utils.debugLogger.log("browser", "ffmpeg finished input.");
|
69
|
+
});
|
70
|
+
launchedProcess.stdin.on("error", () => {
|
71
|
+
import_utils.debugLogger.log("browser", "ffmpeg error.");
|
72
|
+
});
|
73
|
+
this._process = launchedProcess;
|
74
|
+
this._gracefullyClose = gracefullyClose;
|
75
|
+
}
|
76
|
+
writeFrame(frame, timestamp) {
|
77
|
+
(0, import_utils.assert)(this._process);
|
78
|
+
if (this._isStopped)
|
79
|
+
return;
|
80
|
+
if (this._lastFrameBuffer) {
|
81
|
+
const durationSec = timestamp - this._lastFrameTimestamp;
|
82
|
+
const repeatCount = Math.max(1, Math.round(fps * durationSec));
|
83
|
+
for (let i = 0; i < repeatCount; ++i)
|
84
|
+
this._frameQueue.push(this._lastFrameBuffer);
|
85
|
+
this._lastWritePromise = this._lastWritePromise.then(() => this._sendFrames());
|
86
|
+
}
|
87
|
+
this._lastFrameBuffer = frame;
|
88
|
+
this._lastFrameTimestamp = timestamp;
|
89
|
+
this._lastWriteTimestamp = (0, import_utils.monotonicTime)();
|
90
|
+
}
|
91
|
+
async _sendFrames() {
|
92
|
+
while (this._frameQueue.length)
|
93
|
+
await this._sendFrame(this._frameQueue.shift());
|
94
|
+
}
|
95
|
+
async _sendFrame(frame) {
|
96
|
+
return new Promise((f) => this._process.stdin.write(frame, f)).then((error) => {
|
97
|
+
if (error)
|
98
|
+
import_utils.debugLogger.log("browser", `ffmpeg failed to write: ${String(error)}`);
|
99
|
+
});
|
100
|
+
}
|
101
|
+
async stop() {
|
102
|
+
if (this._isStopped)
|
103
|
+
return;
|
104
|
+
this.writeFrame(Buffer.from([]), this._lastFrameTimestamp + ((0, import_utils.monotonicTime)() - this._lastWriteTimestamp) / 1e3);
|
105
|
+
this._isStopped = true;
|
106
|
+
await this._lastWritePromise;
|
107
|
+
await this._gracefullyClose();
|
108
|
+
}
|
109
|
+
}
|
110
|
+
// Annotate the CommonJS export names for ESM import in node:
|
111
|
+
0 && (module.exports = {
|
112
|
+
VideoRecorder
|
113
|
+
});
|