@treegress.com/treegress-browser-core 1.59.0-treegress.3

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 (439) hide show
  1. package/README.md +60 -0
  2. package/ThirdPartyNotices.txt +3759 -0
  3. package/bin/install_media_pack.ps1 +5 -0
  4. package/bin/install_webkit_wsl.ps1 +33 -0
  5. package/bin/reinstall_chrome_beta_linux.sh +42 -0
  6. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  7. package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  8. package/bin/reinstall_chrome_stable_linux.sh +42 -0
  9. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  10. package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  11. package/bin/reinstall_msedge_beta_linux.sh +48 -0
  12. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  13. package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  14. package/bin/reinstall_msedge_dev_linux.sh +48 -0
  15. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  16. package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  17. package/bin/reinstall_msedge_stable_linux.sh +48 -0
  18. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  19. package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  20. package/browsers.json +81 -0
  21. package/cli.js +18 -0
  22. package/index.d.ts +17 -0
  23. package/index.js +32 -0
  24. package/index.mjs +28 -0
  25. package/lib/androidServerImpl.js +65 -0
  26. package/lib/browserServerImpl.js +120 -0
  27. package/lib/cli/client/cli.js +6 -0
  28. package/lib/cli/client/program.js +375 -0
  29. package/lib/cli/client/registry.js +171 -0
  30. package/lib/cli/client/session.js +282 -0
  31. package/lib/cli/client/socketConnection.js +108 -0
  32. package/lib/cli/daemon/command.js +73 -0
  33. package/lib/cli/daemon/commands.js +879 -0
  34. package/lib/cli/daemon/daemon.js +179 -0
  35. package/lib/cli/daemon/helpGenerator.js +173 -0
  36. package/lib/cli/daemon/program.js +123 -0
  37. package/lib/cli/driver.js +98 -0
  38. package/lib/cli/program.js +598 -0
  39. package/lib/cli/programWithTestStub.js +74 -0
  40. package/lib/client/android.js +361 -0
  41. package/lib/client/api.js +137 -0
  42. package/lib/client/artifact.js +79 -0
  43. package/lib/client/browser.js +169 -0
  44. package/lib/client/browserContext.js +590 -0
  45. package/lib/client/browserType.js +153 -0
  46. package/lib/client/cdpSession.js +55 -0
  47. package/lib/client/channelOwner.js +194 -0
  48. package/lib/client/clientHelper.js +64 -0
  49. package/lib/client/clientInstrumentation.js +55 -0
  50. package/lib/client/clientStackTrace.js +69 -0
  51. package/lib/client/clock.js +68 -0
  52. package/lib/client/connect.js +152 -0
  53. package/lib/client/connection.js +322 -0
  54. package/lib/client/consoleMessage.js +61 -0
  55. package/lib/client/coverage.js +44 -0
  56. package/lib/client/dialog.js +56 -0
  57. package/lib/client/disposable.js +76 -0
  58. package/lib/client/download.js +62 -0
  59. package/lib/client/electron.js +138 -0
  60. package/lib/client/elementHandle.js +284 -0
  61. package/lib/client/errors.js +77 -0
  62. package/lib/client/eventEmitter.js +327 -0
  63. package/lib/client/events.js +103 -0
  64. package/lib/client/fetch.js +368 -0
  65. package/lib/client/fileChooser.js +46 -0
  66. package/lib/client/fileUtils.js +34 -0
  67. package/lib/client/frame.js +409 -0
  68. package/lib/client/harRouter.js +99 -0
  69. package/lib/client/input.js +84 -0
  70. package/lib/client/inspector.js +48 -0
  71. package/lib/client/jsHandle.js +109 -0
  72. package/lib/client/jsonPipe.js +39 -0
  73. package/lib/client/localUtils.js +60 -0
  74. package/lib/client/locator.js +373 -0
  75. package/lib/client/network.js +750 -0
  76. package/lib/client/page.js +750 -0
  77. package/lib/client/pageAgent.js +64 -0
  78. package/lib/client/platform.js +77 -0
  79. package/lib/client/playwright.js +71 -0
  80. package/lib/client/selectors.js +55 -0
  81. package/lib/client/stream.js +39 -0
  82. package/lib/client/timeoutSettings.js +79 -0
  83. package/lib/client/tracing.js +124 -0
  84. package/lib/client/types.js +28 -0
  85. package/lib/client/video.js +65 -0
  86. package/lib/client/waiter.js +142 -0
  87. package/lib/client/webError.js +39 -0
  88. package/lib/client/worker.js +85 -0
  89. package/lib/client/writableStream.js +39 -0
  90. package/lib/devtools/appIcon.png +0 -0
  91. package/lib/devtools/devtoolsApp.js +275 -0
  92. package/lib/devtools/devtoolsController.js +289 -0
  93. package/lib/generated/bindingsControllerSource.js +28 -0
  94. package/lib/generated/clockSource.js +28 -0
  95. package/lib/generated/injectedScriptSource.js +28 -0
  96. package/lib/generated/pollingRecorderSource.js +28 -0
  97. package/lib/generated/storageScriptSource.js +28 -0
  98. package/lib/generated/utilityScriptSource.js +28 -0
  99. package/lib/generated/webSocketMockSource.js +336 -0
  100. package/lib/inProcessFactory.js +60 -0
  101. package/lib/inprocess.js +3 -0
  102. package/lib/mcp/browserFactory.js +196 -0
  103. package/lib/mcp/cdpRelay.js +353 -0
  104. package/lib/mcp/config.d.js +16 -0
  105. package/lib/mcp/config.js +399 -0
  106. package/lib/mcp/configIni.js +190 -0
  107. package/lib/mcp/exports.js +42 -0
  108. package/lib/mcp/extensionContextFactory.js +59 -0
  109. package/lib/mcp/index.js +62 -0
  110. package/lib/mcp/log.js +35 -0
  111. package/lib/mcp/program.js +111 -0
  112. package/lib/mcp/protocol.js +28 -0
  113. package/lib/mcp/sdk/http.js +152 -0
  114. package/lib/mcp/sdk/server.js +230 -0
  115. package/lib/mcp/sdk/tool.js +47 -0
  116. package/lib/mcp/watchdog.js +44 -0
  117. package/lib/mcpBundle.js +84 -0
  118. package/lib/mcpBundleImpl/index.js +147 -0
  119. package/lib/outofprocess.js +76 -0
  120. package/lib/protocol/serializers.js +197 -0
  121. package/lib/protocol/validator.js +3064 -0
  122. package/lib/protocol/validatorPrimitives.js +193 -0
  123. package/lib/remote/playwrightConnection.js +129 -0
  124. package/lib/remote/playwrightPipeServer.js +100 -0
  125. package/lib/remote/playwrightServer.js +339 -0
  126. package/lib/remote/playwrightWebSocketServer.js +73 -0
  127. package/lib/remote/serverTransport.js +96 -0
  128. package/lib/server/agent/actionRunner.js +341 -0
  129. package/lib/server/agent/actions.js +128 -0
  130. package/lib/server/agent/codegen.js +111 -0
  131. package/lib/server/agent/context.js +161 -0
  132. package/lib/server/agent/expectTools.js +156 -0
  133. package/lib/server/agent/pageAgent.js +204 -0
  134. package/lib/server/agent/performTools.js +262 -0
  135. package/lib/server/agent/tool.js +109 -0
  136. package/lib/server/android/android.js +465 -0
  137. package/lib/server/android/backendAdb.js +177 -0
  138. package/lib/server/artifact.js +127 -0
  139. package/lib/server/bidi/bidiBrowser.js +560 -0
  140. package/lib/server/bidi/bidiChromium.js +162 -0
  141. package/lib/server/bidi/bidiConnection.js +213 -0
  142. package/lib/server/bidi/bidiDeserializer.js +116 -0
  143. package/lib/server/bidi/bidiExecutionContext.js +267 -0
  144. package/lib/server/bidi/bidiFirefox.js +128 -0
  145. package/lib/server/bidi/bidiInput.js +146 -0
  146. package/lib/server/bidi/bidiNetworkManager.js +411 -0
  147. package/lib/server/bidi/bidiOverCdp.js +102 -0
  148. package/lib/server/bidi/bidiPage.js +598 -0
  149. package/lib/server/bidi/bidiPdf.js +106 -0
  150. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  151. package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  152. package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  153. package/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
  154. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  155. package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  156. package/lib/server/bidi/third_party/firefoxPrefs.js +261 -0
  157. package/lib/server/browser.js +217 -0
  158. package/lib/server/browserContext.js +699 -0
  159. package/lib/server/browserType.js +337 -0
  160. package/lib/server/callLog.js +82 -0
  161. package/lib/server/chromium/appIcon.png +0 -0
  162. package/lib/server/chromium/chromium.js +399 -0
  163. package/lib/server/chromium/chromiumSwitches.js +104 -0
  164. package/lib/server/chromium/crBrowser.js +532 -0
  165. package/lib/server/chromium/crConnection.js +197 -0
  166. package/lib/server/chromium/crCoverage.js +235 -0
  167. package/lib/server/chromium/crDevTools.js +111 -0
  168. package/lib/server/chromium/crDragDrop.js +131 -0
  169. package/lib/server/chromium/crExecutionContext.js +146 -0
  170. package/lib/server/chromium/crInput.js +187 -0
  171. package/lib/server/chromium/crNetworkManager.js +708 -0
  172. package/lib/server/chromium/crPage.js +1004 -0
  173. package/lib/server/chromium/crPdf.js +121 -0
  174. package/lib/server/chromium/crProtocolHelper.js +145 -0
  175. package/lib/server/chromium/crServiceWorker.js +136 -0
  176. package/lib/server/chromium/defaultFontFamilies.js +162 -0
  177. package/lib/server/chromium/protocol.d.js +16 -0
  178. package/lib/server/clock.js +149 -0
  179. package/lib/server/codegen/csharp.js +327 -0
  180. package/lib/server/codegen/java.js +274 -0
  181. package/lib/server/codegen/javascript.js +247 -0
  182. package/lib/server/codegen/jsonl.js +52 -0
  183. package/lib/server/codegen/language.js +132 -0
  184. package/lib/server/codegen/languages.js +68 -0
  185. package/lib/server/codegen/python.js +279 -0
  186. package/lib/server/codegen/types.js +16 -0
  187. package/lib/server/console.js +61 -0
  188. package/lib/server/cookieStore.js +206 -0
  189. package/lib/server/debugController.js +197 -0
  190. package/lib/server/debugger.js +119 -0
  191. package/lib/server/deviceDescriptors.js +39 -0
  192. package/lib/server/deviceDescriptorsSource.json +1779 -0
  193. package/lib/server/dialog.js +116 -0
  194. package/lib/server/dispatchers/androidDispatcher.js +325 -0
  195. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  196. package/lib/server/dispatchers/browserContextDispatcher.js +377 -0
  197. package/lib/server/dispatchers/browserDispatcher.js +124 -0
  198. package/lib/server/dispatchers/browserTypeDispatcher.js +71 -0
  199. package/lib/server/dispatchers/cdpSessionDispatcher.js +47 -0
  200. package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  201. package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  202. package/lib/server/dispatchers/dispatcher.js +364 -0
  203. package/lib/server/dispatchers/disposableDispatcher.js +39 -0
  204. package/lib/server/dispatchers/electronDispatcher.js +90 -0
  205. package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  206. package/lib/server/dispatchers/frameDispatcher.js +227 -0
  207. package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  208. package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  209. package/lib/server/dispatchers/localUtilsDispatcher.js +185 -0
  210. package/lib/server/dispatchers/networkDispatchers.js +214 -0
  211. package/lib/server/dispatchers/pageAgentDispatcher.js +106 -0
  212. package/lib/server/dispatchers/pageDispatcher.js +441 -0
  213. package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  214. package/lib/server/dispatchers/streamDispatcher.js +67 -0
  215. package/lib/server/dispatchers/tracingDispatcher.js +68 -0
  216. package/lib/server/dispatchers/webSocketRouteDispatcher.js +164 -0
  217. package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  218. package/lib/server/disposable.js +41 -0
  219. package/lib/server/dom.js +815 -0
  220. package/lib/server/download.js +71 -0
  221. package/lib/server/electron/electron.js +272 -0
  222. package/lib/server/electron/loader.js +30 -0
  223. package/lib/server/errors.js +69 -0
  224. package/lib/server/fetch.js +621 -0
  225. package/lib/server/fileChooser.js +43 -0
  226. package/lib/server/fileUploadUtils.js +84 -0
  227. package/lib/server/firefox/ffBrowser.js +415 -0
  228. package/lib/server/firefox/ffConnection.js +142 -0
  229. package/lib/server/firefox/ffExecutionContext.js +150 -0
  230. package/lib/server/firefox/ffInput.js +159 -0
  231. package/lib/server/firefox/ffNetworkManager.js +256 -0
  232. package/lib/server/firefox/ffPage.js +495 -0
  233. package/lib/server/firefox/firefox.js +114 -0
  234. package/lib/server/firefox/protocol.d.js +16 -0
  235. package/lib/server/formData.js +147 -0
  236. package/lib/server/frameSelectors.js +160 -0
  237. package/lib/server/frames.js +1476 -0
  238. package/lib/server/har/harRecorder.js +147 -0
  239. package/lib/server/har/harTracer.js +608 -0
  240. package/lib/server/harBackend.js +157 -0
  241. package/lib/server/helper.js +96 -0
  242. package/lib/server/index.js +58 -0
  243. package/lib/server/input.js +277 -0
  244. package/lib/server/instrumentation.js +72 -0
  245. package/lib/server/javascript.js +291 -0
  246. package/lib/server/launchApp.js +127 -0
  247. package/lib/server/localUtils.js +214 -0
  248. package/lib/server/macEditingCommands.js +143 -0
  249. package/lib/server/network.js +668 -0
  250. package/lib/server/page.js +915 -0
  251. package/lib/server/pipeTransport.js +89 -0
  252. package/lib/server/playwright.js +69 -0
  253. package/lib/server/progress.js +136 -0
  254. package/lib/server/protocolError.js +52 -0
  255. package/lib/server/recorder/chat.js +161 -0
  256. package/lib/server/recorder/recorderApp.js +367 -0
  257. package/lib/server/recorder/recorderRunner.js +138 -0
  258. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  259. package/lib/server/recorder/recorderUtils.js +157 -0
  260. package/lib/server/recorder/throttledFile.js +57 -0
  261. package/lib/server/recorder.js +533 -0
  262. package/lib/server/registry/browserFetcher.js +177 -0
  263. package/lib/server/registry/dependencies.js +371 -0
  264. package/lib/server/registry/index.js +1395 -0
  265. package/lib/server/registry/nativeDeps.js +1281 -0
  266. package/lib/server/registry/oopDownloadBrowserMain.js +127 -0
  267. package/lib/server/screencast.js +214 -0
  268. package/lib/server/screenshotter.js +333 -0
  269. package/lib/server/selectors.js +112 -0
  270. package/lib/server/socksClientCertificatesInterceptor.js +383 -0
  271. package/lib/server/socksInterceptor.js +95 -0
  272. package/lib/server/trace/recorder/snapshotter.js +147 -0
  273. package/lib/server/trace/recorder/snapshotterInjected.js +561 -0
  274. package/lib/server/trace/recorder/tracing.js +607 -0
  275. package/lib/server/trace/viewer/traceParser.js +72 -0
  276. package/lib/server/trace/viewer/traceViewer.js +244 -0
  277. package/lib/server/transport.js +181 -0
  278. package/lib/server/types.js +28 -0
  279. package/lib/server/usKeyboardLayout.js +145 -0
  280. package/lib/server/utils/ascii.js +44 -0
  281. package/lib/server/utils/comparators.js +139 -0
  282. package/lib/server/utils/crypto.js +216 -0
  283. package/lib/server/utils/debug.js +42 -0
  284. package/lib/server/utils/debugLogger.js +122 -0
  285. package/lib/server/utils/env.js +73 -0
  286. package/lib/server/utils/eventsHelper.js +39 -0
  287. package/lib/server/utils/expectUtils.js +123 -0
  288. package/lib/server/utils/fileUtils.js +191 -0
  289. package/lib/server/utils/happyEyeballs.js +207 -0
  290. package/lib/server/utils/hostPlatform.js +123 -0
  291. package/lib/server/utils/httpServer.js +205 -0
  292. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  293. package/lib/server/utils/image_tools/compare.js +109 -0
  294. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  295. package/lib/server/utils/image_tools/stats.js +102 -0
  296. package/lib/server/utils/linuxUtils.js +71 -0
  297. package/lib/server/utils/network.js +244 -0
  298. package/lib/server/utils/nodePlatform.js +154 -0
  299. package/lib/server/utils/pipeTransport.js +84 -0
  300. package/lib/server/utils/processLauncher.js +243 -0
  301. package/lib/server/utils/profiler.js +65 -0
  302. package/lib/server/utils/socksProxy.js +511 -0
  303. package/lib/server/utils/spawnAsync.js +41 -0
  304. package/lib/server/utils/task.js +51 -0
  305. package/lib/server/utils/userAgent.js +98 -0
  306. package/lib/server/utils/wsServer.js +121 -0
  307. package/lib/server/utils/zipFile.js +74 -0
  308. package/lib/server/utils/zones.js +57 -0
  309. package/lib/server/videoRecorder.js +133 -0
  310. package/lib/server/webkit/protocol.d.js +16 -0
  311. package/lib/server/webkit/webkit.js +108 -0
  312. package/lib/server/webkit/wkBrowser.js +331 -0
  313. package/lib/server/webkit/wkConnection.js +144 -0
  314. package/lib/server/webkit/wkExecutionContext.js +154 -0
  315. package/lib/server/webkit/wkInput.js +181 -0
  316. package/lib/server/webkit/wkInterceptableRequest.js +197 -0
  317. package/lib/server/webkit/wkPage.js +1164 -0
  318. package/lib/server/webkit/wkProvisionalPage.js +83 -0
  319. package/lib/server/webkit/wkWorkers.js +106 -0
  320. package/lib/serverRegistry.js +136 -0
  321. package/lib/third_party/pixelmatch.js +255 -0
  322. package/lib/tools/browserServerBackend.js +79 -0
  323. package/lib/tools/common.js +63 -0
  324. package/lib/tools/config.js +41 -0
  325. package/lib/tools/console.js +65 -0
  326. package/lib/tools/context.js +282 -0
  327. package/lib/tools/cookies.js +152 -0
  328. package/lib/tools/customDomLocatorCompiler.js +239 -0
  329. package/lib/tools/customDomResolverDiagnostics.js +100 -0
  330. package/lib/tools/customDomSnapshotFormatter.js +658 -0
  331. package/lib/tools/devtools.js +42 -0
  332. package/lib/tools/dialogs.js +59 -0
  333. package/lib/tools/evaluate.js +61 -0
  334. package/lib/tools/exports.js +57 -0
  335. package/lib/tools/files.js +58 -0
  336. package/lib/tools/form.js +63 -0
  337. package/lib/tools/keyboard.js +151 -0
  338. package/lib/tools/logFile.js +95 -0
  339. package/lib/tools/mouse.js +170 -0
  340. package/lib/tools/navigate.js +105 -0
  341. package/lib/tools/network.js +112 -0
  342. package/lib/tools/pdf.js +48 -0
  343. package/lib/tools/response.js +278 -0
  344. package/lib/tools/route.js +140 -0
  345. package/lib/tools/runCode.js +76 -0
  346. package/lib/tools/screenshot.js +87 -0
  347. package/lib/tools/sessionLog.js +75 -0
  348. package/lib/tools/snapshot.js +209 -0
  349. package/lib/tools/storage.js +67 -0
  350. package/lib/tools/tab.js +596 -0
  351. package/lib/tools/tabs.js +67 -0
  352. package/lib/tools/tool.js +47 -0
  353. package/lib/tools/tools.js +94 -0
  354. package/lib/tools/tracing.js +75 -0
  355. package/lib/tools/utils.js +88 -0
  356. package/lib/tools/verify.js +149 -0
  357. package/lib/tools/video.js +89 -0
  358. package/lib/tools/wait.js +63 -0
  359. package/lib/tools/webstorage.js +223 -0
  360. package/lib/utils/isomorphic/aiSnapshotTypes.js +16 -0
  361. package/lib/utils/isomorphic/ariaSnapshot.js +455 -0
  362. package/lib/utils/isomorphic/assert.js +31 -0
  363. package/lib/utils/isomorphic/colors.js +72 -0
  364. package/lib/utils/isomorphic/cssParser.js +245 -0
  365. package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  366. package/lib/utils/isomorphic/headers.js +53 -0
  367. package/lib/utils/isomorphic/imageUtils.js +141 -0
  368. package/lib/utils/isomorphic/locatorGenerators.js +689 -0
  369. package/lib/utils/isomorphic/locatorParser.js +176 -0
  370. package/lib/utils/isomorphic/locatorUtils.js +81 -0
  371. package/lib/utils/isomorphic/lruCache.js +51 -0
  372. package/lib/utils/isomorphic/manualPromise.js +114 -0
  373. package/lib/utils/isomorphic/mimeType.js +464 -0
  374. package/lib/utils/isomorphic/multimap.js +80 -0
  375. package/lib/utils/isomorphic/protocolFormatter.js +81 -0
  376. package/lib/utils/isomorphic/protocolMetainfo.js +345 -0
  377. package/lib/utils/isomorphic/rtti.js +43 -0
  378. package/lib/utils/isomorphic/selectorParser.js +386 -0
  379. package/lib/utils/isomorphic/semaphore.js +54 -0
  380. package/lib/utils/isomorphic/stackTrace.js +158 -0
  381. package/lib/utils/isomorphic/stringUtils.js +204 -0
  382. package/lib/utils/isomorphic/time.js +49 -0
  383. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  384. package/lib/utils/isomorphic/trace/entries.js +16 -0
  385. package/lib/utils/isomorphic/trace/snapshotRenderer.js +502 -0
  386. package/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
  387. package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
  388. package/lib/utils/isomorphic/trace/traceLoader.js +131 -0
  389. package/lib/utils/isomorphic/trace/traceModel.js +366 -0
  390. package/lib/utils/isomorphic/trace/traceModernizer.js +401 -0
  391. package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
  392. package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
  393. package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
  394. package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
  395. package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
  396. package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
  397. package/lib/utils/isomorphic/traceUtils.js +58 -0
  398. package/lib/utils/isomorphic/types.js +16 -0
  399. package/lib/utils/isomorphic/urlMatch.js +243 -0
  400. package/lib/utils/isomorphic/utilityScriptSerializers.js +262 -0
  401. package/lib/utils/isomorphic/yaml.js +84 -0
  402. package/lib/utils.js +111 -0
  403. package/lib/utilsBundle.js +112 -0
  404. package/lib/utilsBundleImpl/index.js +218 -0
  405. package/lib/utilsBundleImpl/xdg-open +1066 -0
  406. package/lib/vite/devtools/assets/index-D3CVnoLM.css +1 -0
  407. package/lib/vite/devtools/assets/index-wqccfruE.js +50 -0
  408. package/lib/vite/devtools/index.html +28 -0
  409. package/lib/vite/htmlReport/index.html +84 -0
  410. package/lib/vite/recorder/assets/codeMirrorModule-4NapTJOb.js +32 -0
  411. package/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
  412. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  413. package/lib/vite/recorder/assets/index-BSjZa4pk.css +1 -0
  414. package/lib/vite/recorder/assets/index-CD9lKVjM.js +193 -0
  415. package/lib/vite/recorder/index.html +29 -0
  416. package/lib/vite/recorder/playwright-logo.svg +9 -0
  417. package/lib/vite/traceViewer/assets/codeMirrorModule-RgXeHFoQ.js +32 -0
  418. package/lib/vite/traceViewer/assets/defaultSettingsView-DP6vvJEM.js +269 -0
  419. package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  420. package/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
  421. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  422. package/lib/vite/traceViewer/defaultSettingsView.DQ9U-ctL.css +1 -0
  423. package/lib/vite/traceViewer/index.BVu7tZDe.css +1 -0
  424. package/lib/vite/traceViewer/index.D8YUXFVt.js +2 -0
  425. package/lib/vite/traceViewer/index.html +43 -0
  426. package/lib/vite/traceViewer/manifest.webmanifest +16 -0
  427. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  428. package/lib/vite/traceViewer/snapshot.html +21 -0
  429. package/lib/vite/traceViewer/sw.bundle.js +5 -0
  430. package/lib/vite/traceViewer/uiMode.BIQFTUME.js +6 -0
  431. package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  432. package/lib/vite/traceViewer/uiMode.html +17 -0
  433. package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  434. package/lib/zipBundle.js +34 -0
  435. package/lib/zipBundleImpl.js +5 -0
  436. package/package.json +52 -0
  437. package/types/protocol.d.ts +24365 -0
  438. package/types/structs.d.ts +45 -0
  439. package/types/types.d.ts +23724 -0
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var waiter_exports = {};
20
+ __export(waiter_exports, {
21
+ Waiter: () => Waiter
22
+ });
23
+ module.exports = __toCommonJS(waiter_exports);
24
+ var import_errors = require("./errors");
25
+ var import_stackTrace = require("../utils/isomorphic/stackTrace");
26
+ class Waiter {
27
+ constructor(channelOwner, event) {
28
+ this._failures = [];
29
+ this._logs = [];
30
+ this._waitId = channelOwner._platform.createGuid();
31
+ this._channelOwner = channelOwner;
32
+ this._savedZone = channelOwner._platform.zones.current().pop();
33
+ this._channelOwner._channel.waitForEventInfo({ info: { waitId: this._waitId, phase: "before", event } }).catch(() => {
34
+ });
35
+ this._dispose = [
36
+ () => this._channelOwner._wrapApiCall(async () => {
37
+ await this._channelOwner._channel.waitForEventInfo({ info: { waitId: this._waitId, phase: "after", error: this._error } });
38
+ }, { internal: true }).catch(() => {
39
+ })
40
+ ];
41
+ }
42
+ static createForEvent(channelOwner, event) {
43
+ return new Waiter(channelOwner, event);
44
+ }
45
+ async waitForEvent(emitter, event, predicate) {
46
+ const { promise, dispose } = waitForEvent(emitter, event, this._savedZone, predicate);
47
+ return await this.waitForPromise(promise, dispose);
48
+ }
49
+ rejectOnEvent(emitter, event, error, predicate) {
50
+ const { promise, dispose } = waitForEvent(emitter, event, this._savedZone, predicate);
51
+ this._rejectOn(promise.then(() => {
52
+ throw typeof error === "function" ? error() : error;
53
+ }), dispose);
54
+ }
55
+ rejectOnTimeout(timeout, message) {
56
+ if (!timeout)
57
+ return;
58
+ const { promise, dispose } = waitForTimeout(timeout);
59
+ this._rejectOn(promise.then(() => {
60
+ throw new import_errors.TimeoutError(message);
61
+ }), dispose);
62
+ }
63
+ rejectImmediately(error) {
64
+ this._immediateError = error;
65
+ }
66
+ dispose() {
67
+ for (const dispose of this._dispose)
68
+ dispose();
69
+ }
70
+ async waitForPromise(promise, dispose) {
71
+ try {
72
+ if (this._immediateError)
73
+ throw this._immediateError;
74
+ const result = await Promise.race([promise, ...this._failures]);
75
+ if (dispose)
76
+ dispose();
77
+ return result;
78
+ } catch (e) {
79
+ if (dispose)
80
+ dispose();
81
+ this._error = e.message;
82
+ this.dispose();
83
+ (0, import_stackTrace.rewriteErrorMessage)(e, e.message + formatLogRecording(this._logs));
84
+ throw e;
85
+ }
86
+ }
87
+ log(s) {
88
+ this._logs.push(s);
89
+ this._channelOwner._wrapApiCall(async () => {
90
+ await this._channelOwner._channel.waitForEventInfo({ info: { waitId: this._waitId, phase: "log", message: s } });
91
+ }, { internal: true }).catch(() => {
92
+ });
93
+ }
94
+ _rejectOn(promise, dispose) {
95
+ this._failures.push(promise);
96
+ if (dispose)
97
+ this._dispose.push(dispose);
98
+ }
99
+ }
100
+ function waitForEvent(emitter, event, savedZone, predicate) {
101
+ let listener;
102
+ const promise = new Promise((resolve, reject) => {
103
+ listener = async (eventArg) => {
104
+ await savedZone.run(async () => {
105
+ try {
106
+ if (predicate && !await predicate(eventArg))
107
+ return;
108
+ emitter.removeListener(event, listener);
109
+ resolve(eventArg);
110
+ } catch (e) {
111
+ emitter.removeListener(event, listener);
112
+ reject(e);
113
+ }
114
+ });
115
+ };
116
+ emitter.addListener(event, listener);
117
+ });
118
+ const dispose = () => emitter.removeListener(event, listener);
119
+ return { promise, dispose };
120
+ }
121
+ function waitForTimeout(timeout) {
122
+ let timeoutId;
123
+ const promise = new Promise((resolve) => timeoutId = setTimeout(resolve, timeout));
124
+ const dispose = () => clearTimeout(timeoutId);
125
+ return { promise, dispose };
126
+ }
127
+ function formatLogRecording(log) {
128
+ if (!log.length)
129
+ return "";
130
+ const header = ` logs `;
131
+ const headerLength = 60;
132
+ const leftLength = (headerLength - header.length) / 2;
133
+ const rightLength = headerLength - header.length - leftLength;
134
+ return `
135
+ ${"=".repeat(leftLength)}${header}${"=".repeat(rightLength)}
136
+ ${log.join("\n")}
137
+ ${"=".repeat(headerLength)}`;
138
+ }
139
+ // Annotate the CommonJS export names for ESM import in node:
140
+ 0 && (module.exports = {
141
+ Waiter
142
+ });
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var webError_exports = {};
20
+ __export(webError_exports, {
21
+ WebError: () => WebError
22
+ });
23
+ module.exports = __toCommonJS(webError_exports);
24
+ class WebError {
25
+ constructor(page, error) {
26
+ this._page = page;
27
+ this._error = error;
28
+ }
29
+ page() {
30
+ return this._page;
31
+ }
32
+ error() {
33
+ return this._error;
34
+ }
35
+ }
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ WebError
39
+ });
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var worker_exports = {};
20
+ __export(worker_exports, {
21
+ Worker: () => Worker
22
+ });
23
+ module.exports = __toCommonJS(worker_exports);
24
+ var import_channelOwner = require("./channelOwner");
25
+ var import_errors = require("./errors");
26
+ var import_events = require("./events");
27
+ var import_jsHandle = require("./jsHandle");
28
+ var import_manualPromise = require("../utils/isomorphic/manualPromise");
29
+ var import_timeoutSettings = require("./timeoutSettings");
30
+ var import_waiter = require("./waiter");
31
+ class Worker extends import_channelOwner.ChannelOwner {
32
+ constructor(parent, type, guid, initializer) {
33
+ super(parent, type, guid, initializer);
34
+ // Set for service workers.
35
+ this._closedScope = new import_manualPromise.LongStandingScope();
36
+ this._setEventToSubscriptionMapping(/* @__PURE__ */ new Map([
37
+ [import_events.Events.Worker.Console, "console"]
38
+ ]));
39
+ this._channel.on("close", () => {
40
+ if (this._page)
41
+ this._page._workers.delete(this);
42
+ if (this._context)
43
+ this._context._serviceWorkers.delete(this);
44
+ this.emit(import_events.Events.Worker.Close, this);
45
+ });
46
+ this.once(import_events.Events.Worker.Close, () => this._closedScope.close(this._page?._closeErrorWithReason() || new import_errors.TargetClosedError()));
47
+ }
48
+ static fromNullable(worker) {
49
+ return worker ? Worker.from(worker) : null;
50
+ }
51
+ static from(worker) {
52
+ return worker._object;
53
+ }
54
+ url() {
55
+ return this._initializer.url;
56
+ }
57
+ async evaluate(pageFunction, arg) {
58
+ (0, import_jsHandle.assertMaxArguments)(arguments.length, 2);
59
+ const result = await this._channel.evaluateExpression({ expression: String(pageFunction), isFunction: typeof pageFunction === "function", arg: (0, import_jsHandle.serializeArgument)(arg) });
60
+ return (0, import_jsHandle.parseResult)(result.value);
61
+ }
62
+ async evaluateHandle(pageFunction, arg) {
63
+ (0, import_jsHandle.assertMaxArguments)(arguments.length, 2);
64
+ const result = await this._channel.evaluateExpressionHandle({ expression: String(pageFunction), isFunction: typeof pageFunction === "function", arg: (0, import_jsHandle.serializeArgument)(arg) });
65
+ return import_jsHandle.JSHandle.from(result.handle);
66
+ }
67
+ async waitForEvent(event, optionsOrPredicate = {}) {
68
+ return await this._wrapApiCall(async () => {
69
+ const timeoutSettings = this._page?._timeoutSettings ?? this._context?._timeoutSettings ?? new import_timeoutSettings.TimeoutSettings(this._platform);
70
+ const timeout = timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
71
+ const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
72
+ const waiter = import_waiter.Waiter.createForEvent(this, event);
73
+ waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
74
+ if (event !== import_events.Events.Worker.Close)
75
+ waiter.rejectOnEvent(this, import_events.Events.Worker.Close, () => new import_errors.TargetClosedError());
76
+ const result = await waiter.waitForEvent(this, event, predicate);
77
+ waiter.dispose();
78
+ return result;
79
+ });
80
+ }
81
+ }
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ Worker
85
+ });
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var writableStream_exports = {};
20
+ __export(writableStream_exports, {
21
+ WritableStream: () => WritableStream
22
+ });
23
+ module.exports = __toCommonJS(writableStream_exports);
24
+ var import_channelOwner = require("./channelOwner");
25
+ class WritableStream extends import_channelOwner.ChannelOwner {
26
+ static from(Stream) {
27
+ return Stream._object;
28
+ }
29
+ constructor(parent, type, guid, initializer) {
30
+ super(parent, type, guid, initializer);
31
+ }
32
+ stream() {
33
+ return this._platform.streamWritable(this._channel);
34
+ }
35
+ }
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ WritableStream
39
+ });
Binary file
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var devtoolsApp_exports = {};
30
+ __export(devtoolsApp_exports, {
31
+ syncLocalStorageWithSettings: () => syncLocalStorageWithSettings
32
+ });
33
+ module.exports = __toCommonJS(devtoolsApp_exports);
34
+ var import_fs = __toESM(require("fs"));
35
+ var import_path = __toESM(require("path"));
36
+ var import_os = __toESM(require("os"));
37
+ var import_net = __toESM(require("net"));
38
+ var import__ = require("../..");
39
+ var import_httpServer = require("../server/utils/httpServer");
40
+ var import_processLauncher = require("../server/utils/processLauncher");
41
+ var import_registry = require("../server/registry/index");
42
+ var import_utils = require("../utils");
43
+ var import_devtoolsController = require("./devtoolsController");
44
+ var import_serverRegistry = require("../serverRegistry");
45
+ var import_connect = require("../client/connect");
46
+ function readBody(request) {
47
+ return new Promise((resolve, reject) => {
48
+ const chunks = [];
49
+ request.on("data", (chunk) => chunks.push(chunk));
50
+ request.on("end", () => {
51
+ try {
52
+ const text = Buffer.concat(chunks).toString();
53
+ resolve(text ? JSON.parse(text) : {});
54
+ } catch (e) {
55
+ reject(e);
56
+ }
57
+ });
58
+ request.on("error", reject);
59
+ });
60
+ }
61
+ async function parseRequest(request) {
62
+ const body = await readBody(request);
63
+ if (!body.browserDescriptor)
64
+ throw new Error("Dashboard app is too old, please close it and open again");
65
+ return { browserDescriptor: body.browserDescriptor };
66
+ }
67
+ function sendJSON(response, data, statusCode = 200) {
68
+ response.statusCode = statusCode;
69
+ response.setHeader("Content-Type", "application/json");
70
+ response.end(JSON.stringify(data));
71
+ }
72
+ async function loadBrowserDescriptorSessions(wsPath) {
73
+ const servers = await import_serverRegistry.serverRegistry.list({ includeDisconnected: true });
74
+ const sessions = [];
75
+ for (const [, browsers] of servers) {
76
+ for (const browser of browsers) {
77
+ let wsUrl;
78
+ if (browser.canConnect) {
79
+ const url = new URL(wsPath, "http://localhost");
80
+ url.searchParams.set("browserDescriptor", JSON.stringify(browser));
81
+ wsUrl = url.pathname + url.search;
82
+ }
83
+ sessions.push({ browserDescriptor: browser, wsUrl });
84
+ }
85
+ }
86
+ return sessions;
87
+ }
88
+ const socketPathToDevToolsConnection = /* @__PURE__ */ new Map();
89
+ async function handleApiRequest(httpServer, request, response) {
90
+ const url = new URL(request.url, httpServer.urlPrefix("human-readable"));
91
+ const apiPath = url.pathname;
92
+ if (apiPath === "/api/sessions/list" && request.method === "GET") {
93
+ const sessions = await loadBrowserDescriptorSessions(httpServer.wsGuid());
94
+ sendJSON(response, { sessions });
95
+ return;
96
+ }
97
+ if (apiPath === "/api/sessions/close" && request.method === "POST") {
98
+ const { browserDescriptor } = await parseRequest(request);
99
+ let browser;
100
+ try {
101
+ browser = await (0, import_connect.connectToBrowserAcrossVersions)(browserDescriptor);
102
+ } catch (e) {
103
+ sendJSON(response, { error: "Failed to connect to browser socket: " + e.message }, 500);
104
+ return;
105
+ }
106
+ try {
107
+ await Promise.all(browser.contexts().map((context) => context.close()));
108
+ await browser.close();
109
+ sendJSON(response, { success: true });
110
+ return;
111
+ } catch (e) {
112
+ sendJSON(response, { error: "Failed to close browser: " + e.message }, 500);
113
+ return;
114
+ }
115
+ }
116
+ if (apiPath === "/api/sessions/delete-data" && request.method === "POST") {
117
+ sendJSON(response, { success: true });
118
+ return;
119
+ }
120
+ response.statusCode = 404;
121
+ response.end(JSON.stringify({ error: "Not found" }));
122
+ }
123
+ async function openDevToolsApp() {
124
+ const httpServer = new import_httpServer.HttpServer();
125
+ const libDir = import_path.default.join(__dirname, "..", "..", "package.json");
126
+ const devtoolsDir = import_path.default.join(import_path.default.dirname(libDir), "lib/vite/devtools");
127
+ httpServer.routePrefix("/api/", (request, response) => {
128
+ handleApiRequest(httpServer, request, response).catch((e) => {
129
+ response.statusCode = 500;
130
+ response.end(JSON.stringify({ error: e.message }));
131
+ });
132
+ return true;
133
+ });
134
+ httpServer.createWebSocket((url2) => {
135
+ const descriptorJson = url2.searchParams.get("browserDescriptor");
136
+ if (!descriptorJson)
137
+ throw new Error("Unsupported WebSocket URL: " + url2.toString());
138
+ const browserDescriptor = JSON.parse(descriptorJson);
139
+ const cdpPageId = url2.searchParams.get("cdpPageId");
140
+ if (cdpPageId) {
141
+ const socketPath2 = browserDescriptor.pipeName;
142
+ const connection2 = socketPathToDevToolsConnection.get(socketPath2);
143
+ if (!connection2)
144
+ throw new Error("CDP connection not found for socket path: " + socketPath2);
145
+ const page2 = connection2.pageForId(cdpPageId);
146
+ if (!page2)
147
+ throw new Error("Page not found for page ID: " + cdpPageId);
148
+ return new import_devtoolsController.CDPConnection(page2);
149
+ }
150
+ const socketPath = browserDescriptor.pipeName;
151
+ const cdpUrl = new URL(httpServer.urlPrefix("human-readable"));
152
+ cdpUrl.pathname = httpServer.wsGuid();
153
+ cdpUrl.searchParams.set("browserDescriptor", descriptorJson);
154
+ const connection = new import_devtoolsController.DevToolsConnection(browserDescriptor, cdpUrl, () => socketPathToDevToolsConnection.delete(socketPath));
155
+ socketPathToDevToolsConnection.set(socketPath, connection);
156
+ return connection;
157
+ });
158
+ httpServer.routePrefix("/", (request, response) => {
159
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
160
+ const filePath = pathname === "/" ? "index.html" : pathname.substring(1);
161
+ const resolved = import_path.default.join(devtoolsDir, filePath);
162
+ if (!resolved.startsWith(devtoolsDir))
163
+ return false;
164
+ return httpServer.serveFile(request, response, resolved);
165
+ });
166
+ await httpServer.start();
167
+ const url = httpServer.urlPrefix("human-readable");
168
+ const { page } = await launchApp("devtools");
169
+ await page.goto(url);
170
+ return page;
171
+ }
172
+ async function launchApp(appName) {
173
+ const channel = (0, import_registry.findChromiumChannelBestEffort)("javascript");
174
+ const context = await import__.chromium.launchPersistentContext("", {
175
+ ignoreDefaultArgs: ["--enable-automation"],
176
+ channel,
177
+ headless: false,
178
+ args: [
179
+ "--app=data:text/html,",
180
+ "--test-type=",
181
+ `--window-size=1280,800`,
182
+ `--window-position=100,100`
183
+ ],
184
+ viewport: null
185
+ });
186
+ const [page] = context.pages();
187
+ if (process.platform === "darwin") {
188
+ context.on("page", async (newPage) => {
189
+ if (newPage.mainFrame().url() === "chrome://new-tab-page/") {
190
+ await page.bringToFront();
191
+ await newPage.close();
192
+ }
193
+ });
194
+ }
195
+ page.on("close", () => {
196
+ (0, import_processLauncher.gracefullyProcessExitDoNotHang)(0);
197
+ });
198
+ const image = await import_fs.default.promises.readFile(import_path.default.join(__dirname, "appIcon.png"));
199
+ await page._setDockTile(image);
200
+ await syncLocalStorageWithSettings(page, appName);
201
+ return { context, page };
202
+ }
203
+ async function syncLocalStorageWithSettings(page, appName) {
204
+ const settingsFile = import_path.default.join(import_registry.registryDirectory, ".settings", `${appName}.json`);
205
+ await page.exposeBinding("_saveSerializedSettings", (_, settings2) => {
206
+ import_fs.default.mkdirSync(import_path.default.dirname(settingsFile), { recursive: true });
207
+ import_fs.default.writeFileSync(settingsFile, settings2);
208
+ });
209
+ const settings = await import_fs.default.promises.readFile(settingsFile, "utf-8").catch(() => "{}");
210
+ await page.addInitScript(
211
+ `(${String((settings2) => {
212
+ if (location && location.protocol === "data:")
213
+ return;
214
+ if (window.top !== window)
215
+ return;
216
+ Object.entries(settings2).map(([k, v]) => localStorage[k] = v);
217
+ window.saveSettings = () => {
218
+ window._saveSerializedSettings(JSON.stringify({ ...localStorage }));
219
+ };
220
+ })})(${settings});
221
+ `
222
+ );
223
+ }
224
+ function socketsDirectory() {
225
+ return process.env.PLAYWRIGHT_DAEMON_SOCKETS_DIR || import_path.default.join(import_os.default.tmpdir(), "playwright-cli");
226
+ }
227
+ function devtoolsSocketPath() {
228
+ const userNameHash = (0, import_utils.calculateSha1)(process.env.USERNAME || "default").slice(0, 8);
229
+ return process.platform === "win32" ? `\\\\.\\pipe\\playwright-devtools-${userNameHash}` : import_path.default.join(socketsDirectory(), `devtools-${userNameHash}.sock`);
230
+ }
231
+ async function acquireSingleton() {
232
+ const socketPath = devtoolsSocketPath();
233
+ if (process.platform !== "win32")
234
+ await import_fs.default.promises.mkdir(import_path.default.dirname(socketPath), { recursive: true });
235
+ return await new Promise((resolve, reject) => {
236
+ const server = import_net.default.createServer();
237
+ server.listen(socketPath, () => resolve(server));
238
+ server.on("error", (err) => {
239
+ if (err.code !== "EADDRINUSE")
240
+ return reject(err);
241
+ const client = import_net.default.connect(socketPath, () => {
242
+ client.write("bringToFront");
243
+ client.end();
244
+ reject(new Error("already running"));
245
+ });
246
+ client.on("error", () => {
247
+ if (process.platform !== "win32")
248
+ import_fs.default.unlinkSync(socketPath);
249
+ server.listen(socketPath, () => resolve(server));
250
+ });
251
+ });
252
+ });
253
+ }
254
+ async function main() {
255
+ let server;
256
+ process.on("exit", () => server?.close());
257
+ try {
258
+ server = await acquireSingleton();
259
+ } catch {
260
+ return;
261
+ }
262
+ const page = await openDevToolsApp();
263
+ server.on("connection", (socket) => {
264
+ socket.on("data", (data) => {
265
+ if (data.toString() === "bringToFront")
266
+ page?.bringToFront().catch(() => {
267
+ });
268
+ });
269
+ });
270
+ }
271
+ void main();
272
+ // Annotate the CommonJS export names for ESM import in node:
273
+ 0 && (module.exports = {
274
+ syncLocalStorageWithSettings
275
+ });