@checkly/playwright-core 1.51.17-beta.2 → 1.54.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/browsers.json +16 -14
  3. package/index.js +1 -1
  4. package/lib/androidServerImpl.js +47 -50
  5. package/lib/browserServerImpl.js +89 -69
  6. package/lib/checkly/escapeRegExp.js +23 -27
  7. package/lib/checkly/fetch.js +64 -46
  8. package/lib/checkly/secretsFilter.js +49 -35
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +400 -359
  11. package/lib/cli/programWithTestStub.js +51 -45
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +151 -242
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -36
  16. package/lib/client/browser.js +96 -71
  17. package/lib/client/browserContext.js +314 -345
  18. package/lib/client/browserType.js +103 -127
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +90 -113
  21. package/lib/client/clientHelper.js +48 -39
  22. package/lib/client/clientInstrumentation.js +40 -37
  23. package/lib/client/clientStackTrace.js +41 -37
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +188 -214
  26. package/lib/client/consoleMessage.js +31 -28
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +80 -77
  31. package/lib/client/elementHandle.js +120 -159
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +124 -121
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +166 -190
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +31 -28
  38. package/lib/client/frame.js +207 -306
  39. package/lib/client/harRouter.js +42 -52
  40. package/lib/client/input.js +42 -69
  41. package/lib/client/jsHandle.js +54 -69
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +29 -29
  44. package/lib/client/locator.js +145 -237
  45. package/lib/client/network.js +282 -307
  46. package/lib/client/page.js +269 -318
  47. package/lib/client/platform.js +46 -43
  48. package/lib/client/playwright.js +51 -76
  49. package/lib/client/selectors.js +45 -63
  50. package/lib/client/stream.js +29 -25
  51. package/lib/client/timeoutSettings.js +55 -41
  52. package/lib/client/tracing.js +49 -96
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +69 -88
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +43 -56
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +27 -23
  60. package/lib/generated/bindingsControllerSource.js +28 -0
  61. package/lib/generated/clockSource.js +26 -6
  62. package/lib/generated/consoleApiSource.js +26 -6
  63. package/lib/generated/injectedScriptSource.js +26 -6
  64. package/lib/generated/pollingRecorderSource.js +26 -6
  65. package/lib/generated/storageScriptSource.js +28 -0
  66. package/lib/generated/utilityScriptSource.js +26 -6
  67. package/lib/generated/webSocketMockSource.js +333 -5
  68. package/lib/inProcessFactory.js +51 -53
  69. package/lib/inprocess.js +2 -19
  70. package/lib/outofprocess.js +51 -46
  71. package/lib/protocol/serializers.js +153 -134
  72. package/lib/protocol/validator.js +2807 -2739
  73. package/lib/protocol/validatorPrimitives.js +114 -73
  74. package/lib/remote/playwrightConnection.js +88 -242
  75. package/lib/remote/playwrightServer.js +305 -92
  76. package/lib/server/accessibility.js +44 -37
  77. package/lib/server/android/android.js +251 -241
  78. package/lib/server/android/backendAdb.js +87 -82
  79. package/lib/server/artifact.js +78 -55
  80. package/lib/server/bidi/bidiBrowser.js +297 -158
  81. package/lib/server/bidi/bidiChromium.js +119 -89
  82. package/lib/server/bidi/bidiConnection.js +66 -83
  83. package/lib/server/bidi/bidiExecutionContext.js +129 -113
  84. package/lib/server/bidi/bidiFirefox.js +86 -76
  85. package/lib/server/bidi/bidiInput.js +106 -117
  86. package/lib/server/bidi/bidiNetworkManager.js +142 -159
  87. package/lib/server/bidi/bidiOverCdp.js +57 -58
  88. package/lib/server/bidi/bidiPage.js +260 -260
  89. package/lib/server/bidi/bidiPdf.js +52 -86
  90. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  91. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  92. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  93. package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
  94. package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
  95. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  96. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  97. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  98. package/lib/server/browser.js +93 -95
  99. package/lib/server/browserContext.js +419 -429
  100. package/lib/server/browserType.js +186 -216
  101. package/lib/server/callLog.js +47 -44
  102. package/lib/server/chromium/chromium.js +235 -203
  103. package/lib/server/chromium/chromiumSwitches.js +100 -67
  104. package/lib/server/chromium/crAccessibility.js +157 -131
  105. package/lib/server/chromium/crBrowser.js +310 -292
  106. package/lib/server/chromium/crConnection.js +95 -121
  107. package/lib/server/chromium/crCoverage.js +121 -131
  108. package/lib/server/chromium/crDevTools.js +60 -51
  109. package/lib/server/chromium/crDragDrop.js +68 -84
  110. package/lib/server/chromium/crExecutionContext.js +89 -83
  111. package/lib/server/chromium/crInput.js +118 -113
  112. package/lib/server/chromium/crNetworkManager.js +274 -375
  113. package/lib/server/chromium/crPage.js +536 -593
  114. package/lib/server/chromium/crPdf.js +54 -86
  115. package/lib/server/chromium/crProtocolHelper.js +92 -80
  116. package/lib/server/chromium/crServiceWorker.js +84 -73
  117. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  118. package/lib/server/chromium/protocol.d.js +16 -0
  119. package/lib/server/chromium/videoRecorder.js +66 -99
  120. package/lib/server/clock.js +107 -83
  121. package/lib/server/codegen/csharp.js +192 -162
  122. package/lib/server/codegen/java.js +156 -129
  123. package/lib/server/codegen/javascript.js +163 -148
  124. package/lib/server/codegen/jsonl.js +32 -28
  125. package/lib/server/codegen/language.js +75 -52
  126. package/lib/server/codegen/languages.js +65 -27
  127. package/lib/server/codegen/python.js +141 -126
  128. package/lib/server/codegen/types.js +15 -4
  129. package/lib/server/console.js +28 -32
  130. package/lib/server/cookieStore.js +108 -86
  131. package/lib/server/debugController.js +147 -151
  132. package/lib/server/debugger.js +86 -78
  133. package/lib/server/deviceDescriptors.js +37 -24
  134. package/lib/server/deviceDescriptorsSource.json +238 -128
  135. package/lib/server/dialog.js +84 -39
  136. package/lib/server/dispatchers/androidDispatcher.js +257 -148
  137. package/lib/server/dispatchers/artifactDispatcher.js +79 -79
  138. package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
  139. package/lib/server/dispatchers/browserDispatcher.js +96 -148
  140. package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
  141. package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
  142. package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
  143. package/lib/server/dispatchers/dialogDispatcher.js +34 -31
  144. package/lib/server/dispatchers/dispatcher.js +208 -248
  145. package/lib/server/dispatchers/electronDispatcher.js +66 -70
  146. package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
  147. package/lib/server/dispatchers/frameDispatcher.js +211 -272
  148. package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
  149. package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
  150. package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
  151. package/lib/server/dispatchers/networkDispatchers.js +117 -128
  152. package/lib/server/dispatchers/pageDispatcher.js +256 -248
  153. package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
  154. package/lib/server/dispatchers/streamDispatcher.js +52 -48
  155. package/lib/server/dispatchers/tracingDispatcher.js +47 -52
  156. package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
  157. package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
  158. package/lib/server/dom.js +485 -582
  159. package/lib/server/download.js +47 -37
  160. package/lib/server/electron/electron.js +216 -243
  161. package/lib/server/electron/loader.js +9 -37
  162. package/lib/server/errors.js +47 -46
  163. package/lib/server/fetch.js +317 -360
  164. package/lib/server/fileChooser.js +25 -24
  165. package/lib/server/fileUploadUtils.js +66 -60
  166. package/lib/server/firefox/ffAccessibility.js +153 -131
  167. package/lib/server/firefox/ffBrowser.js +268 -305
  168. package/lib/server/firefox/ffConnection.js +63 -84
  169. package/lib/server/firefox/ffExecutionContext.js +92 -73
  170. package/lib/server/firefox/ffInput.js +82 -84
  171. package/lib/server/firefox/ffNetworkManager.js +137 -114
  172. package/lib/server/firefox/ffPage.js +261 -293
  173. package/lib/server/firefox/firefox.js +80 -72
  174. package/lib/server/firefox/protocol.d.js +16 -0
  175. package/lib/server/formData.js +107 -35
  176. package/lib/server/frameSelectors.js +98 -114
  177. package/lib/server/frames.js +845 -1055
  178. package/lib/server/har/harRecorder.js +85 -77
  179. package/lib/server/har/harTracer.js +290 -223
  180. package/lib/server/harBackend.js +80 -80
  181. package/lib/server/helper.js +55 -59
  182. package/lib/server/index.js +59 -99
  183. package/lib/server/input.js +151 -189
  184. package/lib/server/instrumentation.js +57 -44
  185. package/lib/server/javascript.js +133 -134
  186. package/lib/server/launchApp.js +113 -75
  187. package/lib/server/localUtils.js +150 -142
  188. package/lib/server/macEditingCommands.js +141 -137
  189. package/lib/server/network.js +299 -303
  190. package/lib/server/page.js +513 -544
  191. package/lib/server/pipeTransport.js +49 -45
  192. package/lib/server/playwright.js +58 -67
  193. package/lib/server/progress.js +137 -68
  194. package/lib/server/protocolError.js +34 -31
  195. package/lib/server/recorder/chat.js +70 -86
  196. package/lib/server/recorder/recorderApp.js +341 -176
  197. package/lib/server/recorder/recorderInTraceViewer.js +65 -94
  198. package/lib/server/recorder/recorderRunner.js +93 -116
  199. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  200. package/lib/server/recorder/recorderUtils.js +104 -47
  201. package/lib/server/recorder/throttledFile.js +42 -30
  202. package/lib/server/recorder.js +395 -275
  203. package/lib/server/registry/browserFetcher.js +106 -101
  204. package/lib/server/registry/dependencies.js +245 -196
  205. package/lib/server/registry/index.js +930 -803
  206. package/lib/server/registry/nativeDeps.js +1073 -464
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +160 -191
  209. package/lib/server/selectors.js +90 -51
  210. package/lib/server/socksClientCertificatesInterceptor.js +171 -186
  211. package/lib/server/socksInterceptor.js +62 -70
  212. package/lib/server/trace/recorder/snapshotter.js +76 -102
  213. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  214. package/lib/server/trace/recorder/tracing.js +354 -362
  215. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  216. package/lib/server/trace/viewer/traceViewer.js +160 -147
  217. package/lib/server/transport.js +119 -134
  218. package/lib/server/types.js +26 -22
  219. package/lib/server/usKeyboardLayout.js +135 -545
  220. package/lib/server/utils/ascii.js +39 -26
  221. package/lib/server/utils/comparators.js +105 -103
  222. package/lib/server/utils/crypto.js +157 -112
  223. package/lib/server/utils/debug.js +36 -32
  224. package/lib/server/utils/debugLogger.js +77 -48
  225. package/lib/server/utils/env.js +52 -37
  226. package/lib/server/utils/eventsHelper.js +29 -28
  227. package/lib/server/utils/expectUtils.js +31 -26
  228. package/lib/server/utils/fileUtils.js +123 -136
  229. package/lib/server/utils/happyEyeballs.js +141 -126
  230. package/lib/server/utils/hostPlatform.js +84 -120
  231. package/lib/server/utils/httpServer.js +106 -121
  232. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  233. package/lib/server/utils/image_tools/compare.js +44 -43
  234. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  235. package/lib/server/utils/image_tools/stats.js +40 -40
  236. package/lib/server/utils/linuxUtils.js +50 -37
  237. package/lib/server/utils/network.js +152 -96
  238. package/lib/server/utils/nodePlatform.js +87 -79
  239. package/lib/server/utils/pipeTransport.js +44 -42
  240. package/lib/server/utils/processLauncher.js +111 -121
  241. package/lib/server/utils/profiler.js +52 -39
  242. package/lib/server/utils/socksProxy.js +280 -339
  243. package/lib/server/utils/spawnAsync.js +37 -41
  244. package/lib/server/utils/task.js +31 -38
  245. package/lib/server/utils/userAgent.js +73 -66
  246. package/lib/server/utils/wsServer.js +68 -75
  247. package/lib/server/utils/zipFile.js +36 -37
  248. package/lib/server/utils/zones.js +37 -34
  249. package/lib/server/webkit/protocol.d.js +16 -0
  250. package/lib/server/webkit/webkit.js +77 -61
  251. package/lib/server/webkit/wkAccessibility.js +161 -118
  252. package/lib/server/webkit/wkBrowser.js +193 -184
  253. package/lib/server/webkit/wkConnection.js +59 -83
  254. package/lib/server/webkit/wkExecutionContext.js +85 -70
  255. package/lib/server/webkit/wkInput.js +97 -95
  256. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  257. package/lib/server/webkit/wkPage.js +568 -667
  258. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  259. package/lib/server/webkit/wkWorkers.js +79 -79
  260. package/lib/utils/expectUtils.js +31 -26
  261. package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
  262. package/lib/utils/isomorphic/assert.js +28 -22
  263. package/lib/utils/isomorphic/colors.js +66 -59
  264. package/lib/utils/isomorphic/cssParser.js +120 -125
  265. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  266. package/lib/utils/isomorphic/headers.js +38 -37
  267. package/lib/utils/isomorphic/locatorGenerators.js +358 -357
  268. package/lib/utils/isomorphic/locatorParser.js +96 -105
  269. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  270. package/lib/utils/isomorphic/manualPromise.js +46 -39
  271. package/lib/utils/isomorphic/mimeType.js +447 -25
  272. package/lib/utils/isomorphic/multimap.js +34 -27
  273. package/lib/utils/isomorphic/protocolFormatter.js +68 -0
  274. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  275. package/lib/utils/isomorphic/recorderUtils.js +140 -181
  276. package/lib/utils/isomorphic/rtti.js +35 -33
  277. package/lib/utils/isomorphic/selectorParser.js +182 -193
  278. package/lib/utils/isomorphic/semaphore.js +27 -24
  279. package/lib/utils/isomorphic/stackTrace.js +87 -98
  280. package/lib/utils/isomorphic/stringUtils.js +98 -112
  281. package/lib/utils/isomorphic/time.js +46 -22
  282. package/lib/utils/isomorphic/timeoutRunner.js +53 -53
  283. package/lib/utils/isomorphic/traceUtils.js +37 -41
  284. package/lib/utils/isomorphic/types.js +15 -4
  285. package/lib/utils/isomorphic/urlMatch.js +113 -67
  286. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  287. package/lib/utils.js +101 -443
  288. package/lib/utilsBundle.js +101 -52
  289. package/lib/utilsBundleImpl/index.js +160 -150
  290. package/lib/zipBundle.js +32 -23
  291. package/lib/zipBundleImpl.js +4 -4
  292. package/package.json +1 -1
  293. package/types/protocol.d.ts +1267 -1057
  294. package/types/types.d.ts +131 -29
  295. package/lib/common/socksProxy.js +0 -569
  296. package/lib/common/timeoutSettings.js +0 -73
  297. package/lib/common/types.js +0 -5
  298. package/lib/image_tools/colorUtils.js +0 -98
  299. package/lib/image_tools/compare.js +0 -108
  300. package/lib/image_tools/imageChannel.js +0 -70
  301. package/lib/image_tools/stats.js +0 -102
  302. package/lib/protocol/debug.js +0 -27
  303. package/lib/protocol/transport.js +0 -82
  304. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  305. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  306. package/lib/server/recorder/contextRecorder.js +0 -290
  307. package/lib/server/recorder/recorderCollection.js +0 -104
  308. package/lib/server/recorder/recorderFrontend.js +0 -5
  309. package/lib/server/storageScript.js +0 -160
  310. package/lib/server/timeoutSettings.js +0 -74
  311. package/lib/third_party/diff_match_patch.js +0 -2222
  312. package/lib/utils/ascii.js +0 -31
  313. package/lib/utils/comparators.js +0 -171
  314. package/lib/utils/crypto.js +0 -174
  315. package/lib/utils/debug.js +0 -46
  316. package/lib/utils/debugLogger.js +0 -91
  317. package/lib/utils/env.js +0 -49
  318. package/lib/utils/eventsHelper.js +0 -38
  319. package/lib/utils/fileUtils.js +0 -205
  320. package/lib/utils/happy-eyeballs.js +0 -210
  321. package/lib/utils/headers.js +0 -52
  322. package/lib/utils/hostPlatform.js +0 -133
  323. package/lib/utils/httpServer.js +0 -237
  324. package/lib/utils/index.js +0 -368
  325. package/lib/utils/linuxUtils.js +0 -78
  326. package/lib/utils/manualPromise.js +0 -109
  327. package/lib/utils/multimap.js +0 -75
  328. package/lib/utils/network.js +0 -160
  329. package/lib/utils/processLauncher.js +0 -248
  330. package/lib/utils/profiler.js +0 -53
  331. package/lib/utils/rtti.js +0 -44
  332. package/lib/utils/semaphore.js +0 -51
  333. package/lib/utils/spawnAsync.js +0 -45
  334. package/lib/utils/stackTrace.js +0 -121
  335. package/lib/utils/task.js +0 -58
  336. package/lib/utils/time.js +0 -37
  337. package/lib/utils/timeoutRunner.js +0 -66
  338. package/lib/utils/traceUtils.js +0 -44
  339. package/lib/utils/userAgent.js +0 -105
  340. package/lib/utils/wsServer.js +0 -127
  341. package/lib/utils/zipFile.js +0 -75
  342. package/lib/utils/zones.js +0 -62
  343. package/lib/vite/htmlReport/index.html +0 -69
  344. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +0 -24
  345. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +0 -1
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  348. package/lib/vite/recorder/assets/index-eHBmevrY.css +0 -1
  349. package/lib/vite/recorder/index.html +0 -29
  350. package/lib/vite/recorder/playwright-logo.svg +0 -9
  351. package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +0 -24
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +0 -1
  353. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +0 -235
  354. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +0 -25
  355. package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js +0 -9
  356. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +0 -1
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +0 -1
  359. package/lib/vite/traceViewer/embedded.DpNPH6mk.js +0 -2
  360. package/lib/vite/traceViewer/embedded.html +0 -18
  361. package/lib/vite/traceViewer/embedded.mLhjB5IF.css +0 -1
  362. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  363. package/lib/vite/traceViewer/index.CuE3SYGw.js +0 -2
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +0 -1
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.BD-uZJs7.js +0 -2
  368. package/lib/vite/traceViewer/recorder.html +0 -17
  369. package/lib/vite/traceViewer/recorder.tn0RQdqM.css +0 -0
  370. package/lib/vite/traceViewer/snapshot.html +0 -21
  371. package/lib/vite/traceViewer/sw.bundle.js +0 -3
  372. package/lib/vite/traceViewer/uiMode.BatfzHMG.css +0 -1
  373. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +0 -5
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +0 -1
  376. package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +0 -32
