@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,399 @@
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 config_exports = {};
30
+ __export(config_exports, {
31
+ commaSeparatedList: () => commaSeparatedList,
32
+ configFromCLIOptions: () => configFromCLIOptions,
33
+ configFromEnv: () => configFromEnv,
34
+ defaultConfig: () => defaultConfig,
35
+ dotenvFileLoader: () => dotenvFileLoader,
36
+ enumParser: () => enumParser,
37
+ headerParser: () => headerParser,
38
+ loadConfig: () => loadConfig,
39
+ mergeConfig: () => mergeConfig,
40
+ numberParser: () => numberParser,
41
+ resolutionParser: () => resolutionParser,
42
+ resolveCLIConfig: () => resolveCLIConfig,
43
+ resolveConfig: () => resolveConfig,
44
+ semicolonSeparatedList: () => semicolonSeparatedList,
45
+ validateConfig: () => validateConfig
46
+ });
47
+ module.exports = __toCommonJS(config_exports);
48
+ var import_fs = __toESM(require("fs"));
49
+ var import_os = __toESM(require("os"));
50
+ var import__ = require("../..");
51
+ var import_utilsBundle = require("../utilsBundle");
52
+ var import_configIni = require("./configIni");
53
+ async function fileExistsAsync(resolved) {
54
+ try {
55
+ return (await import_fs.default.promises.stat(resolved)).isFile();
56
+ } catch {
57
+ return false;
58
+ }
59
+ }
60
+ const defaultConfig = {
61
+ browser: {
62
+ browserName: "chromium",
63
+ launchOptions: {
64
+ channel: "chrome",
65
+ headless: import_os.default.platform() === "linux" && !process.env.DISPLAY
66
+ },
67
+ contextOptions: {
68
+ viewport: null
69
+ }
70
+ },
71
+ server: {},
72
+ timeouts: {
73
+ action: 5e3,
74
+ navigation: 6e4,
75
+ expect: 5e3
76
+ }
77
+ };
78
+ async function resolveConfig(config) {
79
+ return mergeConfig(defaultConfig, config);
80
+ }
81
+ async function resolveCLIConfig(cliOptions) {
82
+ const envOverrides = configFromEnv();
83
+ const cliOverrides = configFromCLIOptions(cliOptions);
84
+ const configFile = cliOverrides.configFile ?? envOverrides.configFile;
85
+ const configInFile = await loadConfig(configFile);
86
+ let result = defaultConfig;
87
+ result = mergeConfig(result, configInFile);
88
+ result = mergeConfig(result, envOverrides);
89
+ result = mergeConfig(result, cliOverrides);
90
+ result.configFile = configFile;
91
+ await validateConfig(result);
92
+ return result;
93
+ }
94
+ async function validateConfig(config) {
95
+ if (config.browser.browserName === "chromium" && config.browser.launchOptions.chromiumSandbox === void 0) {
96
+ if (process.platform === "linux")
97
+ config.browser.launchOptions.chromiumSandbox = config.browser.launchOptions.channel !== "chromium" && config.browser.launchOptions.channel !== "chrome-for-testing";
98
+ else
99
+ config.browser.launchOptions.chromiumSandbox = true;
100
+ }
101
+ if (config.browser.isolated && config.browser.userDataDir)
102
+ throw new Error("Browser userDataDir is not supported in isolated mode.");
103
+ if (config.browser.initScript) {
104
+ for (const script of config.browser.initScript) {
105
+ if (!await fileExistsAsync(script))
106
+ throw new Error(`Init script file does not exist: ${script}`);
107
+ }
108
+ }
109
+ if (config.browser.initPage) {
110
+ for (const page of config.browser.initPage) {
111
+ if (!await fileExistsAsync(page))
112
+ throw new Error(`Init page file does not exist: ${page}`);
113
+ }
114
+ }
115
+ }
116
+ function configFromCLIOptions(cliOptions) {
117
+ let browserName;
118
+ let channel;
119
+ switch (cliOptions.browser) {
120
+ case "chrome":
121
+ case "chrome-beta":
122
+ case "chrome-canary":
123
+ case "chrome-dev":
124
+ case "msedge":
125
+ case "msedge-beta":
126
+ case "msedge-canary":
127
+ case "msedge-dev":
128
+ browserName = "chromium";
129
+ channel = cliOptions.browser;
130
+ break;
131
+ case "chromium":
132
+ browserName = "chromium";
133
+ channel = "chrome-for-testing";
134
+ break;
135
+ case "firefox":
136
+ browserName = "firefox";
137
+ break;
138
+ case "webkit":
139
+ browserName = "webkit";
140
+ break;
141
+ }
142
+ const launchOptions = {
143
+ channel,
144
+ executablePath: cliOptions.executablePath,
145
+ headless: cliOptions.headless
146
+ };
147
+ if (cliOptions.sandbox !== void 0)
148
+ launchOptions.chromiumSandbox = cliOptions.sandbox;
149
+ if (cliOptions.proxyServer) {
150
+ launchOptions.proxy = {
151
+ server: cliOptions.proxyServer
152
+ };
153
+ if (cliOptions.proxyBypass)
154
+ launchOptions.proxy.bypass = cliOptions.proxyBypass;
155
+ }
156
+ if (cliOptions.device && cliOptions.cdpEndpoint)
157
+ throw new Error("Device emulation is not supported with cdpEndpoint.");
158
+ const contextOptions = cliOptions.device ? import__.devices[cliOptions.device] : {};
159
+ if (cliOptions.storageState)
160
+ contextOptions.storageState = cliOptions.storageState;
161
+ if (cliOptions.userAgent)
162
+ contextOptions.userAgent = cliOptions.userAgent;
163
+ if (cliOptions.viewportSize)
164
+ contextOptions.viewport = cliOptions.viewportSize;
165
+ if (cliOptions.ignoreHttpsErrors)
166
+ contextOptions.ignoreHTTPSErrors = true;
167
+ if (cliOptions.blockServiceWorkers)
168
+ contextOptions.serviceWorkers = "block";
169
+ if (cliOptions.grantPermissions)
170
+ contextOptions.permissions = cliOptions.grantPermissions;
171
+ const config = {
172
+ browser: {
173
+ browserName,
174
+ isolated: cliOptions.isolated,
175
+ userDataDir: cliOptions.userDataDir,
176
+ launchOptions,
177
+ contextOptions,
178
+ cdpEndpoint: cliOptions.cdpEndpoint,
179
+ cdpHeaders: cliOptions.cdpHeader,
180
+ cdpTimeout: cliOptions.cdpTimeout,
181
+ initPage: cliOptions.initPage,
182
+ initScript: cliOptions.initScript
183
+ },
184
+ extension: cliOptions.extension,
185
+ server: {
186
+ port: cliOptions.port,
187
+ host: cliOptions.host,
188
+ allowedHosts: cliOptions.allowedHosts
189
+ },
190
+ capabilities: cliOptions.caps,
191
+ console: {
192
+ level: cliOptions.consoleLevel
193
+ },
194
+ network: {
195
+ allowedOrigins: cliOptions.allowedOrigins,
196
+ blockedOrigins: cliOptions.blockedOrigins
197
+ },
198
+ allowUnrestrictedFileAccess: cliOptions.allowUnrestrictedFileAccess,
199
+ codegen: cliOptions.codegen,
200
+ saveSession: cliOptions.saveSession,
201
+ secrets: cliOptions.secrets,
202
+ sharedBrowserContext: cliOptions.sharedBrowserContext,
203
+ snapshot: cliOptions.snapshotMode ? { mode: cliOptions.snapshotMode } : void 0,
204
+ outputMode: cliOptions.outputMode,
205
+ outputDir: cliOptions.outputDir,
206
+ imageResponses: cliOptions.imageResponses,
207
+ testIdAttribute: cliOptions.testIdAttribute,
208
+ timeouts: {
209
+ action: cliOptions.timeoutAction,
210
+ navigation: cliOptions.timeoutNavigation
211
+ }
212
+ };
213
+ return { ...config, configFile: cliOptions.config };
214
+ }
215
+ function configFromEnv() {
216
+ const options = {};
217
+ options.allowedHosts = commaSeparatedList(process.env.PLAYWRIGHT_MCP_ALLOWED_HOSTS);
218
+ options.allowedOrigins = semicolonSeparatedList(process.env.PLAYWRIGHT_MCP_ALLOWED_ORIGINS);
219
+ options.allowUnrestrictedFileAccess = envToBoolean(process.env.PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS);
220
+ options.blockedOrigins = semicolonSeparatedList(process.env.PLAYWRIGHT_MCP_BLOCKED_ORIGINS);
221
+ options.blockServiceWorkers = envToBoolean(process.env.PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS);
222
+ options.browser = envToString(process.env.PLAYWRIGHT_MCP_BROWSER);
223
+ options.caps = commaSeparatedList(process.env.PLAYWRIGHT_MCP_CAPS);
224
+ options.cdpEndpoint = envToString(process.env.PLAYWRIGHT_MCP_CDP_ENDPOINT);
225
+ options.cdpHeader = headerParser(process.env.PLAYWRIGHT_MCP_CDP_HEADERS, {});
226
+ options.cdpTimeout = numberParser(process.env.PLAYWRIGHT_MCP_CDP_TIMEOUT);
227
+ options.config = envToString(process.env.PLAYWRIGHT_MCP_CONFIG);
228
+ if (process.env.PLAYWRIGHT_MCP_CONSOLE_LEVEL)
229
+ options.consoleLevel = enumParser("--console-level", ["error", "warning", "info", "debug"], process.env.PLAYWRIGHT_MCP_CONSOLE_LEVEL);
230
+ options.device = envToString(process.env.PLAYWRIGHT_MCP_DEVICE);
231
+ options.executablePath = envToString(process.env.PLAYWRIGHT_MCP_EXECUTABLE_PATH);
232
+ options.extension = envToBoolean(process.env.PLAYWRIGHT_MCP_EXTENSION);
233
+ options.grantPermissions = commaSeparatedList(process.env.PLAYWRIGHT_MCP_GRANT_PERMISSIONS);
234
+ options.headless = envToBoolean(process.env.PLAYWRIGHT_MCP_HEADLESS);
235
+ options.host = envToString(process.env.PLAYWRIGHT_MCP_HOST);
236
+ options.ignoreHttpsErrors = envToBoolean(process.env.PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS);
237
+ const initPage = envToString(process.env.PLAYWRIGHT_MCP_INIT_PAGE);
238
+ if (initPage)
239
+ options.initPage = [initPage];
240
+ const initScript = envToString(process.env.PLAYWRIGHT_MCP_INIT_SCRIPT);
241
+ if (initScript)
242
+ options.initScript = [initScript];
243
+ options.isolated = envToBoolean(process.env.PLAYWRIGHT_MCP_ISOLATED);
244
+ if (process.env.PLAYWRIGHT_MCP_IMAGE_RESPONSES)
245
+ options.imageResponses = enumParser("--image-responses", ["allow", "omit"], process.env.PLAYWRIGHT_MCP_IMAGE_RESPONSES);
246
+ options.sandbox = envToBoolean(process.env.PLAYWRIGHT_MCP_SANDBOX);
247
+ options.outputDir = envToString(process.env.PLAYWRIGHT_MCP_OUTPUT_DIR);
248
+ options.port = numberParser(process.env.PLAYWRIGHT_MCP_PORT);
249
+ options.proxyBypass = envToString(process.env.PLAYWRIGHT_MCP_PROXY_BYPASS);
250
+ options.proxyServer = envToString(process.env.PLAYWRIGHT_MCP_PROXY_SERVER);
251
+ options.secrets = dotenvFileLoader(process.env.PLAYWRIGHT_MCP_SECRETS_FILE);
252
+ options.storageState = envToString(process.env.PLAYWRIGHT_MCP_STORAGE_STATE);
253
+ options.testIdAttribute = envToString(process.env.PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE);
254
+ options.timeoutAction = numberParser(process.env.PLAYWRIGHT_MCP_TIMEOUT_ACTION);
255
+ options.timeoutNavigation = numberParser(process.env.PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION);
256
+ options.userAgent = envToString(process.env.PLAYWRIGHT_MCP_USER_AGENT);
257
+ options.userDataDir = envToString(process.env.PLAYWRIGHT_MCP_USER_DATA_DIR);
258
+ options.viewportSize = resolutionParser("--viewport-size", process.env.PLAYWRIGHT_MCP_VIEWPORT_SIZE);
259
+ return configFromCLIOptions(options);
260
+ }
261
+ async function loadConfig(configFile) {
262
+ if (!configFile)
263
+ return {};
264
+ if (configFile.endsWith(".ini"))
265
+ return (0, import_configIni.configFromIniFile)(configFile);
266
+ try {
267
+ const data = await import_fs.default.promises.readFile(configFile, "utf8");
268
+ return JSON.parse(data.charCodeAt(0) === 65279 ? data.slice(1) : data);
269
+ } catch {
270
+ return (0, import_configIni.configFromIniFile)(configFile);
271
+ }
272
+ }
273
+ function pickDefined(obj) {
274
+ return Object.fromEntries(
275
+ Object.entries(obj ?? {}).filter(([_, v]) => v !== void 0)
276
+ );
277
+ }
278
+ function mergeConfig(base, overrides) {
279
+ const browser = {
280
+ ...pickDefined(base.browser),
281
+ ...pickDefined(overrides.browser),
282
+ browserName: overrides.browser?.browserName ?? base.browser?.browserName ?? "chromium",
283
+ isolated: overrides.browser?.isolated ?? base.browser?.isolated,
284
+ launchOptions: {
285
+ ...pickDefined(base.browser?.launchOptions),
286
+ ...pickDefined(overrides.browser?.launchOptions),
287
+ ...{ assistantMode: true }
288
+ },
289
+ contextOptions: {
290
+ ...pickDefined(base.browser?.contextOptions),
291
+ ...pickDefined(overrides.browser?.contextOptions)
292
+ }
293
+ };
294
+ if (browser.browserName !== "chromium" && browser.launchOptions)
295
+ delete browser.launchOptions.channel;
296
+ return {
297
+ ...pickDefined(base),
298
+ ...pickDefined(overrides),
299
+ browser,
300
+ console: {
301
+ ...pickDefined(base.console),
302
+ ...pickDefined(overrides.console)
303
+ },
304
+ network: {
305
+ ...pickDefined(base.network),
306
+ ...pickDefined(overrides.network)
307
+ },
308
+ server: {
309
+ ...pickDefined(base.server),
310
+ ...pickDefined(overrides.server)
311
+ },
312
+ snapshot: {
313
+ ...pickDefined(base.snapshot),
314
+ ...pickDefined(overrides.snapshot)
315
+ },
316
+ timeouts: {
317
+ ...pickDefined(base.timeouts),
318
+ ...pickDefined(overrides.timeouts)
319
+ }
320
+ };
321
+ }
322
+ function semicolonSeparatedList(value) {
323
+ if (!value)
324
+ return void 0;
325
+ return value.split(";").map((v) => v.trim());
326
+ }
327
+ function commaSeparatedList(value) {
328
+ if (!value)
329
+ return void 0;
330
+ return value.split(",").map((v) => v.trim());
331
+ }
332
+ function dotenvFileLoader(value) {
333
+ if (!value)
334
+ return void 0;
335
+ return import_utilsBundle.dotenv.parse(import_fs.default.readFileSync(value, "utf8"));
336
+ }
337
+ function numberParser(value) {
338
+ if (!value)
339
+ return void 0;
340
+ return +value;
341
+ }
342
+ function resolutionParser(name, value) {
343
+ if (!value)
344
+ return void 0;
345
+ if (value.includes("x")) {
346
+ const [width, height] = value.split("x").map((v) => +v);
347
+ if (isNaN(width) || isNaN(height) || width <= 0 || height <= 0)
348
+ throw new Error(`Invalid resolution format: use ${name}="800x600"`);
349
+ return { width, height };
350
+ }
351
+ if (value.includes(",")) {
352
+ const [width, height] = value.split(",").map((v) => +v);
353
+ if (isNaN(width) || isNaN(height) || width <= 0 || height <= 0)
354
+ throw new Error(`Invalid resolution format: use ${name}="800x600"`);
355
+ return { width, height };
356
+ }
357
+ throw new Error(`Invalid resolution format: use ${name}="800x600"`);
358
+ }
359
+ function headerParser(arg, previous) {
360
+ if (!arg)
361
+ return previous || {};
362
+ const result = previous || {};
363
+ const [name, value] = arg.split(":").map((v) => v.trim());
364
+ result[name] = value;
365
+ return result;
366
+ }
367
+ function enumParser(name, options, value) {
368
+ if (!options.includes(value))
369
+ throw new Error(`Invalid ${name}: ${value}. Valid values are: ${options.join(", ")}`);
370
+ return value;
371
+ }
372
+ function envToBoolean(value) {
373
+ if (value === "true" || value === "1")
374
+ return true;
375
+ if (value === "false" || value === "0")
376
+ return false;
377
+ return void 0;
378
+ }
379
+ function envToString(value) {
380
+ return value ? value.trim() : void 0;
381
+ }
382
+ // Annotate the CommonJS export names for ESM import in node:
383
+ 0 && (module.exports = {
384
+ commaSeparatedList,
385
+ configFromCLIOptions,
386
+ configFromEnv,
387
+ defaultConfig,
388
+ dotenvFileLoader,
389
+ enumParser,
390
+ headerParser,
391
+ loadConfig,
392
+ mergeConfig,
393
+ numberParser,
394
+ resolutionParser,
395
+ resolveCLIConfig,
396
+ resolveConfig,
397
+ semicolonSeparatedList,
398
+ validateConfig
399
+ });
@@ -0,0 +1,190 @@
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 configIni_exports = {};
30
+ __export(configIni_exports, {
31
+ configFromIniFile: () => configFromIniFile,
32
+ configsFromIniFile: () => configsFromIniFile
33
+ });
34
+ module.exports = __toCommonJS(configIni_exports);
35
+ var import_fs = __toESM(require("fs"));
36
+ var import_utilsBundle = require("../utilsBundle");
37
+ function configFromIniFile(filePath) {
38
+ const content = import_fs.default.readFileSync(filePath, "utf8");
39
+ const parsed = import_utilsBundle.ini.parse(content);
40
+ return iniEntriesToConfig(parsed);
41
+ }
42
+ function configsFromIniFile(filePath) {
43
+ const content = import_fs.default.readFileSync(filePath, "utf8");
44
+ const parsed = import_utilsBundle.ini.parse(content);
45
+ const result = /* @__PURE__ */ new Map();
46
+ for (const [sectionName, sectionData] of Object.entries(parsed)) {
47
+ if (typeof sectionData !== "object" || sectionData === null)
48
+ continue;
49
+ result.set(sectionName, iniEntriesToConfig(sectionData));
50
+ }
51
+ return result;
52
+ }
53
+ function iniEntriesToConfig(entries) {
54
+ const config = {};
55
+ for (const [targetPath, rawValue] of Object.entries(entries)) {
56
+ const type = longhandTypes[targetPath];
57
+ const value = type ? coerceToType(rawValue, type) : coerceIniValue(rawValue);
58
+ setNestedValue(config, targetPath, value);
59
+ }
60
+ return config;
61
+ }
62
+ function coerceToType(value, type) {
63
+ switch (type) {
64
+ case "string":
65
+ return String(value);
66
+ case "number":
67
+ return Number(value);
68
+ case "boolean":
69
+ if (typeof value === "boolean")
70
+ return value;
71
+ return value === "true" || value === "1";
72
+ case "string[]":
73
+ if (Array.isArray(value))
74
+ return value.map(String);
75
+ return [String(value)];
76
+ case "size": {
77
+ if (typeof value === "string" && value.includes("x")) {
78
+ const [w, h] = value.split("x").map(Number);
79
+ if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0)
80
+ return { width: w, height: h };
81
+ }
82
+ return void 0;
83
+ }
84
+ }
85
+ }
86
+ function coerceIniValue(value) {
87
+ if (typeof value !== "string")
88
+ return value;
89
+ const trimmed = value.trim();
90
+ if (trimmed === "")
91
+ return trimmed;
92
+ const num = Number(trimmed);
93
+ if (!isNaN(num))
94
+ return num;
95
+ return value;
96
+ }
97
+ function setNestedValue(obj, dotPath, value) {
98
+ const parts = dotPath.split(".");
99
+ let current = obj;
100
+ for (let i = 0; i < parts.length - 1; i++) {
101
+ const part = parts[i];
102
+ if (!(part in current) || typeof current[part] !== "object" || current[part] === null)
103
+ current[part] = {};
104
+ current = current[part];
105
+ }
106
+ current[parts[parts.length - 1]] = value;
107
+ }
108
+ const longhandTypes = {
109
+ // browser direct
110
+ "browser.browserName": "string",
111
+ "browser.isolated": "boolean",
112
+ "browser.userDataDir": "string",
113
+ "browser.cdpEndpoint": "string",
114
+ "browser.cdpTimeout": "number",
115
+ "browser.remoteEndpoint": "string",
116
+ "browser.initPage": "string[]",
117
+ "browser.initScript": "string[]",
118
+ // browser.launchOptions
119
+ "browser.launchOptions.channel": "string",
120
+ "browser.launchOptions.headless": "boolean",
121
+ "browser.launchOptions.executablePath": "string",
122
+ "browser.launchOptions.chromiumSandbox": "boolean",
123
+ "browser.launchOptions.args": "string[]",
124
+ "browser.launchOptions.downloadsPath": "string",
125
+ "browser.launchOptions.handleSIGHUP": "boolean",
126
+ "browser.launchOptions.handleSIGINT": "boolean",
127
+ "browser.launchOptions.handleSIGTERM": "boolean",
128
+ "browser.launchOptions.slowMo": "number",
129
+ "browser.launchOptions.timeout": "number",
130
+ "browser.launchOptions.tracesDir": "string",
131
+ "browser.launchOptions.proxy.server": "string",
132
+ "browser.launchOptions.proxy.bypass": "string",
133
+ "browser.launchOptions.proxy.username": "string",
134
+ "browser.launchOptions.proxy.password": "string",
135
+ // browser.contextOptions
136
+ "browser.contextOptions.acceptDownloads": "boolean",
137
+ "browser.contextOptions.baseURL": "string",
138
+ "browser.contextOptions.bypassCSP": "boolean",
139
+ "browser.contextOptions.colorScheme": "string",
140
+ "browser.contextOptions.contrast": "string",
141
+ "browser.contextOptions.deviceScaleFactor": "number",
142
+ "browser.contextOptions.forcedColors": "string",
143
+ "browser.contextOptions.hasTouch": "boolean",
144
+ "browser.contextOptions.ignoreHTTPSErrors": "boolean",
145
+ "browser.contextOptions.isMobile": "boolean",
146
+ "browser.contextOptions.javaScriptEnabled": "boolean",
147
+ "browser.contextOptions.locale": "string",
148
+ "browser.contextOptions.offline": "boolean",
149
+ "browser.contextOptions.permissions": "string[]",
150
+ "browser.contextOptions.reducedMotion": "string",
151
+ "browser.contextOptions.screen": "size",
152
+ "browser.contextOptions.serviceWorkers": "string",
153
+ "browser.contextOptions.storageState": "string",
154
+ "browser.contextOptions.strictSelectors": "boolean",
155
+ "browser.contextOptions.timezoneId": "string",
156
+ "browser.contextOptions.userAgent": "string",
157
+ "browser.contextOptions.viewport": "size",
158
+ // top-level
159
+ "extension": "boolean",
160
+ "capabilities": "string[]",
161
+ "saveSession": "boolean",
162
+ "saveTrace": "boolean",
163
+ "saveVideo": "size",
164
+ "sharedBrowserContext": "boolean",
165
+ "outputDir": "string",
166
+ "outputMode": "string",
167
+ "imageResponses": "string",
168
+ "allowUnrestrictedFileAccess": "boolean",
169
+ "codegen": "string",
170
+ "testIdAttribute": "string",
171
+ // server
172
+ "server.port": "number",
173
+ "server.host": "string",
174
+ "server.allowedHosts": "string[]",
175
+ // console
176
+ "console.level": "string",
177
+ // network
178
+ "network.allowedOrigins": "string[]",
179
+ "network.blockedOrigins": "string[]",
180
+ // timeouts
181
+ "timeouts.action": "number",
182
+ "timeouts.navigation": "number",
183
+ // snapshot
184
+ "snapshot.mode": "string"
185
+ };
186
+ // Annotate the CommonJS export names for ESM import in node:
187
+ 0 && (module.exports = {
188
+ configFromIniFile,
189
+ configsFromIniFile
190
+ });
@@ -0,0 +1,42 @@
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 __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var exports_exports = {};
21
+ __export(exports_exports, {
22
+ createClientInfo: () => import_registry.createClientInfo,
23
+ logUnhandledError: () => import_log.logUnhandledError,
24
+ setupExitWatchdog: () => import_watchdog.setupExitWatchdog,
25
+ startCliDaemonServer: () => import_daemon.startCliDaemonServer
26
+ });
27
+ module.exports = __toCommonJS(exports_exports);
28
+ var import_registry = require("../cli/client/registry");
29
+ var import_log = require("./log");
30
+ var import_watchdog = require("./watchdog");
31
+ var import_daemon = require("../cli/daemon/daemon");
32
+ __reExport(exports_exports, require("./sdk/server"), module.exports);
33
+ __reExport(exports_exports, require("./sdk/tool"), module.exports);
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ createClientInfo,
37
+ logUnhandledError,
38
+ setupExitWatchdog,
39
+ startCliDaemonServer,
40
+ ...require("./sdk/server"),
41
+ ...require("./sdk/tool")
42
+ });
@@ -0,0 +1,59 @@
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 extensionContextFactory_exports = {};
30
+ __export(extensionContextFactory_exports, {
31
+ createExtensionBrowser: () => createExtensionBrowser
32
+ });
33
+ module.exports = __toCommonJS(extensionContextFactory_exports);
34
+ var playwright = __toESM(require("../.."));
35
+ var import_utilsBundle = require("../utilsBundle");
36
+ var import_network = require("../server/utils/network");
37
+ var import_cdpRelay = require("./cdpRelay");
38
+ const debugLogger = (0, import_utilsBundle.debug)("pw:mcp:relay");
39
+ async function createExtensionBrowser(config, clientInfo) {
40
+ const httpServer = (0, import_network.createHttpServer)();
41
+ await (0, import_network.startHttpServer)(httpServer, {});
42
+ const relay = new import_cdpRelay.CDPRelayServer(
43
+ httpServer,
44
+ config.browser.launchOptions.channel || "chrome",
45
+ config.browser.userDataDir,
46
+ config.browser.launchOptions.executablePath
47
+ );
48
+ debugLogger(`CDP relay server started, extension endpoint: ${relay.extensionEndpoint()}.`);
49
+ await relay.ensureExtensionConnectionForMCPContext(
50
+ clientInfo,
51
+ /* forceNewTab */
52
+ false
53
+ );
54
+ return await playwright.chromium.connectOverCDP(relay.cdpEndpoint(), { isLocal: true });
55
+ }
56
+ // Annotate the CommonJS export names for ESM import in node:
57
+ 0 && (module.exports = {
58
+ createExtensionBrowser
59
+ });