patchright-core 1.52.4 → 1.55.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.
Files changed (218) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/bin/reinstall_chrome_beta_mac.sh +1 -1
  3. package/bin/reinstall_chrome_stable_mac.sh +1 -1
  4. package/bin/reinstall_msedge_beta_mac.sh +1 -1
  5. package/bin/reinstall_msedge_dev_mac.sh +1 -1
  6. package/bin/reinstall_msedge_stable_mac.sh +1 -1
  7. package/browsers.json +14 -14
  8. package/index.js +1 -1
  9. package/lib/androidServerImpl.js +4 -2
  10. package/lib/browserServerImpl.js +47 -12
  11. package/lib/cli/program.js +116 -50
  12. package/lib/cli/programWithTestStub.js +1 -1
  13. package/lib/client/android.js +30 -34
  14. package/lib/client/browser.js +54 -17
  15. package/lib/client/browserContext.js +67 -71
  16. package/lib/client/browserType.js +25 -34
  17. package/lib/client/channelOwner.js +20 -24
  18. package/lib/client/connection.js +6 -10
  19. package/lib/client/electron.js +8 -3
  20. package/lib/client/elementHandle.js +18 -21
  21. package/lib/client/fetch.js +5 -3
  22. package/lib/client/frame.js +57 -35
  23. package/lib/client/input.js +3 -1
  24. package/lib/client/jsHandle.js +4 -0
  25. package/lib/client/localUtils.js +0 -1
  26. package/lib/client/locator.js +32 -28
  27. package/lib/client/network.js +5 -12
  28. package/lib/client/page.js +32 -32
  29. package/lib/client/playwright.js +6 -16
  30. package/lib/client/selectors.js +18 -38
  31. package/lib/client/timeoutSettings.js +12 -8
  32. package/lib/client/tracing.js +24 -20
  33. package/lib/client/waiter.js +2 -2
  34. package/lib/client/webSocket.js +4 -22
  35. package/lib/generated/bindingsControllerSource.js +28 -0
  36. package/lib/generated/clockSource.js +1 -1
  37. package/lib/generated/injectedScriptSource.js +1 -1
  38. package/lib/generated/pollingRecorderSource.js +1 -1
  39. package/lib/generated/storageScriptSource.js +28 -0
  40. package/lib/generated/utilityScriptSource.js +1 -1
  41. package/lib/generated/webSocketMockSource.js +12 -50
  42. package/lib/inProcessFactory.js +9 -6
  43. package/lib/outofprocess.js +0 -2
  44. package/lib/protocol/validator.js +423 -346
  45. package/lib/protocol/validatorPrimitives.js +18 -4
  46. package/lib/remote/playwrightConnection.js +29 -166
  47. package/lib/remote/playwrightServer.js +233 -35
  48. package/lib/server/android/android.js +97 -83
  49. package/lib/server/android/backendAdb.js +0 -2
  50. package/lib/server/bidi/bidiBrowser.js +139 -73
  51. package/lib/server/bidi/bidiChromium.js +23 -22
  52. package/lib/server/bidi/bidiExecutionContext.js +2 -1
  53. package/lib/server/bidi/bidiFirefox.js +17 -14
  54. package/lib/server/bidi/bidiInput.js +22 -22
  55. package/lib/server/bidi/bidiNetworkManager.js +8 -11
  56. package/lib/server/bidi/bidiPage.js +42 -86
  57. package/lib/server/bidi/third_party/bidiProtocol.js +5 -133
  58. package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
  59. package/lib/server/{dispatchers/selectorsDispatcher.js → bidi/third_party/bidiProtocolPermissions.js} +20 -18
  60. package/lib/server/browser.js +30 -21
  61. package/lib/server/browserContext.js +203 -165
  62. package/lib/server/browserType.js +109 -107
  63. package/lib/server/chromium/chromium.js +84 -69
  64. package/lib/server/chromium/chromiumSwitches.js +13 -20
  65. package/lib/server/chromium/crBrowser.js +74 -40
  66. package/lib/server/chromium/crConnection.js +8 -9
  67. package/lib/server/chromium/crCoverage.js +11 -8
  68. package/lib/server/chromium/crDragDrop.js +25 -20
  69. package/lib/server/chromium/crExecutionContext.js +2 -1
  70. package/lib/server/chromium/crInput.js +32 -29
  71. package/lib/server/chromium/crNetworkManager.js +45 -33
  72. package/lib/server/chromium/crPage.js +98 -73
  73. package/lib/server/chromium/crServiceWorker.js +13 -18
  74. package/lib/server/chromium/videoRecorder.js +10 -18
  75. package/lib/server/clock.js +51 -39
  76. package/lib/server/codegen/csharp.js +10 -5
  77. package/lib/server/codegen/java.js +1 -1
  78. package/lib/server/codegen/javascript.js +1 -1
  79. package/lib/server/codegen/jsonl.js +2 -1
  80. package/lib/server/codegen/language.js +22 -1
  81. package/lib/server/codegen/languages.js +4 -4
  82. package/lib/server/codegen/python.js +1 -1
  83. package/lib/server/cookieStore.js +3 -1
  84. package/lib/server/debugController.js +105 -71
  85. package/lib/server/debugger.js +6 -23
  86. package/lib/server/deviceDescriptorsSource.json +237 -127
  87. package/lib/server/dialog.js +50 -6
  88. package/lib/server/dispatchers/androidDispatcher.js +77 -62
  89. package/lib/server/dispatchers/artifactDispatcher.js +18 -18
  90. package/lib/server/dispatchers/browserContextDispatcher.js +141 -91
  91. package/lib/server/dispatchers/browserDispatcher.js +55 -88
  92. package/lib/server/dispatchers/browserTypeDispatcher.js +18 -9
  93. package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -4
  94. package/lib/server/dispatchers/debugControllerDispatcher.js +12 -21
  95. package/lib/server/dispatchers/dialogDispatcher.js +4 -4
  96. package/lib/server/dispatchers/dispatcher.js +78 -53
  97. package/lib/server/dispatchers/electronDispatcher.js +19 -20
  98. package/lib/server/dispatchers/elementHandlerDispatcher.js +83 -93
  99. package/lib/server/dispatchers/frameDispatcher.js +99 -102
  100. package/lib/server/dispatchers/jsHandleDispatcher.js +21 -16
  101. package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -4
  102. package/lib/server/dispatchers/localUtilsDispatcher.js +53 -59
  103. package/lib/server/dispatchers/networkDispatchers.js +41 -35
  104. package/lib/server/dispatchers/pageDispatcher.js +156 -107
  105. package/lib/server/dispatchers/playwrightDispatcher.js +37 -25
  106. package/lib/server/dispatchers/streamDispatcher.js +15 -8
  107. package/lib/server/dispatchers/tracingDispatcher.js +22 -13
  108. package/lib/server/dispatchers/webSocketRouteDispatcher.js +46 -35
  109. package/lib/server/dispatchers/writableStreamDispatcher.js +16 -10
  110. package/lib/server/dom.js +198 -266
  111. package/lib/server/download.js +3 -3
  112. package/lib/server/electron/electron.js +96 -103
  113. package/lib/server/electron/loader.js +1 -1
  114. package/lib/server/fetch.js +22 -41
  115. package/lib/server/fileUploadUtils.js +1 -1
  116. package/lib/server/firefox/ffBrowser.js +79 -55
  117. package/lib/server/firefox/ffExecutionContext.js +2 -1
  118. package/lib/server/firefox/ffInput.js +23 -23
  119. package/lib/server/firefox/ffNetworkManager.js +8 -6
  120. package/lib/server/firefox/ffPage.js +39 -36
  121. package/lib/server/firefox/firefox.js +9 -10
  122. package/lib/server/frameSelectors.js +65 -22
  123. package/lib/server/frames.js +516 -544
  124. package/lib/server/har/harRecorder.js +1 -1
  125. package/lib/server/har/harTracer.js +4 -2
  126. package/lib/server/helper.js +3 -7
  127. package/lib/server/index.js +0 -3
  128. package/lib/server/input.js +47 -54
  129. package/lib/server/instrumentation.js +8 -14
  130. package/lib/server/javascript.js +9 -17
  131. package/lib/server/launchApp.js +48 -30
  132. package/lib/server/localUtils.js +45 -38
  133. package/lib/server/network.js +44 -10
  134. package/lib/server/page.js +233 -178
  135. package/lib/server/pageBinding.js +6 -7
  136. package/lib/server/playwright.js +4 -14
  137. package/lib/server/progress.js +57 -49
  138. package/lib/server/recorder/recorderApp.js +298 -95
  139. package/lib/server/recorder/recorderRunner.js +23 -24
  140. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  141. package/lib/server/recorder/recorderUtils.js +67 -10
  142. package/lib/server/recorder.js +284 -146
  143. package/lib/server/registry/index.js +83 -48
  144. package/lib/server/registry/nativeDeps.js +175 -0
  145. package/lib/server/registry/oopDownloadBrowserMain.js +1 -1
  146. package/lib/server/screenshotter.js +84 -83
  147. package/lib/server/selectors.js +12 -12
  148. package/lib/server/socksClientCertificatesInterceptor.js +198 -136
  149. package/lib/server/trace/recorder/snapshotter.js +12 -19
  150. package/lib/server/trace/recorder/tracing.js +36 -27
  151. package/lib/server/trace/viewer/traceViewer.js +11 -20
  152. package/lib/server/transport.js +20 -22
  153. package/lib/server/utils/comparators.js +2 -2
  154. package/lib/server/utils/debug.js +3 -8
  155. package/lib/server/utils/debugLogger.js +8 -0
  156. package/lib/server/utils/hostPlatform.js +3 -1
  157. package/lib/server/utils/network.js +35 -25
  158. package/lib/server/utils/nodePlatform.js +1 -1
  159. package/lib/server/utils/processLauncher.js +4 -1
  160. package/lib/server/utils/wsServer.js +11 -17
  161. package/lib/server/webkit/webkit.js +5 -2
  162. package/lib/server/webkit/wkBrowser.js +51 -28
  163. package/lib/server/webkit/wkExecutionContext.js +2 -1
  164. package/lib/server/webkit/wkInput.js +25 -25
  165. package/lib/server/webkit/wkInterceptableRequest.js +1 -1
  166. package/lib/server/webkit/wkPage.js +80 -59
  167. package/lib/server/webkit/wkProvisionalPage.js +1 -1
  168. package/lib/server/webkit/wkWorkers.js +7 -7
  169. package/lib/utils/isomorphic/ariaSnapshot.js +13 -7
  170. package/lib/utils/isomorphic/cssParser.js +1 -2
  171. package/lib/utils/isomorphic/locatorGenerators.js +18 -0
  172. package/lib/utils/isomorphic/manualPromise.js +1 -2
  173. package/lib/utils/isomorphic/mimeType.js +1 -2
  174. package/lib/utils/isomorphic/multimap.js +1 -2
  175. package/lib/utils/isomorphic/oldUtilityScriptSerializers.js +248 -0
  176. package/lib/utils/isomorphic/protocolFormatter.js +78 -0
  177. package/lib/utils/isomorphic/protocolMetainfo.js +318 -0
  178. package/lib/utils/isomorphic/selectorParser.js +3 -4
  179. package/lib/utils/isomorphic/stringUtils.js +3 -24
  180. package/lib/utils/isomorphic/time.js +9 -4
  181. package/lib/utils/isomorphic/timeoutRunner.js +3 -4
  182. package/lib/utils/isomorphic/traceUtils.js +2 -3
  183. package/lib/utils/isomorphic/urlMatch.js +21 -7
  184. package/lib/utils/isomorphic/utilityScriptSerializers.js +208 -205
  185. package/lib/utils.js +8 -2
  186. package/lib/utilsBundleImpl/index.js +160 -150
  187. package/lib/vite/htmlReport/index.html +17 -17
  188. package/lib/vite/recorder/assets/{codeMirrorModule-CXVeovup.js → codeMirrorModule-DzQ0k89p.js} +1 -1
  189. package/lib/vite/recorder/assets/{index-eHBmevrY.css → index-CI4HQ-Zb.css} +1 -1
  190. package/lib/vite/recorder/assets/index-D7C7daHH.js +184 -0
  191. package/lib/vite/recorder/index.html +3 -3
  192. package/lib/vite/traceViewer/assets/{codeMirrorModule-_GLjJL-7.js → codeMirrorModule-Di48jgWx.js} +1 -1
  193. package/lib/vite/traceViewer/assets/defaultSettingsView-szBn8781.js +256 -0
  194. package/lib/vite/traceViewer/defaultSettingsView.DVJHpiGt.css +1 -0
  195. package/lib/vite/traceViewer/index.BFsek2M6.css +1 -0
  196. package/lib/vite/traceViewer/index.DQvXoPLL.js +2 -0
  197. package/lib/vite/traceViewer/index.html +6 -6
  198. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  199. package/lib/vite/traceViewer/uiMode.dBV3oN9h.js +5 -0
  200. package/lib/vite/traceViewer/uiMode.html +4 -4
  201. package/lib/zipBundleImpl.js +4 -4
  202. package/package.json +1 -1
  203. package/types/protocol.d.ts +712 -107
  204. package/types/types.d.ts +148 -37
  205. package/lib/generated/consoleApiSource.js +0 -28
  206. package/lib/protocol/debug.js +0 -211
  207. package/lib/server/recorder/contextRecorder.js +0 -286
  208. package/lib/server/recorder/recorderCollection.js +0 -116
  209. package/lib/server/recorder/recorderFrontend.js +0 -16
  210. package/lib/server/storageScript.js +0 -154
  211. package/lib/server/timeoutSettings.js +0 -89
  212. package/lib/utils/isomorphic/builtins.js +0 -86
  213. package/lib/vite/recorder/assets/index-BsWQsSGl.js +0 -184
  214. package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +0 -265
  215. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +0 -1
  216. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  217. package/lib/vite/traceViewer/index.cFZzK9RN.js +0 -2
  218. 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 import_crypto = require("../utils/crypto");
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.viewportSize() || void 0,
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._video)
73
- this._dispatchEvent("video", { artifact: import_artifactDispatcher.ArtifactDispatcher.from(this.parentScope(), page._video) });
74
- const frames = page._frameManager.frames();
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 = (0, import_dispatcher.existingDispatcher)(page);
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 setDefaultNavigationTimeoutNoReply(params, metadata) {
91
- this._page.setDefaultNavigationTimeout(params.timeout);
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 binding = new BindingCallDispatcher(this, params.name, !!params.needsHandle, source, args);
101
- this._dispatchEvent("bindingCall", { binding });
102
- return binding.promise();
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, metadata) {
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, metadata) {
109
- return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.reload(metadata, params)) };
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, metadata) {
112
- return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.goBack(metadata, params)) };
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, metadata) {
115
- return { response: import_networkDispatchers2.ResponseDispatcher.fromNullable(this.parentScope(), await this._page.goForward(metadata, params)) };
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, metadata) {
118
- await this._page.requestGC();
128
+ async requestGC(params, progress) {
129
+ await progress.race(this._page.requestGC());
119
130
  }
120
- async registerLocatorHandler(params, metadata) {
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, metadata) {
136
+ async resolveLocatorHandlerNoReply(params, progress) {
125
137
  this._page.resolveLocatorHandler(params.uid, params.remove);
126
138
  }
127
- async unregisterLocatorHandler(params, metadata) {
139
+ async unregisterLocatorHandler(params, progress) {
128
140
  this._page.unregisterLocatorHandler(params.uid);
141
+ this._locatorHandlers.delete(params.uid);
129
142
  }
130
- async emulateMedia(params, metadata) {
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, metadata) {
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, metadata) {
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, metadata) {
158
+ async setNetworkInterceptionPatterns(params, progress) {
159
+ const hadMatchers = this._interceptionUrlMatchers.length > 0;
146
160
  if (!params.patterns.length) {
147
- await this._page.setClientRequestInterceptor(void 0);
148
- return;
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, metadata) {
170
+ async setWebSocketInterceptionPatterns(params, progress) {
160
171
  this._webSocketInterceptionPatterns = params.patterns;
161
- if (params.patterns.length)
162
- await import_webSocketRouteDispatcher.WebSocketRouteDispatcher.installIfNeeded(this._page);
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, metadata) {
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(metadata, {
184
+ return await this._page.expectScreenshot(progress, {
174
185
  ...params,
175
186
  locator,
176
187
  mask
177
188
  });
178
189
  }
179
- async screenshot(params, metadata) {
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(metadata, { ...params, mask }) };
195
+ return { binary: await this._page.screenshot(progress, { ...params, mask }) };
185
196
  }
186
- async close(params, metadata) {
197
+ async close(params, progress) {
187
198
  if (!params.runBeforeUnload)
188
- metadata.potentiallyClosesScope = true;
189
- await this._page.close(metadata, params);
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.setFileChooserIntercepted(params.enabled);
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, metadata) {
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, metadata) {
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, metadata) {
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, metadata) {
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, metadata) {
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, metadata) {
215
- await this._page.mouse.move(params.x, params.y, params, metadata);
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, metadata) {
218
- await this._page.mouse.down(params, metadata);
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, metadata) {
221
- await this._page.mouse.up(params, metadata);
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, metadata) {
224
- await this._page.mouse.click(params.x, params.y, params, metadata);
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, metadata) {
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, metadata) {
230
- await this._page.touchscreen.tap(params.x, params.y, metadata);
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, metadata) {
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, metadata) {
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 bringToFront(params, metadata) {
246
- await this._page.bringToFront();
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, metadata) {
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, metadata) {
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, metadata) {
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, metadata) {
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 (!this._page.isClosedOrClosingOrCrashed())
272
- this._page.setClientRequestInterceptor(void 0).catch(() => {
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 = (0, import_dispatcher.existingDispatcher)(worker);
335
+ const result = scope.connection.existingDispatcher(worker);
288
336
  return result || new WorkerDispatcher(scope, worker);
289
337
  }
290
- async evaluateExpression(params, metadata) {
291
- return { value: (0, import_jsHandleDispatcher.serializeResult)(await this._object.evaluateExpression(params.expression, params.isFunction, (0, import_jsHandleDispatcher.parseArgument)(params.arg), params.isolatedContext)) };
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, metadata) {
294
- return { handle: import_elementHandlerDispatcher.ElementHandleDispatcher.fromJSHandle(this, await this._object.evaluateExpressionHandle(params.expression, params.isFunction, (0, import_jsHandleDispatcher.parseArgument)(params.arg), params.isolatedContext)) };
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
- super(scope, { guid: "bindingCall@" + (0, import_crypto.createGuid)() }, "BindingCall", {
300
- frame: import_frameDispatcher.FrameDispatcher.from(scope.parentScope(), source.frame),
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.fromJSHandle(scope, args[0]) : void 0
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, metadata) {
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, metadata) {
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 import_selectorsDispatcher = require("./selectorsDispatcher");
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, socksProxy, preLaunchedBrowser, prelaunchedAndroidDevice) {
39
- const browserDispatcher = preLaunchedBrowser ? new import_browserDispatcher.ConnectedBrowserDispatcher(scope, preLaunchedBrowser) : void 0;
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 prelaunchedAndroidDeviceDispatcher = prelaunchedAndroidDevice ? new import_androidDispatcher2.AndroidDeviceDispatcher(android, prelaunchedAndroidDevice) : void 0;
42
- super(scope, playwright, "Playwright", {
43
- chromium: new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.chromium),
44
- firefox: new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.firefox),
45
- webkit: new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.webkit),
46
- bidiChromium: new import_browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.bidiChromium),
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
- selectors: new import_selectorsDispatcher.SelectorsDispatcher(scope, browserDispatcher?.selectors || playwright.selectors),
52
- preLaunchedBrowser: browserDispatcher,
53
- preConnectedAndroidDevice: prelaunchedAndroidDeviceDispatcher,
54
- socksSupport: socksProxy ? new SocksSupportDispatcher(scope, socksProxy) : void 0
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, { guid: "socksSupport@" + (0, import_crypto.createGuid)() }, "SocksSupport", {});
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 import_crypto = require("../utils/crypto");
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, { guid: "stream@" + (0, import_crypto.createGuid)(), stream }, "Stream", {});
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
- stream.off("readable", done);
47
- stream.off("end", done);
48
- stream.off("error", done);
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 = (0, import_dispatcher.existingDispatcher)(tracing);
33
+ const result = scope.connection.existingDispatcher(tracing);
33
34
  return result || new TracingDispatcher(scope, tracing);
34
35
  }
35
- async tracingStart(params) {
36
- await this._object.start(params);
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, metadata) {
43
+ async tracingGroup(params, progress) {
42
44
  const { name, location } = params;
43
- await this._object.group(name, location, metadata);
45
+ this._object.group(name, location, progress.metadata);
44
46
  }
45
- async tracingGroupEnd(params) {
46
- await this._object.groupEnd();
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
- await this._object.stop();
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: