patchright-core 1.58.2 → 1.59.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.
Files changed (285) hide show
  1. package/ThirdPartyNotices.txt +126 -650
  2. package/browsers.json +16 -14
  3. package/lib/bootstrap.js +77 -0
  4. package/lib/cli/browserActions.js +308 -0
  5. package/lib/cli/driver.js +3 -2
  6. package/lib/cli/installActions.js +171 -0
  7. package/lib/cli/program.js +47 -411
  8. package/lib/client/android.js +4 -4
  9. package/lib/client/api.js +3 -3
  10. package/lib/client/browser.js +8 -0
  11. package/lib/client/browserContext.js +22 -61
  12. package/lib/client/browserType.js +19 -51
  13. package/lib/client/cdpSession.js +6 -2
  14. package/lib/client/channelOwner.js +1 -1
  15. package/lib/client/clientHelper.js +2 -1
  16. package/lib/client/clock.js +0 -1
  17. package/lib/client/{webSocket.js → connect.js} +57 -7
  18. package/lib/client/connection.js +8 -4
  19. package/lib/client/consoleMessage.js +3 -0
  20. package/lib/client/debugger.js +57 -0
  21. package/lib/client/dialog.js +8 -1
  22. package/lib/client/disposable.js +76 -0
  23. package/lib/client/electron.js +1 -0
  24. package/lib/client/elementHandle.js +1 -4
  25. package/lib/client/events.js +3 -3
  26. package/lib/client/fetch.js +0 -1
  27. package/lib/client/frame.js +10 -23
  28. package/lib/client/harRouter.js +13 -1
  29. package/lib/client/jsHandle.js +4 -8
  30. package/lib/client/locator.js +13 -44
  31. package/lib/client/network.js +15 -16
  32. package/lib/client/page.js +41 -75
  33. package/lib/client/platform.js +0 -3
  34. package/lib/client/screencast.js +88 -0
  35. package/lib/client/selectors.js +3 -1
  36. package/lib/client/tracing.js +11 -5
  37. package/lib/client/video.js +13 -20
  38. package/lib/client/worker.js +6 -6
  39. package/lib/generated/bindingsControllerSource.js +1 -1
  40. package/lib/generated/clockSource.js +1 -1
  41. package/lib/generated/injectedScriptSource.js +1 -1
  42. package/lib/generated/pollingRecorderSource.js +1 -1
  43. package/lib/generated/storageScriptSource.js +1 -1
  44. package/lib/generated/utilityScriptSource.js +1 -1
  45. package/lib/mcpBundle.js +0 -6
  46. package/lib/mcpBundleImpl.js +91 -0
  47. package/lib/protocol/validator.js +224 -138
  48. package/lib/protocol/validatorPrimitives.js +1 -1
  49. package/lib/remote/playwrightConnection.js +10 -8
  50. package/lib/remote/playwrightPipeServer.js +100 -0
  51. package/lib/remote/playwrightServer.js +13 -8
  52. package/lib/remote/playwrightWebSocketServer.js +73 -0
  53. package/lib/remote/serverTransport.js +96 -0
  54. package/lib/server/android/android.js +2 -2
  55. package/lib/server/bidi/bidiBrowser.js +30 -8
  56. package/lib/server/bidi/bidiChromium.js +18 -5
  57. package/lib/server/bidi/bidiNetworkManager.js +39 -11
  58. package/lib/server/bidi/bidiPage.js +31 -15
  59. package/lib/server/bidi/third_party/firefoxPrefs.js +3 -1
  60. package/lib/server/browser.js +84 -21
  61. package/lib/server/browserContext.js +110 -58
  62. package/lib/server/browserType.js +14 -12
  63. package/lib/server/chromium/chromium.js +15 -12
  64. package/lib/server/chromium/chromiumSwitches.js +14 -2
  65. package/lib/server/chromium/crBrowser.js +20 -17
  66. package/lib/server/chromium/crCoverage.js +1 -13
  67. package/lib/server/chromium/crDevTools.js +1 -0
  68. package/lib/server/chromium/crNetworkManager.js +12 -267
  69. package/lib/server/chromium/crPage.js +67 -199
  70. package/lib/server/chromium/crServiceWorker.js +7 -14
  71. package/lib/server/clock.js +33 -41
  72. package/lib/server/console.js +5 -1
  73. package/lib/server/debugController.js +12 -6
  74. package/lib/server/debugger.js +40 -47
  75. package/lib/server/deviceDescriptorsSource.json +137 -137
  76. package/lib/server/dispatchers/browserContextDispatcher.js +29 -30
  77. package/lib/server/dispatchers/browserDispatcher.js +11 -5
  78. package/lib/server/dispatchers/browserTypeDispatcher.js +7 -0
  79. package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -1
  80. package/lib/server/dispatchers/debuggerDispatcher.js +84 -0
  81. package/lib/server/dispatchers/dispatcher.js +1 -1
  82. package/lib/server/dispatchers/disposableDispatcher.js +39 -0
  83. package/lib/server/dispatchers/electronDispatcher.js +2 -1
  84. package/lib/server/dispatchers/frameDispatcher.js +6 -6
  85. package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
  86. package/lib/server/dispatchers/localUtilsDispatcher.js +37 -1
  87. package/lib/server/dispatchers/networkDispatchers.js +6 -5
  88. package/lib/server/dispatchers/pageDispatcher.js +101 -38
  89. package/lib/server/dispatchers/webSocketRouteDispatcher.js +4 -5
  90. package/lib/server/disposable.js +41 -0
  91. package/lib/server/dom.js +44 -26
  92. package/lib/server/download.js +3 -2
  93. package/lib/server/electron/electron.js +12 -7
  94. package/lib/server/firefox/ffBrowser.js +9 -19
  95. package/lib/server/firefox/ffInput.js +21 -5
  96. package/lib/server/firefox/ffNetworkManager.js +2 -2
  97. package/lib/server/firefox/ffPage.js +24 -27
  98. package/lib/server/frameSelectors.js +5 -172
  99. package/lib/server/frames.js +234 -687
  100. package/lib/server/har/harRecorder.js +2 -2
  101. package/lib/server/har/harTracer.js +5 -4
  102. package/lib/server/input.js +49 -4
  103. package/lib/server/instrumentation.js +5 -0
  104. package/lib/server/javascript.js +6 -26
  105. package/lib/server/launchApp.js +1 -3
  106. package/lib/server/localUtils.js +6 -6
  107. package/lib/server/network.js +9 -8
  108. package/lib/server/overlay.js +138 -0
  109. package/lib/server/page.js +157 -105
  110. package/lib/server/progress.js +6 -0
  111. package/lib/server/recorder/recorderApp.js +9 -8
  112. package/lib/server/recorder.js +76 -40
  113. package/lib/server/registry/index.js +55 -82
  114. package/lib/server/registry/nativeDeps.js +1 -0
  115. package/lib/server/screencast.js +90 -143
  116. package/lib/server/screenshotter.js +0 -6
  117. package/lib/server/trace/recorder/snapshotter.js +8 -17
  118. package/lib/server/trace/recorder/snapshotterInjected.js +82 -20
  119. package/lib/server/trace/recorder/tracing.js +87 -44
  120. package/lib/server/trace/viewer/traceViewer.js +3 -4
  121. package/lib/server/usKeyboardLayout.js +7 -0
  122. package/lib/server/utils/comparators.js +1 -1
  123. package/lib/server/utils/disposable.js +32 -0
  124. package/lib/server/utils/eventsHelper.js +3 -1
  125. package/lib/server/utils/fileUtils.js +16 -2
  126. package/lib/server/utils/happyEyeballs.js +15 -12
  127. package/lib/server/utils/hostPlatform.js +0 -15
  128. package/lib/server/utils/httpServer.js +5 -3
  129. package/lib/server/utils/network.js +2 -1
  130. package/lib/server/utils/nodePlatform.js +0 -6
  131. package/lib/server/utils/processLauncher.js +6 -5
  132. package/lib/server/utils/zipFile.js +2 -2
  133. package/lib/server/videoRecorder.js +82 -12
  134. package/lib/server/webkit/wkBrowser.js +1 -6
  135. package/lib/server/webkit/wkPage.js +27 -25
  136. package/lib/server/webkit/wkWorkers.js +2 -1
  137. package/lib/serverRegistry.js +156 -0
  138. package/lib/tools/backend/browserBackend.js +79 -0
  139. package/lib/tools/backend/common.js +63 -0
  140. package/lib/tools/backend/config.js +41 -0
  141. package/lib/tools/backend/console.js +66 -0
  142. package/lib/tools/backend/context.js +296 -0
  143. package/lib/tools/backend/cookies.js +152 -0
  144. package/lib/tools/backend/devtools.js +69 -0
  145. package/lib/tools/backend/dialogs.js +59 -0
  146. package/lib/tools/backend/evaluate.js +64 -0
  147. package/lib/tools/backend/files.js +60 -0
  148. package/lib/tools/backend/form.js +64 -0
  149. package/lib/tools/backend/keyboard.js +155 -0
  150. package/lib/tools/backend/logFile.js +95 -0
  151. package/lib/tools/backend/mouse.js +168 -0
  152. package/lib/tools/backend/navigate.js +106 -0
  153. package/lib/tools/backend/network.js +135 -0
  154. package/lib/tools/backend/pdf.js +48 -0
  155. package/lib/tools/backend/response.js +305 -0
  156. package/lib/tools/backend/route.js +140 -0
  157. package/lib/tools/backend/runCode.js +77 -0
  158. package/lib/tools/backend/screenshot.js +88 -0
  159. package/lib/tools/backend/sessionLog.js +74 -0
  160. package/lib/tools/backend/snapshot.js +208 -0
  161. package/lib/tools/backend/storage.js +68 -0
  162. package/lib/tools/backend/tab.js +445 -0
  163. package/lib/tools/backend/tabs.js +67 -0
  164. package/lib/tools/backend/tool.js +47 -0
  165. package/lib/tools/backend/tools.js +102 -0
  166. package/lib/tools/backend/tracing.js +78 -0
  167. package/lib/tools/backend/utils.js +83 -0
  168. package/lib/tools/backend/verify.js +151 -0
  169. package/lib/tools/backend/video.js +98 -0
  170. package/lib/tools/backend/wait.js +63 -0
  171. package/lib/tools/backend/webstorage.js +223 -0
  172. package/lib/tools/cli-client/cli.js +6 -0
  173. package/lib/tools/cli-client/help.json +399 -0
  174. package/lib/tools/cli-client/minimist.js +128 -0
  175. package/lib/tools/cli-client/program.js +350 -0
  176. package/lib/tools/cli-client/registry.js +176 -0
  177. package/lib/tools/cli-client/session.js +289 -0
  178. package/lib/tools/cli-client/skill/SKILL.md +328 -0
  179. package/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
  180. package/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
  181. package/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
  182. package/lib/tools/cli-client/skill/references/running-code.md +231 -0
  183. package/lib/tools/cli-client/skill/references/session-management.md +169 -0
  184. package/lib/tools/cli-client/skill/references/storage-state.md +275 -0
  185. package/lib/tools/cli-client/skill/references/test-generation.md +88 -0
  186. package/lib/tools/cli-client/skill/references/tracing.md +139 -0
  187. package/lib/tools/cli-client/skill/references/video-recording.md +143 -0
  188. package/lib/tools/cli-daemon/command.js +73 -0
  189. package/lib/tools/cli-daemon/commands.js +956 -0
  190. package/lib/tools/cli-daemon/daemon.js +157 -0
  191. package/lib/tools/cli-daemon/helpGenerator.js +177 -0
  192. package/lib/tools/cli-daemon/program.js +129 -0
  193. package/lib/tools/dashboard/appIcon.png +0 -0
  194. package/lib/tools/dashboard/dashboardApp.js +284 -0
  195. package/lib/tools/dashboard/dashboardController.js +296 -0
  196. package/lib/tools/exports.js +60 -0
  197. package/lib/tools/mcp/browserFactory.js +233 -0
  198. package/lib/tools/mcp/cdpRelay.js +352 -0
  199. package/lib/tools/mcp/cli-stub.js +7 -0
  200. package/lib/tools/mcp/config.d.js +16 -0
  201. package/lib/tools/mcp/config.js +446 -0
  202. package/lib/tools/mcp/configIni.js +189 -0
  203. package/lib/tools/mcp/extensionContextFactory.js +55 -0
  204. package/lib/tools/mcp/index.js +62 -0
  205. package/lib/tools/mcp/log.js +35 -0
  206. package/lib/tools/mcp/program.js +107 -0
  207. package/lib/tools/mcp/protocol.js +28 -0
  208. package/lib/tools/mcp/watchdog.js +44 -0
  209. package/lib/tools/trace/SKILL.md +171 -0
  210. package/lib/{server/trace/viewer/traceParser.js → tools/trace/installSkill.js} +15 -39
  211. package/lib/tools/trace/traceActions.js +142 -0
  212. package/lib/tools/trace/traceAttachments.js +69 -0
  213. package/lib/tools/trace/traceCli.js +87 -0
  214. package/lib/tools/trace/traceConsole.js +97 -0
  215. package/lib/tools/trace/traceErrors.js +55 -0
  216. package/lib/tools/trace/traceOpen.js +69 -0
  217. package/lib/tools/trace/traceParser.js +96 -0
  218. package/lib/tools/trace/traceRequests.js +182 -0
  219. package/lib/tools/trace/traceScreenshot.js +68 -0
  220. package/lib/tools/trace/traceSnapshot.js +149 -0
  221. package/lib/tools/trace/traceUtils.js +153 -0
  222. package/lib/tools/utils/connect.js +32 -0
  223. package/lib/tools/utils/mcp/http.js +152 -0
  224. package/lib/tools/utils/mcp/server.js +230 -0
  225. package/lib/tools/utils/mcp/tool.js +47 -0
  226. package/lib/tools/utils/socketConnection.js +108 -0
  227. package/lib/utils/isomorphic/formatUtils.js +64 -0
  228. package/lib/utils/isomorphic/jsonSchema.js +89 -0
  229. package/lib/utils/isomorphic/mimeType.js +7 -2
  230. package/lib/utils/isomorphic/protocolFormatter.js +2 -2
  231. package/lib/utils/isomorphic/protocolMetainfo.js +127 -106
  232. package/lib/utils/isomorphic/stringUtils.js +3 -3
  233. package/lib/utils/isomorphic/timeoutRunner.js +3 -3
  234. package/lib/utils/isomorphic/trace/snapshotRenderer.js +35 -42
  235. package/lib/utils/isomorphic/trace/traceLoader.js +15 -14
  236. package/lib/utils/isomorphic/trace/traceModel.js +3 -2
  237. package/lib/utils/isomorphic/trace/traceModernizer.js +1 -0
  238. package/lib/utils/isomorphic/urlMatch.js +54 -1
  239. package/lib/utils/isomorphic/utilityScriptSerializers.js +11 -0
  240. package/lib/utils.js +6 -2
  241. package/lib/utilsBundle.js +3 -21
  242. package/lib/utilsBundleImpl/index.js +132 -133
  243. package/lib/vite/dashboard/assets/index-BAOybkp8.js +50 -0
  244. package/lib/vite/dashboard/assets/index-CZAYOG76.css +1 -0
  245. package/lib/vite/dashboard/index.html +28 -0
  246. package/lib/vite/htmlReport/index.html +2 -70
  247. package/lib/vite/htmlReport/report.css +1 -0
  248. package/lib/vite/htmlReport/report.js +72 -0
  249. package/lib/vite/recorder/assets/{codeMirrorModule-CFUTFUO7.js → codeMirrorModule-C8KMvO9L.js} +20 -20
  250. package/lib/vite/recorder/assets/index-CqAYX1I3.js +193 -0
  251. package/lib/vite/recorder/index.html +1 -1
  252. package/lib/vite/traceViewer/assets/{codeMirrorModule-BVA4h_ZY.js → codeMirrorModule-DS0FLvoc.js} +20 -20
  253. package/lib/vite/traceViewer/assets/defaultSettingsView-GTWI-W_B.js +262 -0
  254. package/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
  255. package/lib/vite/traceViewer/{index.BtyWtaE-.js → index.C5466mMT.js} +1 -1
  256. package/lib/vite/traceViewer/{index.BVu7tZDe.css → index.CzXZzn5A.css} +1 -1
  257. package/lib/vite/traceViewer/index.html +4 -4
  258. package/lib/vite/traceViewer/sw.bundle.js +4 -4
  259. package/lib/vite/traceViewer/uiMode.Vipi55dB.js +6 -0
  260. package/lib/vite/traceViewer/uiMode.html +3 -3
  261. package/lib/zipBundleImpl.js +2 -2
  262. package/lib/zodBundle.js +39 -0
  263. package/lib/zodBundleImpl.js +40 -0
  264. package/package.json +6 -1
  265. package/types/protocol.d.ts +947 -51
  266. package/types/types.d.ts +854 -74
  267. package/lib/client/pageAgent.js +0 -64
  268. package/lib/mcpBundleImpl/index.js +0 -147
  269. package/lib/server/agent/actionRunner.js +0 -335
  270. package/lib/server/agent/actions.js +0 -128
  271. package/lib/server/agent/codegen.js +0 -111
  272. package/lib/server/agent/context.js +0 -150
  273. package/lib/server/agent/expectTools.js +0 -156
  274. package/lib/server/agent/pageAgent.js +0 -204
  275. package/lib/server/agent/performTools.js +0 -262
  276. package/lib/server/agent/tool.js +0 -109
  277. package/lib/server/dispatchers/pageAgentDispatcher.js +0 -96
  278. package/lib/server/pageBinding.js +0 -87
  279. package/lib/utils/isomorphic/oldUtilityScriptSerializers.js +0 -248
  280. package/lib/vite/recorder/assets/index-CVkBxsGf.js +0 -193
  281. package/lib/vite/traceViewer/assets/defaultSettingsView-CjfmcdOz.js +0 -266
  282. package/lib/vite/traceViewer/defaultSettingsView.7ch9cixO.css +0 -1
  283. package/lib/vite/traceViewer/uiMode.fyrXARf2.js +0 -5
  284. /package/lib/{server/utils → utils/isomorphic}/imageUtils.js +0 -0
  285. /package/lib/utils/isomorphic/{traceUtils.js → trace/traceUtils.js} +0 -0
@@ -31,7 +31,6 @@ __export(crPage_exports, {
31
31
  CRPage: () => CRPage
32
32
  });
33
33
  module.exports = __toCommonJS(crPage_exports);
34
- var import_crypto = __toESM(require("crypto"));
35
34
  var import_assert = require("../../utils/isomorphic/assert");
36
35
  var import_eventsHelper = require("../utils/eventsHelper");
37
36
  var import_stackTrace = require("../../utils/isomorphic/stackTrace");
@@ -41,6 +40,7 @@ var frames = __toESM(require("../frames"));
41
40
  var import_helper = require("../helper");
42
41
  var network = __toESM(require("../network"));
43
42
  var import_page = require("../page");
43
+ var import_browserContext = require("../browserContext");
44
44
  var import_crCoverage = require("./crCoverage");
45
45
  var import_crDragDrop = require("./crDragDrop");
46
46
  var import_crExecutionContext = require("./crExecutionContext");
@@ -51,6 +51,7 @@ var import_crProtocolHelper = require("./crProtocolHelper");
51
51
  var import_defaultFontFamilies = require("./defaultFontFamilies");
52
52
  var import_errors = require("../errors");
53
53
  var import_protocolError = require("../protocolError");
54
+ var import_videoRecorder = require("../videoRecorder");
54
55
  class CRPage {
55
56
  constructor(client, targetId, browserContext, opener, bits) {
56
57
  this._sessions = /* @__PURE__ */ new Map();
@@ -75,8 +76,7 @@ class CRPage {
75
76
  this.updateOffline();
76
77
  this.updateExtraHTTPHeaders();
77
78
  this.updateHttpCredentials();
78
- this._networkManager.setRequestInterception(true);
79
- this.initScriptTag = import_crypto.default.randomBytes(20).toString("hex");
79
+ this.updateRequestInterception();
80
80
  this._mainFrameSession = new FrameSession(this, client, targetId, null);
81
81
  this._sessions.set(targetId, this._mainFrameSession);
82
82
  if (opener && !browserContext._options.noDefaultViewport) {
@@ -110,7 +110,7 @@ class CRPage {
110
110
  while (!this._sessions.has(frame._id)) {
111
111
  const parent = frame.parentFrame();
112
112
  if (!parent)
113
- throw new Error(`Frame was detached`);
113
+ throw new Error(`Frame has been detached.`);
114
114
  frame = parent;
115
115
  }
116
116
  return this._sessions.get(frame._id);
@@ -185,7 +185,6 @@ class CRPage {
185
185
  await this._mainFrameSession._client.send("HeapProfiler.collectGarbage");
186
186
  }
187
187
  async addInitScript(initScript, world = "main") {
188
- this._page.initScripts.push(initScript);
189
188
  await this._forAllFrameSessions((frame) => frame._evaluateOnNewDocument(initScript, world));
190
189
  }
191
190
  async exposePlaywrightBinding() {
@@ -204,7 +203,7 @@ class CRPage {
204
203
  await this._mainFrameSession._client.send("Emulation.setDefaultBackgroundColorOverride", { color });
205
204
  }
206
205
  async takeScreenshot(progress, format, documentRect, viewportRect, quality, fitsViewport, scale) {
207
- const { visualViewport } = await progress.race(this._mainFrameSession._client.send("Page.getLayoutMetrics"));
206
+ const { visualViewport, contentSize, cssContentSize } = await progress.race(this._mainFrameSession._client.send("Page.getLayoutMetrics"));
208
207
  if (!documentRect) {
209
208
  documentRect = {
210
209
  x: visualViewport.pageX + viewportRect.x,
@@ -217,7 +216,7 @@ class CRPage {
217
216
  }
218
217
  const clip = { ...documentRect, scale: viewportRect ? visualViewport.scale : 1 };
219
218
  if (scale === "css") {
220
- const deviceScaleFactor = this._browserContext._options.deviceScaleFactor || 1;
219
+ const deviceScaleFactor = this._mainFrameSession._metricsOverride?.deviceScaleFactor || contentSize.width / cssContentSize.width || 1;
221
220
  clip.scale /= deviceScaleFactor;
222
221
  }
223
222
  const result = await progress.race(this._mainFrameSession._client.send("Page.captureScreenshot", { format, quality, clip, captureBeyondViewport: !fitsViewport }));
@@ -235,16 +234,18 @@ class CRPage {
235
234
  async scrollRectIntoViewIfNeeded(handle, rect) {
236
235
  return this._sessionForHandle(handle)._scrollRectIntoViewIfNeeded(handle, rect);
237
236
  }
238
- async startScreencast(options) {
239
- await this._mainFrameSession._client.send("Page.startScreencast", {
237
+ startScreencast(options) {
238
+ this._mainFrameSession._client.send("Page.startScreencast", {
240
239
  format: "jpeg",
241
240
  quality: options.quality,
242
241
  maxWidth: options.width,
243
242
  maxHeight: options.height
243
+ }).catch(() => {
244
244
  });
245
245
  }
246
- async stopScreencast() {
247
- await this._mainFrameSession._client._sendMayFail("Page.stopScreencast");
246
+ stopScreencast() {
247
+ this._mainFrameSession._client._sendMayFail("Page.stopScreencast").catch(() => {
248
+ });
248
249
  }
249
250
  rafCountForStablePosition() {
250
251
  return 1;
@@ -296,13 +297,8 @@ class CRPage {
296
297
  shouldToggleStyleSheetToSyncAnimations() {
297
298
  return false;
298
299
  }
299
- async exposeBinding(binding) {
300
- await this._forAllFrameSessions((frame) => frame._initBinding(binding));
301
- await Promise.all(this._page.frames().map((frame) => frame.evaluateExpression(binding.source).catch((e) => {
302
- })));
303
- }
304
- async removeExposedBindings() {
305
- await this._forAllFrameSessions((frame) => frame._removeExposedBindings());
300
+ async setDockTile(image) {
301
+ await this._mainFrameSession._client.send("Browser.setDockTile", { image: image.toString("base64") });
306
302
  }
307
303
  }
308
304
  class FrameSession {
@@ -319,10 +315,6 @@ class FrameSession {
319
315
  this._swappedIn = false;
320
316
  this._workerSessions = /* @__PURE__ */ new Map();
321
317
  this._initScriptIds = /* @__PURE__ */ new Map();
322
- this._exposedBindingNames = [];
323
- this._evaluateOnNewDocumentScripts = [];
324
- this._parsedExecutionContextIds = [];
325
- this._exposedBindingScripts = [];
326
318
  this._client = client;
327
319
  this._crPage = crPage;
328
320
  this._page = crPage._page;
@@ -368,37 +360,36 @@ class FrameSession {
368
360
  ]);
369
361
  }
370
362
  async _initialize(hasUIWindow) {
371
- const pageEnablePromise = this._client.send("Page.enable");
372
363
  if (!this._page.isStorageStatePage && hasUIWindow && !this._crPage._browserContext._browser.isClank() && !this._crPage._browserContext._options.noDefaultViewport) {
373
364
  const { windowId } = await this._client.send("Browser.getWindowForTarget");
374
365
  this._windowId = windowId;
375
366
  }
376
- let videoOptions;
377
- if (!this._page.isStorageStatePage && this._isMainFrame() && hasUIWindow)
378
- videoOptions = this._crPage._page.screencast.launchVideoRecorder();
367
+ if (this._isMainFrame() && hasUIWindow && !this._page.isStorageStatePage)
368
+ (0, import_videoRecorder.startAutomaticVideoRecording)(this._crPage._page);
379
369
  let lifecycleEventsEnabled;
380
370
  if (!this._isMainFrame())
381
371
  this._addRendererListeners();
382
- let bufferedDialogEvents = this._isMainFrame() ? [] : void 0;
383
- if (bufferedDialogEvents)
384
- this._eventListeners.push(import_eventsHelper.eventsHelper.addEventListener(this._client, "Page.javascriptDialogOpening", (event) => bufferedDialogEvents ? bufferedDialogEvents.push(event) : void 0));
385
372
  this._addBrowserListeners();
386
373
  this._bufferedAttachedToTargetEvents = [];
387
374
  const promises = [
388
- pageEnablePromise,
375
+ this._client.send("Page.enable"),
389
376
  this._client.send("Page.getFrameTree").then(({ frameTree }) => {
390
377
  if (this._isMainFrame()) {
391
378
  this._handleFrameTree(frameTree);
392
379
  this._addRendererListeners();
393
- const pendingDialogEvents = bufferedDialogEvents || [];
394
- bufferedDialogEvents = void 0;
395
- for (const event of pendingDialogEvents)
396
- this._onDialog(event);
397
380
  }
398
381
  const attachedToTargetEvents = this._bufferedAttachedToTargetEvents || [];
399
382
  this._bufferedAttachedToTargetEvents = void 0;
400
383
  for (const event of attachedToTargetEvents)
401
384
  this._onAttachedToTarget(event);
385
+ const localFrames = this._isMainFrame() ? this._page.frames() : [this._page.frameManager.frame(this._targetId)];
386
+ for (const frame of localFrames) {
387
+ this._client._sendMayFail("Page.createIsolatedWorld", {
388
+ frameId: frame._id,
389
+ grantUniveralAccess: true,
390
+ worldName: this._crPage.utilityWorldName
391
+ });
392
+ }
402
393
  const isInitialEmptyPage = this._isMainFrame() && this._page.mainFrame().url() === ":";
403
394
  if (isInitialEmptyPage) {
404
395
  lifecycleEventsEnabled.catch((e) => {
@@ -406,26 +397,13 @@ class FrameSession {
406
397
  this._eventListeners.push(import_eventsHelper.eventsHelper.addEventListener(this._client, "Page.lifecycleEvent", (event) => this._onLifecycleEvent(event)));
407
398
  });
408
399
  } else {
409
- const localFrames = this._isMainFrame() ? this._page.frames() : [this._page.frameManager.frame(this._targetId)];
410
- for (const frame of localFrames) {
411
- this._page.frameManager.frame(frame._id)._context("utility").catch(() => {
412
- });
413
- for (const binding of this._crPage._browserContext._pageBindings.values())
414
- frame.evaluateExpression(binding.source).catch((e) => {
415
- });
416
- for (const source of this._crPage._browserContext.initScripts)
417
- frame.evaluateExpression(source.source).catch((e) => {
418
- });
419
- for (const source of this._crPage._page.initScripts)
420
- frame.evaluateExpression(source.source).catch((e) => {
421
- });
422
- }
423
400
  this._firstNonInitialNavigationCommittedFulfill();
424
401
  this._eventListeners.push(import_eventsHelper.eventsHelper.addEventListener(this._client, "Page.lifecycleEvent", (event) => this._onLifecycleEvent(event)));
425
402
  }
426
403
  }),
427
404
  this._client.send("Log.enable", {}),
428
405
  lifecycleEventsEnabled = this._client.send("Page.setLifecycleEventsEnabled", { enabled: true }),
406
+ this._client.send("Runtime.enable", {}),
429
407
  this._client.send("Page.addScriptToEvaluateOnNewDocument", {
430
408
  source: "",
431
409
  worldName: this._crPage.utilityWorldName
@@ -436,7 +414,7 @@ class FrameSession {
436
414
  if (!this._page.isStorageStatePage) {
437
415
  if (this._crPage._browserContext.needsPlaywrightBinding())
438
416
  promises.push(this.exposePlaywrightBinding());
439
- if (this._isMainFrame() && !this._crPage._browserContext._options.focusControl)
417
+ if (this._isMainFrame())
440
418
  promises.push(this._client.send("Emulation.setFocusEmulationEnabled", { enabled: true }));
441
419
  const options = this._crPage._browserContext._options;
442
420
  if (options.bypassCSP)
@@ -460,11 +438,13 @@ class FrameSession {
460
438
  promises.push(this._updateGeolocation(true));
461
439
  promises.push(this._updateEmulateMedia());
462
440
  promises.push(this._updateFileChooserInterception(true));
463
- for (const binding of this._crPage._page.allBindings()) promises.push(this._initBinding(binding));
464
- for (const initScript of this._crPage._browserContext.initScripts) promises.push(this._evaluateOnNewDocument(initScript, "main"));
465
- for (const initScript of this._crPage._page.initScripts) promises.push(this._evaluateOnNewDocument(initScript, "main"));
466
- if (videoOptions)
467
- promises.push(this._crPage._page.screencast.startVideoRecording(videoOptions));
441
+ for (const initScript of this._crPage._page.allInitScripts())
442
+ promises.push(this._evaluateOnNewDocument(
443
+ initScript,
444
+ "main",
445
+ true
446
+ /* runImmediately */
447
+ ));
468
448
  }
469
449
  promises.push(this._client.send("Runtime.runIfWaitingForDebugger"));
470
450
  promises.push(this._firstNonInitialNavigationCommittedPromise);
@@ -489,32 +469,13 @@ class FrameSession {
489
469
  throw new frames.NavigationAbortedError(response.loaderId, `${response.errorText} at ${url}`);
490
470
  return { newDocumentId: response.loaderId };
491
471
  }
492
- async _onLifecycleEvent(event) {
472
+ _onLifecycleEvent(event) {
493
473
  if (this._eventBelongsToStaleFrame(event.frameId))
494
474
  return;
495
475
  if (event.name === "load")
496
476
  this._page.frameManager.frameLifecycleEvent(event.frameId, "load");
497
477
  else if (event.name === "DOMContentLoaded")
498
478
  this._page.frameManager.frameLifecycleEvent(event.frameId, "domcontentloaded");
499
- if (event.name !== "load") {
500
- await this._client._sendMayFail("Runtime.runIfWaitingForDebugger");
501
- return;
502
- }
503
- await this._client._sendMayFail("Runtime.runIfWaitingForDebugger");
504
- var document = await this._client._sendMayFail("DOM.getDocument");
505
- if (!document) return;
506
- var query = await this._client._sendMayFail("DOM.querySelectorAll", {
507
- nodeId: document.root.nodeId,
508
- selector: "[class=" + this._crPage.initScriptTag + "]"
509
- });
510
- if (!query) return;
511
- for (const nodeId of query.nodeIds) await this._client._sendMayFail("DOM.removeNode", { nodeId });
512
- await this._client._sendMayFail("Runtime.runIfWaitingForDebugger");
513
- try {
514
- await this._page.frameManager.frame(this._targetId)._context("utility");
515
- } catch {
516
- }
517
- ;
518
479
  }
519
480
  _handleFrameTree(frameTree) {
520
481
  this._onFrameAttached(frameTree.frame.id, frameTree.frame.parentId || null);
@@ -545,35 +506,12 @@ class FrameSession {
545
506
  }
546
507
  this._page.frameManager.frameAttached(frameId, parentFrameId);
547
508
  }
548
- async _onFrameNavigated(framePayload, initial) {
509
+ _onFrameNavigated(framePayload, initial) {
549
510
  if (this._eventBelongsToStaleFrame(framePayload.id))
550
511
  return;
551
512
  this._page.frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url + (framePayload.urlFragment || ""), framePayload.name || "", framePayload.loaderId, initial);
552
513
  if (!initial)
553
514
  this._firstNonInitialNavigationCommittedFulfill();
554
- await this._client._sendMayFail("Runtime.runIfWaitingForDebugger");
555
- if (!initial) {
556
- try {
557
- await this._page.frameManager.frame(this._targetId)._context("utility");
558
- } catch {
559
- }
560
- ;
561
- return;
562
- }
563
- var document = await this._client._sendMayFail("DOM.getDocument");
564
- if (!document) return;
565
- var query = await this._client._sendMayFail("DOM.querySelectorAll", {
566
- nodeId: document.root.nodeId,
567
- selector: "[class=" + this._crPage.initScriptTag + "]"
568
- });
569
- if (!query) return;
570
- for (const nodeId of query.nodeIds) await this._client._sendMayFail("DOM.removeNode", { nodeId });
571
- await this._client._sendMayFail("Runtime.runIfWaitingForDebugger");
572
- try {
573
- await this._page.frameManager.frame(this._targetId)._context("utility");
574
- } catch {
575
- }
576
- ;
577
515
  }
578
516
  _onFrameRequestedNavigation(payload) {
579
517
  if (this._eventBelongsToStaleFrame(payload.frameId))
@@ -599,25 +537,19 @@ class FrameSession {
599
537
  this._page.frameManager.frameDetached(frameId);
600
538
  }
601
539
  _onExecutionContextCreated(contextPayload) {
602
- for (const name of this._exposedBindingNames)
603
- this._client._sendMayFail("Runtime.addBinding", { name, executionContextId: contextPayload.id });
604
540
  const frame = contextPayload.auxData ? this._page.frameManager.frame(contextPayload.auxData.frameId) : null;
605
- if (contextPayload.auxData.type == "worker") throw new Error("ExecutionContext is worker");
606
541
  if (!frame || this._eventBelongsToStaleFrame(frame._id))
607
542
  return;
608
543
  const delegate = new import_crExecutionContext.CRExecutionContext(this._client, contextPayload);
609
- let worldName = contextPayload.name;
544
+ let worldName = null;
545
+ if (contextPayload.auxData && !!contextPayload.auxData.isDefault)
546
+ worldName = "main";
547
+ else if (contextPayload.name === this._crPage.utilityWorldName)
548
+ worldName = "utility";
610
549
  const context = new dom.FrameExecutionContext(delegate, frame, worldName);
611
- if (worldName && (worldName === "main" || worldName === "utility"))
550
+ if (worldName)
612
551
  frame._contextCreated(worldName, context);
613
552
  this._contextIdToContext.set(contextPayload.id, context);
614
- for (const source of this._exposedBindingScripts) {
615
- this._client._sendMayFail("Runtime.evaluate", {
616
- expression: source,
617
- contextId: contextPayload.id,
618
- awaitPromise: true
619
- });
620
- }
621
553
  }
622
554
  _onExecutionContextDestroyed(executionContextId) {
623
555
  const context = this._contextIdToContext.get(executionContextId);
@@ -630,7 +562,7 @@ class FrameSession {
630
562
  for (const contextId of Array.from(this._contextIdToContext.keys()))
631
563
  this._onExecutionContextDestroyed(contextId);
632
564
  }
633
- async _onAttachedToTarget(event) {
565
+ _onAttachedToTarget(event) {
634
566
  if (this._bufferedAttachedToTargetEvents) {
635
567
  this._bufferedAttachedToTargetEvents.push(event);
636
568
  return;
@@ -666,19 +598,11 @@ class FrameSession {
666
598
  session.once("Runtime.executionContextCreated", async (event2) => {
667
599
  worker.createExecutionContext(new import_crExecutionContext.CRExecutionContext(session, event2.context));
668
600
  });
669
- var globalThis = await session._sendMayFail("Runtime.evaluate", {
670
- expression: "globalThis",
671
- serializationOptions: { serialization: "idOnly" }
672
- });
673
- if (globalThis && globalThis.result) {
674
- var globalThisObjId = globalThis.result.objectId;
675
- var executionContextId = parseInt(globalThisObjId.split(".")[1], 10);
676
- worker.createExecutionContext(new import_crExecutionContext.CRExecutionContext(session, { id: executionContextId }));
677
- }
678
601
  if (this._crPage._browserContext._browser.majorVersion() >= 143)
679
602
  session.on("Inspector.workerScriptLoaded", () => worker.workerScriptLoaded());
680
603
  else
681
604
  worker.workerScriptLoaded();
605
+ session._sendMayFail("Runtime.enable");
682
606
  this._crPage._networkManager.addSession(session, this._page.frameManager.frame(this._targetId) ?? void 0).catch(() => {
683
607
  });
684
608
  session._sendMayFail("Runtime.runIfWaitingForDebugger");
@@ -687,7 +611,7 @@ class FrameSession {
687
611
  session.on("Target.detachedFromTarget", (event2) => this._onDetachedFromTarget(event2));
688
612
  session.on("Runtime.consoleAPICalled", (event2) => {
689
613
  const args = event2.args.map((o) => (0, import_crExecutionContext.createHandle)(worker.existingExecutionContext, o));
690
- this._page.addConsoleMessage(worker, event2.type, args, (0, import_crProtocolHelper.toConsoleMessageLocation)(event2.stackTrace));
614
+ this._page.addConsoleMessage(worker, event2.type, args, (0, import_crProtocolHelper.toConsoleMessageLocation)(event2.stackTrace), void 0, event2.timestamp);
691
615
  });
692
616
  session.on("Runtime.exceptionThrown", (exception) => this._page.addPageError((0, import_crProtocolHelper.exceptionToError)(exception.exceptionDetails)));
693
617
  }
@@ -722,7 +646,7 @@ class FrameSession {
722
646
  if (!context)
723
647
  return;
724
648
  const values = event.args.map((arg) => (0, import_crExecutionContext.createHandle)(context, arg));
725
- this._page.addConsoleMessage(null, event.type, values, (0, import_crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
649
+ this._page.addConsoleMessage(null, event.type, values, (0, import_crProtocolHelper.toConsoleMessageLocation)(event.stackTrace), void 0, event.timestamp);
726
650
  }
727
651
  async _onBindingCalled(event) {
728
652
  const pageOrError = await this._crPage._page.waitForInitializedOrError();
@@ -764,7 +688,7 @@ class FrameSession {
764
688
  lineNumber: lineNumber || 0,
765
689
  columnNumber: 0
766
690
  };
767
- this._page.addConsoleMessage(null, level, [], location, text);
691
+ this._page.addConsoleMessage(null, level, [], location, text, event.entry.timestamp);
768
692
  }
769
693
  }
770
694
  async _onFileChooserOpened(event) {
@@ -788,15 +712,14 @@ class FrameSession {
788
712
  }
789
713
  }
790
714
  _onScreencastFrame(payload) {
791
- this._page.screencast.throttleFrameAck(() => {
792
- this._client._sendMayFail("Page.screencastFrameAck", { sessionId: payload.sessionId });
793
- });
794
715
  const buffer = Buffer.from(payload.data, "base64");
795
- this._page.emit(import_page.Page.Events.ScreencastFrame, {
716
+ this._page.screencast.onScreencastFrame({
796
717
  buffer,
797
718
  frameSwapWallTime: payload.metadata.timestamp ? payload.metadata.timestamp * 1e3 : Date.now(),
798
- width: payload.metadata.deviceWidth,
799
- height: payload.metadata.deviceHeight
719
+ viewportWidth: payload.metadata.deviceWidth,
720
+ viewportHeight: payload.metadata.deviceHeight
721
+ }, () => {
722
+ this._client._sendMayFail("Page.screencastFrameAck", { sessionId: payload.sessionId });
800
723
  });
801
724
  }
802
725
  async _updateGeolocation(initial) {
@@ -880,10 +803,12 @@ class FrameSession {
880
803
  }
881
804
  async _updateUserAgent() {
882
805
  const options = this._crPage._browserContext._options;
806
+ const { navigatorPlatform, userAgentMetadata } = (0, import_browserContext.calculateUserAgentEmulation)(options);
883
807
  await this._client.send("Emulation.setUserAgentOverride", {
884
808
  userAgent: options.userAgent || "",
885
809
  acceptLanguage: options.locale,
886
- userAgentMetadata: calculateUserAgentMetadata(options)
810
+ platform: navigatorPlatform,
811
+ userAgentMetadata
887
812
  });
888
813
  }
889
814
  async _setDefaultFontFamilies(session) {
@@ -898,10 +823,20 @@ class FrameSession {
898
823
  });
899
824
  }
900
825
  async _evaluateOnNewDocument(initScript, world, runImmediately) {
901
- this._evaluateOnNewDocumentScripts.push(initScript);
826
+ const worldName = world === "utility" ? this._crPage.utilityWorldName : void 0;
827
+ const { identifier } = await this._client.send("Page.addScriptToEvaluateOnNewDocument", { source: initScript.source, worldName, runImmediately });
828
+ this._initScriptIds.set(initScript, identifier);
902
829
  }
903
830
  async _removeEvaluatesOnNewDocument(initScripts) {
904
- this._evaluateOnNewDocumentScripts = [];
831
+ const ids = [];
832
+ for (const script of initScripts) {
833
+ const id = this._initScriptIds.get(script);
834
+ if (id)
835
+ ids.push(id);
836
+ this._initScriptIds.delete(script);
837
+ }
838
+ await Promise.all(ids.map((identifier) => this._client.send("Page.removeScriptToEvaluateOnNewDocument", { identifier }).catch(() => {
839
+ })));
905
840
  }
906
841
  async exposePlaywrightBinding() {
907
842
  await this._client.send("Runtime.addBinding", { name: import_page.PageBinding.kBindingName });
@@ -1001,30 +936,6 @@ class FrameSession {
1001
936
  throw new Error(dom.kUnableToAdoptErrorMessage);
1002
937
  return (0, import_crExecutionContext.createHandle)(to, result.object).asElement();
1003
938
  }
1004
- async _initBinding(binding = import_page.PageBinding) {
1005
- this._exposedBindingNames.push(binding.name);
1006
- this._exposedBindingScripts.push(binding.source);
1007
- const contextIds = Array.from(this._contextIdToContext.keys());
1008
- await Promise.all([
1009
- this._client._sendMayFail("Runtime.addBinding", { name: binding.name }),
1010
- ...contextIds.map((executionContextId) => this._client._sendMayFail("Runtime.addBinding", { name: binding.name, executionContextId }))
1011
- ]);
1012
- for (const contextId of contextIds) {
1013
- this._client._sendMayFail("Runtime.evaluate", {
1014
- expression: binding.source,
1015
- contextId,
1016
- awaitPromise: true
1017
- });
1018
- }
1019
- }
1020
- async _removeExposedBindings() {
1021
- const toRetain = [];
1022
- const toRemove = [];
1023
- for (const name of this._exposedBindingNames)
1024
- (name.startsWith("__pw_") ? toRetain : toRemove).push(name);
1025
- this._exposedBindingNames = toRetain;
1026
- await Promise.all(toRemove.map((name) => this._client.send("Runtime.removeBinding", { name })));
1027
- }
1028
939
  }
1029
940
  async function emulateLocale(session, locale) {
1030
941
  try {
@@ -1046,49 +957,6 @@ async function emulateTimezone(session, timezoneId) {
1046
957
  throw exception;
1047
958
  }
1048
959
  }
1049
- function calculateUserAgentMetadata(options) {
1050
- const ua = options.userAgent;
1051
- if (!ua)
1052
- return void 0;
1053
- const metadata = {
1054
- mobile: !!options.isMobile,
1055
- model: "",
1056
- architecture: "x86",
1057
- platform: "Windows",
1058
- platformVersion: ""
1059
- };
1060
- const androidMatch = ua.match(/Android (\d+(\.\d+)?(\.\d+)?)/);
1061
- const iPhoneMatch = ua.match(/iPhone OS (\d+(_\d+)?)/);
1062
- const iPadMatch = ua.match(/iPad; CPU OS (\d+(_\d+)?)/);
1063
- const macOSMatch = ua.match(/Mac OS X (\d+(_\d+)?(_\d+)?)/);
1064
- const windowsMatch = ua.match(/Windows\D+(\d+(\.\d+)?(\.\d+)?)/);
1065
- if (androidMatch) {
1066
- metadata.platform = "Android";
1067
- metadata.platformVersion = androidMatch[1];
1068
- metadata.architecture = "arm";
1069
- } else if (iPhoneMatch) {
1070
- metadata.platform = "iOS";
1071
- metadata.platformVersion = iPhoneMatch[1];
1072
- metadata.architecture = "arm";
1073
- } else if (iPadMatch) {
1074
- metadata.platform = "iOS";
1075
- metadata.platformVersion = iPadMatch[1];
1076
- metadata.architecture = "arm";
1077
- } else if (macOSMatch) {
1078
- metadata.platform = "macOS";
1079
- metadata.platformVersion = macOSMatch[1];
1080
- if (!ua.includes("Intel"))
1081
- metadata.architecture = "arm";
1082
- } else if (windowsMatch) {
1083
- metadata.platform = "Windows";
1084
- metadata.platformVersion = windowsMatch[1];
1085
- } else if (ua.toLowerCase().includes("linux")) {
1086
- metadata.platform = "Linux";
1087
- }
1088
- if (ua.includes("ARM"))
1089
- metadata.architecture = "arm";
1090
- return metadata;
1091
- }
1092
960
  // Annotate the CommonJS export names for ESM import in node:
1093
961
  0 && (module.exports = {
1094
962
  CRPage
@@ -45,13 +45,14 @@ class CRServiceWorker extends import_page.Worker {
45
45
  this.browserContext = browserContext;
46
46
  if (!process.env.PLAYWRIGHT_DISABLE_SERVICE_WORKER_NETWORK)
47
47
  this._networkManager = new import_crNetworkManager.CRNetworkManager(null, this);
48
- session.once("Runtime.executionContextCreated", (event) => {
48
+ session.on("Inspector.targetCrashed", () => this._prepareContextForRestart());
49
+ session.on("Runtime.executionContextCreated", (event) => {
49
50
  this.createExecutionContext(new import_crExecutionContext.CRExecutionContext(session, event.context));
51
+ if (this.browserContext._browser.majorVersion() < 143)
52
+ this.workerScriptLoaded();
50
53
  });
51
54
  if (this.browserContext._browser.majorVersion() >= 143)
52
55
  session.on("Inspector.workerScriptLoaded", () => this.workerScriptLoaded());
53
- else
54
- this.workerScriptLoaded();
55
56
  if (this._networkManager && this._isNetworkInspectionEnabled()) {
56
57
  this.updateRequestInterception();
57
58
  this.updateExtraHTTPHeaders();
@@ -69,24 +70,16 @@ class CRServiceWorker extends import_page.Worker {
69
70
  if (!this.existingExecutionContext || process.env.PLAYWRIGHT_DISABLE_SERVICE_WORKER_CONSOLE)
70
71
  return;
71
72
  const args = event.args.map((o) => (0, import_crExecutionContext.createHandle)(this.existingExecutionContext, o));
72
- const message = new import_console.ConsoleMessage(null, this, event.type, void 0, args, (0, import_crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
73
+ const message = new import_console.ConsoleMessage(null, this, event.type, void 0, args, (0, import_crProtocolHelper.toConsoleMessageLocation)(event.stackTrace), event.timestamp);
73
74
  this.browserContext.emit(import_browserContext.BrowserContext.Events.Console, message);
74
75
  });
76
+ session.send("Runtime.enable", {}).catch((e) => {
77
+ });
75
78
  session.send("Runtime.runIfWaitingForDebugger").catch((e) => {
76
79
  });
77
80
  session.on("Inspector.targetReloadedAfterCrash", () => {
78
81
  session._sendMayFail("Runtime.runIfWaitingForDebugger", {});
79
82
  });
80
- session._sendMayFail("Runtime.evaluate", {
81
- expression: "globalThis",
82
- serializationOptions: { serialization: "idOnly" }
83
- }).then((globalThis) => {
84
- if (globalThis && globalThis.result) {
85
- var globalThisObjId = globalThis.result.objectId;
86
- var executionContextId = parseInt(globalThisObjId.split(".")[1], 10);
87
- this.createExecutionContext(new import_crExecutionContext.CRExecutionContext(session, { id: executionContextId }));
88
- }
89
- });
90
83
  }
91
84
  didClose() {
92
85
  this._networkManager?.removeSession(this._session);