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