patchright-core 1.52.5 → 1.55.1
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 +65 -123
- package/bin/reinstall_chrome_beta_mac.sh +1 -1
- package/bin/reinstall_chrome_stable_mac.sh +1 -1
- package/bin/reinstall_msedge_beta_mac.sh +1 -1
- package/bin/reinstall_msedge_dev_mac.sh +1 -1
- package/bin/reinstall_msedge_stable_mac.sh +1 -1
- package/browsers.json +14 -14
- package/index.js +1 -1
- package/lib/androidServerImpl.js +4 -2
- package/lib/browserServerImpl.js +47 -12
- package/lib/cli/program.js +116 -50
- package/lib/cli/programWithTestStub.js +1 -1
- package/lib/client/android.js +30 -34
- package/lib/client/browser.js +54 -17
- package/lib/client/browserContext.js +67 -71
- package/lib/client/browserType.js +25 -34
- package/lib/client/channelOwner.js +20 -24
- package/lib/client/connection.js +6 -10
- package/lib/client/electron.js +8 -3
- package/lib/client/elementHandle.js +18 -21
- package/lib/client/fetch.js +5 -3
- package/lib/client/frame.js +54 -32
- package/lib/client/input.js +3 -1
- package/lib/client/jsHandle.js +4 -0
- package/lib/client/localUtils.js +0 -1
- package/lib/client/locator.js +30 -26
- package/lib/client/network.js +5 -12
- package/lib/client/page.js +32 -32
- package/lib/client/playwright.js +6 -16
- package/lib/client/selectors.js +18 -38
- package/lib/client/timeoutSettings.js +12 -8
- package/lib/client/tracing.js +24 -20
- package/lib/client/waiter.js +2 -2
- package/lib/client/webSocket.js +4 -22
- package/lib/generated/bindingsControllerSource.js +28 -0
- 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 +28 -0
- package/lib/generated/utilityScriptSource.js +1 -1
- package/lib/generated/webSocketMockSource.js +12 -50
- package/lib/inProcessFactory.js +9 -6
- package/lib/outofprocess.js +0 -2
- package/lib/protocol/validator.js +421 -345
- package/lib/protocol/validatorPrimitives.js +18 -4
- package/lib/remote/playwrightConnection.js +29 -166
- package/lib/remote/playwrightServer.js +233 -35
- package/lib/server/android/android.js +97 -83
- package/lib/server/android/backendAdb.js +0 -2
- package/lib/server/bidi/bidiBrowser.js +139 -73
- package/lib/server/bidi/bidiChromium.js +23 -22
- package/lib/server/bidi/bidiExecutionContext.js +2 -1
- package/lib/server/bidi/bidiFirefox.js +17 -14
- package/lib/server/bidi/bidiInput.js +22 -22
- package/lib/server/bidi/bidiNetworkManager.js +8 -11
- package/lib/server/bidi/bidiPage.js +42 -86
- package/lib/server/bidi/third_party/bidiProtocol.js +5 -133
- package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
- package/lib/server/{dispatchers/selectorsDispatcher.js → bidi/third_party/bidiProtocolPermissions.js} +20 -18
- package/lib/server/browser.js +30 -21
- package/lib/server/browserContext.js +203 -165
- package/lib/server/browserType.js +109 -107
- package/lib/server/chromium/chromium.js +84 -69
- package/lib/server/chromium/chromiumSwitches.js +13 -20
- package/lib/server/chromium/crBrowser.js +74 -40
- package/lib/server/chromium/crConnection.js +8 -9
- package/lib/server/chromium/crCoverage.js +11 -8
- package/lib/server/chromium/crDragDrop.js +25 -20
- package/lib/server/chromium/crExecutionContext.js +2 -1
- package/lib/server/chromium/crInput.js +32 -29
- package/lib/server/chromium/crNetworkManager.js +43 -31
- package/lib/server/chromium/crPage.js +98 -72
- package/lib/server/chromium/crServiceWorker.js +13 -18
- package/lib/server/chromium/videoRecorder.js +10 -18
- package/lib/server/clock.js +51 -39
- package/lib/server/codegen/csharp.js +10 -5
- package/lib/server/codegen/java.js +1 -1
- package/lib/server/codegen/javascript.js +1 -1
- package/lib/server/codegen/jsonl.js +2 -1
- package/lib/server/codegen/language.js +22 -1
- package/lib/server/codegen/languages.js +4 -4
- package/lib/server/codegen/python.js +1 -1
- package/lib/server/cookieStore.js +3 -1
- package/lib/server/debugController.js +105 -71
- package/lib/server/debugger.js +6 -23
- package/lib/server/deviceDescriptorsSource.json +237 -127
- package/lib/server/dialog.js +50 -6
- package/lib/server/dispatchers/androidDispatcher.js +77 -62
- package/lib/server/dispatchers/artifactDispatcher.js +18 -18
- package/lib/server/dispatchers/browserContextDispatcher.js +141 -91
- package/lib/server/dispatchers/browserDispatcher.js +55 -88
- package/lib/server/dispatchers/browserTypeDispatcher.js +18 -9
- package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -4
- package/lib/server/dispatchers/debugControllerDispatcher.js +12 -21
- package/lib/server/dispatchers/dialogDispatcher.js +4 -4
- package/lib/server/dispatchers/dispatcher.js +78 -53
- package/lib/server/dispatchers/electronDispatcher.js +19 -20
- package/lib/server/dispatchers/elementHandlerDispatcher.js +83 -93
- package/lib/server/dispatchers/frameDispatcher.js +98 -101
- package/lib/server/dispatchers/jsHandleDispatcher.js +21 -16
- package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -4
- package/lib/server/dispatchers/localUtilsDispatcher.js +53 -59
- package/lib/server/dispatchers/networkDispatchers.js +41 -35
- package/lib/server/dispatchers/pageDispatcher.js +156 -107
- package/lib/server/dispatchers/playwrightDispatcher.js +37 -25
- package/lib/server/dispatchers/streamDispatcher.js +15 -8
- package/lib/server/dispatchers/tracingDispatcher.js +22 -13
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +46 -35
- package/lib/server/dispatchers/writableStreamDispatcher.js +16 -10
- package/lib/server/dom.js +198 -266
- package/lib/server/download.js +3 -3
- package/lib/server/electron/electron.js +96 -103
- package/lib/server/electron/loader.js +1 -1
- package/lib/server/fetch.js +22 -41
- package/lib/server/fileUploadUtils.js +1 -1
- package/lib/server/firefox/ffBrowser.js +79 -55
- package/lib/server/firefox/ffExecutionContext.js +2 -1
- package/lib/server/firefox/ffInput.js +23 -23
- package/lib/server/firefox/ffNetworkManager.js +8 -6
- package/lib/server/firefox/ffPage.js +39 -36
- package/lib/server/firefox/firefox.js +9 -10
- package/lib/server/frameSelectors.js +63 -20
- package/lib/server/frames.js +495 -555
- package/lib/server/har/harRecorder.js +1 -1
- package/lib/server/har/harTracer.js +4 -2
- package/lib/server/helper.js +3 -7
- package/lib/server/index.js +0 -3
- package/lib/server/input.js +47 -54
- package/lib/server/instrumentation.js +8 -14
- package/lib/server/javascript.js +8 -16
- package/lib/server/launchApp.js +48 -30
- package/lib/server/localUtils.js +45 -38
- package/lib/server/network.js +44 -10
- package/lib/server/page.js +232 -177
- package/lib/server/pageBinding.js +6 -7
- package/lib/server/playwright.js +4 -14
- package/lib/server/progress.js +57 -49
- package/lib/server/recorder/recorderApp.js +298 -95
- package/lib/server/recorder/recorderRunner.js +23 -24
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +67 -10
- package/lib/server/recorder.js +284 -146
- package/lib/server/registry/index.js +83 -48
- package/lib/server/registry/nativeDeps.js +175 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +1 -1
- package/lib/server/screenshotter.js +84 -83
- package/lib/server/selectors.js +12 -12
- package/lib/server/socksClientCertificatesInterceptor.js +198 -136
- package/lib/server/trace/recorder/snapshotter.js +12 -19
- package/lib/server/trace/recorder/tracing.js +36 -27
- package/lib/server/trace/viewer/traceViewer.js +11 -20
- package/lib/server/transport.js +20 -22
- package/lib/server/utils/comparators.js +2 -2
- package/lib/server/utils/debug.js +3 -8
- package/lib/server/utils/debugLogger.js +8 -0
- package/lib/server/utils/hostPlatform.js +3 -1
- package/lib/server/utils/network.js +35 -25
- package/lib/server/utils/nodePlatform.js +1 -1
- package/lib/server/utils/processLauncher.js +4 -1
- package/lib/server/utils/wsServer.js +11 -17
- package/lib/server/webkit/webkit.js +5 -2
- package/lib/server/webkit/wkBrowser.js +51 -28
- package/lib/server/webkit/wkExecutionContext.js +2 -1
- package/lib/server/webkit/wkInput.js +25 -25
- package/lib/server/webkit/wkInterceptableRequest.js +1 -1
- package/lib/server/webkit/wkPage.js +80 -59
- package/lib/server/webkit/wkProvisionalPage.js +1 -1
- package/lib/server/webkit/wkWorkers.js +7 -7
- package/lib/utils/isomorphic/ariaSnapshot.js +13 -7
- package/lib/utils/isomorphic/cssParser.js +1 -2
- package/lib/utils/isomorphic/locatorGenerators.js +18 -0
- package/lib/utils/isomorphic/manualPromise.js +1 -2
- package/lib/utils/isomorphic/mimeType.js +1 -2
- package/lib/utils/isomorphic/multimap.js +1 -2
- package/lib/utils/isomorphic/oldUtilityScriptSerializers.js +248 -0
- package/lib/utils/isomorphic/protocolFormatter.js +78 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +318 -0
- package/lib/utils/isomorphic/selectorParser.js +3 -4
- package/lib/utils/isomorphic/stringUtils.js +3 -24
- package/lib/utils/isomorphic/time.js +9 -4
- package/lib/utils/isomorphic/timeoutRunner.js +3 -4
- package/lib/utils/isomorphic/traceUtils.js +2 -3
- package/lib/utils/isomorphic/urlMatch.js +21 -7
- package/lib/utils/isomorphic/utilityScriptSerializers.js +208 -205
- package/lib/utils.js +8 -2
- package/lib/utilsBundleImpl/index.js +160 -150
- package/lib/vite/htmlReport/index.html +17 -17
- package/lib/vite/recorder/assets/{codeMirrorModule-CXVeovup.js → codeMirrorModule-DzQ0k89p.js} +1 -1
- package/lib/vite/recorder/assets/{index-eHBmevrY.css → index-CI4HQ-Zb.css} +1 -1
- package/lib/vite/recorder/assets/index-D7C7daHH.js +184 -0
- package/lib/vite/recorder/index.html +3 -3
- package/lib/vite/traceViewer/assets/{codeMirrorModule-_GLjJL-7.js → codeMirrorModule-Di48jgWx.js} +1 -1
- package/lib/vite/traceViewer/assets/defaultSettingsView-szBn8781.js +256 -0
- package/lib/vite/traceViewer/defaultSettingsView.DVJHpiGt.css +1 -0
- package/lib/vite/traceViewer/index.BFsek2M6.css +1 -0
- package/lib/vite/traceViewer/index.DQvXoPLL.js +2 -0
- package/lib/vite/traceViewer/index.html +6 -6
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.dBV3oN9h.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -4
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +1 -1
- package/types/protocol.d.ts +712 -107
- package/types/types.d.ts +128 -17
- package/lib/generated/consoleApiSource.js +0 -28
- package/lib/protocol/debug.js +0 -211
- package/lib/server/recorder/contextRecorder.js +0 -286
- package/lib/server/recorder/recorderCollection.js +0 -116
- package/lib/server/recorder/recorderFrontend.js +0 -16
- package/lib/server/storageScript.js +0 -154
- package/lib/server/timeoutSettings.js +0 -89
- package/lib/utils/isomorphic/builtins.js +0 -86
- package/lib/vite/recorder/assets/index-BsWQsSGl.js +0 -184
- package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +0 -265
- package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +0 -1
- package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
- package/lib/vite/traceViewer/index.cFZzK9RN.js +0 -2
- package/lib/vite/traceViewer/uiMode.XVPIqBeS.js +0 -5
|
@@ -34,14 +34,14 @@ var import_networkDispatchers = require("./networkDispatchers");
|
|
|
34
34
|
var import_networkDispatchers2 = require("./networkDispatchers");
|
|
35
35
|
var import_networkDispatchers3 = require("./networkDispatchers");
|
|
36
36
|
var import_webSocketRouteDispatcher = require("./webSocketRouteDispatcher");
|
|
37
|
-
var
|
|
37
|
+
var import_instrumentation = require("../instrumentation");
|
|
38
38
|
var import_urlMatch = require("../../utils/isomorphic/urlMatch");
|
|
39
39
|
class PageDispatcher extends import_dispatcher.Dispatcher {
|
|
40
40
|
constructor(parentScope, page) {
|
|
41
41
|
const mainFrame = import_frameDispatcher.FrameDispatcher.from(parentScope, page.mainFrame());
|
|
42
42
|
super(parentScope, page, "Page", {
|
|
43
43
|
mainFrame,
|
|
44
|
-
viewportSize: page.
|
|
44
|
+
viewportSize: page.emulatedSize()?.viewport,
|
|
45
45
|
isClosed: page.isClosed(),
|
|
46
46
|
opener: PageDispatcher.fromNullable(parentScope, page.opener())
|
|
47
47
|
});
|
|
@@ -49,8 +49,23 @@ class PageDispatcher extends import_dispatcher.Dispatcher {
|
|
|
49
49
|
this._type_Page = true;
|
|
50
50
|
this._subscriptions = /* @__PURE__ */ new Set();
|
|
51
51
|
this._webSocketInterceptionPatterns = [];
|
|
52
|
+
this._bindings = [];
|
|
53
|
+
this._initScripts = [];
|
|
54
|
+
this._interceptionUrlMatchers = [];
|
|
55
|
+
this._locatorHandlers = /* @__PURE__ */ new Set();
|
|
56
|
+
this._jsCoverageActive = false;
|
|
57
|
+
this._cssCoverageActive = false;
|
|
52
58
|
this.adopt(mainFrame);
|
|
53
59
|
this._page = page;
|
|
60
|
+
this._requestInterceptor = (route, request) => {
|
|
61
|
+
const matchesSome = this._interceptionUrlMatchers.some((urlMatch) => (0, import_urlMatch.urlMatches)(this._page.browserContext._options.baseURL, request.url(), urlMatch));
|
|
62
|
+
if (!matchesSome) {
|
|
63
|
+
route.continue({ isFallback: true }).catch(() => {
|
|
64
|
+
});
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this._dispatchEvent("route", { route: new import_networkDispatchers3.RouteDispatcher(import_networkDispatchers.RequestDispatcher.from(this.parentScope(), request), route) });
|
|
68
|
+
};
|
|
54
69
|
this.addObjectListener(import_page.Page.Events.Close, () => {
|
|
55
70
|
this._dispatchEvent("close");
|
|
56
71
|
this._dispose();
|
|
@@ -59,6 +74,7 @@ class PageDispatcher extends import_dispatcher.Dispatcher {
|
|
|
59
74
|
this.addObjectListener(import_page.Page.Events.Download, (download) => {
|
|
60
75
|
this._dispatchEvent("download", { url: download.url, suggestedFilename: download.suggestedFilename(), artifact: import_artifactDispatcher.ArtifactDispatcher.from(parentScope, download.artifact) });
|
|
61
76
|
});
|
|
77
|
+
this.addObjectListener(import_page.Page.Events.EmulatedSizeChanged, () => this._dispatchEvent("viewportSizeChanged", { viewportSize: page.emulatedSize()?.viewport }));
|
|
62
78
|
this.addObjectListener(import_page.Page.Events.FileChooser, (fileChooser) => this._dispatchEvent("fileChooser", {
|
|
63
79
|
element: import_elementHandlerDispatcher.ElementHandleDispatcher.from(mainFrame, fileChooser.element()),
|
|
64
80
|
isMultiple: fileChooser.isMultiple()
|
|
@@ -69,9 +85,9 @@ class PageDispatcher extends import_dispatcher.Dispatcher {
|
|
|
69
85
|
this.addObjectListener(import_page.Page.Events.WebSocket, (webSocket) => this._dispatchEvent("webSocket", { webSocket: new import_networkDispatchers3.WebSocketDispatcher(this, webSocket) }));
|
|
70
86
|
this.addObjectListener(import_page.Page.Events.Worker, (worker) => this._dispatchEvent("worker", { worker: new WorkerDispatcher(this, worker) }));
|
|
71
87
|
this.addObjectListener(import_page.Page.Events.Video, (artifact) => this._dispatchEvent("video", { artifact: import_artifactDispatcher.ArtifactDispatcher.from(parentScope, artifact) }));
|
|
72
|
-
if (page.
|
|
73
|
-
this._dispatchEvent("video", { artifact: import_artifactDispatcher.ArtifactDispatcher.from(this.parentScope(), page.
|
|
74
|
-
const frames = page.
|
|
88
|
+
if (page.video)
|
|
89
|
+
this._dispatchEvent("video", { artifact: import_artifactDispatcher.ArtifactDispatcher.from(this.parentScope(), page.video) });
|
|
90
|
+
const frames = page.frameManager.frames();
|
|
75
91
|
for (let i = 1; i < frames.length; i++)
|
|
76
92
|
this._onFrameAttached(frames[i]);
|
|
77
93
|
}
|
|
@@ -81,54 +97,51 @@ class PageDispatcher extends import_dispatcher.Dispatcher {
|
|
|
81
97
|
static fromNullable(parentScope, page) {
|
|
82
98
|
if (!page)
|
|
83
99
|
return void 0;
|
|
84
|
-
const result =
|
|
100
|
+
const result = parentScope.connection.existingDispatcher(page);
|
|
85
101
|
return result || new PageDispatcher(parentScope, page);
|
|
86
102
|
}
|
|
87
103
|
page() {
|
|
88
104
|
return this._page;
|
|
89
105
|
}
|
|
90
|
-
async
|
|
91
|
-
this._page.
|
|
92
|
-
}
|
|
93
|
-
async setDefaultTimeoutNoReply(params, metadata) {
|
|
94
|
-
this._page.setDefaultTimeout(params.timeout);
|
|
95
|
-
}
|
|
96
|
-
async exposeBinding(params, metadata) {
|
|
97
|
-
await this._page.exposeBinding(params.name, !!params.needsHandle, (source, ...args) => {
|
|
106
|
+
async exposeBinding(params, progress) {
|
|
107
|
+
const binding = await this._page.exposeBinding(progress, params.name, !!params.needsHandle, (source, ...args) => {
|
|
98
108
|
if (this._disposed)
|
|
99
109
|
return;
|
|
100
|
-
const
|
|
101
|
-
this._dispatchEvent("bindingCall", { binding });
|
|
102
|
-
return
|
|
110
|
+
const binding2 = new BindingCallDispatcher(this, params.name, !!params.needsHandle, source, args);
|
|
111
|
+
this._dispatchEvent("bindingCall", { binding: binding2 });
|
|
112
|
+
return binding2.promise();
|
|
103
113
|
});
|
|
114
|
+
this._bindings.push(binding);
|
|
104
115
|
}
|
|
105
|
-
async setExtraHTTPHeaders(params,
|
|
106
|
-
await this._page.setExtraHTTPHeaders(params.headers);
|
|
116
|
+
async setExtraHTTPHeaders(params, progress) {
|
|
117
|
+
await this._page.setExtraHTTPHeaders(progress, params.headers);
|
|
107
118
|
}
|
|
108
|
-
async reload(params,
|
|
109
|
-
return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.reload(
|
|
119
|
+
async reload(params, progress) {
|
|
120
|
+
return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.reload(progress, params)) };
|
|
110
121
|
}
|
|
111
|
-
async goBack(params,
|
|
112
|
-
return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.goBack(
|
|
122
|
+
async goBack(params, progress) {
|
|
123
|
+
return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.goBack(progress, params)) };
|
|
113
124
|
}
|
|
114
|
-
async goForward(params,
|
|
115
|
-
return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.goForward(
|
|
125
|
+
async goForward(params, progress) {
|
|
126
|
+
return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.goForward(progress, params)) };
|
|
116
127
|
}
|
|
117
|
-
async requestGC(params,
|
|
118
|
-
await this._page.requestGC();
|
|
128
|
+
async requestGC(params, progress) {
|
|
129
|
+
await progress.race(this._page.requestGC());
|
|
119
130
|
}
|
|
120
|
-
async registerLocatorHandler(params,
|
|
131
|
+
async registerLocatorHandler(params, progress) {
|
|
121
132
|
const uid = this._page.registerLocatorHandler(params.selector, params.noWaitAfter);
|
|
133
|
+
this._locatorHandlers.add(uid);
|
|
122
134
|
return { uid };
|
|
123
135
|
}
|
|
124
|
-
async resolveLocatorHandlerNoReply(params,
|
|
136
|
+
async resolveLocatorHandlerNoReply(params, progress) {
|
|
125
137
|
this._page.resolveLocatorHandler(params.uid, params.remove);
|
|
126
138
|
}
|
|
127
|
-
async unregisterLocatorHandler(params,
|
|
139
|
+
async unregisterLocatorHandler(params, progress) {
|
|
128
140
|
this._page.unregisterLocatorHandler(params.uid);
|
|
141
|
+
this._locatorHandlers.delete(params.uid);
|
|
129
142
|
}
|
|
130
|
-
async emulateMedia(params,
|
|
131
|
-
await this._page.emulateMedia({
|
|
143
|
+
async emulateMedia(params, progress) {
|
|
144
|
+
await this._page.emulateMedia(progress, {
|
|
132
145
|
media: params.media,
|
|
133
146
|
colorScheme: params.colorScheme,
|
|
134
147
|
reducedMotion: params.reducedMotion,
|
|
@@ -136,32 +149,30 @@ class PageDispatcher extends import_dispatcher.Dispatcher {
|
|
|
136
149
|
contrast: params.contrast
|
|
137
150
|
});
|
|
138
151
|
}
|
|
139
|
-
async setViewportSize(params,
|
|
140
|
-
await this._page.setViewportSize(params.viewportSize);
|
|
152
|
+
async setViewportSize(params, progress) {
|
|
153
|
+
await this._page.setViewportSize(progress, params.viewportSize);
|
|
141
154
|
}
|
|
142
|
-
async addInitScript(params,
|
|
143
|
-
await this._page.addInitScript(params.source);
|
|
155
|
+
async addInitScript(params, progress) {
|
|
156
|
+
this._initScripts.push(await this._page.addInitScript(progress, params.source));
|
|
144
157
|
}
|
|
145
|
-
async setNetworkInterceptionPatterns(params,
|
|
158
|
+
async setNetworkInterceptionPatterns(params, progress) {
|
|
159
|
+
const hadMatchers = this._interceptionUrlMatchers.length > 0;
|
|
146
160
|
if (!params.patterns.length) {
|
|
147
|
-
|
|
148
|
-
|
|
161
|
+
if (hadMatchers)
|
|
162
|
+
await this._page.removeRequestInterceptor(this._requestInterceptor);
|
|
163
|
+
this._interceptionUrlMatchers = [];
|
|
164
|
+
} else {
|
|
165
|
+
this._interceptionUrlMatchers = params.patterns.map((pattern) => pattern.regexSource ? new RegExp(pattern.regexSource, pattern.regexFlags) : pattern.glob);
|
|
166
|
+
if (!hadMatchers)
|
|
167
|
+
await this._page.addRequestInterceptor(progress, this._requestInterceptor);
|
|
149
168
|
}
|
|
150
|
-
const urlMatchers = params.patterns.map((pattern) => pattern.regexSource ? new RegExp(pattern.regexSource, pattern.regexFlags) : pattern.glob);
|
|
151
|
-
await this._page.setClientRequestInterceptor((route, request) => {
|
|
152
|
-
const matchesSome = urlMatchers.some((urlMatch) => (0, import_urlMatch.urlMatches)(this._page._browserContext._options.baseURL, request.url(), urlMatch));
|
|
153
|
-
if (!matchesSome)
|
|
154
|
-
return false;
|
|
155
|
-
this._dispatchEvent("route", { route: import_networkDispatchers3.RouteDispatcher.from(import_networkDispatchers.RequestDispatcher.from(this.parentScope(), request), route) });
|
|
156
|
-
return true;
|
|
157
|
-
});
|
|
158
169
|
}
|
|
159
|
-
async setWebSocketInterceptionPatterns(params,
|
|
170
|
+
async setWebSocketInterceptionPatterns(params, progress) {
|
|
160
171
|
this._webSocketInterceptionPatterns = params.patterns;
|
|
161
|
-
if (params.patterns.length)
|
|
162
|
-
await import_webSocketRouteDispatcher.WebSocketRouteDispatcher.
|
|
172
|
+
if (params.patterns.length && !this._routeWebSocketInitScript)
|
|
173
|
+
this._routeWebSocketInitScript = await import_webSocketRouteDispatcher.WebSocketRouteDispatcher.install(progress, this.connection, this._page);
|
|
163
174
|
}
|
|
164
|
-
async expectScreenshot(params,
|
|
175
|
+
async expectScreenshot(params, progress) {
|
|
165
176
|
const mask = (params.mask || []).map(({ frame, selector }) => ({
|
|
166
177
|
frame: frame._object,
|
|
167
178
|
selector
|
|
@@ -170,94 +181,106 @@ class PageDispatcher extends import_dispatcher.Dispatcher {
|
|
|
170
181
|
frame: params.locator.frame._object,
|
|
171
182
|
selector: params.locator.selector
|
|
172
183
|
} : void 0;
|
|
173
|
-
return await this._page.expectScreenshot(
|
|
184
|
+
return await this._page.expectScreenshot(progress, {
|
|
174
185
|
...params,
|
|
175
186
|
locator,
|
|
176
187
|
mask
|
|
177
188
|
});
|
|
178
189
|
}
|
|
179
|
-
async screenshot(params,
|
|
190
|
+
async screenshot(params, progress) {
|
|
180
191
|
const mask = (params.mask || []).map(({ frame, selector }) => ({
|
|
181
192
|
frame: frame._object,
|
|
182
193
|
selector
|
|
183
194
|
}));
|
|
184
|
-
return { binary: await this._page.screenshot(
|
|
195
|
+
return { binary: await this._page.screenshot(progress, { ...params, mask }) };
|
|
185
196
|
}
|
|
186
|
-
async close(params,
|
|
197
|
+
async close(params, progress) {
|
|
187
198
|
if (!params.runBeforeUnload)
|
|
188
|
-
metadata.potentiallyClosesScope = true;
|
|
189
|
-
await this._page.close(
|
|
199
|
+
progress.metadata.potentiallyClosesScope = true;
|
|
200
|
+
await this._page.close(params);
|
|
190
201
|
}
|
|
191
|
-
async updateSubscription(params) {
|
|
202
|
+
async updateSubscription(params, progress) {
|
|
192
203
|
if (params.event === "fileChooser")
|
|
193
|
-
await this._page.
|
|
204
|
+
await this._page.setFileChooserInterceptedBy(params.enabled, this);
|
|
194
205
|
if (params.enabled)
|
|
195
206
|
this._subscriptions.add(params.event);
|
|
196
207
|
else
|
|
197
208
|
this._subscriptions.delete(params.event);
|
|
198
209
|
}
|
|
199
|
-
async keyboardDown(params,
|
|
200
|
-
await this._page.keyboard.down(params.key);
|
|
210
|
+
async keyboardDown(params, progress) {
|
|
211
|
+
await this._page.keyboard.down(progress, params.key);
|
|
201
212
|
}
|
|
202
|
-
async keyboardUp(params,
|
|
203
|
-
await this._page.keyboard.up(params.key);
|
|
213
|
+
async keyboardUp(params, progress) {
|
|
214
|
+
await this._page.keyboard.up(progress, params.key);
|
|
204
215
|
}
|
|
205
|
-
async keyboardInsertText(params,
|
|
206
|
-
await this._page.keyboard.insertText(params.text);
|
|
216
|
+
async keyboardInsertText(params, progress) {
|
|
217
|
+
await this._page.keyboard.insertText(progress, params.text);
|
|
207
218
|
}
|
|
208
|
-
async keyboardType(params,
|
|
209
|
-
await this._page.keyboard.type(params.text, params);
|
|
219
|
+
async keyboardType(params, progress) {
|
|
220
|
+
await this._page.keyboard.type(progress, params.text, params);
|
|
210
221
|
}
|
|
211
|
-
async keyboardPress(params,
|
|
212
|
-
await this._page.keyboard.press(params.key, params);
|
|
222
|
+
async keyboardPress(params, progress) {
|
|
223
|
+
await this._page.keyboard.press(progress, params.key, params);
|
|
213
224
|
}
|
|
214
|
-
async mouseMove(params,
|
|
215
|
-
|
|
225
|
+
async mouseMove(params, progress) {
|
|
226
|
+
progress.metadata.point = { x: params.x, y: params.y };
|
|
227
|
+
await this._page.mouse.move(progress, params.x, params.y, params);
|
|
216
228
|
}
|
|
217
|
-
async mouseDown(params,
|
|
218
|
-
|
|
229
|
+
async mouseDown(params, progress) {
|
|
230
|
+
progress.metadata.point = this._page.mouse.currentPoint();
|
|
231
|
+
await this._page.mouse.down(progress, params);
|
|
219
232
|
}
|
|
220
|
-
async mouseUp(params,
|
|
221
|
-
|
|
233
|
+
async mouseUp(params, progress) {
|
|
234
|
+
progress.metadata.point = this._page.mouse.currentPoint();
|
|
235
|
+
await this._page.mouse.up(progress, params);
|
|
222
236
|
}
|
|
223
|
-
async mouseClick(params,
|
|
224
|
-
|
|
237
|
+
async mouseClick(params, progress) {
|
|
238
|
+
progress.metadata.point = { x: params.x, y: params.y };
|
|
239
|
+
await this._page.mouse.click(progress, params.x, params.y, params);
|
|
225
240
|
}
|
|
226
|
-
async mouseWheel(params,
|
|
227
|
-
await this._page.mouse.wheel(params.deltaX, params.deltaY);
|
|
241
|
+
async mouseWheel(params, progress) {
|
|
242
|
+
await this._page.mouse.wheel(progress, params.deltaX, params.deltaY);
|
|
228
243
|
}
|
|
229
|
-
async touchscreenTap(params,
|
|
230
|
-
|
|
244
|
+
async touchscreenTap(params, progress) {
|
|
245
|
+
progress.metadata.point = { x: params.x, y: params.y };
|
|
246
|
+
await this._page.touchscreen.tap(progress, params.x, params.y);
|
|
231
247
|
}
|
|
232
|
-
async accessibilitySnapshot(params,
|
|
233
|
-
const rootAXNode = await this._page.accessibility.snapshot({
|
|
248
|
+
async accessibilitySnapshot(params, progress) {
|
|
249
|
+
const rootAXNode = await progress.race(this._page.accessibility.snapshot({
|
|
234
250
|
interestingOnly: params.interestingOnly,
|
|
235
251
|
root: params.root ? params.root._elementHandle : void 0
|
|
236
|
-
});
|
|
252
|
+
}));
|
|
237
253
|
return { rootAXNode: rootAXNode || void 0 };
|
|
238
254
|
}
|
|
239
|
-
async pdf(params,
|
|
255
|
+
async pdf(params, progress) {
|
|
240
256
|
if (!this._page.pdf)
|
|
241
257
|
throw new Error("PDF generation is only supported for Headless Chromium");
|
|
242
|
-
const buffer = await this._page.pdf(params);
|
|
258
|
+
const buffer = await progress.race(this._page.pdf(params));
|
|
243
259
|
return { pdf: buffer };
|
|
244
260
|
}
|
|
245
|
-
async
|
|
246
|
-
await this._page.
|
|
261
|
+
async snapshotForAI(params, progress) {
|
|
262
|
+
return { snapshot: await this._page.snapshotForAI(progress) };
|
|
263
|
+
}
|
|
264
|
+
async bringToFront(params, progress) {
|
|
265
|
+
await progress.race(this._page.bringToFront());
|
|
247
266
|
}
|
|
248
|
-
async startJSCoverage(params,
|
|
267
|
+
async startJSCoverage(params, progress) {
|
|
249
268
|
const coverage = this._page.coverage;
|
|
250
|
-
await coverage.startJSCoverage(params);
|
|
269
|
+
await coverage.startJSCoverage(progress, params);
|
|
270
|
+
this._jsCoverageActive = true;
|
|
251
271
|
}
|
|
252
|
-
async stopJSCoverage(params,
|
|
272
|
+
async stopJSCoverage(params, progress) {
|
|
273
|
+
this._jsCoverageActive = false;
|
|
253
274
|
const coverage = this._page.coverage;
|
|
254
275
|
return await coverage.stopJSCoverage();
|
|
255
276
|
}
|
|
256
|
-
async startCSSCoverage(params,
|
|
277
|
+
async startCSSCoverage(params, progress) {
|
|
257
278
|
const coverage = this._page.coverage;
|
|
258
|
-
await coverage.startCSSCoverage(params);
|
|
279
|
+
await coverage.startCSSCoverage(progress, params);
|
|
280
|
+
this._cssCoverageActive = true;
|
|
259
281
|
}
|
|
260
|
-
async stopCSSCoverage(params,
|
|
282
|
+
async stopCSSCoverage(params, progress) {
|
|
283
|
+
this._cssCoverageActive = false;
|
|
261
284
|
const coverage = this._page.coverage;
|
|
262
285
|
return await coverage.stopCSSCoverage();
|
|
263
286
|
}
|
|
@@ -268,15 +291,40 @@ class PageDispatcher extends import_dispatcher.Dispatcher {
|
|
|
268
291
|
this._dispatchEvent("frameDetached", { frame: import_frameDispatcher.FrameDispatcher.from(this.parentScope(), frame) });
|
|
269
292
|
}
|
|
270
293
|
_onDispose() {
|
|
271
|
-
if (
|
|
272
|
-
|
|
294
|
+
if (this._page.isClosedOrClosingOrCrashed())
|
|
295
|
+
return;
|
|
296
|
+
this._interceptionUrlMatchers = [];
|
|
297
|
+
this._page.removeRequestInterceptor(this._requestInterceptor).catch(() => {
|
|
298
|
+
});
|
|
299
|
+
this._page.removeExposedBindings(this._bindings).catch(() => {
|
|
300
|
+
});
|
|
301
|
+
this._bindings = [];
|
|
302
|
+
this._page.removeInitScripts(this._initScripts).catch(() => {
|
|
303
|
+
});
|
|
304
|
+
this._initScripts = [];
|
|
305
|
+
if (this._routeWebSocketInitScript)
|
|
306
|
+
import_webSocketRouteDispatcher.WebSocketRouteDispatcher.uninstall(this.connection, this._page, this._routeWebSocketInitScript).catch(() => {
|
|
307
|
+
});
|
|
308
|
+
this._routeWebSocketInitScript = void 0;
|
|
309
|
+
for (const uid of this._locatorHandlers)
|
|
310
|
+
this._page.unregisterLocatorHandler(uid);
|
|
311
|
+
this._locatorHandlers.clear();
|
|
312
|
+
this._page.setFileChooserInterceptedBy(false, this).catch(() => {
|
|
313
|
+
});
|
|
314
|
+
if (this._jsCoverageActive)
|
|
315
|
+
this._page.coverage.stopJSCoverage().catch(() => {
|
|
316
|
+
});
|
|
317
|
+
this._jsCoverageActive = false;
|
|
318
|
+
if (this._cssCoverageActive)
|
|
319
|
+
this._page.coverage.stopCSSCoverage().catch(() => {
|
|
273
320
|
});
|
|
321
|
+
this._cssCoverageActive = false;
|
|
274
322
|
}
|
|
275
323
|
}
|
|
276
324
|
class WorkerDispatcher extends import_dispatcher.Dispatcher {
|
|
277
325
|
constructor(scope, worker) {
|
|
278
326
|
super(scope, worker, "Worker", {
|
|
279
|
-
url: worker.url
|
|
327
|
+
url: worker.url
|
|
280
328
|
});
|
|
281
329
|
this._type_Worker = true;
|
|
282
330
|
this.addObjectListener(import_page.Worker.Events.Close, () => this._dispatchEvent("close"));
|
|
@@ -284,23 +332,24 @@ class WorkerDispatcher extends import_dispatcher.Dispatcher {
|
|
|
284
332
|
static fromNullable(scope, worker) {
|
|
285
333
|
if (!worker)
|
|
286
334
|
return void 0;
|
|
287
|
-
const result =
|
|
335
|
+
const result = scope.connection.existingDispatcher(worker);
|
|
288
336
|
return result || new WorkerDispatcher(scope, worker);
|
|
289
337
|
}
|
|
290
|
-
async evaluateExpression(params,
|
|
291
|
-
return { value: (0, import_jsHandleDispatcher.serializeResult)(await this._object.evaluateExpression(params.expression, params.isFunction, (0, import_jsHandleDispatcher.parseArgument)(params.arg)
|
|
338
|
+
async evaluateExpression(params, progress) {
|
|
339
|
+
return { value: (0, import_jsHandleDispatcher.serializeResult)(await progress.race(this._object.evaluateExpression(params.expression, params.isFunction, (0, import_jsHandleDispatcher.parseArgument)(params.arg)))) };
|
|
292
340
|
}
|
|
293
|
-
async evaluateExpressionHandle(params,
|
|
294
|
-
return { handle:
|
|
341
|
+
async evaluateExpressionHandle(params, progress) {
|
|
342
|
+
return { handle: import_jsHandleDispatcher.JSHandleDispatcher.fromJSHandle(this, await progress.race(this._object.evaluateExpressionHandle(params.expression, params.isFunction, (0, import_jsHandleDispatcher.parseArgument)(params.arg)))) };
|
|
295
343
|
}
|
|
296
344
|
}
|
|
297
345
|
class BindingCallDispatcher extends import_dispatcher.Dispatcher {
|
|
298
346
|
constructor(scope, name, needsHandle, source, args) {
|
|
299
|
-
|
|
300
|
-
|
|
347
|
+
const frameDispatcher = import_frameDispatcher.FrameDispatcher.from(scope.parentScope(), source.frame);
|
|
348
|
+
super(scope, new import_instrumentation.SdkObject(scope._object, "bindingCall"), "BindingCall", {
|
|
349
|
+
frame: frameDispatcher,
|
|
301
350
|
name,
|
|
302
351
|
args: needsHandle ? void 0 : args.map(import_jsHandleDispatcher.serializeResult),
|
|
303
|
-
handle: needsHandle ? import_elementHandlerDispatcher.ElementHandleDispatcher.
|
|
352
|
+
handle: needsHandle ? import_elementHandlerDispatcher.ElementHandleDispatcher.fromJSOrElementHandle(frameDispatcher, args[0]) : void 0
|
|
304
353
|
});
|
|
305
354
|
this._type_BindingCall = true;
|
|
306
355
|
this._promise = new Promise((resolve, reject) => {
|
|
@@ -311,11 +360,11 @@ class BindingCallDispatcher extends import_dispatcher.Dispatcher {
|
|
|
311
360
|
promise() {
|
|
312
361
|
return this._promise;
|
|
313
362
|
}
|
|
314
|
-
async resolve(params,
|
|
363
|
+
async resolve(params, progress) {
|
|
315
364
|
this._resolve((0, import_jsHandleDispatcher.parseArgument)(params.result));
|
|
316
365
|
this._dispose();
|
|
317
366
|
}
|
|
318
|
-
async reject(params,
|
|
367
|
+
async reject(params, progress) {
|
|
319
368
|
this._reject((0, import_errors.parseError)(params.error));
|
|
320
369
|
this._dispose();
|
|
321
370
|
}
|
|
@@ -31,32 +31,44 @@ var import_dispatcher = require("./dispatcher");
|
|
|
31
31
|
var import_electronDispatcher = require("./electronDispatcher");
|
|
32
32
|
var import_localUtilsDispatcher = require("./localUtilsDispatcher");
|
|
33
33
|
var import_networkDispatchers = require("./networkDispatchers");
|
|
34
|
-
var
|
|
35
|
-
var import_crypto = require("../utils/crypto");
|
|
34
|
+
var import_instrumentation = require("../instrumentation");
|
|
36
35
|
var import_eventsHelper = require("../utils/eventsHelper");
|
|
37
36
|
class PlaywrightDispatcher extends import_dispatcher.Dispatcher {
|
|
38
|
-
constructor(scope, playwright,
|
|
39
|
-
const
|
|
37
|
+
constructor(scope, playwright, options = {}) {
|
|
38
|
+
const denyLaunch = options.denyLaunch ?? false;
|
|
39
|
+
const chromium = new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.chromium, denyLaunch);
|
|
40
|
+
const firefox = new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.firefox, denyLaunch);
|
|
41
|
+
const webkit = new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.webkit, denyLaunch);
|
|
42
|
+
const _bidiChromium = new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright._bidiChromium, denyLaunch);
|
|
43
|
+
const _bidiFirefox = new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright._bidiFirefox, denyLaunch);
|
|
40
44
|
const android = new import_androidDispatcher.AndroidDispatcher(scope, playwright.android);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
bidiFirefox: new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.bidiFirefox),
|
|
45
|
+
const initializer = {
|
|
46
|
+
chromium,
|
|
47
|
+
firefox,
|
|
48
|
+
webkit,
|
|
49
|
+
_bidiChromium,
|
|
50
|
+
_bidiFirefox,
|
|
48
51
|
android,
|
|
49
|
-
electron: new import_electronDispatcher.ElectronDispatcher(scope, playwright.electron),
|
|
52
|
+
electron: new import_electronDispatcher.ElectronDispatcher(scope, playwright.electron, denyLaunch),
|
|
50
53
|
utils: playwright.options.isServer ? void 0 : new import_localUtilsDispatcher.LocalUtilsDispatcher(scope, playwright),
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
socksSupport: options.socksProxy ? new SocksSupportDispatcher(scope, playwright, options.socksProxy) : void 0
|
|
55
|
+
};
|
|
56
|
+
let browserDispatcher;
|
|
57
|
+
if (options.preLaunchedBrowser) {
|
|
58
|
+
const browserTypeDispatcher = initializer[options.preLaunchedBrowser.options.name];
|
|
59
|
+
browserDispatcher = new import_browserDispatcher.BrowserDispatcher(browserTypeDispatcher, options.preLaunchedBrowser, {
|
|
60
|
+
ignoreStopAndKill: true,
|
|
61
|
+
isolateContexts: !options.sharedBrowser
|
|
62
|
+
});
|
|
63
|
+
initializer.preLaunchedBrowser = browserDispatcher;
|
|
64
|
+
}
|
|
65
|
+
if (options.preLaunchedAndroidDevice)
|
|
66
|
+
initializer.preConnectedAndroidDevice = new import_androidDispatcher2.AndroidDeviceDispatcher(android, options.preLaunchedAndroidDevice);
|
|
67
|
+
super(scope, playwright, "Playwright", initializer);
|
|
56
68
|
this._type_Playwright = true;
|
|
57
69
|
this._browserDispatcher = browserDispatcher;
|
|
58
70
|
}
|
|
59
|
-
async newRequest(params) {
|
|
71
|
+
async newRequest(params, progress) {
|
|
60
72
|
const request = new import_fetch.GlobalAPIRequestContext(this._object, params);
|
|
61
73
|
return { request: import_networkDispatchers.APIRequestContextDispatcher.from(this.parentScope(), request) };
|
|
62
74
|
}
|
|
@@ -65,8 +77,8 @@ class PlaywrightDispatcher extends import_dispatcher.Dispatcher {
|
|
|
65
77
|
}
|
|
66
78
|
}
|
|
67
79
|
class SocksSupportDispatcher extends import_dispatcher.Dispatcher {
|
|
68
|
-
constructor(scope, socksProxy) {
|
|
69
|
-
super(scope,
|
|
80
|
+
constructor(scope, parent, socksProxy) {
|
|
81
|
+
super(scope, new import_instrumentation.SdkObject(parent, "socksSupport"), "SocksSupport", {});
|
|
70
82
|
this._type_SocksSupport = true;
|
|
71
83
|
this._socksProxy = socksProxy;
|
|
72
84
|
this._socksListeners = [
|
|
@@ -75,19 +87,19 @@ class SocksSupportDispatcher extends import_dispatcher.Dispatcher {
|
|
|
75
87
|
import_eventsHelper.eventsHelper.addEventListener(socksProxy, import_socksProxy.SocksProxy.Events.SocksClosed, (payload) => this._dispatchEvent("socksClosed", payload))
|
|
76
88
|
];
|
|
77
89
|
}
|
|
78
|
-
async socksConnected(params) {
|
|
90
|
+
async socksConnected(params, progress) {
|
|
79
91
|
this._socksProxy?.socketConnected(params);
|
|
80
92
|
}
|
|
81
|
-
async socksFailed(params) {
|
|
93
|
+
async socksFailed(params, progress) {
|
|
82
94
|
this._socksProxy?.socketFailed(params);
|
|
83
95
|
}
|
|
84
|
-
async socksData(params) {
|
|
96
|
+
async socksData(params, progress) {
|
|
85
97
|
this._socksProxy?.sendSocketData(params);
|
|
86
98
|
}
|
|
87
|
-
async socksError(params) {
|
|
99
|
+
async socksError(params, progress) {
|
|
88
100
|
this._socksProxy?.sendSocketError(params);
|
|
89
101
|
}
|
|
90
|
-
async socksEnd(params) {
|
|
102
|
+
async socksEnd(params, progress) {
|
|
91
103
|
this._socksProxy?.sendSocketEnd(params);
|
|
92
104
|
}
|
|
93
105
|
_onDispose() {
|
|
@@ -23,16 +23,22 @@ __export(streamDispatcher_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(streamDispatcher_exports);
|
|
24
24
|
var import_dispatcher = require("./dispatcher");
|
|
25
25
|
var import_manualPromise = require("../../utils/isomorphic/manualPromise");
|
|
26
|
-
var
|
|
26
|
+
var import_instrumentation = require("../instrumentation");
|
|
27
|
+
class StreamSdkObject extends import_instrumentation.SdkObject {
|
|
28
|
+
constructor(parent, stream) {
|
|
29
|
+
super(parent, "stream");
|
|
30
|
+
this.stream = stream;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
27
33
|
class StreamDispatcher extends import_dispatcher.Dispatcher {
|
|
28
34
|
constructor(scope, stream) {
|
|
29
|
-
super(scope,
|
|
35
|
+
super(scope, new StreamSdkObject(scope._object, stream), "Stream", {});
|
|
30
36
|
this._type_Stream = true;
|
|
31
37
|
this._ended = false;
|
|
32
38
|
stream.once("end", () => this._ended = true);
|
|
33
39
|
stream.once("error", () => this._ended = true);
|
|
34
40
|
}
|
|
35
|
-
async read(params) {
|
|
41
|
+
async read(params, progress) {
|
|
36
42
|
const stream = this._object.stream;
|
|
37
43
|
if (this._ended)
|
|
38
44
|
return { binary: Buffer.from("") };
|
|
@@ -42,15 +48,16 @@ class StreamDispatcher extends import_dispatcher.Dispatcher {
|
|
|
42
48
|
stream.on("readable", done);
|
|
43
49
|
stream.on("end", done);
|
|
44
50
|
stream.on("error", done);
|
|
45
|
-
await readyPromise
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
await progress.race(readyPromise).finally(() => {
|
|
52
|
+
stream.off("readable", done);
|
|
53
|
+
stream.off("end", done);
|
|
54
|
+
stream.off("error", done);
|
|
55
|
+
});
|
|
49
56
|
}
|
|
50
57
|
const buffer = stream.read(Math.min(stream.readableLength, params.size || stream.readableLength));
|
|
51
58
|
return { binary: buffer || Buffer.from("") };
|
|
52
59
|
}
|
|
53
|
-
async close() {
|
|
60
|
+
async close(params, progress) {
|
|
54
61
|
this._object.stream.destroy();
|
|
55
62
|
}
|
|
56
63
|
}
|
|
@@ -27,30 +27,39 @@ class TracingDispatcher extends import_dispatcher.Dispatcher {
|
|
|
27
27
|
constructor(scope, tracing) {
|
|
28
28
|
super(scope, tracing, "Tracing", {});
|
|
29
29
|
this._type_Tracing = true;
|
|
30
|
+
this._started = false;
|
|
30
31
|
}
|
|
31
32
|
static from(scope, tracing) {
|
|
32
|
-
const result =
|
|
33
|
+
const result = scope.connection.existingDispatcher(tracing);
|
|
33
34
|
return result || new TracingDispatcher(scope, tracing);
|
|
34
35
|
}
|
|
35
|
-
async tracingStart(params) {
|
|
36
|
-
|
|
36
|
+
async tracingStart(params, progress) {
|
|
37
|
+
this._object.start(params);
|
|
38
|
+
this._started = true;
|
|
37
39
|
}
|
|
38
|
-
async tracingStartChunk(params) {
|
|
39
|
-
return await this._object.startChunk(params);
|
|
40
|
+
async tracingStartChunk(params, progress) {
|
|
41
|
+
return await this._object.startChunk(progress, params);
|
|
40
42
|
}
|
|
41
|
-
async tracingGroup(params,
|
|
43
|
+
async tracingGroup(params, progress) {
|
|
42
44
|
const { name, location } = params;
|
|
43
|
-
|
|
45
|
+
this._object.group(name, location, progress.metadata);
|
|
44
46
|
}
|
|
45
|
-
async tracingGroupEnd(params) {
|
|
46
|
-
|
|
47
|
+
async tracingGroupEnd(params, progress) {
|
|
48
|
+
this._object.groupEnd();
|
|
47
49
|
}
|
|
48
|
-
async tracingStopChunk(params) {
|
|
49
|
-
const { artifact, entries } = await this._object.stopChunk(params);
|
|
50
|
+
async tracingStopChunk(params, progress) {
|
|
51
|
+
const { artifact, entries } = await this._object.stopChunk(progress, params);
|
|
50
52
|
return { artifact: artifact ? import_artifactDispatcher.ArtifactDispatcher.from(this, artifact) : void 0, entries };
|
|
51
53
|
}
|
|
52
|
-
async tracingStop(params) {
|
|
53
|
-
|
|
54
|
+
async tracingStop(params, progress) {
|
|
55
|
+
this._started = false;
|
|
56
|
+
await this._object.stop(progress);
|
|
57
|
+
}
|
|
58
|
+
_onDispose() {
|
|
59
|
+
if (this._started)
|
|
60
|
+
this._object.stopChunk(void 0, { mode: "discard" }).then(() => this._object.stop(void 0)).catch(() => {
|
|
61
|
+
});
|
|
62
|
+
this._started = false;
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
65
|
// Annotate the CommonJS export names for ESM import in node:
|