patchright-core 1.51.3 → 1.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +56 -71
  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 +371 -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 +284 -404
  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 +221 -112
  170. package/lib/server/frames.js +731 -894
  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 +326 -423
  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 +86 -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-CXVeovup.js} +1 -1
  285. package/lib/vite/recorder/assets/index-BsWQsSGl.js +184 -0
  286. package/lib/vite/recorder/index.html +1 -1
  287. package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-_GLjJL-7.js} +1 -1
  288. package/lib/vite/traceViewer/assets/defaultSettingsView-DtCQiGHe.js +265 -0
  289. package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
  290. package/lib/vite/traceViewer/index.cFZzK9RN.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.XVPIqBeS.js +5 -0
  294. package/lib/vite/traceViewer/uiMode.html +3 -3
  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-l0TyP_G8.js +0 -259
  302. package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
  303. package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
@@ -1,97 +1,98 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var ffBrowser_exports = {};
30
+ __export(ffBrowser_exports, {
31
+ FFBrowser: () => FFBrowser,
32
+ FFBrowserContext: () => FFBrowserContext
5
33
  });
6
- exports.FFBrowserContext = exports.FFBrowser = void 0;
7
- var _utils = require("../../utils");
8
- var _browser = require("../browser");
9
- var _browserContext = require("../browserContext");
10
- var _errors = require("../errors");
11
- var network = _interopRequireWildcard(require("../network"));
12
- var _page = require("../page");
13
- var _ffConnection = require("./ffConnection");
14
- var _ffPage = require("./ffPage");
15
- 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); }
16
- 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; }
17
- /**
18
- * Copyright 2018 Google Inc. All rights reserved.
19
- * Modifications copyright (c) Microsoft Corporation.
20
- *
21
- * Licensed under the Apache License, Version 2.0 (the 'License');
22
- * you may not use this file except in compliance with the License.
23
- * You may obtain a copy of the License at
24
- *
25
- * http://www.apache.org/licenses/LICENSE-2.0
26
- *
27
- * Unless required by applicable law or agreed to in writing, software
28
- * distributed under the License is distributed on an 'AS IS' BASIS,
29
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
30
- * See the License for the specific language governing permissions and
31
- * limitations under the License.
32
- */
33
-
34
- class FFBrowser extends _browser.Browser {
34
+ module.exports = __toCommonJS(ffBrowser_exports);
35
+ var import_utils = require("../../utils");
36
+ var import_browser = require("../browser");
37
+ var import_browserContext = require("../browserContext");
38
+ var import_errors = require("../errors");
39
+ var network = __toESM(require("../network"));
40
+ var import_page = require("../page");
41
+ var import_ffConnection = require("./ffConnection");
42
+ var import_ffPage = require("./ffPage");
43
+ class FFBrowser extends import_browser.Browser {
44
+ constructor(parent, connection, options) {
45
+ super(parent, options);
46
+ this._version = "";
47
+ this._userAgent = "";
48
+ this._connection = connection;
49
+ this.session = connection.rootSession;
50
+ this._ffPages = /* @__PURE__ */ new Map();
51
+ this._contexts = /* @__PURE__ */ new Map();
52
+ this._connection.on(import_ffConnection.ConnectionEvents.Disconnected, () => this._onDisconnect());
53
+ this.session.on("Browser.attachedToTarget", this._onAttachedToTarget.bind(this));
54
+ this.session.on("Browser.detachedFromTarget", this._onDetachedFromTarget.bind(this));
55
+ this.session.on("Browser.downloadCreated", this._onDownloadCreated.bind(this));
56
+ this.session.on("Browser.downloadFinished", this._onDownloadFinished.bind(this));
57
+ this.session.on("Browser.videoRecordingFinished", this._onVideoRecordingFinished.bind(this));
58
+ }
35
59
  static async connect(parent, transport, options) {
36
- var _options$originalLaun;
37
- const connection = new _ffConnection.FFConnection(transport, options.protocolLogger, options.browserLogsCollector);
60
+ const connection = new import_ffConnection.FFConnection(transport, options.protocolLogger, options.browserLogsCollector);
38
61
  const browser = new FFBrowser(parent, connection, options);
39
- if (options.__testHookOnConnectToBrowser) await options.__testHookOnConnectToBrowser();
40
- let firefoxUserPrefs = (_options$originalLaun = options.originalLaunchOptions.firefoxUserPrefs) !== null && _options$originalLaun !== void 0 ? _options$originalLaun : {};
41
- if (Object.keys(kBandaidFirefoxUserPrefs).length) firefoxUserPrefs = {
42
- ...kBandaidFirefoxUserPrefs,
43
- ...firefoxUserPrefs
44
- };
45
- const promises = [browser.session.send('Browser.enable', {
46
- attachToDefaultContext: !!options.persistent,
47
- userPrefs: Object.entries(firefoxUserPrefs).map(([name, value]) => ({
48
- name,
49
- value
50
- }))
51
- }), browser._initVersion()];
62
+ if (options.__testHookOnConnectToBrowser)
63
+ await options.__testHookOnConnectToBrowser();
64
+ let firefoxUserPrefs = options.originalLaunchOptions.firefoxUserPrefs ?? {};
65
+ if (Object.keys(kBandaidFirefoxUserPrefs).length)
66
+ firefoxUserPrefs = { ...kBandaidFirefoxUserPrefs, ...firefoxUserPrefs };
67
+ const promises = [
68
+ browser.session.send("Browser.enable", {
69
+ attachToDefaultContext: !!options.persistent,
70
+ userPrefs: Object.entries(firefoxUserPrefs).map(([name, value]) => ({ name, value }))
71
+ }),
72
+ browser._initVersion()
73
+ ];
52
74
  if (options.persistent) {
53
- browser._defaultContext = new FFBrowserContext(browser, undefined, options.persistent);
75
+ browser._defaultContext = new FFBrowserContext(browser, void 0, options.persistent);
54
76
  promises.push(browser._defaultContext._initialize());
55
77
  }
56
78
  const proxy = options.originalLaunchOptions.proxyOverride || options.proxy;
57
- if (proxy) promises.push(browser.session.send('Browser.setBrowserProxy', toJugglerProxyOptions(proxy)));
79
+ if (proxy)
80
+ promises.push(browser.session.send("Browser.setBrowserProxy", toJugglerProxyOptions(proxy)));
58
81
  await Promise.all(promises);
59
82
  return browser;
60
83
  }
61
- constructor(parent, connection, options) {
62
- super(parent, options);
63
- this._connection = void 0;
64
- this.session = void 0;
65
- this._ffPages = void 0;
66
- this._contexts = void 0;
67
- this._version = '';
68
- this._userAgent = '';
69
- this._connection = connection;
70
- this.session = connection.rootSession;
71
- this._ffPages = new Map();
72
- this._contexts = new Map();
73
- this._connection.on(_ffConnection.ConnectionEvents.Disconnected, () => this._onDisconnect());
74
- this.session.on('Browser.attachedToTarget', this._onAttachedToTarget.bind(this));
75
- this.session.on('Browser.detachedFromTarget', this._onDetachedFromTarget.bind(this));
76
- this.session.on('Browser.downloadCreated', this._onDownloadCreated.bind(this));
77
- this.session.on('Browser.downloadFinished', this._onDownloadFinished.bind(this));
78
- this.session.on('Browser.videoRecordingFinished', this._onVideoRecordingFinished.bind(this));
79
- }
80
84
  async _initVersion() {
81
- const result = await this.session.send('Browser.getInfo');
82
- this._version = result.version.substring(result.version.indexOf('/') + 1);
85
+ const result = await this.session.send("Browser.getInfo");
86
+ this._version = result.version.substring(result.version.indexOf("/") + 1);
83
87
  this._userAgent = result.userAgent;
84
88
  }
85
89
  isConnected() {
86
90
  return !this._connection._closed;
87
91
  }
88
92
  async doCreateNewContext(options) {
89
- if (options.isMobile) throw new Error('options.isMobile is not supported in Firefox');
90
- const {
91
- browserContextId
92
- } = await this.session.send('Browser.createBrowserContext', {
93
- removeOnDetach: true
94
- });
93
+ if (options.isMobile)
94
+ throw new Error("options.isMobile is not supported in Firefox");
95
+ const { browserContextId } = await this.session.send("Browser.createBrowserContext", { removeOnDetach: true });
95
96
  const context = new FFBrowserContext(this, browserContextId, options);
96
97
  await context._initialize();
97
98
  this._contexts.set(browserContextId, context);
@@ -112,147 +113,124 @@ class FFBrowser extends _browser.Browser {
112
113
  ffPage.didClose();
113
114
  }
114
115
  _onAttachedToTarget(payload) {
115
- const {
116
- targetId,
117
- browserContextId,
118
- openerId,
119
- type
120
- } = payload.targetInfo;
121
- (0, _utils.assert)(type === 'page');
116
+ const { targetId, browserContextId, openerId, type } = payload.targetInfo;
117
+ (0, import_utils.assert)(type === "page");
122
118
  const context = browserContextId ? this._contexts.get(browserContextId) : this._defaultContext;
123
- (0, _utils.assert)(context, `Unknown context id:${browserContextId}, _defaultContext: ${this._defaultContext}`);
119
+ (0, import_utils.assert)(context, `Unknown context id:${browserContextId}, _defaultContext: ${this._defaultContext}`);
124
120
  const session = this._connection.createSession(payload.sessionId);
125
121
  const opener = openerId ? this._ffPages.get(openerId) : null;
126
- const ffPage = new _ffPage.FFPage(session, context, opener);
122
+ const ffPage = new import_ffPage.FFPage(session, context, opener);
127
123
  this._ffPages.set(targetId, ffPage);
128
124
  }
129
125
  _onDownloadCreated(payload) {
130
126
  const ffPage = this._ffPages.get(payload.pageTargetId);
131
- if (!ffPage) return;
132
-
133
- // Abort the navigation that turned into download.
134
- ffPage._page._frameManager.frameAbortedNavigation(payload.frameId, 'Download is starting');
127
+ if (!ffPage)
128
+ return;
129
+ ffPage._page._frameManager.frameAbortedNavigation(payload.frameId, "Download is starting");
135
130
  let originPage = ffPage._page.initializedOrUndefined();
136
- // If it's a new window download, report it on the opener page.
137
131
  if (!originPage) {
138
- // Resume the page creation with an error. The page will automatically close right
139
- // after the download begins.
140
- ffPage._markAsError(new Error('Starting new page download'));
141
- if (ffPage._opener) originPage = ffPage._opener._page.initializedOrUndefined();
132
+ ffPage._markAsError(new Error("Starting new page download"));
133
+ if (ffPage._opener)
134
+ originPage = ffPage._opener._page.initializedOrUndefined();
142
135
  }
143
- if (!originPage) return;
136
+ if (!originPage)
137
+ return;
144
138
  this._downloadCreated(originPage, payload.uuid, payload.url, payload.suggestedFileName);
145
139
  }
146
140
  _onDownloadFinished(payload) {
147
- const error = payload.canceled ? 'canceled' : payload.error;
141
+ const error = payload.canceled ? "canceled" : payload.error;
148
142
  this._downloadFinished(payload.uuid, error);
149
143
  }
150
144
  _onVideoRecordingFinished(payload) {
151
- var _this$_takeVideo;
152
- (_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0 || _this$_takeVideo.reportFinished();
145
+ this._takeVideo(payload.screencastId)?.reportFinished();
153
146
  }
154
147
  _onDisconnect() {
155
- for (const video of this._idToVideo.values()) video.artifact.reportFinished(new _errors.TargetClosedError());
148
+ for (const video of this._idToVideo.values())
149
+ video.artifact.reportFinished(new import_errors.TargetClosedError());
156
150
  this._idToVideo.clear();
157
- for (const ffPage of this._ffPages.values()) ffPage.didClose();
151
+ for (const ffPage of this._ffPages.values())
152
+ ffPage.didClose();
158
153
  this._ffPages.clear();
159
154
  this._didClose();
160
155
  }
161
156
  }
162
- exports.FFBrowser = FFBrowser;
163
- class FFBrowserContext extends _browserContext.BrowserContext {
157
+ class FFBrowserContext extends import_browserContext.BrowserContext {
164
158
  constructor(browser, browserContextId, options) {
165
159
  super(browser, options, browserContextId);
166
160
  }
167
161
  async _initialize() {
168
- (0, _utils.assert)(!this._ffPages().length);
162
+ (0, import_utils.assert)(!this._ffPages().length);
169
163
  const browserContextId = this._browserContextId;
170
- const promises = [super._initialize(), this._browser.session.send('Browser.addBinding', {
171
- browserContextId: this._browserContextId,
172
- name: _page.PageBinding.kPlaywrightBinding,
173
- script: ''
174
- })];
175
- if (this._options.acceptDownloads !== 'internal-browser-default') {
176
- promises.push(this._browser.session.send('Browser.setDownloadOptions', {
164
+ const promises = [
165
+ super._initialize(),
166
+ this._browser.session.send("Browser.addBinding", { browserContextId: this._browserContextId, name: import_page.PageBinding.kPlaywrightBinding, script: "" }),
167
+ this._updateInitScripts()
168
+ ];
169
+ if (this._options.acceptDownloads !== "internal-browser-default") {
170
+ promises.push(this._browser.session.send("Browser.setDownloadOptions", {
177
171
  browserContextId,
178
172
  downloadOptions: {
179
- behavior: this._options.acceptDownloads === 'accept' ? 'saveToDisk' : 'cancel',
173
+ behavior: this._options.acceptDownloads === "accept" ? "saveToDisk" : "cancel",
180
174
  downloadsDir: this._browser.options.downloadsPath
181
175
  }
182
176
  }));
183
177
  }
184
178
  if (this._options.viewport) {
185
179
  const viewport = {
186
- viewportSize: {
187
- width: this._options.viewport.width,
188
- height: this._options.viewport.height
189
- },
180
+ viewportSize: { width: this._options.viewport.width, height: this._options.viewport.height },
190
181
  deviceScaleFactor: this._options.deviceScaleFactor || 1
191
182
  };
192
- promises.push(this._browser.session.send('Browser.setDefaultViewport', {
193
- browserContextId,
194
- viewport
195
- }));
183
+ promises.push(this._browser.session.send("Browser.setDefaultViewport", { browserContextId, viewport }));
196
184
  }
197
- if (this._options.hasTouch) promises.push(this._browser.session.send('Browser.setTouchOverride', {
198
- browserContextId,
199
- hasTouch: true
200
- }));
201
- if (this._options.userAgent) promises.push(this._browser.session.send('Browser.setUserAgentOverride', {
202
- browserContextId,
203
- userAgent: this._options.userAgent
204
- }));
205
- if (this._options.bypassCSP) promises.push(this._browser.session.send('Browser.setBypassCSP', {
206
- browserContextId,
207
- bypassCSP: true
208
- }));
209
- if (this._options.ignoreHTTPSErrors || this._options.internalIgnoreHTTPSErrors) promises.push(this._browser.session.send('Browser.setIgnoreHTTPSErrors', {
210
- browserContextId,
211
- ignoreHTTPSErrors: true
212
- }));
213
- if (this._options.javaScriptEnabled === false) promises.push(this._browser.session.send('Browser.setJavaScriptDisabled', {
214
- browserContextId,
215
- javaScriptDisabled: true
216
- }));
217
- if (this._options.locale) promises.push(this._browser.session.send('Browser.setLocaleOverride', {
218
- browserContextId,
219
- locale: this._options.locale
220
- }));
221
- if (this._options.timezoneId) promises.push(this._browser.session.send('Browser.setTimezoneOverride', {
222
- browserContextId,
223
- timezoneId: this._options.timezoneId
224
- }));
225
- if (this._options.extraHTTPHeaders || this._options.locale) promises.push(this.setExtraHTTPHeaders(this._options.extraHTTPHeaders || []));
226
- if (this._options.httpCredentials) promises.push(this.setHTTPCredentials(this._options.httpCredentials));
227
- if (this._options.geolocation) promises.push(this.setGeolocation(this._options.geolocation));
228
- if (this._options.offline) promises.push(this.setOffline(this._options.offline));
229
- if (this._options.colorScheme !== 'no-override') {
230
- promises.push(this._browser.session.send('Browser.setColorScheme', {
185
+ if (this._options.hasTouch)
186
+ promises.push(this._browser.session.send("Browser.setTouchOverride", { browserContextId, hasTouch: true }));
187
+ if (this._options.userAgent)
188
+ promises.push(this._browser.session.send("Browser.setUserAgentOverride", { browserContextId, userAgent: this._options.userAgent }));
189
+ if (this._options.bypassCSP)
190
+ promises.push(this._browser.session.send("Browser.setBypassCSP", { browserContextId, bypassCSP: true }));
191
+ if (this._options.ignoreHTTPSErrors || this._options.internalIgnoreHTTPSErrors)
192
+ promises.push(this._browser.session.send("Browser.setIgnoreHTTPSErrors", { browserContextId, ignoreHTTPSErrors: true }));
193
+ if (this._options.javaScriptEnabled === false)
194
+ promises.push(this._browser.session.send("Browser.setJavaScriptDisabled", { browserContextId, javaScriptDisabled: true }));
195
+ if (this._options.locale)
196
+ promises.push(this._browser.session.send("Browser.setLocaleOverride", { browserContextId, locale: this._options.locale }));
197
+ if (this._options.timezoneId)
198
+ promises.push(this._browser.session.send("Browser.setTimezoneOverride", { browserContextId, timezoneId: this._options.timezoneId }));
199
+ if (this._options.extraHTTPHeaders || this._options.locale)
200
+ promises.push(this.setExtraHTTPHeaders(this._options.extraHTTPHeaders || []));
201
+ if (this._options.httpCredentials)
202
+ promises.push(this.setHTTPCredentials(this._options.httpCredentials));
203
+ if (this._options.geolocation)
204
+ promises.push(this.setGeolocation(this._options.geolocation));
205
+ if (this._options.offline)
206
+ promises.push(this.setOffline(this._options.offline));
207
+ if (this._options.colorScheme !== "no-override") {
208
+ promises.push(this._browser.session.send("Browser.setColorScheme", {
231
209
  browserContextId,
232
- colorScheme: this._options.colorScheme !== undefined ? this._options.colorScheme : 'light'
210
+ colorScheme: this._options.colorScheme !== void 0 ? this._options.colorScheme : "light"
233
211
  }));
234
212
  }
235
- if (this._options.reducedMotion !== 'no-override') {
236
- promises.push(this._browser.session.send('Browser.setReducedMotion', {
213
+ if (this._options.reducedMotion !== "no-override") {
214
+ promises.push(this._browser.session.send("Browser.setReducedMotion", {
237
215
  browserContextId,
238
- reducedMotion: this._options.reducedMotion !== undefined ? this._options.reducedMotion : 'no-preference'
216
+ reducedMotion: this._options.reducedMotion !== void 0 ? this._options.reducedMotion : "no-preference"
239
217
  }));
240
218
  }
241
- if (this._options.forcedColors !== 'no-override') {
242
- promises.push(this._browser.session.send('Browser.setForcedColors', {
219
+ if (this._options.forcedColors !== "no-override") {
220
+ promises.push(this._browser.session.send("Browser.setForcedColors", {
243
221
  browserContextId,
244
- forcedColors: this._options.forcedColors !== undefined ? this._options.forcedColors : 'none'
222
+ forcedColors: this._options.forcedColors !== void 0 ? this._options.forcedColors : "none"
245
223
  }));
246
224
  }
247
- if (this._options.contrast !== 'no-override') {
248
- promises.push(this._browser.session.send('Browser.setContrast', {
225
+ if (this._options.contrast !== "no-override") {
226
+ promises.push(this._browser.session.send("Browser.setContrast", {
249
227
  browserContextId,
250
- contrast: this._options.contrast !== undefined ? this._options.contrast : 'no-preference'
228
+ contrast: this._options.contrast !== void 0 ? this._options.contrast : "no-preference"
251
229
  }));
252
230
  }
253
231
  if (this._options.recordVideo) {
254
232
  promises.push(this._ensureVideosPath().then(() => {
255
- return this._browser.session.send('Browser.setVideoRecordingOptions', {
233
+ return this._browser.session.send("Browser.setVideoRecordingOptions", {
256
234
  // validateBrowserContextOptions ensures correct video size.
257
235
  options: {
258
236
  ...this._options.recordVideo.size,
@@ -264,7 +242,7 @@ class FFBrowserContext extends _browserContext.BrowserContext {
264
242
  }
265
243
  const proxy = this._options.proxyOverride || this._options.proxy;
266
244
  if (proxy) {
267
- promises.push(this._browser.session.send('Browser.setContextProxy', {
245
+ promises.push(this._browser.session.send("Browser.setContextProxy", {
268
246
  browserContextId: this._browserContextId,
269
247
  ...toJugglerProxyOptions(proxy)
270
248
  }));
@@ -272,120 +250,86 @@ class FFBrowserContext extends _browserContext.BrowserContext {
272
250
  await Promise.all(promises);
273
251
  }
274
252
  _ffPages() {
275
- return Array.from(this._browser._ffPages.values()).filter(ffPage => ffPage._browserContext === this);
253
+ return Array.from(this._browser._ffPages.values()).filter((ffPage) => ffPage._browserContext === this);
276
254
  }
277
255
  possiblyUninitializedPages() {
278
- return this._ffPages().map(ffPage => ffPage._page);
256
+ return this._ffPages().map((ffPage) => ffPage._page);
279
257
  }
280
258
  async doCreateNewPage() {
281
- (0, _browserContext.assertBrowserContextIsNotOwned)(this);
282
- const {
283
- targetId
284
- } = await this._browser.session.send('Browser.newPage', {
259
+ (0, import_browserContext.assertBrowserContextIsNotOwned)(this);
260
+ const { targetId } = await this._browser.session.send("Browser.newPage", {
285
261
  browserContextId: this._browserContextId
286
- }).catch(e => {
287
- if (e.message.includes('Failed to override timezone')) throw new Error(`Invalid timezone ID: ${this._options.timezoneId}`);
262
+ }).catch((e) => {
263
+ if (e.message.includes("Failed to override timezone"))
264
+ throw new Error(`Invalid timezone ID: ${this._options.timezoneId}`);
288
265
  throw e;
289
266
  });
290
267
  return this._browser._ffPages.get(targetId)._page;
291
268
  }
292
269
  async doGetCookies(urls) {
293
- const {
294
- cookies
295
- } = await this._browser.session.send('Browser.getCookies', {
296
- browserContextId: this._browserContextId
297
- });
298
- return network.filterCookies(cookies.map(c => {
299
- const copy = {
300
- ...c
301
- };
270
+ const { cookies } = await this._browser.session.send("Browser.getCookies", { browserContextId: this._browserContextId });
271
+ return network.filterCookies(cookies.map((c) => {
272
+ const copy = { ...c };
302
273
  delete copy.size;
303
274
  delete copy.session;
304
275
  return copy;
305
276
  }), urls);
306
277
  }
307
278
  async addCookies(cookies) {
308
- const cc = network.rewriteCookies(cookies).map(c => ({
279
+ const cc = network.rewriteCookies(cookies).map((c) => ({
309
280
  ...c,
310
- expires: c.expires === -1 ? undefined : c.expires
281
+ expires: c.expires === -1 ? void 0 : c.expires
311
282
  }));
312
- await this._browser.session.send('Browser.setCookies', {
313
- browserContextId: this._browserContextId,
314
- cookies: cc
315
- });
283
+ await this._browser.session.send("Browser.setCookies", { browserContextId: this._browserContextId, cookies: cc });
316
284
  }
317
285
  async doClearCookies() {
318
- await this._browser.session.send('Browser.clearCookies', {
319
- browserContextId: this._browserContextId
320
- });
286
+ await this._browser.session.send("Browser.clearCookies", { browserContextId: this._browserContextId });
321
287
  }
322
288
  async doGrantPermissions(origin, permissions) {
323
- const webPermissionToProtocol = new Map([['geolocation', 'geo'], ['persistent-storage', 'persistent-storage'], ['push', 'push'], ['notifications', 'desktop-notification']]);
324
- const filtered = permissions.map(permission => {
289
+ const webPermissionToProtocol = /* @__PURE__ */ new Map([
290
+ ["geolocation", "geo"],
291
+ ["persistent-storage", "persistent-storage"],
292
+ ["push", "push"],
293
+ ["notifications", "desktop-notification"]
294
+ ]);
295
+ const filtered = permissions.map((permission) => {
325
296
  const protocolPermission = webPermissionToProtocol.get(permission);
326
- if (!protocolPermission) throw new Error('Unknown permission: ' + permission);
297
+ if (!protocolPermission)
298
+ throw new Error("Unknown permission: " + permission);
327
299
  return protocolPermission;
328
300
  });
329
- await this._browser.session.send('Browser.grantPermissions', {
330
- origin: origin,
331
- browserContextId: this._browserContextId,
332
- permissions: filtered
333
- });
301
+ await this._browser.session.send("Browser.grantPermissions", { origin, browserContextId: this._browserContextId, permissions: filtered });
334
302
  }
335
303
  async doClearPermissions() {
336
- await this._browser.session.send('Browser.resetPermissions', {
337
- browserContextId: this._browserContextId
338
- });
304
+ await this._browser.session.send("Browser.resetPermissions", { browserContextId: this._browserContextId });
339
305
  }
340
306
  async setGeolocation(geolocation) {
341
- (0, _browserContext.verifyGeolocation)(geolocation);
307
+ (0, import_browserContext.verifyGeolocation)(geolocation);
342
308
  this._options.geolocation = geolocation;
343
- await this._browser.session.send('Browser.setGeolocationOverride', {
344
- browserContextId: this._browserContextId,
345
- geolocation: geolocation || null
346
- });
309
+ await this._browser.session.send("Browser.setGeolocationOverride", { browserContextId: this._browserContextId, geolocation: geolocation || null });
347
310
  }
348
311
  async setExtraHTTPHeaders(headers) {
349
312
  this._options.extraHTTPHeaders = headers;
350
313
  let allHeaders = this._options.extraHTTPHeaders;
351
- if (this._options.locale) allHeaders = network.mergeHeaders([allHeaders, network.singleHeader('Accept-Language', this._options.locale)]);
352
- await this._browser.session.send('Browser.setExtraHTTPHeaders', {
353
- browserContextId: this._browserContextId,
354
- headers: allHeaders
355
- });
314
+ if (this._options.locale)
315
+ allHeaders = network.mergeHeaders([allHeaders, network.singleHeader("Accept-Language", this._options.locale)]);
316
+ await this._browser.session.send("Browser.setExtraHTTPHeaders", { browserContextId: this._browserContextId, headers: allHeaders });
356
317
  }
357
318
  async setUserAgent(userAgent) {
358
- await this._browser.session.send('Browser.setUserAgentOverride', {
359
- browserContextId: this._browserContextId,
360
- userAgent: userAgent || null
361
- });
319
+ await this._browser.session.send("Browser.setUserAgentOverride", { browserContextId: this._browserContextId, userAgent: userAgent || null });
362
320
  }
363
321
  async setOffline(offline) {
364
322
  this._options.offline = offline;
365
- await this._browser.session.send('Browser.setOnlineOverride', {
366
- browserContextId: this._browserContextId,
367
- override: offline ? 'offline' : 'online'
368
- });
323
+ await this._browser.session.send("Browser.setOnlineOverride", { browserContextId: this._browserContextId, override: offline ? "offline" : "online" });
369
324
  }
370
325
  async doSetHTTPCredentials(httpCredentials) {
371
326
  this._options.httpCredentials = httpCredentials;
372
327
  let credentials = null;
373
328
  if (httpCredentials) {
374
- const {
375
- username,
376
- password,
377
- origin
378
- } = httpCredentials;
379
- credentials = {
380
- username,
381
- password,
382
- origin
383
- };
329
+ const { username, password, origin } = httpCredentials;
330
+ credentials = { username, password, origin };
384
331
  }
385
- await this._browser.session.send('Browser.setHTTPCredentials', {
386
- browserContextId: this._browserContextId,
387
- credentials
388
- });
332
+ await this._browser.session.send("Browser.setHTTPCredentials", { browserContextId: this._browserContextId, credentials });
389
333
  }
390
334
  async doAddInitScript(initScript) {
391
335
  await this._updateInitScripts();
@@ -394,75 +338,67 @@ class FFBrowserContext extends _browserContext.BrowserContext {
394
338
  await this._updateInitScripts();
395
339
  }
396
340
  async _updateInitScripts() {
397
- const bindingScripts = [...this._pageBindings.values()].map(binding => binding.initScript.source);
398
- const initScripts = this.initScripts.map(script => script.source);
399
- await this._browser.session.send('Browser.setInitScripts', {
400
- browserContextId: this._browserContextId,
401
- scripts: [...bindingScripts, ...initScripts].map(script => ({
402
- script
403
- }))
404
- });
341
+ const bindingScripts = [...this._pageBindings.values()].map((binding) => binding.initScript.source);
342
+ const initScripts = this.initScripts.map((script) => script.source);
343
+ await this._browser.session.send("Browser.setInitScripts", { browserContextId: this._browserContextId, scripts: [import_page.kBuiltinsScript.source, ...bindingScripts, ...initScripts].map((script) => ({ script })) });
405
344
  }
406
345
  async doUpdateRequestInterception() {
407
- await Promise.all([this._browser.session.send('Browser.setRequestInterception', {
408
- browserContextId: this._browserContextId,
409
- enabled: !!this._requestInterceptor
410
- }), this._browser.session.send('Browser.setCacheDisabled', {
411
- browserContextId: this._browserContextId,
412
- cacheDisabled: !!this._requestInterceptor
413
- })]);
414
- }
415
- onClosePersistent() {}
346
+ await Promise.all([
347
+ this._browser.session.send("Browser.setRequestInterception", { browserContextId: this._browserContextId, enabled: !!this._requestInterceptor }),
348
+ this._browser.session.send("Browser.setCacheDisabled", { browserContextId: this._browserContextId, cacheDisabled: !!this._requestInterceptor })
349
+ ]);
350
+ }
351
+ onClosePersistent() {
352
+ }
416
353
  async clearCache() {
417
- // Clearing only the context cache does not work: https://bugzilla.mozilla.org/show_bug.cgi?id=1819147
418
- await this._browser.session.send('Browser.clearCache');
354
+ await this._browser.session.send("Browser.clearCache");
419
355
  }
420
356
  async doClose(reason) {
421
357
  if (!this._browserContextId) {
422
358
  if (this._options.recordVideo) {
423
- await this._browser.session.send('Browser.setVideoRecordingOptions', {
424
- options: undefined,
359
+ await this._browser.session.send("Browser.setVideoRecordingOptions", {
360
+ options: void 0,
425
361
  browserContextId: this._browserContextId
426
362
  });
427
363
  }
428
- // Closing persistent context should close the browser.
429
- await this._browser.close({
430
- reason
431
- });
364
+ await this._browser.close({ reason });
432
365
  } else {
433
- await this._browser.session.send('Browser.removeBrowserContext', {
434
- browserContextId: this._browserContextId
435
- });
366
+ await this._browser.session.send("Browser.removeBrowserContext", { browserContextId: this._browserContextId });
436
367
  this._browser._contexts.delete(this._browserContextId);
437
368
  }
438
369
  }
439
370
  async cancelDownload(uuid) {
440
- await this._browser.session.send('Browser.cancelDownload', {
441
- uuid
442
- });
371
+ await this._browser.session.send("Browser.cancelDownload", { uuid });
443
372
  }
444
373
  }
445
- exports.FFBrowserContext = FFBrowserContext;
446
374
  function toJugglerProxyOptions(proxy) {
447
375
  const proxyServer = new URL(proxy.server);
448
376
  let port = parseInt(proxyServer.port, 10);
449
- let type = 'http';
450
- if (proxyServer.protocol === 'socks5:') type = 'socks';else if (proxyServer.protocol === 'socks4:') type = 'socks4';else if (proxyServer.protocol === 'https:') type = 'https';
451
- if (proxyServer.port === '') {
452
- if (proxyServer.protocol === 'http:') port = 80;else if (proxyServer.protocol === 'https:') port = 443;
377
+ let type = "http";
378
+ if (proxyServer.protocol === "socks5:")
379
+ type = "socks";
380
+ else if (proxyServer.protocol === "socks4:")
381
+ type = "socks4";
382
+ else if (proxyServer.protocol === "https:")
383
+ type = "https";
384
+ if (proxyServer.port === "") {
385
+ if (proxyServer.protocol === "http:")
386
+ port = 80;
387
+ else if (proxyServer.protocol === "https:")
388
+ port = 443;
453
389
  }
454
390
  return {
455
391
  type,
456
- bypass: proxy.bypass ? proxy.bypass.split(',').map(domain => domain.trim()) : [],
392
+ bypass: proxy.bypass ? proxy.bypass.split(",").map((domain) => domain.trim()) : [],
457
393
  host: proxyServer.hostname,
458
394
  port,
459
395
  username: proxy.username,
460
396
  password: proxy.password
461
397
  };
462
398
  }
463
-
464
- // Prefs for quick fixes that didn't make it to the build.
465
- // Should all be moved to `playwright.cfg`.
466
- const kBandaidFirefoxUserPrefs = {
467
- 'dom.fetchKeepalive.enabled': false
468
- };
399
+ const kBandaidFirefoxUserPrefs = {};
400
+ // Annotate the CommonJS export names for ESM import in node:
401
+ 0 && (module.exports = {
402
+ FFBrowser,
403
+ FFBrowserContext
404
+ });