patchright-core 1.57.0 → 1.59.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 +2688 -297
- package/browsers.json +23 -22
- package/lib/bootstrap.js +77 -0
- package/lib/cli/browserActions.js +308 -0
- package/lib/cli/driver.js +3 -2
- package/lib/cli/installActions.js +171 -0
- package/lib/cli/program.js +48 -413
- package/lib/client/android.js +4 -4
- package/lib/client/api.js +3 -0
- package/lib/client/browser.js +11 -5
- package/lib/client/browserContext.js +20 -23
- package/lib/client/browserType.js +23 -54
- package/lib/client/cdpSession.js +6 -2
- package/lib/client/channelOwner.js +1 -1
- package/lib/client/clientHelper.js +2 -1
- package/lib/client/clock.js +0 -1
- package/lib/client/{webSocket.js → connect.js} +57 -7
- package/lib/client/connection.js +8 -0
- package/lib/client/consoleMessage.js +3 -0
- package/lib/client/debugger.js +57 -0
- package/lib/client/dialog.js +8 -1
- package/lib/client/disposable.js +76 -0
- package/lib/client/electron.js +1 -0
- package/lib/client/elementHandle.js +1 -1
- package/lib/client/events.js +3 -0
- package/lib/client/fetch.js +2 -4
- package/lib/client/frame.js +9 -13
- package/lib/client/harRouter.js +13 -1
- package/lib/client/jsHandle.js +4 -8
- package/lib/client/locator.js +13 -36
- package/lib/client/network.js +14 -11
- package/lib/client/page.js +44 -50
- package/lib/client/screencast.js +88 -0
- package/lib/client/selectors.js +3 -1
- package/lib/client/tracing.js +11 -5
- package/lib/client/video.js +13 -20
- package/lib/client/worker.js +6 -6
- package/lib/generated/bindingsControllerSource.js +1 -1
- package/lib/generated/clockSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +1 -1
- package/lib/generated/storageScriptSource.js +1 -1
- package/lib/generated/utilityScriptSource.js +1 -1
- package/lib/mcpBundle.js +78 -0
- package/lib/mcpBundleImpl.js +91 -0
- package/lib/protocol/serializers.js +5 -0
- package/lib/protocol/validator.js +228 -58
- package/lib/protocol/validatorPrimitives.js +1 -1
- package/lib/remote/playwrightConnection.js +10 -8
- package/lib/remote/playwrightPipeServer.js +100 -0
- package/lib/remote/playwrightServer.js +14 -10
- package/lib/remote/playwrightWebSocketServer.js +73 -0
- package/lib/remote/serverTransport.js +96 -0
- package/lib/server/android/android.js +2 -2
- package/lib/server/artifact.js +1 -1
- package/lib/server/bidi/bidiBrowser.js +80 -14
- package/lib/server/bidi/bidiChromium.js +23 -14
- package/lib/server/bidi/bidiConnection.js +1 -0
- package/lib/server/bidi/bidiDeserializer.js +116 -0
- package/lib/server/bidi/bidiExecutionContext.js +75 -29
- package/lib/server/bidi/bidiFirefox.js +6 -8
- package/lib/server/bidi/bidiNetworkManager.js +40 -12
- package/lib/server/bidi/bidiPage.js +67 -40
- package/lib/server/bidi/third_party/bidiProtocolCore.js +1 -0
- package/lib/server/bidi/third_party/firefoxPrefs.js +3 -1
- package/lib/server/browser.js +84 -21
- package/lib/server/browserContext.js +137 -77
- package/lib/server/browserType.js +26 -16
- package/lib/server/chromium/chromium.js +28 -31
- package/lib/server/chromium/chromiumSwitches.js +16 -4
- package/lib/server/chromium/crBrowser.js +40 -27
- package/lib/server/chromium/crConnection.js +0 -5
- package/lib/server/chromium/crDevTools.js +1 -2
- package/lib/server/chromium/crNetworkManager.js +54 -229
- package/lib/server/chromium/crPage.js +74 -260
- package/lib/server/chromium/crServiceWorker.js +7 -14
- package/lib/server/clock.js +33 -41
- package/lib/server/codegen/javascript.js +6 -29
- package/lib/server/console.js +5 -1
- package/lib/server/debugController.js +12 -6
- package/lib/server/debugger.js +40 -47
- package/lib/server/deviceDescriptorsSource.json +137 -137
- package/lib/server/dispatchers/browserContextDispatcher.js +30 -30
- package/lib/server/dispatchers/browserDispatcher.js +11 -5
- package/lib/server/dispatchers/browserTypeDispatcher.js +7 -0
- package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -1
- package/lib/server/dispatchers/debuggerDispatcher.js +84 -0
- package/lib/server/dispatchers/dispatcher.js +7 -14
- package/lib/server/dispatchers/disposableDispatcher.js +39 -0
- package/lib/server/dispatchers/electronDispatcher.js +2 -1
- package/lib/server/dispatchers/frameDispatcher.js +7 -7
- package/lib/server/dispatchers/localUtilsDispatcher.js +37 -1
- package/lib/server/dispatchers/networkDispatchers.js +6 -5
- package/lib/server/dispatchers/pageDispatcher.js +101 -34
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +4 -5
- package/lib/server/disposable.js +41 -0
- package/lib/server/dom.js +56 -29
- package/lib/server/download.js +3 -2
- package/lib/server/electron/electron.js +17 -9
- package/lib/server/firefox/ffBrowser.js +9 -29
- package/lib/server/firefox/ffConnection.js +0 -5
- package/lib/server/firefox/ffInput.js +21 -5
- package/lib/server/firefox/ffNetworkManager.js +4 -4
- package/lib/server/firefox/ffPage.js +27 -33
- package/lib/server/firefox/firefox.js +6 -8
- package/lib/server/frameSelectors.js +14 -169
- package/lib/server/frames.js +263 -551
- package/lib/server/har/harRecorder.js +2 -2
- package/lib/server/har/harTracer.js +5 -4
- package/lib/server/input.js +49 -4
- package/lib/server/instrumentation.js +8 -0
- package/lib/server/javascript.js +6 -22
- package/lib/server/launchApp.js +0 -1
- package/lib/server/localUtils.js +6 -6
- package/lib/server/network.js +59 -20
- package/lib/server/overlay.js +138 -0
- package/lib/server/page.js +179 -157
- package/lib/server/progress.js +32 -6
- package/lib/server/recorder/recorderApp.js +84 -104
- package/lib/server/recorder.js +76 -40
- package/lib/server/registry/browserFetcher.js +6 -4
- package/lib/server/registry/index.js +222 -226
- package/lib/server/registry/nativeDeps.js +1 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +3 -0
- package/lib/server/screencast.js +137 -0
- package/lib/server/trace/recorder/snapshotter.js +2 -2
- package/lib/server/trace/recorder/snapshotterInjected.js +21 -1
- package/lib/server/trace/recorder/tracing.js +98 -47
- package/lib/server/trace/viewer/traceViewer.js +24 -21
- package/lib/server/usKeyboardLayout.js +7 -0
- package/lib/server/utils/comparators.js +1 -1
- package/lib/server/utils/disposable.js +32 -0
- package/lib/server/utils/eventsHelper.js +3 -1
- package/lib/server/utils/expectUtils.js +87 -2
- package/lib/server/utils/fileUtils.js +16 -2
- package/lib/server/utils/happyEyeballs.js +15 -12
- package/lib/server/utils/httpServer.js +10 -23
- package/lib/server/utils/network.js +39 -29
- package/lib/server/utils/processLauncher.js +8 -6
- package/lib/server/utils/zipFile.js +2 -2
- package/lib/server/videoRecorder.js +194 -0
- package/lib/server/webkit/webkit.js +4 -6
- package/lib/server/webkit/wkBrowser.js +1 -10
- package/lib/server/webkit/wkConnection.js +1 -6
- package/lib/server/webkit/wkInterceptableRequest.js +29 -1
- package/lib/server/webkit/wkPage.js +88 -57
- package/lib/server/webkit/wkWorkers.js +2 -1
- package/lib/serverRegistry.js +156 -0
- package/lib/tools/backend/browserBackend.js +79 -0
- package/lib/tools/backend/common.js +63 -0
- package/lib/tools/backend/config.js +41 -0
- package/lib/tools/backend/console.js +66 -0
- package/lib/tools/backend/context.js +296 -0
- package/lib/tools/backend/cookies.js +152 -0
- package/lib/tools/backend/devtools.js +69 -0
- package/lib/tools/backend/dialogs.js +59 -0
- package/lib/tools/backend/evaluate.js +64 -0
- package/lib/tools/backend/files.js +60 -0
- package/lib/tools/backend/form.js +64 -0
- package/lib/tools/backend/keyboard.js +155 -0
- package/lib/tools/backend/logFile.js +95 -0
- package/lib/tools/backend/mouse.js +168 -0
- package/lib/tools/backend/navigate.js +106 -0
- package/lib/tools/backend/network.js +135 -0
- package/lib/tools/backend/pdf.js +48 -0
- package/lib/tools/backend/response.js +305 -0
- package/lib/tools/backend/route.js +140 -0
- package/lib/tools/backend/runCode.js +77 -0
- package/lib/tools/backend/screenshot.js +88 -0
- package/lib/tools/backend/sessionLog.js +74 -0
- package/lib/tools/backend/snapshot.js +208 -0
- package/lib/tools/backend/storage.js +68 -0
- package/lib/tools/backend/tab.js +445 -0
- package/lib/tools/backend/tabs.js +67 -0
- package/lib/tools/backend/tool.js +47 -0
- package/lib/tools/backend/tools.js +102 -0
- package/lib/tools/backend/tracing.js +78 -0
- package/lib/tools/backend/utils.js +83 -0
- package/lib/tools/backend/verify.js +151 -0
- package/lib/tools/backend/video.js +98 -0
- package/lib/tools/backend/wait.js +63 -0
- package/lib/tools/backend/webstorage.js +223 -0
- package/lib/tools/cli-client/cli.js +6 -0
- package/lib/tools/cli-client/help.json +399 -0
- package/lib/tools/cli-client/minimist.js +128 -0
- package/lib/tools/cli-client/program.js +350 -0
- package/lib/tools/cli-client/registry.js +176 -0
- package/lib/tools/cli-client/session.js +289 -0
- package/lib/tools/cli-client/skill/SKILL.md +328 -0
- package/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
- package/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
- package/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
- package/lib/tools/cli-client/skill/references/running-code.md +231 -0
- package/lib/tools/cli-client/skill/references/session-management.md +169 -0
- package/lib/tools/cli-client/skill/references/storage-state.md +275 -0
- package/lib/tools/cli-client/skill/references/test-generation.md +88 -0
- package/lib/tools/cli-client/skill/references/tracing.md +139 -0
- package/lib/tools/cli-client/skill/references/video-recording.md +143 -0
- package/lib/tools/cli-daemon/command.js +73 -0
- package/lib/tools/cli-daemon/commands.js +956 -0
- package/lib/tools/cli-daemon/daemon.js +157 -0
- package/lib/tools/cli-daemon/helpGenerator.js +177 -0
- package/lib/tools/cli-daemon/program.js +129 -0
- package/lib/tools/dashboard/appIcon.png +0 -0
- package/lib/tools/dashboard/dashboardApp.js +284 -0
- package/lib/tools/dashboard/dashboardController.js +296 -0
- package/lib/tools/exports.js +60 -0
- package/lib/tools/mcp/browserFactory.js +233 -0
- package/lib/tools/mcp/cdpRelay.js +352 -0
- package/lib/tools/mcp/cli-stub.js +7 -0
- package/lib/tools/mcp/config.d.js +16 -0
- package/lib/tools/mcp/config.js +446 -0
- package/lib/tools/mcp/configIni.js +189 -0
- package/lib/tools/mcp/extensionContextFactory.js +55 -0
- package/lib/tools/mcp/index.js +62 -0
- package/lib/tools/mcp/log.js +35 -0
- package/lib/tools/mcp/program.js +107 -0
- package/lib/tools/mcp/protocol.js +28 -0
- package/lib/tools/mcp/watchdog.js +44 -0
- package/lib/tools/trace/SKILL.md +171 -0
- package/lib/tools/trace/installSkill.js +48 -0
- package/lib/tools/trace/traceActions.js +142 -0
- package/lib/tools/trace/traceAttachments.js +69 -0
- package/lib/tools/trace/traceCli.js +87 -0
- package/lib/tools/trace/traceConsole.js +97 -0
- package/lib/tools/trace/traceErrors.js +55 -0
- package/lib/tools/trace/traceOpen.js +69 -0
- package/lib/tools/trace/traceParser.js +96 -0
- package/lib/tools/trace/traceRequests.js +182 -0
- package/lib/tools/trace/traceScreenshot.js +68 -0
- package/lib/tools/trace/traceSnapshot.js +149 -0
- package/lib/tools/trace/traceUtils.js +153 -0
- package/lib/tools/utils/connect.js +32 -0
- package/lib/tools/utils/mcp/http.js +152 -0
- package/lib/tools/utils/mcp/server.js +230 -0
- package/lib/tools/utils/mcp/tool.js +47 -0
- package/lib/tools/utils/socketConnection.js +108 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +60 -2
- package/lib/utils/isomorphic/formatUtils.js +64 -0
- package/lib/utils/isomorphic/jsonSchema.js +89 -0
- package/lib/utils/isomorphic/lruCache.js +51 -0
- package/lib/utils/isomorphic/mimeType.js +7 -2
- package/lib/utils/isomorphic/protocolFormatter.js +2 -2
- package/lib/utils/isomorphic/protocolMetainfo.js +127 -98
- package/lib/utils/isomorphic/stringUtils.js +49 -0
- package/lib/utils/isomorphic/timeoutRunner.js +3 -3
- package/lib/utils/isomorphic/trace/entries.js +16 -0
- package/lib/utils/isomorphic/trace/snapshotRenderer.js +492 -0
- package/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
- package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
- package/lib/utils/isomorphic/trace/traceLoader.js +132 -0
- package/lib/utils/isomorphic/trace/traceModel.js +366 -0
- package/lib/utils/isomorphic/trace/traceModernizer.js +401 -0
- package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +54 -1
- package/lib/utils/isomorphic/utilityScriptSerializers.js +11 -0
- package/lib/utils/isomorphic/yaml.js +84 -0
- package/lib/utils.js +8 -2
- package/lib/utilsBundle.js +5 -26
- package/lib/utilsBundleImpl/index.js +172 -173
- package/lib/vite/dashboard/assets/index-BAOybkp8.js +50 -0
- package/lib/vite/dashboard/assets/index-CZAYOG76.css +1 -0
- package/lib/vite/dashboard/index.html +28 -0
- package/lib/vite/htmlReport/index.html +2 -70
- package/lib/vite/htmlReport/report.css +1 -0
- package/lib/vite/htmlReport/report.js +72 -0
- package/lib/vite/recorder/assets/codeMirrorModule-C8KMvO9L.js +32 -0
- package/lib/vite/recorder/assets/{codeMirrorModule-C3UTv-Ge.css → codeMirrorModule-DYBRYzYX.css} +1 -1
- package/lib/vite/recorder/assets/{index-Ri0uHF7I.css → index-BSjZa4pk.css} +1 -1
- package/lib/vite/recorder/assets/index-CqAYX1I3.js +193 -0
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DS0FLvoc.js +32 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-GTWI-W_B.js +262 -0
- package/lib/vite/traceViewer/{codeMirrorModule.C3UTv-Ge.css → codeMirrorModule.DYBRYzYX.css} +1 -1
- package/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
- package/lib/vite/traceViewer/index.CzXZzn5A.css +1 -0
- package/lib/vite/traceViewer/index.Dtstcb7U.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -4
- package/lib/vite/traceViewer/sw.bundle.js +5 -3
- package/lib/vite/traceViewer/uiMode.Vipi55dB.js +6 -0
- package/lib/vite/traceViewer/uiMode.html +3 -3
- package/lib/zipBundleImpl.js +2 -2
- package/lib/zodBundle.js +39 -0
- package/lib/zodBundleImpl.js +40 -0
- package/package.json +7 -1
- package/types/protocol.d.ts +1696 -221
- package/types/types.d.ts +879 -112
- package/lib/server/bidi/third_party/bidiDeserializer.js +0 -98
- package/lib/server/chromium/videoRecorder.js +0 -115
- package/lib/server/pageBinding.js +0 -87
- package/lib/server/trace/test/inMemorySnapshotter.js +0 -87
- package/lib/utils/isomorphic/oldUtilityScriptSerializers.js +0 -248
- package/lib/vite/recorder/assets/codeMirrorModule-CBbSe-ZI.js +0 -25
- package/lib/vite/recorder/assets/index-CpZVd2nA.js +0 -193
- package/lib/vite/traceViewer/assets/codeMirrorModule-DHz0wP2C.js +0 -25
- package/lib/vite/traceViewer/assets/defaultSettingsView-WsZP88O6.js +0 -266
- package/lib/vite/traceViewer/defaultSettingsView.ConWv5KN.css +0 -1
- package/lib/vite/traceViewer/index.C4Y3Aw8n.css +0 -1
- package/lib/vite/traceViewer/index.C8xAeo93.js +0 -2
- package/lib/vite/traceViewer/uiMode.BltraIJB.js +0 -5
- /package/lib/{server/utils → utils/isomorphic}/imageUtils.js +0 -0
- /package/lib/utils/isomorphic/{traceUtils.js → trace/traceUtils.js} +0 -0
|
@@ -1,98 +0,0 @@
|
|
|
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 bidiDeserializer_exports = {};
|
|
20
|
-
__export(bidiDeserializer_exports, {
|
|
21
|
-
BidiDeserializer: () => BidiDeserializer
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(bidiDeserializer_exports);
|
|
24
|
-
/**
|
|
25
|
-
* @license
|
|
26
|
-
* Copyright 2024 Google Inc.
|
|
27
|
-
* Modifications copyright (c) Microsoft Corporation.
|
|
28
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
-
*/
|
|
30
|
-
class BidiDeserializer {
|
|
31
|
-
static deserialize(result) {
|
|
32
|
-
if (!result)
|
|
33
|
-
return void 0;
|
|
34
|
-
switch (result.type) {
|
|
35
|
-
case "array":
|
|
36
|
-
return result.value?.map((value) => {
|
|
37
|
-
return BidiDeserializer.deserialize(value);
|
|
38
|
-
});
|
|
39
|
-
case "set":
|
|
40
|
-
return result.value?.reduce((acc, value) => {
|
|
41
|
-
return acc.add(BidiDeserializer.deserialize(value));
|
|
42
|
-
}, /* @__PURE__ */ new Set());
|
|
43
|
-
case "object":
|
|
44
|
-
return result.value?.reduce((acc, tuple) => {
|
|
45
|
-
const { key, value } = BidiDeserializer._deserializeTuple(tuple);
|
|
46
|
-
acc[key] = value;
|
|
47
|
-
return acc;
|
|
48
|
-
}, {});
|
|
49
|
-
case "map":
|
|
50
|
-
return result.value?.reduce((acc, tuple) => {
|
|
51
|
-
const { key, value } = BidiDeserializer._deserializeTuple(tuple);
|
|
52
|
-
return acc.set(key, value);
|
|
53
|
-
}, /* @__PURE__ */ new Map());
|
|
54
|
-
case "promise":
|
|
55
|
-
return {};
|
|
56
|
-
case "regexp":
|
|
57
|
-
return new RegExp(result.value.pattern, result.value.flags);
|
|
58
|
-
case "date":
|
|
59
|
-
return new Date(result.value);
|
|
60
|
-
case "undefined":
|
|
61
|
-
return void 0;
|
|
62
|
-
case "null":
|
|
63
|
-
return null;
|
|
64
|
-
case "number":
|
|
65
|
-
return BidiDeserializer._deserializeNumber(result.value);
|
|
66
|
-
case "bigint":
|
|
67
|
-
return BigInt(result.value);
|
|
68
|
-
case "boolean":
|
|
69
|
-
return Boolean(result.value);
|
|
70
|
-
case "string":
|
|
71
|
-
return result.value;
|
|
72
|
-
}
|
|
73
|
-
throw new Error(`Deserialization of type ${result.type} not supported.`);
|
|
74
|
-
}
|
|
75
|
-
static _deserializeNumber(value) {
|
|
76
|
-
switch (value) {
|
|
77
|
-
case "-0":
|
|
78
|
-
return -0;
|
|
79
|
-
case "NaN":
|
|
80
|
-
return NaN;
|
|
81
|
-
case "Infinity":
|
|
82
|
-
return Infinity;
|
|
83
|
-
case "-Infinity":
|
|
84
|
-
return -Infinity;
|
|
85
|
-
default:
|
|
86
|
-
return value;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
static _deserializeTuple([serializedKey, serializedValue]) {
|
|
90
|
-
const key = typeof serializedKey === "string" ? serializedKey : BidiDeserializer.deserialize(serializedKey);
|
|
91
|
-
const value = BidiDeserializer.deserialize(serializedValue);
|
|
92
|
-
return { key, value };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
96
|
-
0 && (module.exports = {
|
|
97
|
-
BidiDeserializer
|
|
98
|
-
});
|
|
@@ -1,115 +0,0 @@
|
|
|
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._firstFrameTimestamp = 0;
|
|
34
|
-
this._lastFrame = null;
|
|
35
|
-
this._lastWriteNodeTime = 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._firstFrameTimestamp)
|
|
81
|
-
this._firstFrameTimestamp = timestamp;
|
|
82
|
-
const frameNumber = Math.floor((timestamp - this._firstFrameTimestamp) * fps);
|
|
83
|
-
if (this._lastFrame) {
|
|
84
|
-
const repeatCount = frameNumber - this._lastFrame.frameNumber;
|
|
85
|
-
for (let i = 0; i < repeatCount; ++i)
|
|
86
|
-
this._frameQueue.push(this._lastFrame.buffer);
|
|
87
|
-
this._lastWritePromise = this._lastWritePromise.then(() => this._sendFrames());
|
|
88
|
-
}
|
|
89
|
-
this._lastFrame = { buffer: frame, timestamp, frameNumber };
|
|
90
|
-
this._lastWriteNodeTime = (0, import_utils.monotonicTime)();
|
|
91
|
-
}
|
|
92
|
-
async _sendFrames() {
|
|
93
|
-
while (this._frameQueue.length)
|
|
94
|
-
await this._sendFrame(this._frameQueue.shift());
|
|
95
|
-
}
|
|
96
|
-
async _sendFrame(frame) {
|
|
97
|
-
return new Promise((f) => this._process.stdin.write(frame, f)).then((error) => {
|
|
98
|
-
if (error)
|
|
99
|
-
import_utils.debugLogger.log("browser", `ffmpeg failed to write: ${String(error)}`);
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
async stop() {
|
|
103
|
-
if (this._isStopped || !this._lastFrame)
|
|
104
|
-
return;
|
|
105
|
-
const addTime = Math.max(((0, import_utils.monotonicTime)() - this._lastWriteNodeTime) / 1e3, 1);
|
|
106
|
-
this.writeFrame(Buffer.from([]), this._lastFrame.timestamp + addTime);
|
|
107
|
-
this._isStopped = true;
|
|
108
|
-
await this._lastWritePromise;
|
|
109
|
-
await this._gracefullyClose();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
113
|
-
0 && (module.exports = {
|
|
114
|
-
VideoRecorder
|
|
115
|
-
});
|
|
@@ -1,87 +0,0 @@
|
|
|
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 pageBinding_exports = {};
|
|
20
|
-
__export(pageBinding_exports, {
|
|
21
|
-
createPageBindingScript: () => createPageBindingScript,
|
|
22
|
-
deliverBindingResult: () => deliverBindingResult,
|
|
23
|
-
takeBindingHandle: () => takeBindingHandle
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(pageBinding_exports);
|
|
26
|
-
var import_oldUtilityScriptSerializers = require("../utils/isomorphic/oldUtilityScriptSerializers");
|
|
27
|
-
function addPageBinding(bindingName, needsHandle, utilityScriptSerializersFactory) {
|
|
28
|
-
const { serializeAsCallArgument } = utilityScriptSerializersFactory;
|
|
29
|
-
const binding = globalThis[bindingName];
|
|
30
|
-
if (!binding || binding.toString().startsWith("(...args) => {")) return;
|
|
31
|
-
globalThis[bindingName] = (...args) => {
|
|
32
|
-
const me = globalThis[bindingName];
|
|
33
|
-
if (needsHandle && args.slice(1).some((arg) => arg !== void 0))
|
|
34
|
-
throw new Error(`exposeBindingHandle supports a single argument, ${args.length} received`);
|
|
35
|
-
let callbacks = me["callbacks"];
|
|
36
|
-
if (!callbacks) {
|
|
37
|
-
callbacks = /* @__PURE__ */ new Map();
|
|
38
|
-
me["callbacks"] = callbacks;
|
|
39
|
-
}
|
|
40
|
-
const seq = (me["lastSeq"] || 0) + 1;
|
|
41
|
-
me["lastSeq"] = seq;
|
|
42
|
-
let handles = me["handles"];
|
|
43
|
-
if (!handles) {
|
|
44
|
-
handles = /* @__PURE__ */ new Map();
|
|
45
|
-
me["handles"] = handles;
|
|
46
|
-
}
|
|
47
|
-
const promise = new Promise((resolve, reject) => callbacks.set(seq, { resolve, reject }));
|
|
48
|
-
let payload;
|
|
49
|
-
if (needsHandle) {
|
|
50
|
-
handles.set(seq, args[0]);
|
|
51
|
-
payload = { name: bindingName, seq };
|
|
52
|
-
} else {
|
|
53
|
-
const serializedArgs = [];
|
|
54
|
-
for (let i = 0; i < args.length; i++) {
|
|
55
|
-
serializedArgs[i] = serializeAsCallArgument(args[i], (v) => {
|
|
56
|
-
return { fallThrough: v };
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
payload = { name: bindingName, seq, serializedArgs };
|
|
60
|
-
}
|
|
61
|
-
binding(JSON.stringify(payload));
|
|
62
|
-
return promise;
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
function takeBindingHandle(arg) {
|
|
66
|
-
const handles = globalThis[arg.name]["handles"];
|
|
67
|
-
const handle = handles.get(arg.seq);
|
|
68
|
-
handles.delete(arg.seq);
|
|
69
|
-
return handle;
|
|
70
|
-
}
|
|
71
|
-
function deliverBindingResult(arg) {
|
|
72
|
-
const callbacks = globalThis[arg.name]["callbacks"];
|
|
73
|
-
if ("error" in arg)
|
|
74
|
-
callbacks.get(arg.seq).reject(arg.error);
|
|
75
|
-
else
|
|
76
|
-
callbacks.get(arg.seq).resolve(arg.result);
|
|
77
|
-
callbacks.delete(arg.seq);
|
|
78
|
-
}
|
|
79
|
-
function createPageBindingScript(name, needsHandle) {
|
|
80
|
-
return `(${addPageBinding.toString()})(${JSON.stringify(name)}, ${needsHandle}, (${import_oldUtilityScriptSerializers.source})())`;
|
|
81
|
-
}
|
|
82
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
-
0 && (module.exports = {
|
|
84
|
-
createPageBindingScript,
|
|
85
|
-
deliverBindingResult,
|
|
86
|
-
takeBindingHandle
|
|
87
|
-
});
|
|
@@ -1,87 +0,0 @@
|
|
|
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 inMemorySnapshotter_exports = {};
|
|
20
|
-
__export(inMemorySnapshotter_exports, {
|
|
21
|
-
InMemorySnapshotter: () => InMemorySnapshotter
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(inMemorySnapshotter_exports);
|
|
24
|
-
var import_snapshotStorage = require("../../../../../trace-viewer/src/sw/snapshotStorage");
|
|
25
|
-
var import_utils = require("../../../utils");
|
|
26
|
-
var import_harTracer = require("../../har/harTracer");
|
|
27
|
-
var import_snapshotter = require("../recorder/snapshotter");
|
|
28
|
-
class InMemorySnapshotter {
|
|
29
|
-
constructor(context) {
|
|
30
|
-
this._blobs = /* @__PURE__ */ new Map();
|
|
31
|
-
this._snapshotReadyPromises = /* @__PURE__ */ new Map();
|
|
32
|
-
this._snapshotCount = 0;
|
|
33
|
-
this._snapshotter = new import_snapshotter.Snapshotter(context, this);
|
|
34
|
-
this._harTracer = new import_harTracer.HarTracer(context, null, this, { content: "attach", includeTraceInfo: true, recordRequestOverrides: false, waitForContentOnStop: false });
|
|
35
|
-
this._storage = new import_snapshotStorage.SnapshotStorage();
|
|
36
|
-
}
|
|
37
|
-
async initialize() {
|
|
38
|
-
await this._snapshotter.start();
|
|
39
|
-
this._harTracer.start({ omitScripts: true });
|
|
40
|
-
}
|
|
41
|
-
async reset() {
|
|
42
|
-
await this._snapshotter.reset();
|
|
43
|
-
await this._harTracer.flush();
|
|
44
|
-
this._harTracer.stop();
|
|
45
|
-
this._harTracer.start({ omitScripts: true });
|
|
46
|
-
}
|
|
47
|
-
async dispose() {
|
|
48
|
-
this._snapshotter.dispose();
|
|
49
|
-
await this._harTracer.flush();
|
|
50
|
-
this._harTracer.stop();
|
|
51
|
-
}
|
|
52
|
-
async captureSnapshot(page, callId, snapshotName) {
|
|
53
|
-
if (this._snapshotReadyPromises.has(snapshotName))
|
|
54
|
-
throw new Error("Duplicate snapshot name: " + snapshotName);
|
|
55
|
-
this._snapshotter.captureSnapshot(page, callId, snapshotName).catch(() => {
|
|
56
|
-
});
|
|
57
|
-
const promise = new import_utils.ManualPromise();
|
|
58
|
-
this._snapshotReadyPromises.set(snapshotName, promise);
|
|
59
|
-
return promise;
|
|
60
|
-
}
|
|
61
|
-
onEntryStarted(entry) {
|
|
62
|
-
}
|
|
63
|
-
onEntryFinished(entry) {
|
|
64
|
-
this._storage.addResource("", entry);
|
|
65
|
-
}
|
|
66
|
-
onContentBlob(sha1, buffer) {
|
|
67
|
-
this._blobs.set(sha1, buffer);
|
|
68
|
-
}
|
|
69
|
-
onSnapshotterBlob(blob) {
|
|
70
|
-
this._blobs.set(blob.sha1, blob.buffer);
|
|
71
|
-
}
|
|
72
|
-
onFrameSnapshot(snapshot) {
|
|
73
|
-
++this._snapshotCount;
|
|
74
|
-
const renderer = this._storage.addFrameSnapshot("", snapshot, []);
|
|
75
|
-
this._snapshotReadyPromises.get(snapshot.snapshotName || "")?.resolve(renderer);
|
|
76
|
-
}
|
|
77
|
-
async resourceContentForTest(sha1) {
|
|
78
|
-
return this._blobs.get(sha1);
|
|
79
|
-
}
|
|
80
|
-
snapshotCount() {
|
|
81
|
-
return this._snapshotCount;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
85
|
-
0 && (module.exports = {
|
|
86
|
-
InMemorySnapshotter
|
|
87
|
-
});
|
|
@@ -1,248 +0,0 @@
|
|
|
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 oldUtilityScriptSerializers_exports = {};
|
|
20
|
-
__export(oldUtilityScriptSerializers_exports, {
|
|
21
|
-
source: () => source
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(oldUtilityScriptSerializers_exports);
|
|
24
|
-
function source() {
|
|
25
|
-
function isRegExp(obj) {
|
|
26
|
-
try {
|
|
27
|
-
return obj instanceof RegExp || Object.prototype.toString.call(obj) === "[object RegExp]";
|
|
28
|
-
} catch (error) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
function isDate(obj) {
|
|
33
|
-
try {
|
|
34
|
-
return obj instanceof Date || Object.prototype.toString.call(obj) === "[object Date]";
|
|
35
|
-
} catch (error) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function isURL(obj) {
|
|
40
|
-
try {
|
|
41
|
-
return obj instanceof URL || Object.prototype.toString.call(obj) === "[object URL]";
|
|
42
|
-
} catch (error) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
function isError(obj) {
|
|
47
|
-
try {
|
|
48
|
-
return obj instanceof Error || obj && Object.getPrototypeOf(obj)?.name === "Error";
|
|
49
|
-
} catch (error) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function isTypedArray(obj, constructor) {
|
|
54
|
-
try {
|
|
55
|
-
return obj instanceof constructor || Object.prototype.toString.call(obj) === `[object ${constructor.name}]`;
|
|
56
|
-
} catch (error) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const typedArrayConstructors = {
|
|
61
|
-
i8: Int8Array,
|
|
62
|
-
ui8: Uint8Array,
|
|
63
|
-
ui8c: Uint8ClampedArray,
|
|
64
|
-
i16: Int16Array,
|
|
65
|
-
ui16: Uint16Array,
|
|
66
|
-
i32: Int32Array,
|
|
67
|
-
ui32: Uint32Array,
|
|
68
|
-
// TODO: add Float16Array once it's in baseline
|
|
69
|
-
f32: Float32Array,
|
|
70
|
-
f64: Float64Array,
|
|
71
|
-
bi64: BigInt64Array,
|
|
72
|
-
bui64: BigUint64Array
|
|
73
|
-
};
|
|
74
|
-
function typedArrayToBase64(array) {
|
|
75
|
-
if ("toBase64" in array)
|
|
76
|
-
return array.toBase64();
|
|
77
|
-
const binary = Array.from(new Uint8Array(array.buffer, array.byteOffset, array.byteLength)).map((b) => String.fromCharCode(b)).join("");
|
|
78
|
-
return btoa(binary);
|
|
79
|
-
}
|
|
80
|
-
function base64ToTypedArray(base64, TypedArrayConstructor) {
|
|
81
|
-
const binary = atob(base64);
|
|
82
|
-
const bytes = new Uint8Array(binary.length);
|
|
83
|
-
for (let i = 0; i < binary.length; i++)
|
|
84
|
-
bytes[i] = binary.charCodeAt(i);
|
|
85
|
-
return new TypedArrayConstructor(bytes.buffer);
|
|
86
|
-
}
|
|
87
|
-
function parseEvaluationResultValue(value, handles = [], refs = /* @__PURE__ */ new Map()) {
|
|
88
|
-
if (Object.is(value, void 0))
|
|
89
|
-
return void 0;
|
|
90
|
-
if (typeof value === "object" && value) {
|
|
91
|
-
if ("ref" in value)
|
|
92
|
-
return refs.get(value.ref);
|
|
93
|
-
if ("v" in value) {
|
|
94
|
-
if (value.v === "undefined")
|
|
95
|
-
return void 0;
|
|
96
|
-
if (value.v === "null")
|
|
97
|
-
return null;
|
|
98
|
-
if (value.v === "NaN")
|
|
99
|
-
return NaN;
|
|
100
|
-
if (value.v === "Infinity")
|
|
101
|
-
return Infinity;
|
|
102
|
-
if (value.v === "-Infinity")
|
|
103
|
-
return -Infinity;
|
|
104
|
-
if (value.v === "-0")
|
|
105
|
-
return -0;
|
|
106
|
-
return void 0;
|
|
107
|
-
}
|
|
108
|
-
if ("d" in value)
|
|
109
|
-
return new Date(value.d);
|
|
110
|
-
if ("u" in value)
|
|
111
|
-
return new URL(value.u);
|
|
112
|
-
if ("bi" in value)
|
|
113
|
-
return BigInt(value.bi);
|
|
114
|
-
if ("e" in value) {
|
|
115
|
-
const error = new Error(value.e.m);
|
|
116
|
-
error.name = value.e.n;
|
|
117
|
-
error.stack = value.e.s;
|
|
118
|
-
return error;
|
|
119
|
-
}
|
|
120
|
-
if ("r" in value)
|
|
121
|
-
return new RegExp(value.r.p, value.r.f);
|
|
122
|
-
if ("a" in value) {
|
|
123
|
-
const result = [];
|
|
124
|
-
refs.set(value.id, result);
|
|
125
|
-
for (const a of value.a)
|
|
126
|
-
result.push(parseEvaluationResultValue(a, handles, refs));
|
|
127
|
-
return result;
|
|
128
|
-
}
|
|
129
|
-
if ("o" in value) {
|
|
130
|
-
const result = {};
|
|
131
|
-
refs.set(value.id, result);
|
|
132
|
-
for (const { k, v } of value.o)
|
|
133
|
-
result[k] = parseEvaluationResultValue(v, handles, refs);
|
|
134
|
-
return result;
|
|
135
|
-
}
|
|
136
|
-
if ("h" in value)
|
|
137
|
-
return handles[value.h];
|
|
138
|
-
if ("ta" in value)
|
|
139
|
-
return base64ToTypedArray(value.ta.b, typedArrayConstructors[value.ta.k]);
|
|
140
|
-
}
|
|
141
|
-
return value;
|
|
142
|
-
}
|
|
143
|
-
function serializeAsCallArgument(value, handleSerializer) {
|
|
144
|
-
return serialize(value, handleSerializer, { visited: /* @__PURE__ */ new Map(), lastId: 0 });
|
|
145
|
-
}
|
|
146
|
-
function serialize(value, handleSerializer, visitorInfo) {
|
|
147
|
-
if (value && typeof value === "object") {
|
|
148
|
-
if (typeof globalThis.Window === "function" && value instanceof globalThis.Window)
|
|
149
|
-
return "ref: <Window>";
|
|
150
|
-
if (typeof globalThis.Document === "function" && value instanceof globalThis.Document)
|
|
151
|
-
return "ref: <Document>";
|
|
152
|
-
if (typeof globalThis.Node === "function" && value instanceof globalThis.Node)
|
|
153
|
-
return "ref: <Node>";
|
|
154
|
-
}
|
|
155
|
-
return innerSerialize(value, handleSerializer, visitorInfo);
|
|
156
|
-
}
|
|
157
|
-
function innerSerialize(value, handleSerializer, visitorInfo) {
|
|
158
|
-
const result = handleSerializer(value);
|
|
159
|
-
if ("fallThrough" in result)
|
|
160
|
-
value = result.fallThrough;
|
|
161
|
-
else
|
|
162
|
-
return result;
|
|
163
|
-
if (typeof value === "symbol")
|
|
164
|
-
return { v: "undefined" };
|
|
165
|
-
if (Object.is(value, void 0))
|
|
166
|
-
return { v: "undefined" };
|
|
167
|
-
if (Object.is(value, null))
|
|
168
|
-
return { v: "null" };
|
|
169
|
-
if (Object.is(value, NaN))
|
|
170
|
-
return { v: "NaN" };
|
|
171
|
-
if (Object.is(value, Infinity))
|
|
172
|
-
return { v: "Infinity" };
|
|
173
|
-
if (Object.is(value, -Infinity))
|
|
174
|
-
return { v: "-Infinity" };
|
|
175
|
-
if (Object.is(value, -0))
|
|
176
|
-
return { v: "-0" };
|
|
177
|
-
if (typeof value === "boolean")
|
|
178
|
-
return value;
|
|
179
|
-
if (typeof value === "number")
|
|
180
|
-
return value;
|
|
181
|
-
if (typeof value === "string")
|
|
182
|
-
return value;
|
|
183
|
-
if (typeof value === "bigint")
|
|
184
|
-
return { bi: value.toString() };
|
|
185
|
-
if (isError(value)) {
|
|
186
|
-
let stack;
|
|
187
|
-
if (value.stack?.startsWith(value.name + ": " + value.message)) {
|
|
188
|
-
stack = value.stack;
|
|
189
|
-
} else {
|
|
190
|
-
stack = `${value.name}: ${value.message}
|
|
191
|
-
${value.stack}`;
|
|
192
|
-
}
|
|
193
|
-
return { e: { n: value.name, m: value.message, s: stack } };
|
|
194
|
-
}
|
|
195
|
-
if (isDate(value))
|
|
196
|
-
return { d: value.toJSON() };
|
|
197
|
-
if (isURL(value))
|
|
198
|
-
return { u: value.toJSON() };
|
|
199
|
-
if (isRegExp(value))
|
|
200
|
-
return { r: { p: value.source, f: value.flags } };
|
|
201
|
-
for (const [k, ctor] of Object.entries(typedArrayConstructors)) {
|
|
202
|
-
if (isTypedArray(value, ctor))
|
|
203
|
-
return { ta: { b: typedArrayToBase64(value), k } };
|
|
204
|
-
}
|
|
205
|
-
const id = visitorInfo.visited.get(value);
|
|
206
|
-
if (id)
|
|
207
|
-
return { ref: id };
|
|
208
|
-
if (Array.isArray(value)) {
|
|
209
|
-
const a = [];
|
|
210
|
-
const id2 = ++visitorInfo.lastId;
|
|
211
|
-
visitorInfo.visited.set(value, id2);
|
|
212
|
-
for (let i = 0; i < value.length; ++i)
|
|
213
|
-
a.push(serialize(value[i], handleSerializer, visitorInfo));
|
|
214
|
-
return { a, id: id2 };
|
|
215
|
-
}
|
|
216
|
-
if (typeof value === "object") {
|
|
217
|
-
const o = [];
|
|
218
|
-
const id2 = ++visitorInfo.lastId;
|
|
219
|
-
visitorInfo.visited.set(value, id2);
|
|
220
|
-
for (const name of Object.keys(value)) {
|
|
221
|
-
let item;
|
|
222
|
-
try {
|
|
223
|
-
item = value[name];
|
|
224
|
-
} catch (e) {
|
|
225
|
-
continue;
|
|
226
|
-
}
|
|
227
|
-
if (name === "toJSON" && typeof item === "function")
|
|
228
|
-
o.push({ k: name, v: { o: [], id: 0 } });
|
|
229
|
-
else
|
|
230
|
-
o.push({ k: name, v: serialize(item, handleSerializer, visitorInfo) });
|
|
231
|
-
}
|
|
232
|
-
let jsonWrapper;
|
|
233
|
-
try {
|
|
234
|
-
if (o.length === 0 && value.toJSON && typeof value.toJSON === "function")
|
|
235
|
-
jsonWrapper = { value: value.toJSON() };
|
|
236
|
-
} catch (e) {
|
|
237
|
-
}
|
|
238
|
-
if (jsonWrapper)
|
|
239
|
-
return innerSerialize(jsonWrapper.value, handleSerializer, visitorInfo);
|
|
240
|
-
return { o, id: id2 };
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return { parseEvaluationResultValue, serializeAsCallArgument };
|
|
244
|
-
}
|
|
245
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
246
|
-
0 && (module.exports = {
|
|
247
|
-
source
|
|
248
|
-
});
|