@@ -1,753 +1,779 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Registry = void 0;
7
- exports.browserDirectoryToMarkerFilePath = browserDirectoryToMarkerFilePath;
8
- exports.buildPlaywrightCLICommand = buildPlaywrightCLICommand;
9
- exports.findChromiumChannel = findChromiumChannel;
10
- exports.installBrowsersForNpmInstall = installBrowsersForNpmInstall;
11
- exports.registryDirectory = exports.registry = void 0;
12
- Object.defineProperty(exports, "writeDockerVersion", {
13
- enumerable: true,
14
- get: function () {
15
- return _dependencies.writeDockerVersion;
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 });
16
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 registry_exports = {};
30
+ __export(registry_exports, {
31
+ Registry: () => Registry,
32
+ browserDirectoryToMarkerFilePath: () => browserDirectoryToMarkerFilePath,
33
+ buildPlaywrightCLICommand: () => buildPlaywrightCLICommand,
34
+ findChromiumChannelBestEffort: () => findChromiumChannelBestEffort,
35
+ installBrowsersForNpmInstall: () => installBrowsersForNpmInstall,
36
+ registry: () => registry,
37
+ registryDirectory: () => registryDirectory,
38
+ writeDockerVersion: () => import_dependencies3.writeDockerVersion
17
39
  });
18
- var _fs = _interopRequireDefault(require("fs"));
19
- var _os = _interopRequireDefault(require("os"));
20
- var _path = _interopRequireDefault(require("path"));
21
- var util = _interopRequireWildcard(require("util"));
22
- var _browserFetcher = require("./browserFetcher");
23
- var _dependencies = require("./dependencies");
24
- var _utils = require("../../utils");
25
- var _ascii = require("../utils/ascii");
26
- var _debugLogger = require("../utils/debugLogger");
27
- var _hostPlatform = require("../utils/hostPlatform");
28
- var _network = require("../utils/network");
29
- var _spawnAsync = require("../utils/spawnAsync");
30
- var _userAgent = require("../utils/userAgent");
31
- var _utilsBundle = require("../../utilsBundle");
32
- var _fileUtils = require("../utils/fileUtils");
33
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
34
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
35
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
36
- /**
37
- * Copyright 2017 Google Inc. All rights reserved.
38
- * Modifications copyright (c) Microsoft Corporation.
39
- *
40
- * Licensed under the Apache License, Version 2.0 (the "License");
41
- * you may not use this file except in compliance with the License.
42
- * You may obtain a copy of the License at
43
- *
44
- * http://www.apache.org/licenses/LICENSE-2.0
45
- *
46
- * Unless required by applicable law or agreed to in writing, software
47
- * distributed under the License is distributed on an "AS IS" BASIS,
48
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
49
- * See the License for the specific language governing permissions and
50
- * limitations under the License.
51
- */
52
-
53
- const PACKAGE_PATH = _path.default.join(__dirname, '..', '..', '..');
54
- const BIN_PATH = _path.default.join(__dirname, '..', '..', '..', 'bin');
55
- const PLAYWRIGHT_CDN_MIRRORS = ['https://cdn.playwright.dev/dbazure/download/playwright',
56
- // ESRP CDN
57
- 'https://playwright.download.prss.microsoft.com/dbazure/download/playwright',
58
- // Directly hit ESRP CDN
59
- 'https://cdn.playwright.dev' // Hit the Storage Bucket directly
40
+ module.exports = __toCommonJS(registry_exports);
41
+ var import_fs = __toESM(require("fs"));
42
+ var import_os = __toESM(require("os"));
43
+ var import_path = __toESM(require("path"));
44
+ var util = __toESM(require("util"));
45
+ var import_browserFetcher = require("./browserFetcher");
46
+ var import_dependencies = require("./dependencies");
47
+ var import_dependencies2 = require("./dependencies");
48
+ var import_utils = require("../../utils");
49
+ var import_ascii = require("../utils/ascii");
50
+ var import_debugLogger = require("../utils/debugLogger");
51
+ var import_hostPlatform = require("../utils/hostPlatform");
52
+ var import_network = require("../utils/network");
53
+ var import_spawnAsync = require("../utils/spawnAsync");
54
+ var import_userAgent = require("../utils/userAgent");
55
+ var import_utilsBundle = require("../../utilsBundle");
56
+ var import_fileUtils = require("../utils/fileUtils");
57
+ var import_dependencies3 = require("./dependencies");
58
+ const PACKAGE_PATH = import_path.default.join(__dirname, "..", "..", "..");
59
+ const BIN_PATH = import_path.default.join(__dirname, "..", "..", "..", "bin");
60
+ const PLAYWRIGHT_CDN_MIRRORS = [
61
+ "https://cdn.playwright.dev/dbazure/download/playwright",
62
+ // ESRP CDN
63
+ "https://playwright.download.prss.microsoft.com/dbazure/download/playwright",
64
+ // Directly hit ESRP CDN
65
+ "https://cdn.playwright.dev"
66
+ // Hit the Storage Bucket directly
60
67
  ];
61
68
  if (process.env.PW_TEST_CDN_THAT_SHOULD_WORK) {
62
69
  for (let i = 0; i < PLAYWRIGHT_CDN_MIRRORS.length; i++) {
63
70
  const cdn = PLAYWRIGHT_CDN_MIRRORS[i];
64
71
  if (cdn !== process.env.PW_TEST_CDN_THAT_SHOULD_WORK) {
65
72
  const parsedCDN = new URL(cdn);
66
- parsedCDN.hostname = parsedCDN.hostname + '.does-not-resolve.playwright.dev';
73
+ parsedCDN.hostname = parsedCDN.hostname + ".does-not-resolve.playwright.dev";
67
74
  PLAYWRIGHT_CDN_MIRRORS[i] = parsedCDN.toString();
68
75
  }
69
76
  }
70
77
  }
71
78
  const EXECUTABLE_PATHS = {
72
- 'chromium': {
73
- 'linux': ['chrome-linux', 'chrome'],
74
- 'mac': ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'],
75
- 'win': ['chrome-win', 'chrome.exe']
79
+ "chromium": {
80
+ "linux": ["chrome-linux", "chrome"],
81
+ "mac": ["chrome-mac", "Chromium.app", "Contents", "MacOS", "Chromium"],
82
+ "win": ["chrome-win", "chrome.exe"]
76
83
  },
77
- 'chromium-headless-shell': {
78
- 'linux': ['chrome-linux', 'headless_shell'],
79
- 'mac': ['chrome-mac', 'headless_shell'],
80
- 'win': ['chrome-win', 'headless_shell.exe']
84
+ "chromium-headless-shell": {
85
+ "linux": ["chrome-linux", "headless_shell"],
86
+ "mac": ["chrome-mac", "headless_shell"],
87
+ "win": ["chrome-win", "headless_shell.exe"]
81
88
  },
82
- 'firefox': {
83
- 'linux': ['firefox', 'firefox'],
84
- 'mac': ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox'],
85
- 'win': ['firefox', 'firefox.exe']
89
+ "firefox": {
90
+ "linux": ["firefox", "firefox"],
91
+ "mac": ["firefox", "Nightly.app", "Contents", "MacOS", "firefox"],
92
+ "win": ["firefox", "firefox.exe"]
86
93
  },
87
- 'webkit': {
88
- 'linux': ['pw_run.sh'],
89
- 'mac': ['pw_run.sh'],
90
- 'win': ['Playwright.exe']
94
+ "webkit": {
95
+ "linux": ["pw_run.sh"],
96
+ "mac": ["pw_run.sh"],
97
+ "win": ["Playwright.exe"]
91
98
  },
92
- 'ffmpeg': {
93
- 'linux': ['ffmpeg-linux'],
94
- 'mac': ['ffmpeg-mac'],
95
- 'win': ['ffmpeg-win64.exe']
99
+ "ffmpeg": {
100
+ "linux": ["ffmpeg-linux"],
101
+ "mac": ["ffmpeg-mac"],
102
+ "win": ["ffmpeg-win64.exe"]
96
103
  },
97
- 'winldd': {
98
- 'linux': undefined,
99
- 'mac': undefined,
100
- 'win': ['PrintDeps.exe']
104
+ "winldd": {
105
+ "linux": void 0,
106
+ "mac": void 0,
107
+ "win": ["PrintDeps.exe"]
101
108
  }
102
109
  };
103
110
  const DOWNLOAD_PATHS = {
104
- 'chromium': {
105
- '<unknown>': undefined,
106
- 'ubuntu18.04-x64': undefined,
107
- 'ubuntu20.04-x64': 'builds/chromium/%s/chromium-linux.zip',
108
- 'ubuntu22.04-x64': 'builds/chromium/%s/chromium-linux.zip',
109
- 'ubuntu24.04-x64': 'builds/chromium/%s/chromium-linux.zip',
110
- 'ubuntu18.04-arm64': undefined,
111
- 'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
112
- 'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
113
- 'ubuntu24.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
114
- 'debian11-x64': 'builds/chromium/%s/chromium-linux.zip',
115
- 'debian11-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
116
- 'debian12-x64': 'builds/chromium/%s/chromium-linux.zip',
117
- 'debian12-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
118
- 'mac10.13': 'builds/chromium/%s/chromium-mac.zip',
119
- 'mac10.14': 'builds/chromium/%s/chromium-mac.zip',
120
- 'mac10.15': 'builds/chromium/%s/chromium-mac.zip',
121
- 'mac11': 'builds/chromium/%s/chromium-mac.zip',
122
- 'mac11-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
123
- 'mac12': 'builds/chromium/%s/chromium-mac.zip',
124
- 'mac12-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
125
- 'mac13': 'builds/chromium/%s/chromium-mac.zip',
126
- 'mac13-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
127
- 'mac14': 'builds/chromium/%s/chromium-mac.zip',
128
- 'mac14-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
129
- 'mac15': 'builds/chromium/%s/chromium-mac.zip',
130
- 'mac15-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
131
- 'win64': 'builds/chromium/%s/chromium-win64.zip'
111
+ "chromium": {
112
+ "<unknown>": void 0,
113
+ "ubuntu18.04-x64": void 0,
114
+ "ubuntu20.04-x64": "builds/chromium/%s/chromium-linux.zip",
115
+ "ubuntu22.04-x64": "builds/chromium/%s/chromium-linux.zip",
116
+ "ubuntu24.04-x64": "builds/chromium/%s/chromium-linux.zip",
117
+ "ubuntu18.04-arm64": void 0,
118
+ "ubuntu20.04-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
119
+ "ubuntu22.04-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
120
+ "ubuntu24.04-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
121
+ "debian11-x64": "builds/chromium/%s/chromium-linux.zip",
122
+ "debian11-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
123
+ "debian12-x64": "builds/chromium/%s/chromium-linux.zip",
124
+ "debian12-arm64": "builds/chromium/%s/chromium-linux-arm64.zip",
125
+ "mac10.13": "builds/chromium/%s/chromium-mac.zip",
126
+ "mac10.14": "builds/chromium/%s/chromium-mac.zip",
127
+ "mac10.15": "builds/chromium/%s/chromium-mac.zip",
128
+ "mac11": "builds/chromium/%s/chromium-mac.zip",
129
+ "mac11-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
130
+ "mac12": "builds/chromium/%s/chromium-mac.zip",
131
+ "mac12-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
132
+ "mac13": "builds/chromium/%s/chromium-mac.zip",
133
+ "mac13-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
134
+ "mac14": "builds/chromium/%s/chromium-mac.zip",
135
+ "mac14-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
136
+ "mac15": "builds/chromium/%s/chromium-mac.zip",
137
+ "mac15-arm64": "builds/chromium/%s/chromium-mac-arm64.zip",
138
+ "win64": "builds/chromium/%s/chromium-win64.zip"
132
139
  },
133
- 'chromium-headless-shell': {
134
- '<unknown>': undefined,
135
- 'ubuntu18.04-x64': undefined,
136
- 'ubuntu20.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
137
- 'ubuntu22.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
138
- 'ubuntu24.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
139
- 'ubuntu18.04-arm64': undefined,
140
- 'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
141
- 'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
142
- 'ubuntu24.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
143
- 'debian11-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
144
- 'debian11-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
145
- 'debian12-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
146
- 'debian12-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
147
- 'mac10.13': undefined,
148
- 'mac10.14': undefined,
149
- 'mac10.15': undefined,
150
- 'mac11': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
151
- 'mac11-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
152
- 'mac12': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
153
- 'mac12-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
154
- 'mac13': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
155
- 'mac13-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
156
- 'mac14': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
157
- 'mac14-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
158
- 'mac15': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
159
- 'mac15-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
160
- 'win64': 'builds/chromium/%s/chromium-headless-shell-win64.zip'
140
+ "chromium-headless-shell": {
141
+ "<unknown>": void 0,
142
+ "ubuntu18.04-x64": void 0,
143
+ "ubuntu20.04-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
144
+ "ubuntu22.04-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
145
+ "ubuntu24.04-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
146
+ "ubuntu18.04-arm64": void 0,
147
+ "ubuntu20.04-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
148
+ "ubuntu22.04-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
149
+ "ubuntu24.04-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
150
+ "debian11-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
151
+ "debian11-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
152
+ "debian12-x64": "builds/chromium/%s/chromium-headless-shell-linux.zip",
153
+ "debian12-arm64": "builds/chromium/%s/chromium-headless-shell-linux-arm64.zip",
154
+ "mac10.13": void 0,
155
+ "mac10.14": void 0,
156
+ "mac10.15": void 0,
157
+ "mac11": "builds/chromium/%s/chromium-headless-shell-mac.zip",
158
+ "mac11-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
159
+ "mac12": "builds/chromium/%s/chromium-headless-shell-mac.zip",
160
+ "mac12-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
161
+ "mac13": "builds/chromium/%s/chromium-headless-shell-mac.zip",
162
+ "mac13-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
163
+ "mac14": "builds/chromium/%s/chromium-headless-shell-mac.zip",
164
+ "mac14-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
165
+ "mac15": "builds/chromium/%s/chromium-headless-shell-mac.zip",
166
+ "mac15-arm64": "builds/chromium/%s/chromium-headless-shell-mac-arm64.zip",
167
+ "win64": "builds/chromium/%s/chromium-headless-shell-win64.zip"
161
168
  },
162
- 'chromium-tip-of-tree': {
163
- '<unknown>': undefined,
164
- 'ubuntu18.04-x64': undefined,
165
- 'ubuntu20.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
166
- 'ubuntu22.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
167
- 'ubuntu24.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
168
- 'ubuntu18.04-arm64': undefined,
169
- 'ubuntu20.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
170
- 'ubuntu22.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
171
- 'ubuntu24.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
172
- 'debian11-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
173
- 'debian11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
174
- 'debian12-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
175
- 'debian12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
176
- 'mac10.13': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
177
- 'mac10.14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
178
- 'mac10.15': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
179
- 'mac11': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
180
- 'mac11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
181
- 'mac12': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
182
- 'mac12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
183
- 'mac13': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
184
- 'mac13-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
185
- 'mac14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
186
- 'mac14-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
187
- 'mac15': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
188
- 'mac15-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
189
- 'win64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-win64.zip'
169
+ "chromium-tip-of-tree": {
170
+ "<unknown>": void 0,
171
+ "ubuntu18.04-x64": void 0,
172
+ "ubuntu20.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
173
+ "ubuntu22.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
174
+ "ubuntu24.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
175
+ "ubuntu18.04-arm64": void 0,
176
+ "ubuntu20.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
177
+ "ubuntu22.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
178
+ "ubuntu24.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
179
+ "debian11-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
180
+ "debian11-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
181
+ "debian12-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip",
182
+ "debian12-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip",
183
+ "mac10.13": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
184
+ "mac10.14": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
185
+ "mac10.15": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
186
+ "mac11": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
187
+ "mac11-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
188
+ "mac12": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
189
+ "mac12-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
190
+ "mac13": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
191
+ "mac13-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
192
+ "mac14": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
193
+ "mac14-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
194
+ "mac15": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip",
195
+ "mac15-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip",
196
+ "win64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-win64.zip"
190
197
  },
191
- 'chromium-tip-of-tree-headless-shell': {
192
- '<unknown>': undefined,
193
- 'ubuntu18.04-x64': undefined,
194
- 'ubuntu20.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
195
- 'ubuntu22.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
196
- 'ubuntu24.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
197
- 'ubuntu18.04-arm64': undefined,
198
- 'ubuntu20.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
199
- 'ubuntu22.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
200
- 'ubuntu24.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
201
- 'debian11-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
202
- 'debian11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
203
- 'debian12-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
204
- 'debian12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
205
- 'mac10.13': undefined,
206
- 'mac10.14': undefined,
207
- 'mac10.15': undefined,
208
- 'mac11': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
209
- 'mac11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
210
- 'mac12': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
211
- 'mac12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
212
- 'mac13': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
213
- 'mac13-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
214
- 'mac14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
215
- 'mac14-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
216
- 'mac15': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
217
- 'mac15-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
218
- 'win64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-win64.zip'
198
+ "chromium-tip-of-tree-headless-shell": {
199
+ "<unknown>": void 0,
200
+ "ubuntu18.04-x64": void 0,
201
+ "ubuntu20.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
202
+ "ubuntu22.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
203
+ "ubuntu24.04-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
204
+ "ubuntu18.04-arm64": void 0,
205
+ "ubuntu20.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
206
+ "ubuntu22.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
207
+ "ubuntu24.04-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
208
+ "debian11-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
209
+ "debian11-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
210
+ "debian12-x64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip",
211
+ "debian12-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip",
212
+ "mac10.13": void 0,
213
+ "mac10.14": void 0,
214
+ "mac10.15": void 0,
215
+ "mac11": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
216
+ "mac11-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
217
+ "mac12": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
218
+ "mac12-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
219
+ "mac13": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
220
+ "mac13-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
221
+ "mac14": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
222
+ "mac14-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
223
+ "mac15": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip",
224
+ "mac15-arm64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip",
225
+ "win64": "builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-win64.zip"
219
226
  },
220
- 'firefox': {
221
- '<unknown>': undefined,
222
- 'ubuntu18.04-x64': undefined,
223
- 'ubuntu20.04-x64': 'builds/firefox/%s/firefox-ubuntu-20.04.zip',
224
- 'ubuntu22.04-x64': 'builds/firefox/%s/firefox-ubuntu-22.04.zip',
225
- 'ubuntu24.04-x64': 'builds/firefox/%s/firefox-ubuntu-24.04.zip',
226
- 'ubuntu18.04-arm64': undefined,
227
- 'ubuntu20.04-arm64': 'builds/firefox/%s/firefox-ubuntu-20.04-arm64.zip',
228
- 'ubuntu22.04-arm64': 'builds/firefox/%s/firefox-ubuntu-22.04-arm64.zip',
229
- 'ubuntu24.04-arm64': 'builds/firefox/%s/firefox-ubuntu-24.04-arm64.zip',
230
- 'debian11-x64': 'builds/firefox/%s/firefox-debian-11.zip',
231
- 'debian11-arm64': 'builds/firefox/%s/firefox-debian-11-arm64.zip',
232
- 'debian12-x64': 'builds/firefox/%s/firefox-debian-12.zip',
233
- 'debian12-arm64': 'builds/firefox/%s/firefox-debian-12-arm64.zip',
234
- 'mac10.13': 'builds/firefox/%s/firefox-mac.zip',
235
- 'mac10.14': 'builds/firefox/%s/firefox-mac.zip',
236
- 'mac10.15': 'builds/firefox/%s/firefox-mac.zip',
237
- 'mac11': 'builds/firefox/%s/firefox-mac.zip',
238
- 'mac11-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
239
- 'mac12': 'builds/firefox/%s/firefox-mac.zip',
240
- 'mac12-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
241
- 'mac13': 'builds/firefox/%s/firefox-mac.zip',
242
- 'mac13-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
243
- 'mac14': 'builds/firefox/%s/firefox-mac.zip',
244
- 'mac14-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
245
- 'mac15': 'builds/firefox/%s/firefox-mac.zip',
246
- 'mac15-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
247
- 'win64': 'builds/firefox/%s/firefox-win64.zip'
227
+ "firefox": {
228
+ "<unknown>": void 0,
229
+ "ubuntu18.04-x64": void 0,
230
+ "ubuntu20.04-x64": "builds/firefox/%s/firefox-ubuntu-20.04.zip",
231
+ "ubuntu22.04-x64": "builds/firefox/%s/firefox-ubuntu-22.04.zip",
232
+ "ubuntu24.04-x64": "builds/firefox/%s/firefox-ubuntu-24.04.zip",
233
+ "ubuntu18.04-arm64": void 0,
234
+ "ubuntu20.04-arm64": "builds/firefox/%s/firefox-ubuntu-20.04-arm64.zip",
235
+ "ubuntu22.04-arm64": "builds/firefox/%s/firefox-ubuntu-22.04-arm64.zip",
236
+ "ubuntu24.04-arm64": "builds/firefox/%s/firefox-ubuntu-24.04-arm64.zip",
237
+ "debian11-x64": "builds/firefox/%s/firefox-debian-11.zip",
238
+ "debian11-arm64": "builds/firefox/%s/firefox-debian-11-arm64.zip",
239
+ "debian12-x64": "builds/firefox/%s/firefox-debian-12.zip",
240
+ "debian12-arm64": "builds/firefox/%s/firefox-debian-12-arm64.zip",
241
+ "mac10.13": "builds/firefox/%s/firefox-mac.zip",
242
+ "mac10.14": "builds/firefox/%s/firefox-mac.zip",
243
+ "mac10.15": "builds/firefox/%s/firefox-mac.zip",
244
+ "mac11": "builds/firefox/%s/firefox-mac.zip",
245
+ "mac11-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
246
+ "mac12": "builds/firefox/%s/firefox-mac.zip",
247
+ "mac12-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
248
+ "mac13": "builds/firefox/%s/firefox-mac.zip",
249
+ "mac13-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
250
+ "mac14": "builds/firefox/%s/firefox-mac.zip",
251
+ "mac14-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
252
+ "mac15": "builds/firefox/%s/firefox-mac.zip",
253
+ "mac15-arm64": "builds/firefox/%s/firefox-mac-arm64.zip",
254
+ "win64": "builds/firefox/%s/firefox-win64.zip"
248
255
  },
249
- 'firefox-beta': {
250
- '<unknown>': undefined,
251
- 'ubuntu18.04-x64': undefined,
252
- 'ubuntu20.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-20.04.zip',
253
- 'ubuntu22.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-22.04.zip',
254
- 'ubuntu24.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-24.04.zip',
255
- 'ubuntu18.04-arm64': undefined,
256
- 'ubuntu20.04-arm64': undefined,
257
- 'ubuntu22.04-arm64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-22.04-arm64.zip',
258
- 'ubuntu24.04-arm64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-24.04-arm64.zip',
259
- 'debian11-x64': 'builds/firefox-beta/%s/firefox-beta-debian-11.zip',
260
- 'debian11-arm64': 'builds/firefox-beta/%s/firefox-beta-debian-11-arm64.zip',
261
- 'debian12-x64': 'builds/firefox-beta/%s/firefox-beta-debian-12.zip',
262
- 'debian12-arm64': 'builds/firefox-beta/%s/firefox-beta-debian-12-arm64.zip',
263
- 'mac10.13': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
264
- 'mac10.14': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
265
- 'mac10.15': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
266
- 'mac11': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
267
- 'mac11-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
268
- 'mac12': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
269
- 'mac12-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
270
- 'mac13': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
271
- 'mac13-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
272
- 'mac14': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
273
- 'mac14-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
274
- 'mac15': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
275
- 'mac15-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
276
- 'win64': 'builds/firefox-beta/%s/firefox-beta-win64.zip'
256
+ "firefox-beta": {
257
+ "<unknown>": void 0,
258
+ "ubuntu18.04-x64": void 0,
259
+ "ubuntu20.04-x64": "builds/firefox-beta/%s/firefox-beta-ubuntu-20.04.zip",
260
+ "ubuntu22.04-x64": "builds/firefox-beta/%s/firefox-beta-ubuntu-22.04.zip",
261
+ "ubuntu24.04-x64": "builds/firefox-beta/%s/firefox-beta-ubuntu-24.04.zip",
262
+ "ubuntu18.04-arm64": void 0,
263
+ "ubuntu20.04-arm64": void 0,
264
+ "ubuntu22.04-arm64": "builds/firefox-beta/%s/firefox-beta-ubuntu-22.04-arm64.zip",
265
+ "ubuntu24.04-arm64": "builds/firefox-beta/%s/firefox-beta-ubuntu-24.04-arm64.zip",
266
+ "debian11-x64": "builds/firefox-beta/%s/firefox-beta-debian-11.zip",
267
+ "debian11-arm64": "builds/firefox-beta/%s/firefox-beta-debian-11-arm64.zip",
268
+ "debian12-x64": "builds/firefox-beta/%s/firefox-beta-debian-12.zip",
269
+ "debian12-arm64": "builds/firefox-beta/%s/firefox-beta-debian-12-arm64.zip",
270
+ "mac10.13": "builds/firefox-beta/%s/firefox-beta-mac.zip",
271
+ "mac10.14": "builds/firefox-beta/%s/firefox-beta-mac.zip",
272
+ "mac10.15": "builds/firefox-beta/%s/firefox-beta-mac.zip",
273
+ "mac11": "builds/firefox-beta/%s/firefox-beta-mac.zip",
274
+ "mac11-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
275
+ "mac12": "builds/firefox-beta/%s/firefox-beta-mac.zip",
276
+ "mac12-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
277
+ "mac13": "builds/firefox-beta/%s/firefox-beta-mac.zip",
278
+ "mac13-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
279
+ "mac14": "builds/firefox-beta/%s/firefox-beta-mac.zip",
280
+ "mac14-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
281
+ "mac15": "builds/firefox-beta/%s/firefox-beta-mac.zip",
282
+ "mac15-arm64": "builds/firefox-beta/%s/firefox-beta-mac-arm64.zip",
283
+ "win64": "builds/firefox-beta/%s/firefox-beta-win64.zip"
277
284
  },
278
- 'webkit': {
279
- '<unknown>': undefined,
280
- 'ubuntu18.04-x64': undefined,
281
- 'ubuntu20.04-x64': 'builds/webkit/%s/webkit-ubuntu-20.04.zip',
282
- 'ubuntu22.04-x64': 'builds/webkit/%s/webkit-ubuntu-22.04.zip',
283
- 'ubuntu24.04-x64': 'builds/webkit/%s/webkit-ubuntu-24.04.zip',
284
- 'ubuntu18.04-arm64': undefined,
285
- 'ubuntu20.04-arm64': 'builds/webkit/%s/webkit-ubuntu-20.04-arm64.zip',
286
- 'ubuntu22.04-arm64': 'builds/webkit/%s/webkit-ubuntu-22.04-arm64.zip',
287
- 'ubuntu24.04-arm64': 'builds/webkit/%s/webkit-ubuntu-24.04-arm64.zip',
288
- 'debian11-x64': 'builds/webkit/%s/webkit-debian-11.zip',
289
- 'debian11-arm64': 'builds/webkit/%s/webkit-debian-11-arm64.zip',
290
- 'debian12-x64': 'builds/webkit/%s/webkit-debian-12.zip',
291
- 'debian12-arm64': 'builds/webkit/%s/webkit-debian-12-arm64.zip',
292
- 'mac10.13': undefined,
293
- 'mac10.14': 'builds/deprecated-webkit-mac-10.14/%s/deprecated-webkit-mac-10.14.zip',
294
- 'mac10.15': 'builds/deprecated-webkit-mac-10.15/%s/deprecated-webkit-mac-10.15.zip',
295
- 'mac11': 'builds/webkit/%s/webkit-mac-11.zip',
296
- 'mac11-arm64': 'builds/webkit/%s/webkit-mac-11-arm64.zip',
297
- 'mac12': 'builds/webkit/%s/webkit-mac-12.zip',
298
- 'mac12-arm64': 'builds/webkit/%s/webkit-mac-12-arm64.zip',
299
- 'mac13': 'builds/webkit/%s/webkit-mac-13.zip',
300
- 'mac13-arm64': 'builds/webkit/%s/webkit-mac-13-arm64.zip',
301
- 'mac14': 'builds/webkit/%s/webkit-mac-14.zip',
302
- 'mac14-arm64': 'builds/webkit/%s/webkit-mac-14-arm64.zip',
303
- 'mac15': 'builds/webkit/%s/webkit-mac-15.zip',
304
- 'mac15-arm64': 'builds/webkit/%s/webkit-mac-15-arm64.zip',
305
- 'win64': 'builds/webkit/%s/webkit-win64.zip'
285
+ "webkit": {
286
+ "<unknown>": void 0,
287
+ "ubuntu18.04-x64": void 0,
288
+ "ubuntu20.04-x64": "builds/webkit/%s/webkit-ubuntu-20.04.zip",
289
+ "ubuntu22.04-x64": "builds/webkit/%s/webkit-ubuntu-22.04.zip",
290
+ "ubuntu24.04-x64": "builds/webkit/%s/webkit-ubuntu-24.04.zip",
291
+ "ubuntu18.04-arm64": void 0,
292
+ "ubuntu20.04-arm64": "builds/webkit/%s/webkit-ubuntu-20.04-arm64.zip",
293
+ "ubuntu22.04-arm64": "builds/webkit/%s/webkit-ubuntu-22.04-arm64.zip",
294
+ "ubuntu24.04-arm64": "builds/webkit/%s/webkit-ubuntu-24.04-arm64.zip",
295
+ "debian11-x64": "builds/webkit/%s/webkit-debian-11.zip",
296
+ "debian11-arm64": "builds/webkit/%s/webkit-debian-11-arm64.zip",
297
+ "debian12-x64": "builds/webkit/%s/webkit-debian-12.zip",
298
+ "debian12-arm64": "builds/webkit/%s/webkit-debian-12-arm64.zip",
299
+ "mac10.13": void 0,
300
+ "mac10.14": "builds/deprecated-webkit-mac-10.14/%s/deprecated-webkit-mac-10.14.zip",
301
+ "mac10.15": "builds/deprecated-webkit-mac-10.15/%s/deprecated-webkit-mac-10.15.zip",
302
+ "mac11": "builds/webkit/%s/webkit-mac-11.zip",
303
+ "mac11-arm64": "builds/webkit/%s/webkit-mac-11-arm64.zip",
304
+ "mac12": "builds/webkit/%s/webkit-mac-12.zip",
305
+ "mac12-arm64": "builds/webkit/%s/webkit-mac-12-arm64.zip",
306
+ "mac13": "builds/webkit/%s/webkit-mac-13.zip",
307
+ "mac13-arm64": "builds/webkit/%s/webkit-mac-13-arm64.zip",
308
+ "mac14": "builds/webkit/%s/webkit-mac-14.zip",
309
+ "mac14-arm64": "builds/webkit/%s/webkit-mac-14-arm64.zip",
310
+ "mac15": "builds/webkit/%s/webkit-mac-15.zip",
311
+ "mac15-arm64": "builds/webkit/%s/webkit-mac-15-arm64.zip",
312
+ "win64": "builds/webkit/%s/webkit-win64.zip"
306
313
  },
307
- 'ffmpeg': {
308
- '<unknown>': undefined,
309
- 'ubuntu18.04-x64': undefined,
310
- 'ubuntu20.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
311
- 'ubuntu22.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
312
- 'ubuntu24.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
313
- 'ubuntu18.04-arm64': undefined,
314
- 'ubuntu20.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
315
- 'ubuntu22.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
316
- 'ubuntu24.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
317
- 'debian11-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
318
- 'debian11-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
319
- 'debian12-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
320
- 'debian12-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
321
- 'mac10.13': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
322
- 'mac10.14': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
323
- 'mac10.15': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
324
- 'mac11': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
325
- 'mac11-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
326
- 'mac12': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
327
- 'mac12-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
328
- 'mac13': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
329
- 'mac13-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
330
- 'mac14': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
331
- 'mac14-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
332
- 'mac15': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
333
- 'mac15-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
334
- 'win64': 'builds/ffmpeg/%s/ffmpeg-win64.zip'
314
+ "ffmpeg": {
315
+ "<unknown>": void 0,
316
+ "ubuntu18.04-x64": void 0,
317
+ "ubuntu20.04-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
318
+ "ubuntu22.04-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
319
+ "ubuntu24.04-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
320
+ "ubuntu18.04-arm64": void 0,
321
+ "ubuntu20.04-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
322
+ "ubuntu22.04-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
323
+ "ubuntu24.04-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
324
+ "debian11-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
325
+ "debian11-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
326
+ "debian12-x64": "builds/ffmpeg/%s/ffmpeg-linux.zip",
327
+ "debian12-arm64": "builds/ffmpeg/%s/ffmpeg-linux-arm64.zip",
328
+ "mac10.13": "builds/ffmpeg/%s/ffmpeg-mac.zip",
329
+ "mac10.14": "builds/ffmpeg/%s/ffmpeg-mac.zip",
330
+ "mac10.15": "builds/ffmpeg/%s/ffmpeg-mac.zip",
331
+ "mac11": "builds/ffmpeg/%s/ffmpeg-mac.zip",
332
+ "mac11-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
333
+ "mac12": "builds/ffmpeg/%s/ffmpeg-mac.zip",
334
+ "mac12-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
335
+ "mac13": "builds/ffmpeg/%s/ffmpeg-mac.zip",
336
+ "mac13-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
337
+ "mac14": "builds/ffmpeg/%s/ffmpeg-mac.zip",
338
+ "mac14-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
339
+ "mac15": "builds/ffmpeg/%s/ffmpeg-mac.zip",
340
+ "mac15-arm64": "builds/ffmpeg/%s/ffmpeg-mac-arm64.zip",
341
+ "win64": "builds/ffmpeg/%s/ffmpeg-win64.zip"
335
342
  },
336
- 'winldd': {
337
- '<unknown>': undefined,
338
- 'ubuntu18.04-x64': undefined,
339
- 'ubuntu20.04-x64': undefined,
340
- 'ubuntu22.04-x64': undefined,
341
- 'ubuntu24.04-x64': undefined,
342
- 'ubuntu18.04-arm64': undefined,
343
- 'ubuntu20.04-arm64': undefined,
344
- 'ubuntu22.04-arm64': undefined,
345
- 'ubuntu24.04-arm64': undefined,
346
- 'debian11-x64': undefined,
347
- 'debian11-arm64': undefined,
348
- 'debian12-x64': undefined,
349
- 'debian12-arm64': undefined,
350
- 'mac10.13': undefined,
351
- 'mac10.14': undefined,
352
- 'mac10.15': undefined,
353
- 'mac11': undefined,
354
- 'mac11-arm64': undefined,
355
- 'mac12': undefined,
356
- 'mac12-arm64': undefined,
357
- 'mac13': undefined,
358
- 'mac13-arm64': undefined,
359
- 'mac14': undefined,
360
- 'mac14-arm64': undefined,
361
- 'mac15': undefined,
362
- 'mac15-arm64': undefined,
363
- 'win64': 'builds/winldd/%s/winldd-win64.zip'
343
+ "winldd": {
344
+ "<unknown>": void 0,
345
+ "ubuntu18.04-x64": void 0,
346
+ "ubuntu20.04-x64": void 0,
347
+ "ubuntu22.04-x64": void 0,
348
+ "ubuntu24.04-x64": void 0,
349
+ "ubuntu18.04-arm64": void 0,
350
+ "ubuntu20.04-arm64": void 0,
351
+ "ubuntu22.04-arm64": void 0,
352
+ "ubuntu24.04-arm64": void 0,
353
+ "debian11-x64": void 0,
354
+ "debian11-arm64": void 0,
355
+ "debian12-x64": void 0,
356
+ "debian12-arm64": void 0,
357
+ "mac10.13": void 0,
358
+ "mac10.14": void 0,
359
+ "mac10.15": void 0,
360
+ "mac11": void 0,
361
+ "mac11-arm64": void 0,
362
+ "mac12": void 0,
363
+ "mac12-arm64": void 0,
364
+ "mac13": void 0,
365
+ "mac13-arm64": void 0,
366
+ "mac14": void 0,
367
+ "mac14-arm64": void 0,
368
+ "mac15": void 0,
369
+ "mac15-arm64": void 0,
370
+ "win64": "builds/winldd/%s/winldd-win64.zip"
364
371
  },
365
- 'android': {
366
- '<unknown>': 'builds/android/%s/android.zip',
367
- 'ubuntu18.04-x64': undefined,
368
- 'ubuntu20.04-x64': 'builds/android/%s/android.zip',
369
- 'ubuntu22.04-x64': 'builds/android/%s/android.zip',
370
- 'ubuntu24.04-x64': 'builds/android/%s/android.zip',
371
- 'ubuntu18.04-arm64': undefined,
372
- 'ubuntu20.04-arm64': 'builds/android/%s/android.zip',
373
- 'ubuntu22.04-arm64': 'builds/android/%s/android.zip',
374
- 'ubuntu24.04-arm64': 'builds/android/%s/android.zip',
375
- 'debian11-x64': 'builds/android/%s/android.zip',
376
- 'debian11-arm64': 'builds/android/%s/android.zip',
377
- 'debian12-x64': 'builds/android/%s/android.zip',
378
- 'debian12-arm64': 'builds/android/%s/android.zip',
379
- 'mac10.13': 'builds/android/%s/android.zip',
380
- 'mac10.14': 'builds/android/%s/android.zip',
381
- 'mac10.15': 'builds/android/%s/android.zip',
382
- 'mac11': 'builds/android/%s/android.zip',
383
- 'mac11-arm64': 'builds/android/%s/android.zip',
384
- 'mac12': 'builds/android/%s/android.zip',
385
- 'mac12-arm64': 'builds/android/%s/android.zip',
386
- 'mac13': 'builds/android/%s/android.zip',
387
- 'mac13-arm64': 'builds/android/%s/android.zip',
388
- 'mac14': 'builds/android/%s/android.zip',
389
- 'mac14-arm64': 'builds/android/%s/android.zip',
390
- 'mac15': 'builds/android/%s/android.zip',
391
- 'mac15-arm64': 'builds/android/%s/android.zip',
392
- 'win64': 'builds/android/%s/android.zip'
372
+ "android": {
373
+ "<unknown>": "builds/android/%s/android.zip",
374
+ "ubuntu18.04-x64": void 0,
375
+ "ubuntu20.04-x64": "builds/android/%s/android.zip",
376
+ "ubuntu22.04-x64": "builds/android/%s/android.zip",
377
+ "ubuntu24.04-x64": "builds/android/%s/android.zip",
378
+ "ubuntu18.04-arm64": void 0,
379
+ "ubuntu20.04-arm64": "builds/android/%s/android.zip",
380
+ "ubuntu22.04-arm64": "builds/android/%s/android.zip",
381
+ "ubuntu24.04-arm64": "builds/android/%s/android.zip",
382
+ "debian11-x64": "builds/android/%s/android.zip",
383
+ "debian11-arm64": "builds/android/%s/android.zip",
384
+ "debian12-x64": "builds/android/%s/android.zip",
385
+ "debian12-arm64": "builds/android/%s/android.zip",
386
+ "mac10.13": "builds/android/%s/android.zip",
387
+ "mac10.14": "builds/android/%s/android.zip",
388
+ "mac10.15": "builds/android/%s/android.zip",
389
+ "mac11": "builds/android/%s/android.zip",
390
+ "mac11-arm64": "builds/android/%s/android.zip",
391
+ "mac12": "builds/android/%s/android.zip",
392
+ "mac12-arm64": "builds/android/%s/android.zip",
393
+ "mac13": "builds/android/%s/android.zip",
394
+ "mac13-arm64": "builds/android/%s/android.zip",
395
+ "mac14": "builds/android/%s/android.zip",
396
+ "mac14-arm64": "builds/android/%s/android.zip",
397
+ "mac15": "builds/android/%s/android.zip",
398
+ "mac15-arm64": "builds/android/%s/android.zip",
399
+ "win64": "builds/android/%s/android.zip"
393
400
  },
394
401
  // TODO(bidi): implement downloads.
395
- 'bidi': {}
402
+ "_bidiFirefox": {},
403
+ "_bidiChromium": {}
396
404
  };
397
- const registryDirectory = exports.registryDirectory = (() => {
405
+ const registryDirectory = (() => {
398
406
  let result;
399
- const envDefined = (0, _utils.getFromENV)('PLAYWRIGHT_BROWSERS_PATH');
400
- if (envDefined === '0') {
401
- result = _path.default.join(__dirname, '..', '..', '..', '.local-browsers');
407
+ const envDefined = (0, import_utils.getFromENV)("PLAYWRIGHT_BROWSERS_PATH");
408
+ if (envDefined === "0") {
409
+ result = import_path.default.join(__dirname, "..", "..", "..", ".local-browsers");
402
410
  } else if (envDefined) {
403
411
  result = envDefined;
404
412
  } else {
405
413
  let cacheDirectory;
406
- if (process.platform === 'linux') cacheDirectory = process.env.XDG_CACHE_HOME || _path.default.join(_os.default.homedir(), '.cache');else if (process.platform === 'darwin') cacheDirectory = _path.default.join(_os.default.homedir(), 'Library', 'Caches');else if (process.platform === 'win32') cacheDirectory = process.env.LOCALAPPDATA || _path.default.join(_os.default.homedir(), 'AppData', 'Local');else throw new Error('Unsupported platform: ' + process.platform);
407
- result = _path.default.join(cacheDirectory, 'ms-playwright');
414
+ if (process.platform === "linux")
415
+ cacheDirectory = process.env.XDG_CACHE_HOME || import_path.default.join(import_os.default.homedir(), ".cache");
416
+ else if (process.platform === "darwin")
417
+ cacheDirectory = import_path.default.join(import_os.default.homedir(), "Library", "Caches");
418
+ else if (process.platform === "win32")
419
+ cacheDirectory = process.env.LOCALAPPDATA || import_path.default.join(import_os.default.homedir(), "AppData", "Local");
420
+ else
421
+ throw new Error("Unsupported platform: " + process.platform);
422
+ result = import_path.default.join(cacheDirectory, "ms-playwright");
408
423
  }
409
- if (!_path.default.isAbsolute(result)) {
410
- // It is important to resolve to the absolute path:
411
- // - for unzipping to work correctly;
412
- // - so that registry directory matches between installation and execution.
413
- // INIT_CWD points to the root of `npm/yarn install` and is probably what
414
- // the user meant when typing the relative path.
415
- result = _path.default.resolve((0, _utils.getFromENV)('INIT_CWD') || process.cwd(), result);
424
+ if (!import_path.default.isAbsolute(result)) {
425
+ result = import_path.default.resolve((0, import_utils.getFromENV)("INIT_CWD") || process.cwd(), result);
416
426
  }
417
427
  return result;
418
428
  })();
419
429
  function isBrowserDirectory(browserDirectory) {
420
- const baseName = _path.default.basename(browserDirectory);
430
+ const baseName = import_path.default.basename(browserDirectory);
421
431
  for (const browserName of allDownloadable) {
422
- if (baseName.startsWith(browserName.replace(/-/g, '_') + '-')) return true;
432
+ if (baseName.startsWith(browserName.replace(/-/g, "_") + "-"))
433
+ return true;
423
434
  }
424
435
  return false;
425
436
  }
426
437
  function readDescriptors(browsersJSON) {
427
- return browsersJSON['browsers'].map(obj => {
438
+ return browsersJSON["browsers"].map((obj) => {
428
439
  const name = obj.name;
429
- const revisionOverride = (obj.revisionOverrides || {})[_hostPlatform.hostPlatform];
440
+ const revisionOverride = (obj.revisionOverrides || {})[import_hostPlatform.hostPlatform];
430
441
  const revision = revisionOverride || obj.revision;
431
- const browserDirectoryPrefix = revisionOverride ? `${name}_${_hostPlatform.hostPlatform}_special` : `${name}`;
442
+ const browserDirectoryPrefix = revisionOverride ? `${name}_${import_hostPlatform.hostPlatform}_special` : `${name}`;
432
443
  const descriptor = {
433
444
  name,
434
445
  revision,
435
446
  hasRevisionOverride: !!revisionOverride,
436
447
  // We only put browser version for the supported operating systems.
437
- browserVersion: revisionOverride ? undefined : obj.browserVersion,
448
+ browserVersion: revisionOverride ? void 0 : obj.browserVersion,
438
449
  installByDefault: !!obj.installByDefault,
439
450
  // Method `isBrowserDirectory` determines directory to be browser iff
440
451
  // it starts with some browser name followed by '-'. Some browser names
441
452
  // are prefixes of others, e.g. 'webkit' is a prefix of `webkit-technology-preview`.
442
453
  // To avoid older registries erroneously removing 'webkit-technology-preview', we have to
443
454
  // ensure that browser folders to never include dashes inside.
444
- dir: _path.default.join(registryDirectory, browserDirectoryPrefix.replace(/-/g, '_') + '-' + revision)
455
+ dir: import_path.default.join(registryDirectory, browserDirectoryPrefix.replace(/-/g, "_") + "-" + revision)
445
456
  };
446
457
  return descriptor;
447
458
  });
448
459
  }
449
- const allDownloadable = ['android', 'chromium', 'firefox', 'webkit', 'ffmpeg', 'firefox-beta', 'chromium-tip-of-tree', 'chromium-headless-shell', 'chromium-tip-of-tree-headless-shell'];
460
+ const allDownloadable = ["android", "chromium", "firefox", "webkit", "ffmpeg", "firefox-beta", "chromium-tip-of-tree", "chromium-headless-shell", "chromium-tip-of-tree-headless-shell"];
450
461
  class Registry {
451
462
  constructor(browsersJSON) {
452
- this._executables = void 0;
453
463
  const descriptors = readDescriptors(browsersJSON);
454
464
  const findExecutablePath = (dir, name) => {
455
- let tokens = undefined;
456
- if (process.platform === 'linux') tokens = EXECUTABLE_PATHS[name]['linux'];else if (process.platform === 'darwin') tokens = EXECUTABLE_PATHS[name]['mac'];else if (process.platform === 'win32') tokens = EXECUTABLE_PATHS[name]['win'];
457
- return tokens ? _path.default.join(dir, ...tokens) : undefined;
465
+ let tokens = void 0;
466
+ if (process.platform === "linux")
467
+ tokens = EXECUTABLE_PATHS[name]["linux"];
468
+ else if (process.platform === "darwin")
469
+ tokens = EXECUTABLE_PATHS[name]["mac"];
470
+ else if (process.platform === "win32")
471
+ tokens = EXECUTABLE_PATHS[name]["win"];
472
+ return tokens ? import_path.default.join(dir, ...tokens) : void 0;
458
473
  };
459
474
  const executablePathOrDie = (name, e, installByDefault, sdkLanguage) => {
460
- if (!e) throw new Error(`${name} is not supported on ${_hostPlatform.hostPlatform}`);
461
- const installCommand = buildPlaywrightCLICommand(sdkLanguage, `install${installByDefault ? '' : ' ' + name}`);
462
- if (!(0, _fileUtils.canAccessFile)(e)) {
463
- const currentDockerVersion = (0, _dependencies.readDockerVersionSync)();
464
- const preferredDockerVersion = currentDockerVersion ? (0, _dependencies.dockerVersion)(currentDockerVersion.dockerImageNameTemplate) : null;
475
+ if (!e)
476
+ throw new Error(`${name} is not supported on ${import_hostPlatform.hostPlatform}`);
477
+ const installCommand = buildPlaywrightCLICommand(sdkLanguage, `install${installByDefault ? "" : " " + name}`);
478
+ if (!(0, import_fileUtils.canAccessFile)(e)) {
479
+ const currentDockerVersion = (0, import_dependencies.readDockerVersionSync)();
480
+ const preferredDockerVersion = currentDockerVersion ? (0, import_dependencies.dockerVersion)(currentDockerVersion.dockerImageNameTemplate) : null;
465
481
  const isOutdatedDockerImage = currentDockerVersion && preferredDockerVersion && currentDockerVersion.dockerImageName !== preferredDockerVersion.dockerImageName;
466
- const prettyMessage = isOutdatedDockerImage ? [`Looks like ${sdkLanguage === 'javascript' ? 'Playwright Test or ' : ''}Playwright was just updated to ${preferredDockerVersion.driverVersion}.`, `Please update docker image as well.`, `- current: ${currentDockerVersion.dockerImageName}`, `- required: ${preferredDockerVersion.dockerImageName}`, ``, `<3 Playwright Team`].join('\n') : [`Looks like ${sdkLanguage === 'javascript' ? 'Playwright Test or ' : ''}Playwright was just installed or updated.`, `Please run the following command to download new browser${installByDefault ? 's' : ''}:`, ``, ` ${installCommand}`, ``, `<3 Playwright Team`].join('\n');
467
- throw new Error(`Executable doesn't exist at ${e}\n${(0, _ascii.wrapInASCIIBox)(prettyMessage, 1)}`);
482
+ const prettyMessage = isOutdatedDockerImage ? [
483
+ `Looks like ${sdkLanguage === "javascript" ? "Playwright Test or " : ""}Playwright was just updated to ${preferredDockerVersion.driverVersion}.`,
484
+ `Please update docker image as well.`,
485
+ `- current: ${currentDockerVersion.dockerImageName}`,
486
+ `- required: ${preferredDockerVersion.dockerImageName}`,
487
+ ``,
488
+ `<3 Playwright Team`
489
+ ].join("\n") : [
490
+ `Looks like ${sdkLanguage === "javascript" ? "Playwright Test or " : ""}Playwright was just installed or updated.`,
491
+ `Please run the following command to download new browser${installByDefault ? "s" : ""}:`,
492
+ ``,
493
+ ` ${installCommand}`,
494
+ ``,
495
+ `<3 Playwright Team`
496
+ ].join("\n");
497
+ throw new Error(`Executable doesn't exist at ${e}
498
+ ${(0, import_ascii.wrapInASCIIBox)(prettyMessage, 1)}`);
468
499
  }
469
500
  return e;
470
501
  };
471
502
  this._executables = [];
472
- const chromium = descriptors.find(d => d.name === 'chromium');
473
- const chromiumExecutable = findExecutablePath(chromium.dir, 'chromium');
503
+ const chromium = descriptors.find((d) => d.name === "chromium");
504
+ const chromiumExecutable = findExecutablePath(chromium.dir, "chromium");
474
505
  this._executables.push({
475
- type: 'browser',
476
- name: 'chromium',
477
- browserName: 'chromium',
506
+ type: "browser",
507
+ name: "chromium",
508
+ browserName: "chromium",
478
509
  directory: chromium.dir,
479
510
  executablePath: () => chromiumExecutable,
480
- executablePathOrDie: sdkLanguage => executablePathOrDie('chromium', chromiumExecutable, chromium.installByDefault, sdkLanguage),
481
- installType: chromium.installByDefault ? 'download-by-default' : 'download-on-demand',
482
- _validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromium.dir, ['chrome-linux'], [], ['chrome-win']),
511
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium", chromiumExecutable, chromium.installByDefault, sdkLanguage),
512
+ installType: chromium.installByDefault ? "download-by-default" : "download-on-demand",
513
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromium.dir, ["chrome-linux"], [], ["chrome-win"]),
483
514
  downloadURLs: this._downloadURLs(chromium),
484
515
  browserVersion: chromium.browserVersion,
485
516
  _install: () => this._downloadExecutable(chromium, chromiumExecutable),
486
- _dependencyGroup: 'chromium',
517
+ _dependencyGroup: "chromium",
487
518
  _isHermeticInstallation: true
488
519
  });
489
- const chromiumHeadlessShell = descriptors.find(d => d.name === 'chromium-headless-shell');
490
- const chromiumHeadlessShellExecutable = findExecutablePath(chromiumHeadlessShell.dir, 'chromium-headless-shell');
520
+ const chromiumHeadlessShell = descriptors.find((d) => d.name === "chromium-headless-shell");
521
+ const chromiumHeadlessShellExecutable = findExecutablePath(chromiumHeadlessShell.dir, "chromium-headless-shell");
491
522
  this._executables.push({
492
- type: 'channel',
493
- name: 'chromium-headless-shell',
494
- browserName: 'chromium',
523
+ type: "channel",
524
+ name: "chromium-headless-shell",
525
+ browserName: "chromium",
495
526
  directory: chromiumHeadlessShell.dir,
496
527
  executablePath: () => chromiumHeadlessShellExecutable,
497
- executablePathOrDie: sdkLanguage => executablePathOrDie('chromium', chromiumHeadlessShellExecutable, chromiumHeadlessShell.installByDefault, sdkLanguage),
498
- installType: chromiumHeadlessShell.installByDefault ? 'download-by-default' : 'download-on-demand',
499
- _validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromiumHeadlessShell.dir, ['chrome-linux'], [], ['chrome-win']),
528
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium", chromiumHeadlessShellExecutable, chromiumHeadlessShell.installByDefault, sdkLanguage),
529
+ installType: chromiumHeadlessShell.installByDefault ? "download-by-default" : "download-on-demand",
530
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromiumHeadlessShell.dir, ["chrome-linux"], [], ["chrome-win"]),
500
531
  downloadURLs: this._downloadURLs(chromiumHeadlessShell),
501
532
  browserVersion: chromium.browserVersion,
502
533
  _install: () => this._downloadExecutable(chromiumHeadlessShell, chromiumHeadlessShellExecutable),
503
- _dependencyGroup: 'chromium',
534
+ _dependencyGroup: "chromium",
504
535
  _isHermeticInstallation: true
505
536
  });
506
- const chromiumTipOfTreeHeadlessShell = descriptors.find(d => d.name === 'chromium-tip-of-tree-headless-shell');
507
- const chromiumTipOfTreeHeadlessShellExecutable = findExecutablePath(chromiumTipOfTreeHeadlessShell.dir, 'chromium-headless-shell');
537
+ const chromiumTipOfTreeHeadlessShell = descriptors.find((d) => d.name === "chromium-tip-of-tree-headless-shell");
538
+ const chromiumTipOfTreeHeadlessShellExecutable = findExecutablePath(chromiumTipOfTreeHeadlessShell.dir, "chromium-headless-shell");
508
539
  this._executables.push({
509
- type: 'channel',
510
- name: 'chromium-tip-of-tree-headless-shell',
511
- browserName: 'chromium',
540
+ type: "channel",
541
+ name: "chromium-tip-of-tree-headless-shell",
542
+ browserName: "chromium",
512
543
  directory: chromiumTipOfTreeHeadlessShell.dir,
513
544
  executablePath: () => chromiumTipOfTreeHeadlessShellExecutable,
514
- executablePathOrDie: sdkLanguage => executablePathOrDie('chromium', chromiumTipOfTreeHeadlessShellExecutable, chromiumTipOfTreeHeadlessShell.installByDefault, sdkLanguage),
515
- installType: chromiumTipOfTreeHeadlessShell.installByDefault ? 'download-by-default' : 'download-on-demand',
516
- _validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromiumTipOfTreeHeadlessShell.dir, ['chrome-linux'], [], ['chrome-win']),
545
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium", chromiumTipOfTreeHeadlessShellExecutable, chromiumTipOfTreeHeadlessShell.installByDefault, sdkLanguage),
546
+ installType: chromiumTipOfTreeHeadlessShell.installByDefault ? "download-by-default" : "download-on-demand",
547
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromiumTipOfTreeHeadlessShell.dir, ["chrome-linux"], [], ["chrome-win"]),
517
548
  downloadURLs: this._downloadURLs(chromiumTipOfTreeHeadlessShell),
518
549
  browserVersion: chromium.browserVersion,
519
550
  _install: () => this._downloadExecutable(chromiumTipOfTreeHeadlessShell, chromiumTipOfTreeHeadlessShellExecutable),
520
- _dependencyGroup: 'chromium',
551
+ _dependencyGroup: "chromium",
521
552
  _isHermeticInstallation: true
522
553
  });
523
- const chromiumTipOfTree = descriptors.find(d => d.name === 'chromium-tip-of-tree');
524
- const chromiumTipOfTreeExecutable = findExecutablePath(chromiumTipOfTree.dir, 'chromium');
554
+ const chromiumTipOfTree = descriptors.find((d) => d.name === "chromium-tip-of-tree");
555
+ const chromiumTipOfTreeExecutable = findExecutablePath(chromiumTipOfTree.dir, "chromium");
525
556
  this._executables.push({
526
- type: 'tool',
527
- name: 'chromium-tip-of-tree',
528
- browserName: 'chromium',
557
+ type: "tool",
558
+ name: "chromium-tip-of-tree",
559
+ browserName: "chromium",
529
560
  directory: chromiumTipOfTree.dir,
530
561
  executablePath: () => chromiumTipOfTreeExecutable,
531
- executablePathOrDie: sdkLanguage => executablePathOrDie('chromium-tip-of-tree', chromiumTipOfTreeExecutable, chromiumTipOfTree.installByDefault, sdkLanguage),
532
- installType: chromiumTipOfTree.installByDefault ? 'download-by-default' : 'download-on-demand',
533
- _validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromiumTipOfTree.dir, ['chrome-linux'], [], ['chrome-win']),
562
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium-tip-of-tree", chromiumTipOfTreeExecutable, chromiumTipOfTree.installByDefault, sdkLanguage),
563
+ installType: chromiumTipOfTree.installByDefault ? "download-by-default" : "download-on-demand",
564
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromiumTipOfTree.dir, ["chrome-linux"], [], ["chrome-win"]),
534
565
  downloadURLs: this._downloadURLs(chromiumTipOfTree),
535
566
  browserVersion: chromiumTipOfTree.browserVersion,
536
567
  _install: () => this._downloadExecutable(chromiumTipOfTree, chromiumTipOfTreeExecutable),
537
- _dependencyGroup: 'chromium',
568
+ _dependencyGroup: "chromium",
538
569
  _isHermeticInstallation: true
539
570
  });
540
- this._executables.push(this._createChromiumChannel('chrome', {
541
- 'linux': '/opt/google/chrome/chrome',
542
- 'darwin': '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
543
- 'win32': `\\Google\\Chrome\\Application\\chrome.exe`
544
- }, () => this._installChromiumChannel('chrome', {
545
- 'linux': 'reinstall_chrome_stable_linux.sh',
546
- 'darwin': 'reinstall_chrome_stable_mac.sh',
547
- 'win32': 'reinstall_chrome_stable_win.ps1'
571
+ this._executables.push(this._createChromiumChannel("chrome", {
572
+ "linux": "/opt/google/chrome/chrome",
573
+ "darwin": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
574
+ "win32": `\\Google\\Chrome\\Application\\chrome.exe`
575
+ }, () => this._installChromiumChannel("chrome", {
576
+ "linux": "reinstall_chrome_stable_linux.sh",
577
+ "darwin": "reinstall_chrome_stable_mac.sh",
578
+ "win32": "reinstall_chrome_stable_win.ps1"
548
579
  })));
549
- this._executables.push(this._createChromiumChannel('chrome-beta', {
550
- 'linux': '/opt/google/chrome-beta/chrome',
551
- 'darwin': '/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta',
552
- 'win32': `\\Google\\Chrome Beta\\Application\\chrome.exe`
553
- }, () => this._installChromiumChannel('chrome-beta', {
554
- 'linux': 'reinstall_chrome_beta_linux.sh',
555
- 'darwin': 'reinstall_chrome_beta_mac.sh',
556
- 'win32': 'reinstall_chrome_beta_win.ps1'
580
+ this._executables.push(this._createChromiumChannel("chrome-beta", {
581
+ "linux": "/opt/google/chrome-beta/chrome",
582
+ "darwin": "/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta",
583
+ "win32": `\\Google\\Chrome Beta\\Application\\chrome.exe`
584
+ }, () => this._installChromiumChannel("chrome-beta", {
585
+ "linux": "reinstall_chrome_beta_linux.sh",
586
+ "darwin": "reinstall_chrome_beta_mac.sh",
587
+ "win32": "reinstall_chrome_beta_win.ps1"
557
588
  })));
558
- this._executables.push(this._createChromiumChannel('chrome-dev', {
559
- 'linux': '/opt/google/chrome-unstable/chrome',
560
- 'darwin': '/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev',
561
- 'win32': `\\Google\\Chrome Dev\\Application\\chrome.exe`
589
+ this._executables.push(this._createChromiumChannel("chrome-dev", {
590
+ "linux": "/opt/google/chrome-unstable/chrome",
591
+ "darwin": "/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev",
592
+ "win32": `\\Google\\Chrome Dev\\Application\\chrome.exe`
562
593
  }));
563
- this._executables.push(this._createChromiumChannel('chrome-canary', {
564
- 'linux': '',
565
- 'darwin': '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary',
566
- 'win32': `\\Google\\Chrome SxS\\Application\\chrome.exe`
594
+ this._executables.push(this._createChromiumChannel("chrome-canary", {
595
+ "linux": "",
596
+ "darwin": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary",
597
+ "win32": `\\Google\\Chrome SxS\\Application\\chrome.exe`
567
598
  }));
568
- this._executables.push(this._createChromiumChannel('msedge', {
569
- 'linux': '/opt/microsoft/msedge/msedge',
570
- 'darwin': '/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
571
- 'win32': `\\Microsoft\\Edge\\Application\\msedge.exe`
572
- }, () => this._installMSEdgeChannel('msedge', {
573
- 'linux': 'reinstall_msedge_stable_linux.sh',
574
- 'darwin': 'reinstall_msedge_stable_mac.sh',
575
- 'win32': 'reinstall_msedge_stable_win.ps1'
599
+ this._executables.push(this._createChromiumChannel("msedge", {
600
+ "linux": "/opt/microsoft/msedge/msedge",
601
+ "darwin": "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge",
602
+ "win32": `\\Microsoft\\Edge\\Application\\msedge.exe`
603
+ }, () => this._installMSEdgeChannel("msedge", {
604
+ "linux": "reinstall_msedge_stable_linux.sh",
605
+ "darwin": "reinstall_msedge_stable_mac.sh",
606
+ "win32": "reinstall_msedge_stable_win.ps1"
576
607
  })));
577
- this._executables.push(this._createChromiumChannel('msedge-beta', {
578
- 'linux': '/opt/microsoft/msedge-beta/msedge',
579
- 'darwin': '/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta',
580
- 'win32': `\\Microsoft\\Edge Beta\\Application\\msedge.exe`
581
- }, () => this._installMSEdgeChannel('msedge-beta', {
582
- 'darwin': 'reinstall_msedge_beta_mac.sh',
583
- 'linux': 'reinstall_msedge_beta_linux.sh',
584
- 'win32': 'reinstall_msedge_beta_win.ps1'
608
+ this._executables.push(this._createChromiumChannel("msedge-beta", {
609
+ "linux": "/opt/microsoft/msedge-beta/msedge",
610
+ "darwin": "/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta",
611
+ "win32": `\\Microsoft\\Edge Beta\\Application\\msedge.exe`
612
+ }, () => this._installMSEdgeChannel("msedge-beta", {
613
+ "darwin": "reinstall_msedge_beta_mac.sh",
614
+ "linux": "reinstall_msedge_beta_linux.sh",
615
+ "win32": "reinstall_msedge_beta_win.ps1"
585
616
  })));
586
- this._executables.push(this._createChromiumChannel('msedge-dev', {
587
- 'linux': '/opt/microsoft/msedge-dev/msedge',
588
- 'darwin': '/Applications/Microsoft Edge Dev.app/Contents/MacOS/Microsoft Edge Dev',
589
- 'win32': `\\Microsoft\\Edge Dev\\Application\\msedge.exe`
590
- }, () => this._installMSEdgeChannel('msedge-dev', {
591
- 'darwin': 'reinstall_msedge_dev_mac.sh',
592
- 'linux': 'reinstall_msedge_dev_linux.sh',
593
- 'win32': 'reinstall_msedge_dev_win.ps1'
617
+ this._executables.push(this._createChromiumChannel("msedge-dev", {
618
+ "linux": "/opt/microsoft/msedge-dev/msedge",
619
+ "darwin": "/Applications/Microsoft Edge Dev.app/Contents/MacOS/Microsoft Edge Dev",
620
+ "win32": `\\Microsoft\\Edge Dev\\Application\\msedge.exe`
621
+ }, () => this._installMSEdgeChannel("msedge-dev", {
622
+ "darwin": "reinstall_msedge_dev_mac.sh",
623
+ "linux": "reinstall_msedge_dev_linux.sh",
624
+ "win32": "reinstall_msedge_dev_win.ps1"
594
625
  })));
595
- this._executables.push(this._createChromiumChannel('msedge-canary', {
596
- 'linux': '',
597
- 'darwin': '/Applications/Microsoft Edge Canary.app/Contents/MacOS/Microsoft Edge Canary',
598
- 'win32': `\\Microsoft\\Edge SxS\\Application\\msedge.exe`
626
+ this._executables.push(this._createChromiumChannel("msedge-canary", {
627
+ "linux": "",
628
+ "darwin": "/Applications/Microsoft Edge Canary.app/Contents/MacOS/Microsoft Edge Canary",
629
+ "win32": `\\Microsoft\\Edge SxS\\Application\\msedge.exe`
599
630
  }));
600
- this._executables.push(this._createBidiFirefoxChannel('bidi-firefox-stable', {
601
- 'linux': '/firefox/firefox',
602
- 'darwin': '/Firefox.app/Contents/MacOS/firefox',
603
- 'win32': '\\core\\firefox.exe'
631
+ this._executables.push(this._createBidiFirefoxChannel("moz-firefox", {
632
+ "linux": "/snap/bin/firefox",
633
+ "darwin": "/Applications/Firefox.app/Contents/MacOS/firefox",
634
+ "win32": "\\Mozilla Firefox\\firefox.exe"
604
635
  }));
605
- this._executables.push(this._createBidiFirefoxChannel('bidi-firefox-beta', {
606
- 'linux': '/firefox/firefox',
607
- 'darwin': '/Firefox.app/Contents/MacOS/firefox',
608
- 'win32': '\\core\\firefox.exe'
636
+ this._executables.push(this._createBidiFirefoxChannel("moz-firefox-beta", {
637
+ "linux": "/opt/firefox-beta/firefox",
638
+ "darwin": "/Applications/Firefox.app/Contents/MacOS/firefox",
639
+ "win32": "\\Mozilla Firefox\\firefox.exe"
609
640
  }));
610
- this._executables.push(this._createBidiFirefoxChannel('bidi-firefox-nightly', {
611
- 'linux': '/firefox/firefox',
612
- 'darwin': '/Firefox Nightly.app/Contents/MacOS/firefox',
613
- 'win32': '\\firefox\\firefox.exe'
641
+ this._executables.push(this._createBidiFirefoxChannel("moz-firefox-nightly", {
642
+ "linux": "/opt/firefox-nightly/firefox",
643
+ "darwin": "/Applications/Firefox Nightly.app/Contents/MacOS/firefox",
644
+ "win32": "\\Mozilla Firefox\\firefox.exe"
614
645
  }));
615
- this._executables.push(this._createBidiChannel('bidi-chrome-stable', {
616
- 'linux': '/opt/google/chrome/chrome',
617
- 'darwin': '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
618
- 'win32': `\\Google\\Chrome\\Application\\chrome.exe`
646
+ this._executables.push(this._createBidiChromiumChannel("bidi-chrome-stable", {
647
+ "linux": "/opt/google/chrome/chrome",
648
+ "darwin": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
649
+ "win32": `\\Google\\Chrome\\Application\\chrome.exe`
619
650
  }));
620
- this._executables.push(this._createBidiChannel('bidi-chrome-canary', {
621
- 'linux': '',
622
- 'darwin': '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary',
623
- 'win32': `\\Google\\Chrome SxS\\Application\\chrome.exe`
651
+ this._executables.push(this._createBidiChromiumChannel("bidi-chrome-canary", {
652
+ "linux": "",
653
+ "darwin": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary",
654
+ "win32": `\\Google\\Chrome SxS\\Application\\chrome.exe`
624
655
  }));
625
656
  this._executables.push({
626
- type: 'browser',
627
- name: 'bidi-chromium',
628
- browserName: 'bidi',
657
+ type: "browser",
658
+ name: "_bidiChromium",
659
+ browserName: "_bidiChromium",
629
660
  directory: chromium.dir,
630
661
  executablePath: () => chromiumExecutable,
631
- executablePathOrDie: sdkLanguage => executablePathOrDie('chromium', chromiumExecutable, chromium.installByDefault, sdkLanguage),
632
- installType: 'download-on-demand',
633
- _validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromium.dir, ['chrome-linux'], [], ['chrome-win']),
662
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("chromium", chromiumExecutable, chromium.installByDefault, sdkLanguage),
663
+ installType: "download-on-demand",
664
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, chromium.dir, ["chrome-linux"], [], ["chrome-win"]),
634
665
  downloadURLs: this._downloadURLs(chromium),
635
666
  browserVersion: chromium.browserVersion,
636
667
  _install: () => this._downloadExecutable(chromium, chromiumExecutable),
637
- _dependencyGroup: 'chromium',
668
+ _dependencyGroup: "chromium",
638
669
  _isHermeticInstallation: true
639
670
  });
640
- const firefox = descriptors.find(d => d.name === 'firefox');
641
- const firefoxExecutable = findExecutablePath(firefox.dir, 'firefox');
671
+ const firefox = descriptors.find((d) => d.name === "firefox");
672
+ const firefoxExecutable = findExecutablePath(firefox.dir, "firefox");
642
673
  this._executables.push({
643
- type: 'browser',
644
- name: 'firefox',
645
- browserName: 'firefox',
674
+ type: "browser",
675
+ name: "firefox",
676
+ browserName: "firefox",
646
677
  directory: firefox.dir,
647
678
  executablePath: () => firefoxExecutable,
648
- executablePathOrDie: sdkLanguage => executablePathOrDie('firefox', firefoxExecutable, firefox.installByDefault, sdkLanguage),
649
- installType: firefox.installByDefault ? 'download-by-default' : 'download-on-demand',
650
- _validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, firefox.dir, ['firefox'], [], ['firefox']),
679
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("firefox", firefoxExecutable, firefox.installByDefault, sdkLanguage),
680
+ installType: firefox.installByDefault ? "download-by-default" : "download-on-demand",
681
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, firefox.dir, ["firefox"], [], ["firefox"]),
651
682
  downloadURLs: this._downloadURLs(firefox),
652
683
  browserVersion: firefox.browserVersion,
653
684
  _install: () => this._downloadExecutable(firefox, firefoxExecutable),
654
- _dependencyGroup: 'firefox',
685
+ _dependencyGroup: "firefox",
655
686
  _isHermeticInstallation: true
656
687
  });
657
- const firefoxBeta = descriptors.find(d => d.name === 'firefox-beta');
658
- const firefoxBetaExecutable = findExecutablePath(firefoxBeta.dir, 'firefox');
688
+ const firefoxBeta = descriptors.find((d) => d.name === "firefox-beta");
689
+ const firefoxBetaExecutable = findExecutablePath(firefoxBeta.dir, "firefox");
659
690
  this._executables.push({
660
- type: 'tool',
661
- name: 'firefox-beta',
662
- browserName: 'firefox',
691
+ type: "tool",
692
+ name: "firefox-beta",
693
+ browserName: "firefox",
663
694
  directory: firefoxBeta.dir,
664
695
  executablePath: () => firefoxBetaExecutable,
665
- executablePathOrDie: sdkLanguage => executablePathOrDie('firefox-beta', firefoxBetaExecutable, firefoxBeta.installByDefault, sdkLanguage),
666
- installType: firefoxBeta.installByDefault ? 'download-by-default' : 'download-on-demand',
667
- _validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, firefoxBeta.dir, ['firefox'], [], ['firefox']),
696
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("firefox-beta", firefoxBetaExecutable, firefoxBeta.installByDefault, sdkLanguage),
697
+ installType: firefoxBeta.installByDefault ? "download-by-default" : "download-on-demand",
698
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, firefoxBeta.dir, ["firefox"], [], ["firefox"]),
668
699
  downloadURLs: this._downloadURLs(firefoxBeta),
669
700
  browserVersion: firefoxBeta.browserVersion,
670
701
  _install: () => this._downloadExecutable(firefoxBeta, firefoxBetaExecutable),
671
- _dependencyGroup: 'firefox',
702
+ _dependencyGroup: "firefox",
672
703
  _isHermeticInstallation: true
673
704
  });
674
- const webkit = descriptors.find(d => d.name === 'webkit');
675
- const webkitExecutable = findExecutablePath(webkit.dir, 'webkit');
676
- const webkitLinuxLddDirectories = [_path.default.join('minibrowser-gtk'), _path.default.join('minibrowser-gtk', 'bin'), _path.default.join('minibrowser-gtk', 'lib'), _path.default.join('minibrowser-gtk', 'sys', 'lib'), _path.default.join('minibrowser-wpe'), _path.default.join('minibrowser-wpe', 'bin'), _path.default.join('minibrowser-wpe', 'lib'), _path.default.join('minibrowser-wpe', 'sys', 'lib')];
705
+ const webkit = descriptors.find((d) => d.name === "webkit");
706
+ const webkitExecutable = findExecutablePath(webkit.dir, "webkit");
707
+ const webkitLinuxLddDirectories = [
708
+ import_path.default.join("minibrowser-gtk"),
709
+ import_path.default.join("minibrowser-gtk", "bin"),
710
+ import_path.default.join("minibrowser-gtk", "lib"),
711
+ import_path.default.join("minibrowser-gtk", "sys", "lib"),
712
+ import_path.default.join("minibrowser-wpe"),
713
+ import_path.default.join("minibrowser-wpe", "bin"),
714
+ import_path.default.join("minibrowser-wpe", "lib"),
715
+ import_path.default.join("minibrowser-wpe", "sys", "lib")
716
+ ];
677
717
  this._executables.push({
678
- type: 'browser',
679
- name: 'webkit',
680
- browserName: 'webkit',
718
+ type: "browser",
719
+ name: "webkit",
720
+ browserName: "webkit",
681
721
  directory: webkit.dir,
682
722
  executablePath: () => webkitExecutable,
683
- executablePathOrDie: sdkLanguage => executablePathOrDie('webkit', webkitExecutable, webkit.installByDefault, sdkLanguage),
684
- installType: webkit.installByDefault ? 'download-by-default' : 'download-on-demand',
685
- _validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, webkit.dir, webkitLinuxLddDirectories, ['libGLESv2.so.2', 'libx264.so'], ['']),
723
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("webkit", webkitExecutable, webkit.installByDefault, sdkLanguage),
724
+ installType: webkit.installByDefault ? "download-by-default" : "download-on-demand",
725
+ _validateHostRequirements: (sdkLanguage) => this._validateHostRequirements(sdkLanguage, webkit.dir, webkitLinuxLddDirectories, ["libGLESv2.so.2", "libx264.so"], [""]),
686
726
  downloadURLs: this._downloadURLs(webkit),
687
727
  browserVersion: webkit.browserVersion,
688
728
  _install: () => this._downloadExecutable(webkit, webkitExecutable),
689
- _dependencyGroup: 'webkit',
729
+ _dependencyGroup: "webkit",
690
730
  _isHermeticInstallation: true
691
731
  });
692
- const ffmpeg = descriptors.find(d => d.name === 'ffmpeg');
693
- const ffmpegExecutable = findExecutablePath(ffmpeg.dir, 'ffmpeg');
732
+ const ffmpeg = descriptors.find((d) => d.name === "ffmpeg");
733
+ const ffmpegExecutable = findExecutablePath(ffmpeg.dir, "ffmpeg");
694
734
  this._executables.push({
695
- type: 'tool',
696
- name: 'ffmpeg',
697
- browserName: undefined,
735
+ type: "tool",
736
+ name: "ffmpeg",
737
+ browserName: void 0,
698
738
  directory: ffmpeg.dir,
699
739
  executablePath: () => ffmpegExecutable,
700
- executablePathOrDie: sdkLanguage => executablePathOrDie('ffmpeg', ffmpegExecutable, ffmpeg.installByDefault, sdkLanguage),
701
- installType: ffmpeg.installByDefault ? 'download-by-default' : 'download-on-demand',
740
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("ffmpeg", ffmpegExecutable, ffmpeg.installByDefault, sdkLanguage),
741
+ installType: ffmpeg.installByDefault ? "download-by-default" : "download-on-demand",
702
742
  _validateHostRequirements: () => Promise.resolve(),
703
743
  downloadURLs: this._downloadURLs(ffmpeg),
704
744
  _install: () => this._downloadExecutable(ffmpeg, ffmpegExecutable),
705
- _dependencyGroup: 'tools',
745
+ _dependencyGroup: "tools",
706
746
  _isHermeticInstallation: true
707
747
  });
708
- const winldd = descriptors.find(d => d.name === 'winldd');
709
- const winlddExecutable = findExecutablePath(winldd.dir, 'winldd');
748
+ const winldd = descriptors.find((d) => d.name === "winldd");
749
+ const winlddExecutable = findExecutablePath(winldd.dir, "winldd");
710
750
  this._executables.push({
711
- type: 'tool',
712
- name: 'winldd',
713
- browserName: undefined,
751
+ type: "tool",
752
+ name: "winldd",
753
+ browserName: void 0,
714
754
  directory: winldd.dir,
715
755
  executablePath: () => winlddExecutable,
716
- executablePathOrDie: sdkLanguage => executablePathOrDie('winldd', winlddExecutable, winldd.installByDefault, sdkLanguage),
717
- installType: process.platform === 'win32' ? 'download-by-default' : 'none',
756
+ executablePathOrDie: (sdkLanguage) => executablePathOrDie("winldd", winlddExecutable, winldd.installByDefault, sdkLanguage),
757
+ installType: process.platform === "win32" ? "download-by-default" : "none",
718
758
  _validateHostRequirements: () => Promise.resolve(),
719
759
  downloadURLs: this._downloadURLs(winldd),
720
760
  _install: () => this._downloadExecutable(winldd, winlddExecutable),
721
- _dependencyGroup: 'tools',
761
+ _dependencyGroup: "tools",
722
762
  _isHermeticInstallation: true
723
763
  });
724
- const android = descriptors.find(d => d.name === 'android');
764
+ const android = descriptors.find((d) => d.name === "android");
725
765
  this._executables.push({
726
- type: 'tool',
727
- name: 'android',
728
- browserName: undefined,
766
+ type: "tool",
767
+ name: "android",
768
+ browserName: void 0,
729
769
  directory: android.dir,
730
- executablePath: () => undefined,
731
- executablePathOrDie: () => '',
732
- installType: 'download-on-demand',
770
+ executablePath: () => void 0,
771
+ executablePathOrDie: () => "",
772
+ installType: "download-on-demand",
733
773
  _validateHostRequirements: () => Promise.resolve(),
734
774
  downloadURLs: this._downloadURLs(android),
735
775
  _install: () => this._downloadExecutable(android),
736
- _dependencyGroup: 'tools',
737
- _isHermeticInstallation: true
738
- });
739
- this._executables.push({
740
- type: 'browser',
741
- name: 'bidi',
742
- browserName: 'bidi',
743
- directory: undefined,
744
- executablePath: () => undefined,
745
- executablePathOrDie: () => '',
746
- installType: 'none',
747
- _validateHostRequirements: () => Promise.resolve(),
748
- downloadURLs: [],
749
- _install: () => Promise.resolve(),
750
- _dependencyGroup: 'tools',
776
+ _dependencyGroup: "tools",
751
777
  _isHermeticInstallation: true
752
778
  });
753
779
  }
@@ -755,27 +781,38 @@ class Registry {
755
781
  const executablePath = (sdkLanguage, shouldThrow) => {
756
782
  const suffix = lookAt[process.platform];
757
783
  if (!suffix) {
758
- if (shouldThrow) throw new Error(`Chromium distribution '${name}' is not supported on ${process.platform}`);
759
- return undefined;
784
+ if (shouldThrow)
785
+ throw new Error(`Chromium distribution '${name}' is not supported on ${process.platform}`);
786
+ return void 0;
760
787
  }
761
- const prefixes = process.platform === 'win32' ? [process.env.LOCALAPPDATA, process.env.PROGRAMFILES, process.env['PROGRAMFILES(X86)']].filter(Boolean) : [''];
788
+ const prefixes = process.platform === "win32" ? [
789
+ process.env.LOCALAPPDATA,
790
+ process.env.PROGRAMFILES,
791
+ process.env["PROGRAMFILES(X86)"],
792
+ // In some cases there is no PROGRAMFILES/(86) env var set but HOMEDRIVE is set.
793
+ process.env.HOMEDRIVE + "\\Program Files",
794
+ process.env.HOMEDRIVE + "\\Program Files (x86)"
795
+ ].filter(Boolean) : [""];
762
796
  for (const prefix of prefixes) {
763
- const executablePath = _path.default.join(prefix, suffix);
764
- if ((0, _fileUtils.canAccessFile)(executablePath)) return executablePath;
797
+ const executablePath2 = import_path.default.join(prefix, suffix);
798
+ if ((0, import_fileUtils.canAccessFile)(executablePath2))
799
+ return executablePath2;
765
800
  }
766
- if (!shouldThrow) return undefined;
767
- const location = prefixes.length ? ` at ${_path.default.join(prefixes[0], suffix)}` : ``;
768
- const installation = install ? `\nRun "${buildPlaywrightCLICommand(sdkLanguage, 'install ' + name)}"` : '';
801
+ if (!shouldThrow)
802
+ return void 0;
803
+ const location = prefixes.length ? ` at ${import_path.default.join(prefixes[0], suffix)}` : ``;
804
+ const installation = install ? `
805
+ Run "${buildPlaywrightCLICommand(sdkLanguage, "install " + name)}"` : "";
769
806
  throw new Error(`Chromium distribution '${name}' is not found${location}${installation}`);
770
807
  };
771
808
  return {
772
- type: 'channel',
809
+ type: "channel",
773
810
  name,
774
- browserName: 'chromium',
775
- directory: undefined,
776
- executablePath: sdkLanguage => executablePath(sdkLanguage, false),
777
- executablePathOrDie: sdkLanguage => executablePath(sdkLanguage, true),
778
- installType: install ? 'install-script' : 'none',
811
+ browserName: "chromium",
812
+ directory: void 0,
813
+ executablePath: (sdkLanguage) => executablePath(sdkLanguage, false),
814
+ executablePathOrDie: (sdkLanguage) => executablePath(sdkLanguage, true),
815
+ installType: install ? "install-script" : "none",
779
816
  _validateHostRequirements: () => Promise.resolve(),
780
817
  _isHermeticInstallation: false,
781
818
  _install: install
@@ -785,59 +822,76 @@ class Registry {
785
822
  const executablePath = (sdkLanguage, shouldThrow) => {
786
823
  const suffix = lookAt[process.platform];
787
824
  if (!suffix) {
788
- if (shouldThrow) throw new Error(`Firefox distribution '${name}' is not supported on ${process.platform}`);
789
- return undefined;
825
+ if (shouldThrow)
826
+ throw new Error(`Firefox distribution '${name}' is not supported on ${process.platform}`);
827
+ return void 0;
790
828
  }
791
- const folder = _path.default.resolve('firefox');
792
- let channelName = 'stable';
793
- if (name.includes('beta')) channelName = 'beta';else if (name.includes('nightly')) channelName = 'nightly';
794
- const installedVersions = _fs.default.readdirSync(folder);
795
- const found = installedVersions.filter(e => e.includes(channelName));
796
- if (found.length === 1) return _path.default.join(folder, found[0], suffix);
797
- if (found.length > 1) {
798
- if (shouldThrow) throw new Error(`Multiple Firefox installations found for channel '${name}': ${found.join(', ')}`);else return undefined;
829
+ const prefixes = process.platform === "win32" ? [
830
+ process.env.LOCALAPPDATA,
831
+ process.env.PROGRAMFILES,
832
+ process.env["PROGRAMFILES(X86)"],
833
+ // In some cases there is no PROGRAMFILES/(86) env var set but HOMEDRIVE is set.
834
+ process.env.HOMEDRIVE + "\\Program Files",
835
+ process.env.HOMEDRIVE + "\\Program Files (x86)"
836
+ ].filter(Boolean) : [""];
837
+ for (const prefix of prefixes) {
838
+ const executablePath2 = import_path.default.join(prefix, suffix);
839
+ if ((0, import_fileUtils.canAccessFile)(executablePath2))
840
+ return executablePath2;
799
841
  }
800
- if (shouldThrow) throw new Error(`Cannot find Firefox installation for channel '${name}' under ${folder}`);
801
- return undefined;
842
+ if (shouldThrow)
843
+ throw new Error(`Cannot find Firefox installation for channel '${name}' at the standard system paths.`);
844
+ return void 0;
802
845
  };
803
846
  return {
804
- type: 'channel',
847
+ type: "channel",
805
848
  name,
806
- browserName: 'bidi',
807
- directory: undefined,
808
- executablePath: sdkLanguage => executablePath(sdkLanguage, false),
809
- executablePathOrDie: sdkLanguage => executablePath(sdkLanguage, true),
810
- installType: 'none',
849
+ browserName: "_bidiFirefox",
850
+ directory: void 0,
851
+ executablePath: (sdkLanguage) => executablePath(sdkLanguage, false),
852
+ executablePathOrDie: (sdkLanguage) => executablePath(sdkLanguage, true),
853
+ installType: "none",
811
854
  _validateHostRequirements: () => Promise.resolve(),
812
855
  _isHermeticInstallation: true,
813
856
  _install: install
814
857
  };
815
858
  }
816
- _createBidiChannel(name, lookAt, install) {
859
+ _createBidiChromiumChannel(name, lookAt, install) {
817
860
  const executablePath = (sdkLanguage, shouldThrow) => {
818
861
  const suffix = lookAt[process.platform];
819
862
  if (!suffix) {
820
- if (shouldThrow) throw new Error(`Firefox distribution '${name}' is not supported on ${process.platform}`);
821
- return undefined;
863
+ if (shouldThrow)
864
+ throw new Error(`Chromium distribution '${name}' is not supported on ${process.platform}`);
865
+ return void 0;
822
866
  }
823
- const prefixes = process.platform === 'win32' ? [process.env.LOCALAPPDATA, process.env.PROGRAMFILES, process.env['PROGRAMFILES(X86)']].filter(Boolean) : [''];
867
+ const prefixes = process.platform === "win32" ? [
868
+ process.env.LOCALAPPDATA,
869
+ process.env.PROGRAMFILES,
870
+ process.env["PROGRAMFILES(X86)"],
871
+ // In some cases there is no PROGRAMFILES/(86) env var set but HOMEDRIVE is set.
872
+ process.env.HOMEDRIVE + "\\Program Files",
873
+ process.env.HOMEDRIVE + "\\Program Files (x86)"
874
+ ].filter(Boolean) : [""];
824
875
  for (const prefix of prefixes) {
825
- const executablePath = _path.default.join(prefix, suffix);
826
- if ((0, _fileUtils.canAccessFile)(executablePath)) return executablePath;
876
+ const executablePath2 = import_path.default.join(prefix, suffix);
877
+ if ((0, import_fileUtils.canAccessFile)(executablePath2))
878
+ return executablePath2;
827
879
  }
828
- if (!shouldThrow) return undefined;
829
- const location = prefixes.length ? ` at ${_path.default.join(prefixes[0], suffix)}` : ``;
830
- const installation = install ? `\nRun "${buildPlaywrightCLICommand(sdkLanguage, 'install ' + name)}"` : '';
831
- throw new Error(`Firefox distribution '${name}' is not found${location}${installation}`);
880
+ if (!shouldThrow)
881
+ return void 0;
882
+ const location = prefixes.length ? ` at ${import_path.default.join(prefixes[0], suffix)}` : ``;
883
+ const installation = install ? `
884
+ Run "${buildPlaywrightCLICommand(sdkLanguage, "install " + name)}"` : "";
885
+ throw new Error(`Chromium distribution '${name}' is not found${location}${installation}`);
832
886
  };
833
887
  return {
834
- type: 'channel',
888
+ type: "channel",
835
889
  name,
836
- browserName: 'bidi',
837
- directory: undefined,
838
- executablePath: sdkLanguage => executablePath(sdkLanguage, false),
839
- executablePathOrDie: sdkLanguage => executablePath(sdkLanguage, true),
840
- installType: install ? 'install-script' : 'none',
890
+ browserName: "_bidiChromium",
891
+ directory: void 0,
892
+ executablePath: (sdkLanguage) => executablePath(sdkLanguage, false),
893
+ executablePathOrDie: (sdkLanguage) => executablePath(sdkLanguage, true),
894
+ installType: install ? "install-script" : "none",
841
895
  _validateHostRequirements: () => Promise.resolve(),
842
896
  _isHermeticInstallation: false,
843
897
  _install: install
@@ -847,38 +901,41 @@ class Registry {
847
901
  return this._executables;
848
902
  }
849
903
  findExecutable(name) {
850
- return this._executables.find(b => b.name === name);
904
+ return this._executables.find((b) => b.name === name);
851
905
  }
852
906
  defaultExecutables() {
853
- return this._executables.filter(e => e.installType === 'download-by-default');
907
+ return this._executables.filter((e) => e.installType === "download-by-default");
854
908
  }
855
909
  _dedupe(executables) {
856
910
  return Array.from(new Set(executables));
857
911
  }
858
912
  async _validateHostRequirements(sdkLanguage, browserDirectory, linuxLddDirectories, dlOpenLibraries, windowsExeAndDllDirectories) {
859
- if (_os.default.platform() === 'linux') return await (0, _dependencies.validateDependenciesLinux)(sdkLanguage, linuxLddDirectories.map(d => _path.default.join(browserDirectory, d)), dlOpenLibraries);
860
- if (_os.default.platform() === 'win32' && _os.default.arch() === 'x64') return await (0, _dependencies.validateDependenciesWindows)(sdkLanguage, windowsExeAndDllDirectories.map(d => _path.default.join(browserDirectory, d)));
913
+ if (import_os.default.platform() === "linux")
914
+ return await (0, import_dependencies2.validateDependenciesLinux)(sdkLanguage, linuxLddDirectories.map((d) => import_path.default.join(browserDirectory, d)), dlOpenLibraries);
915
+ if (import_os.default.platform() === "win32" && import_os.default.arch() === "x64")
916
+ return await (0, import_dependencies2.validateDependenciesWindows)(sdkLanguage, windowsExeAndDllDirectories.map((d) => import_path.default.join(browserDirectory, d)));
861
917
  }
862
918
  async installDeps(executablesToInstallDeps, dryRun) {
863
919
  const executables = this._dedupe(executablesToInstallDeps);
864
- const targets = new Set();
920
+ const targets = /* @__PURE__ */ new Set();
865
921
  for (const executable of executables) {
866
- if (executable._dependencyGroup) targets.add(executable._dependencyGroup);
922
+ if (executable._dependencyGroup)
923
+ targets.add(executable._dependencyGroup);
867
924
  }
868
- targets.add('tools');
869
- if (_os.default.platform() === 'win32') return await (0, _dependencies.installDependenciesWindows)(targets, dryRun);
870
- if (_os.default.platform() === 'linux') return await (0, _dependencies.installDependenciesLinux)(targets, dryRun);
925
+ targets.add("tools");
926
+ if (import_os.default.platform() === "win32")
927
+ return await (0, import_dependencies2.installDependenciesWindows)(targets, dryRun);
928
+ if (import_os.default.platform() === "linux")
929
+ return await (0, import_dependencies2.installDependenciesLinux)(targets, dryRun);
871
930
  }
872
931
  async install(executablesToInstall, forceReinstall) {
873
932
  const executables = this._dedupe(executablesToInstall);
874
- await _fs.default.promises.mkdir(registryDirectory, {
875
- recursive: true
876
- });
877
- const lockfilePath = _path.default.join(registryDirectory, '__dirlock');
878
- const linksDir = _path.default.join(registryDirectory, '.links');
933
+ await import_fs.default.promises.mkdir(registryDirectory, { recursive: true });
934
+ const lockfilePath = import_path.default.join(registryDirectory, "__dirlock");
935
+ const linksDir = import_path.default.join(registryDirectory, ".links");
879
936
  let releaseLock;
880
937
  try {
881
- releaseLock = await _utilsBundle.lockfile.lock(registryDirectory, {
938
+ releaseLock = await import_utilsBundle.lockfile.lock(registryDirectory, {
882
939
  retries: {
883
940
  // Retry 20 times during 10 minutes with
884
941
  // exponential back-off.
@@ -886,274 +943,344 @@ class Registry {
886
943
  retries: 20,
887
944
  factor: 1.27579
888
945
  },
889
- onCompromised: err => {
946
+ onCompromised: (err) => {
890
947
  throw new Error(`${err.message} Path: ${lockfilePath}`);
891
948
  },
892
949
  lockfilePath
893
950
  });
894
- // Create a link first, so that cache validation does not remove our own browsers.
895
- await _fs.default.promises.mkdir(linksDir, {
896
- recursive: true
897
- });
898
- await _fs.default.promises.writeFile(_path.default.join(linksDir, (0, _utils.calculateSha1)(PACKAGE_PATH)), PACKAGE_PATH);
899
-
900
- // Remove stale browsers.
901
- await this._validateInstallationCache(linksDir);
902
-
903
- // Install browsers for this package.
951
+ await import_fs.default.promises.mkdir(linksDir, { recursive: true });
952
+ await import_fs.default.promises.writeFile(import_path.default.join(linksDir, (0, import_utils.calculateSha1)(PACKAGE_PATH)), PACKAGE_PATH);
953
+ if (!(0, import_utils.getAsBooleanFromENV)("PLAYWRIGHT_SKIP_BROWSER_GC"))
954
+ await this._validateInstallationCache(linksDir);
904
955
  for (const executable of executables) {
905
- if (!executable._install) throw new Error(`ERROR: Playwright does not support installing ${executable.name}`);
906
- const {
907
- embedderName
908
- } = (0, _userAgent.getEmbedderName)();
909
- if (!(0, _utils.getAsBooleanFromENV)('CI') && !executable._isHermeticInstallation && !forceReinstall && executable.executablePath(embedderName)) {
910
- const command = buildPlaywrightCLICommand(embedderName, 'install --force ' + executable.name);
911
- throw new Error('\n' + (0, _ascii.wrapInASCIIBox)([`ATTENTION: "${executable.name}" is already installed on the system!`, ``, `"${executable.name}" installation is not hermetic; installing newer version`, `requires *removal* of a current installation first.`, ``, `To *uninstall* current version and re-install latest "${executable.name}":`, ``, `- Close all running instances of "${executable.name}", if any`, `- Use "--force" to install browser:`, ``, ` ${command}`, ``, `<3 Playwright Team`].join('\n'), 1));
956
+ if (!executable._install)
957
+ throw new Error(`ERROR: Playwright does not support installing ${executable.name}`);
958
+ const { embedderName } = (0, import_userAgent.getEmbedderName)();
959
+ if (!(0, import_utils.getAsBooleanFromENV)("CI") && !executable._isHermeticInstallation && !forceReinstall && executable.executablePath(embedderName)) {
960
+ const command = buildPlaywrightCLICommand(embedderName, "install --force " + executable.name);
961
+ process.stderr.write("\n" + (0, import_ascii.wrapInASCIIBox)([
962
+ `ATTENTION: "${executable.name}" is already installed on the system!`,
963
+ ``,
964
+ `"${executable.name}" installation is not hermetic; installing newer version`,
965
+ `requires *removal* of a current installation first.`,
966
+ ``,
967
+ `To *uninstall* current version and re-install latest "${executable.name}":`,
968
+ ``,
969
+ `- Close all running instances of "${executable.name}", if any`,
970
+ `- Use "--force" to install browser:`,
971
+ ``,
972
+ ` ${command}`,
973
+ ``,
974
+ `<3 Playwright Team`
975
+ ].join("\n"), 1) + "\n\n");
976
+ return;
912
977
  }
913
978
  await executable._install();
914
979
  }
915
980
  } catch (e) {
916
- if (e.code === 'ELOCKED') {
917
- const rmCommand = process.platform === 'win32' ? 'rm -R' : 'rm -rf';
918
- throw new Error('\n' + (0, _ascii.wrapInASCIIBox)([`An active lockfile is found at:`, ``, ` ${lockfilePath}`, ``, `Either:`, `- wait a few minutes if other Playwright is installing browsers in parallel`, `- remove lock manually with:`, ``, ` ${rmCommand} ${lockfilePath}`, ``, `<3 Playwright Team`].join('\n'), 1));
981
+ if (e.code === "ELOCKED") {
982
+ const rmCommand = process.platform === "win32" ? "rm -R" : "rm -rf";
983
+ throw new Error("\n" + (0, import_ascii.wrapInASCIIBox)([
984
+ `An active lockfile is found at:`,
985
+ ``,
986
+ ` ${lockfilePath}`,
987
+ ``,
988
+ `Either:`,
989
+ `- wait a few minutes if other Playwright is installing browsers in parallel`,
990
+ `- remove lock manually with:`,
991
+ ``,
992
+ ` ${rmCommand} ${lockfilePath}`,
993
+ ``,
994
+ `<3 Playwright Team`
995
+ ].join("\n"), 1));
919
996
  } else {
920
997
  throw e;
921
998
  }
922
999
  } finally {
923
- if (releaseLock) await releaseLock();
1000
+ if (releaseLock)
1001
+ await releaseLock();
924
1002
  }
925
1003
  }
926
1004
  async uninstall(all) {
927
- const linksDir = _path.default.join(registryDirectory, '.links');
1005
+ const linksDir = import_path.default.join(registryDirectory, ".links");
928
1006
  if (all) {
929
- const links = await _fs.default.promises.readdir(linksDir).catch(() => []);
930
- for (const link of links) await _fs.default.promises.unlink(_path.default.join(linksDir, link));
1007
+ const links = await import_fs.default.promises.readdir(linksDir).catch(() => []);
1008
+ for (const link of links)
1009
+ await import_fs.default.promises.unlink(import_path.default.join(linksDir, link));
931
1010
  } else {
932
- await _fs.default.promises.unlink(_path.default.join(linksDir, (0, _utils.calculateSha1)(PACKAGE_PATH))).catch(() => {});
1011
+ await import_fs.default.promises.unlink(import_path.default.join(linksDir, (0, import_utils.calculateSha1)(PACKAGE_PATH))).catch(() => {
1012
+ });
933
1013
  }
934
-
935
- // Remove stale browsers.
936
1014
  await this._validateInstallationCache(linksDir);
937
1015
  return {
938
- numberOfBrowsersLeft: (await _fs.default.promises.readdir(registryDirectory).catch(() => [])).filter(browserDirectory => isBrowserDirectory(browserDirectory)).length
1016
+ numberOfBrowsersLeft: (await import_fs.default.promises.readdir(registryDirectory).catch(() => [])).filter((browserDirectory) => isBrowserDirectory(browserDirectory)).length
939
1017
  };
940
1018
  }
941
1019
  async validateHostRequirementsForExecutablesIfNeeded(executables, sdkLanguage) {
942
- if ((0, _utils.getAsBooleanFromENV)('PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS')) {
943
- process.stderr.write('Skipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set.\n');
1020
+ if ((0, import_utils.getAsBooleanFromENV)("PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS")) {
1021
+ process.stderr.write("Skipping host requirements validation logic because `PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS` env variable is set.\n");
944
1022
  return;
945
1023
  }
946
- for (const executable of executables) await this._validateHostRequirementsForExecutableIfNeeded(executable, sdkLanguage);
1024
+ for (const executable of executables)
1025
+ await this._validateHostRequirementsForExecutableIfNeeded(executable, sdkLanguage);
947
1026
  }
948
1027
  async _validateHostRequirementsForExecutableIfNeeded(executable, sdkLanguage) {
949
- const kMaximumReValidationPeriod = 30 * 24 * 60 * 60 * 1000; // 30 days
950
- // Executable does not require validation.
951
- if (!executable.directory) return;
952
- const markerFile = _path.default.join(executable.directory, 'DEPENDENCIES_VALIDATED');
953
- // Executable is already validated.
954
- if (await _fs.default.promises.stat(markerFile).then(stat => Date.now() - stat.mtime.getTime() < kMaximumReValidationPeriod).catch(() => false)) return;
955
- _debugLogger.debugLogger.log('install', `validating host requirements for "${executable.name}"`);
1028
+ const kMaximumReValidationPeriod = 30 * 24 * 60 * 60 * 1e3;
1029
+ if (!executable.directory)
1030
+ return;
1031
+ const markerFile = import_path.default.join(executable.directory, "DEPENDENCIES_VALIDATED");
1032
+ if (await import_fs.default.promises.stat(markerFile).then((stat) => Date.now() - stat.mtime.getTime() < kMaximumReValidationPeriod).catch(() => false))
1033
+ return;
1034
+ import_debugLogger.debugLogger.log("install", `validating host requirements for "${executable.name}"`);
956
1035
  try {
957
1036
  await executable._validateHostRequirements(sdkLanguage);
958
- _debugLogger.debugLogger.log('install', `validation passed for ${executable.name}`);
1037
+ import_debugLogger.debugLogger.log("install", `validation passed for ${executable.name}`);
959
1038
  } catch (error) {
960
- _debugLogger.debugLogger.log('install', `validation failed for ${executable.name}`);
1039
+ import_debugLogger.debugLogger.log("install", `validation failed for ${executable.name}`);
961
1040
  throw error;
962
1041
  }
963
- await _fs.default.promises.writeFile(markerFile, '').catch(() => {});
1042
+ await import_fs.default.promises.writeFile(markerFile, "").catch(() => {
1043
+ });
964
1044
  }
965
1045
  _downloadURLs(descriptor) {
966
1046
  const paths = DOWNLOAD_PATHS[descriptor.name];
967
- const downloadPathTemplate = paths[_hostPlatform.hostPlatform] || paths['<unknown>'];
968
- if (!downloadPathTemplate) return [];
1047
+ const downloadPathTemplate = paths[import_hostPlatform.hostPlatform] || paths["<unknown>"];
1048
+ if (!downloadPathTemplate)
1049
+ return [];
969
1050
  const downloadPath = util.format(downloadPathTemplate, descriptor.revision);
970
- let downloadURLs = PLAYWRIGHT_CDN_MIRRORS.map(mirror => `${mirror}/${downloadPath}`);
1051
+ let downloadURLs = PLAYWRIGHT_CDN_MIRRORS.map((mirror) => `${mirror}/${downloadPath}`);
971
1052
  let downloadHostEnv;
972
- if (descriptor.name.startsWith('chromium')) downloadHostEnv = 'PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST';else if (descriptor.name.startsWith('firefox')) downloadHostEnv = 'PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST';else if (descriptor.name.startsWith('webkit')) downloadHostEnv = 'PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST';
973
- const customHostOverride = downloadHostEnv && (0, _utils.getFromENV)(downloadHostEnv) || (0, _utils.getFromENV)('PLAYWRIGHT_DOWNLOAD_HOST');
974
- if (customHostOverride) downloadURLs = [`${customHostOverride}/${downloadPath}`];
1053
+ if (descriptor.name.startsWith("chromium"))
1054
+ downloadHostEnv = "PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST";
1055
+ else if (descriptor.name.startsWith("firefox"))
1056
+ downloadHostEnv = "PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST";
1057
+ else if (descriptor.name.startsWith("webkit"))
1058
+ downloadHostEnv = "PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST";
1059
+ const customHostOverride = downloadHostEnv && (0, import_utils.getFromENV)(downloadHostEnv) || (0, import_utils.getFromENV)("PLAYWRIGHT_DOWNLOAD_HOST");
1060
+ if (customHostOverride)
1061
+ downloadURLs = [`${customHostOverride}/${downloadPath}`];
975
1062
  return downloadURLs;
976
1063
  }
977
1064
  async _downloadExecutable(descriptor, executablePath) {
978
1065
  const downloadURLs = this._downloadURLs(descriptor);
979
- if (!downloadURLs.length) throw new Error(`ERROR: Playwright does not support ${descriptor.name} on ${_hostPlatform.hostPlatform}`);
980
- if (!_hostPlatform.isOfficiallySupportedPlatform) (0, _browserFetcher.logPolitely)(`BEWARE: your OS is not officially supported by Playwright; downloading fallback build for ${_hostPlatform.hostPlatform}.`);
1066
+ if (!downloadURLs.length)
1067
+ throw new Error(`ERROR: Playwright does not support ${descriptor.name} on ${import_hostPlatform.hostPlatform}`);
1068
+ if (!import_hostPlatform.isOfficiallySupportedPlatform)
1069
+ (0, import_browserFetcher.logPolitely)(`BEWARE: your OS is not officially supported by Playwright; downloading fallback build for ${import_hostPlatform.hostPlatform}.`);
981
1070
  if (descriptor.hasRevisionOverride) {
982
- const message = `You are using a frozen ${descriptor.name} browser which does not receive updates anymore on ${_hostPlatform.hostPlatform}. Please update to the latest version of your operating system to test up-to-date browsers.`;
983
- if (process.env.GITHUB_ACTIONS) console.log(`::warning title=Playwright::${message}`); // eslint-disable-line no-console
984
- else (0, _browserFetcher.logPolitely)(message);
1071
+ const message = `You are using a frozen ${descriptor.name} browser which does not receive updates anymore on ${import_hostPlatform.hostPlatform}. Please update to the latest version of your operating system to test up-to-date browsers.`;
1072
+ if (process.env.GITHUB_ACTIONS)
1073
+ console.log(`::warning title=Playwright::${message}`);
1074
+ else
1075
+ (0, import_browserFetcher.logPolitely)(message);
985
1076
  }
986
- const displayName = descriptor.name.split('-').map(word => {
987
- return word === 'ffmpeg' ? 'FFMPEG' : word.charAt(0).toUpperCase() + word.slice(1);
988
- }).join(' ');
1077
+ const displayName = descriptor.name.split("-").map((word) => {
1078
+ return word === "ffmpeg" ? "FFMPEG" : word.charAt(0).toUpperCase() + word.slice(1);
1079
+ }).join(" ");
989
1080
  const title = descriptor.browserVersion ? `${displayName} ${descriptor.browserVersion} (playwright build v${descriptor.revision})` : `${displayName} playwright build v${descriptor.revision}`;
990
- const downloadFileName = `playwright-download-${descriptor.name}-${_hostPlatform.hostPlatform}-${descriptor.revision}.zip`;
991
- const downloadConnectionTimeoutEnv = (0, _utils.getFromENV)('PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT');
992
- const downloadConnectionTimeout = +(downloadConnectionTimeoutEnv || '0') || 30_000;
993
- await (0, _browserFetcher.downloadBrowserWithProgressBar)(title, descriptor.dir, executablePath, downloadURLs, downloadFileName, downloadConnectionTimeout).catch(e => {
994
- throw new Error(`Failed to download ${title}, caused by\n${e.stack}`);
1081
+ const downloadFileName = `playwright-download-${descriptor.name}-${import_hostPlatform.hostPlatform}-${descriptor.revision}.zip`;
1082
+ const downloadSocketTimeoutEnv = (0, import_utils.getFromENV)("PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT");
1083
+ const downloadSocketTimeout = +(downloadSocketTimeoutEnv || "0") || import_network.NET_DEFAULT_TIMEOUT;
1084
+ await (0, import_browserFetcher.downloadBrowserWithProgressBar)(title, descriptor.dir, executablePath, downloadURLs, downloadFileName, downloadSocketTimeout).catch((e) => {
1085
+ throw new Error(`Failed to download ${title}, caused by
1086
+ ${e.stack}`);
995
1087
  });
996
1088
  }
997
1089
  async _installMSEdgeChannel(channel, scripts) {
998
1090
  const scriptArgs = [];
999
- if (process.platform !== 'linux') {
1000
- const products = lowercaseAllKeys(JSON.parse(await (0, _network.fetchData)({
1001
- url: 'https://edgeupdates.microsoft.com/api/products'
1002
- })));
1091
+ if (process.platform !== "linux") {
1092
+ const products = lowercaseAllKeys(JSON.parse(await (0, import_network.fetchData)(void 0, { url: "https://edgeupdates.microsoft.com/api/products" })));
1003
1093
  const productName = {
1004
- 'msedge': 'Stable',
1005
- 'msedge-beta': 'Beta',
1006
- 'msedge-dev': 'Dev'
1094
+ "msedge": "Stable",
1095
+ "msedge-beta": "Beta",
1096
+ "msedge-dev": "Dev"
1007
1097
  }[channel];
1008
- const product = products.find(product => product.product === productName);
1098
+ const product = products.find((product2) => product2.product === productName);
1009
1099
  const searchConfig = {
1010
- darwin: {
1011
- platform: 'MacOS',
1012
- arch: 'universal',
1013
- artifact: 'pkg'
1014
- },
1015
- win32: {
1016
- platform: 'Windows',
1017
- arch: 'x64',
1018
- artifact: 'msi'
1019
- }
1100
+ darwin: { platform: "MacOS", arch: "universal", artifact: "pkg" },
1101
+ win32: { platform: "Windows", arch: "x64", artifact: "msi" }
1020
1102
  }[process.platform];
1021
- const release = searchConfig ? product.releases.find(release => release.platform === searchConfig.platform && release.architecture === searchConfig.arch && release.artifacts.length > 0) : null;
1022
- const artifact = release ? release.artifacts.find(artifact => artifact.artifactname === searchConfig.artifact) : null;
1023
- if (artifact) scriptArgs.push(artifact.location /* url */);else throw new Error(`Cannot install ${channel} on ${process.platform}`);
1103
+ const release = searchConfig ? product.releases.find((release2) => release2.platform === searchConfig.platform && release2.architecture === searchConfig.arch && release2.artifacts.length > 0) : null;
1104
+ const artifact = release ? release.artifacts.find((artifact2) => artifact2.artifactname === searchConfig.artifact) : null;
1105
+ if (artifact)
1106
+ scriptArgs.push(
1107
+ artifact.location
1108
+ /* url */
1109
+ );
1110
+ else
1111
+ throw new Error(`Cannot install ${channel} on ${process.platform}`);
1024
1112
  }
1025
1113
  await this._installChromiumChannel(channel, scripts, scriptArgs);
1026
1114
  }
1027
1115
  async _installChromiumChannel(channel, scripts, scriptArgs = []) {
1028
1116
  const scriptName = scripts[process.platform];
1029
- if (!scriptName) throw new Error(`Cannot install ${channel} on ${process.platform}`);
1117
+ if (!scriptName)
1118
+ throw new Error(`Cannot install ${channel} on ${process.platform}`);
1030
1119
  const cwd = BIN_PATH;
1031
- const isPowerShell = scriptName.endsWith('.ps1');
1120
+ const isPowerShell = scriptName.endsWith(".ps1");
1032
1121
  if (isPowerShell) {
1033
- const args = ['-ExecutionPolicy', 'Bypass', '-File', _path.default.join(BIN_PATH, scriptName), ...scriptArgs];
1034
- const {
1035
- code
1036
- } = await (0, _spawnAsync.spawnAsync)('powershell.exe', args, {
1037
- cwd,
1038
- stdio: 'inherit'
1039
- });
1040
- if (code !== 0) throw new Error(`Failed to install ${channel}`);
1122
+ const args = [
1123
+ "-ExecutionPolicy",
1124
+ "Bypass",
1125
+ "-File",
1126
+ import_path.default.join(BIN_PATH, scriptName),
1127
+ ...scriptArgs
1128
+ ];
1129
+ const { code } = await (0, import_spawnAsync.spawnAsync)("powershell.exe", args, { cwd, stdio: "inherit" });
1130
+ if (code !== 0)
1131
+ throw new Error(`Failed to install ${channel}`);
1041
1132
  } else {
1042
- const {
1043
- command,
1044
- args,
1045
- elevatedPermissions
1046
- } = await (0, _dependencies.transformCommandsForRoot)([`bash "${_path.default.join(BIN_PATH, scriptName)}" ${scriptArgs.join('')}`]);
1047
- if (elevatedPermissions) console.log('Switching to root user to install dependencies...'); // eslint-disable-line no-console
1048
- const {
1049
- code
1050
- } = await (0, _spawnAsync.spawnAsync)(command, args, {
1051
- cwd,
1052
- stdio: 'inherit'
1053
- });
1054
- if (code !== 0) throw new Error(`Failed to install ${channel}`);
1133
+ const { command, args, elevatedPermissions } = await (0, import_dependencies.transformCommandsForRoot)([`bash "${import_path.default.join(BIN_PATH, scriptName)}" ${scriptArgs.join("")}`]);
1134
+ if (elevatedPermissions)
1135
+ console.log("Switching to root user to install dependencies...");
1136
+ const { code } = await (0, import_spawnAsync.spawnAsync)(command, args, { cwd, stdio: "inherit" });
1137
+ if (code !== 0)
1138
+ throw new Error(`Failed to install ${channel}`);
1055
1139
  }
1056
1140
  }
1141
+ async listInstalledBrowsers() {
1142
+ const linksDir = import_path.default.join(registryDirectory, ".links");
1143
+ const { browsers } = await this._traverseBrowserInstallations(linksDir);
1144
+ return browsers.filter((browser) => import_fs.default.existsSync(browser.browserPath));
1145
+ }
1057
1146
  async _validateInstallationCache(linksDir) {
1058
- // 1. Collect used downloads and package descriptors.
1059
- const usedBrowserPaths = new Set();
1060
- for (const fileName of await _fs.default.promises.readdir(linksDir)) {
1061
- const linkPath = _path.default.join(linksDir, fileName);
1062
- let linkTarget = '';
1147
+ const { browsers, brokenLinks } = await this._traverseBrowserInstallations(linksDir);
1148
+ await this._deleteStaleBrowsers(browsers);
1149
+ await this._deleteBrokenInstallations(brokenLinks);
1150
+ }
1151
+ async _traverseBrowserInstallations(linksDir) {
1152
+ const browserList = [];
1153
+ const brokenLinks = [];
1154
+ for (const fileName of await import_fs.default.promises.readdir(linksDir)) {
1155
+ const linkPath = import_path.default.join(linksDir, fileName);
1156
+ let linkTarget = "";
1063
1157
  try {
1064
- linkTarget = (await _fs.default.promises.readFile(linkPath)).toString();
1065
- const browsersJSON = require(_path.default.join(linkTarget, 'browsers.json'));
1158
+ linkTarget = (await import_fs.default.promises.readFile(linkPath)).toString();
1159
+ const browsersJSON = require(import_path.default.join(linkTarget, "browsers.json"));
1066
1160
  const descriptors = readDescriptors(browsersJSON);
1067
1161
  for (const browserName of allDownloadable) {
1068
- // We retain browsers if they are found in the descriptor.
1069
- // Note, however, that there are older versions out in the wild that rely on
1070
- // the "download" field in the browser descriptor and use its value
1071
- // to retain and download browsers.
1072
- // As of v1.10, we decided to abandon "download" field.
1073
- const descriptor = descriptors.find(d => d.name === browserName);
1074
- if (!descriptor) continue;
1075
- const usedBrowserPath = descriptor.dir;
1076
- const browserRevision = parseInt(descriptor.revision, 10);
1077
- // Old browser installations don't have marker file.
1078
- // We switched chromium from 999999 to 1000, 300000 is the new Y2K.
1079
- const shouldHaveMarkerFile = browserName === 'chromium' && (browserRevision >= 786218 || browserRevision < 300000) || browserName === 'firefox' && browserRevision >= 1128 || browserName === 'webkit' && browserRevision >= 1307 ||
1080
- // All new applications have a marker file right away.
1081
- browserName !== 'firefox' && browserName !== 'chromium' && browserName !== 'webkit';
1082
- if (!shouldHaveMarkerFile || (await (0, _fileUtils.existsAsync)(browserDirectoryToMarkerFilePath(usedBrowserPath)))) usedBrowserPaths.add(usedBrowserPath);
1162
+ const descriptor = descriptors.find((d) => d.name === browserName);
1163
+ if (!descriptor)
1164
+ continue;
1165
+ const browserPath = descriptor.dir;
1166
+ const browserVersion = parseInt(descriptor.revision, 10);
1167
+ browserList.push({
1168
+ browserName,
1169
+ browserVersion,
1170
+ browserPath,
1171
+ referenceDir: linkTarget
1172
+ });
1083
1173
  }
1084
1174
  } catch (e) {
1085
- await _fs.default.promises.unlink(linkPath).catch(e => {});
1175
+ brokenLinks.push(linkPath);
1086
1176
  }
1087
1177
  }
1088
-
1089
- // 2. Delete all unused browsers.
1090
- if (!(0, _utils.getAsBooleanFromENV)('PLAYWRIGHT_SKIP_BROWSER_GC')) {
1091
- let downloadedBrowsers = (await _fs.default.promises.readdir(registryDirectory)).map(file => _path.default.join(registryDirectory, file));
1092
- downloadedBrowsers = downloadedBrowsers.filter(file => isBrowserDirectory(file));
1093
- const directories = new Set(downloadedBrowsers);
1094
- for (const browserDirectory of usedBrowserPaths) directories.delete(browserDirectory);
1095
- for (const directory of directories) (0, _browserFetcher.logPolitely)('Removing unused browser at ' + directory);
1096
- await (0, _fileUtils.removeFolders)([...directories]);
1178
+ return { browsers: browserList, brokenLinks };
1179
+ }
1180
+ async _deleteStaleBrowsers(browserList) {
1181
+ const usedBrowserPaths = /* @__PURE__ */ new Set();
1182
+ for (const browser of browserList) {
1183
+ const { browserName, browserVersion, browserPath } = browser;
1184
+ const shouldHaveMarkerFile = browserName === "chromium" && (browserVersion >= 786218 || browserVersion < 3e5) || browserName === "firefox" && browserVersion >= 1128 || browserName === "webkit" && browserVersion >= 1307 || // All new applications have a marker file right away.
1185
+ browserName !== "firefox" && browserName !== "chromium" && browserName !== "webkit";
1186
+ if (!shouldHaveMarkerFile || await (0, import_fileUtils.existsAsync)(browserDirectoryToMarkerFilePath(browserPath)))
1187
+ usedBrowserPaths.add(browserPath);
1097
1188
  }
1189
+ let downloadedBrowsers = (await import_fs.default.promises.readdir(registryDirectory)).map((file) => import_path.default.join(registryDirectory, file));
1190
+ downloadedBrowsers = downloadedBrowsers.filter((file) => isBrowserDirectory(file));
1191
+ const directories = new Set(downloadedBrowsers);
1192
+ for (const browserDirectory of usedBrowserPaths)
1193
+ directories.delete(browserDirectory);
1194
+ for (const directory of directories)
1195
+ (0, import_browserFetcher.logPolitely)("Removing unused browser at " + directory);
1196
+ await (0, import_fileUtils.removeFolders)([...directories]);
1197
+ }
1198
+ async _deleteBrokenInstallations(brokenLinks) {
1199
+ for (const linkPath of brokenLinks)
1200
+ await import_fs.default.promises.unlink(linkPath).catch((e) => {
1201
+ });
1098
1202
  }
1099
1203
  }
1100
- exports.Registry = Registry;
1101
1204
  function browserDirectoryToMarkerFilePath(browserDirectory) {
1102
- return _path.default.join(browserDirectory, 'INSTALLATION_COMPLETE');
1205
+ return import_path.default.join(browserDirectory, "INSTALLATION_COMPLETE");
1103
1206
  }
1104
1207
  function buildPlaywrightCLICommand(sdkLanguage, parameters) {
1105
1208
  switch (sdkLanguage) {
1106
- case 'python':
1209
+ case "python":
1107
1210
  return `playwright ${parameters}`;
1108
- case 'java':
1211
+ case "java":
1109
1212
  return `mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="${parameters}"`;
1110
- case 'csharp':
1213
+ case "csharp":
1111
1214
  return `pwsh bin/Debug/netX/playwright.ps1 ${parameters}`;
1112
- default:
1113
- {
1114
- const packageManagerCommand = (0, _utils.getPackageManagerExecCommand)();
1115
- return `${packageManagerCommand} playwright ${parameters}`;
1116
- }
1215
+ default: {
1216
+ const packageManagerCommand = (0, import_utils.getPackageManagerExecCommand)();
1217
+ return `${packageManagerCommand} playwright ${parameters}`;
1218
+ }
1117
1219
  }
1118
1220
  }
1119
1221
  async function installBrowsersForNpmInstall(browsers) {
1120
- // PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD should have a value of 0 or 1
1121
- if ((0, _utils.getAsBooleanFromENV)('PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD')) {
1122
- (0, _browserFetcher.logPolitely)('Skipping browsers download because `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD` env variable is set');
1222
+ if ((0, import_utils.getAsBooleanFromENV)("PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD")) {
1223
+ (0, import_browserFetcher.logPolitely)("Skipping browsers download because `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD` env variable is set");
1123
1224
  return false;
1124
1225
  }
1125
1226
  const executables = [];
1126
- if (process.platform === 'win32') executables.push(registry.findExecutable('winldd'));
1227
+ if (process.platform === "win32")
1228
+ executables.push(registry.findExecutable("winldd"));
1127
1229
  for (const browserName of browsers) {
1128
1230
  const executable = registry.findExecutable(browserName);
1129
- if (!executable || executable.installType === 'none') throw new Error(`Cannot install ${browserName}`);
1231
+ if (!executable || executable.installType === "none")
1232
+ throw new Error(`Cannot install ${browserName}`);
1130
1233
  executables.push(executable);
1131
1234
  }
1132
- await registry.install(executables, false /* forceReinstall */);
1235
+ await registry.install(
1236
+ executables,
1237
+ false
1238
+ /* forceReinstall */
1239
+ );
1133
1240
  }
1134
- function findChromiumChannel(sdkLanguage) {
1135
- // Fall back to the stable channels of popular vendors to work out of the box.
1136
- // Null means no installation and no channels found.
1241
+ function findChromiumChannelBestEffort(sdkLanguage) {
1137
1242
  let channel = null;
1138
- for (const name of ['chromium', 'chrome', 'msedge']) {
1243
+ for (const name of ["chromium", "chrome", "msedge"]) {
1139
1244
  try {
1140
1245
  registry.findExecutable(name).executablePathOrDie(sdkLanguage);
1141
- channel = name === 'chromium' ? undefined : name;
1246
+ channel = name === "chromium" ? void 0 : name;
1142
1247
  break;
1143
- } catch (e) {}
1248
+ } catch (e) {
1249
+ }
1144
1250
  }
1145
1251
  if (channel === null) {
1146
1252
  const installCommand = buildPlaywrightCLICommand(sdkLanguage, `install chromium`);
1147
- const prettyMessage = [`No chromium-based browser found on the system.`, `Please run the following command to download one:`, ``, ` ${installCommand}`, ``, `<3 Playwright Team`].join('\n');
1148
- throw new Error('\n' + (0, _ascii.wrapInASCIIBox)(prettyMessage, 1));
1253
+ const prettyMessage = [
1254
+ `No chromium-based browser found on the system.`,
1255
+ `Please run the following command to download one:`,
1256
+ ``,
1257
+ ` ${installCommand}`,
1258
+ ``,
1259
+ `<3 Playwright Team`
1260
+ ].join("\n");
1261
+ throw new Error("\n" + (0, import_ascii.wrapInASCIIBox)(prettyMessage, 1));
1149
1262
  }
1150
1263
  return channel;
1151
1264
  }
1152
1265
  function lowercaseAllKeys(json) {
1153
- if (typeof json !== 'object' || !json) return json;
1154
- if (Array.isArray(json)) return json.map(lowercaseAllKeys);
1266
+ if (typeof json !== "object" || !json)
1267
+ return json;
1268
+ if (Array.isArray(json))
1269
+ return json.map(lowercaseAllKeys);
1155
1270
  const result = {};
1156
- for (const [key, value] of Object.entries(json)) result[key.toLowerCase()] = lowercaseAllKeys(value);
1271
+ for (const [key, value] of Object.entries(json))
1272
+ result[key.toLowerCase()] = lowercaseAllKeys(value);
1157
1273
  return result;
1158
1274
  }
1159
- const registry = exports.registry = new Registry(require('../../../browsers.json'));
1275
+ const registry = new Registry(require("../../../browsers.json"));
1276
+ // Annotate the CommonJS export names for ESM import in node:
1277
+ 0 && (module.exports = {
1278
+ Registry,
1279
+ browserDirectoryToMarkerFilePath,
1280
+ buildPlaywrightCLICommand,
1281
+ findChromiumChannelBestEffort,
1282
+ installBrowsersForNpmInstall,
1283
+ registry,
1284
+ registryDirectory,
1285
+ writeDockerVersion
1286
+ });