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,67 +1,90 @@
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 bidiBrowser_exports = {};
30
+ __export(bidiBrowser_exports, {
31
+ BidiBrowser: () => BidiBrowser,
32
+ BidiBrowserContext: () => BidiBrowserContext,
33
+ Network: () => Network
5
34
  });
6
- exports.Network = exports.BidiBrowserContext = exports.BidiBrowser = void 0;
7
- var _eventsHelper = require("../utils/eventsHelper");
8
- var _browser = require("../browser");
9
- var _browserContext = require("../browserContext");
10
- var network = _interopRequireWildcard(require("../network"));
11
- var _bidiConnection = require("./bidiConnection");
12
- var _bidiNetworkManager = require("./bidiNetworkManager");
13
- var _bidiPage = require("./bidiPage");
14
- var bidi = _interopRequireWildcard(require("./third_party/bidiProtocol"));
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 (c) Microsoft Corporation.
19
- *
20
- * Licensed under the Apache License, Version 2.0 (the 'License');
21
- * you may not use this file except in compliance with the License.
22
- * You may obtain a copy of the License at
23
- *
24
- * http://www.apache.org/licenses/LICENSE-2.0
25
- *
26
- * Unless required by applicable law or agreed to in writing, software
27
- * distributed under the License is distributed on an 'AS IS' BASIS,
28
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
- * See the License for the specific language governing permissions and
30
- * limitations under the License.
31
- */
32
-
33
- class BidiBrowser extends _browser.Browser {
35
+ module.exports = __toCommonJS(bidiBrowser_exports);
36
+ var import_eventsHelper = require("../utils/eventsHelper");
37
+ var import_browser = require("../browser");
38
+ var import_browserContext = require("../browserContext");
39
+ var network = __toESM(require("../network"));
40
+ var import_bidiConnection = require("./bidiConnection");
41
+ var import_bidiNetworkManager = require("./bidiNetworkManager");
42
+ var import_bidiPage = require("./bidiPage");
43
+ var bidi = __toESM(require("./third_party/bidiProtocol"));
44
+ class BidiBrowser extends import_browser.Browser {
45
+ constructor(parent, transport, options) {
46
+ super(parent, options);
47
+ this._contexts = /* @__PURE__ */ new Map();
48
+ this._bidiPages = /* @__PURE__ */ new Map();
49
+ this._connection = new import_bidiConnection.BidiConnection(transport, this._onDisconnect.bind(this), options.protocolLogger, options.browserLogsCollector);
50
+ this._browserSession = this._connection.browserSession;
51
+ this._eventListeners = [
52
+ import_eventsHelper.eventsHelper.addEventListener(this._browserSession, "browsingContext.contextCreated", this._onBrowsingContextCreated.bind(this)),
53
+ import_eventsHelper.eventsHelper.addEventListener(this._browserSession, "script.realmDestroyed", this._onScriptRealmDestroyed.bind(this))
54
+ ];
55
+ }
34
56
  static async connect(parent, transport, options) {
35
57
  const browser = new BidiBrowser(parent, transport, options);
36
- if (options.__testHookOnConnectToBrowser) await options.__testHookOnConnectToBrowser();
58
+ if (options.__testHookOnConnectToBrowser)
59
+ await options.__testHookOnConnectToBrowser();
37
60
  let proxy;
38
61
  if (options.proxy) {
39
62
  proxy = {
40
- proxyType: 'manual'
63
+ proxyType: "manual"
41
64
  };
42
- const url = new URL(options.proxy.server); // Validate proxy server.
65
+ const url = new URL(options.proxy.server);
43
66
  switch (url.protocol) {
44
- case 'http:':
67
+ case "http:":
45
68
  proxy.httpProxy = url.host;
46
69
  break;
47
- case 'https:':
70
+ case "https:":
48
71
  proxy.httpsProxy = url.host;
49
72
  break;
50
- case 'socks4:':
73
+ case "socks4:":
51
74
  proxy.socksProxy = url.host;
52
75
  proxy.socksVersion = 4;
53
76
  break;
54
- case 'socks5:':
77
+ case "socks5:":
55
78
  proxy.socksProxy = url.host;
56
79
  proxy.socksVersion = 5;
57
80
  break;
58
81
  default:
59
- throw new Error('Invalid proxy server protocol: ' + options.proxy.server);
82
+ throw new Error("Invalid proxy server protocol: " + options.proxy.server);
60
83
  }
61
- if (options.proxy.bypass) proxy.noProxy = options.proxy.bypass.split(',');
62
- // TODO: support authentication.
84
+ if (options.proxy.bypass)
85
+ proxy.noProxy = options.proxy.bypass.split(",");
63
86
  }
64
- browser._bidiSessionInfo = await browser._browserSession.send('session.new', {
87
+ browser._bidiSessionInfo = await browser._browserSession.send("session.new", {
65
88
  capabilities: {
66
89
  alwaysMatch: {
67
90
  acceptInsecureCerts: false,
@@ -73,37 +96,28 @@ class BidiBrowser extends _browser.Browser {
73
96
  }
74
97
  }
75
98
  });
76
- await browser._browserSession.send('session.subscribe', {
77
- events: ['browsingContext', 'network', 'log', 'script']
99
+ await browser._browserSession.send("session.subscribe", {
100
+ events: [
101
+ "browsingContext",
102
+ "network",
103
+ "log",
104
+ "script"
105
+ ]
78
106
  });
79
107
  if (options.persistent) {
80
- browser._defaultContext = new BidiBrowserContext(browser, undefined, options.persistent);
81
- await browser._defaultContext._initialize();
82
- // Create default page as we cannot get access to the existing one.
108
+ const context = new BidiBrowserContext(browser, void 0, options.persistent);
109
+ browser._defaultContext = context;
110
+ await context._initialize();
83
111
  const page = await browser._defaultContext.doCreateNewPage();
84
112
  await page.waitForInitializedOrError();
85
113
  }
86
114
  return browser;
87
115
  }
88
- constructor(parent, transport, options) {
89
- super(parent, options);
90
- this._connection = void 0;
91
- this._browserSession = void 0;
92
- this._bidiSessionInfo = void 0;
93
- this._contexts = new Map();
94
- this._bidiPages = new Map();
95
- this._eventListeners = void 0;
96
- this._connection = new _bidiConnection.BidiConnection(transport, this._onDisconnect.bind(this), options.protocolLogger, options.browserLogsCollector);
97
- this._browserSession = this._connection.browserSession;
98
- this._eventListeners = [_eventsHelper.eventsHelper.addEventListener(this._browserSession, 'browsingContext.contextCreated', this._onBrowsingContextCreated.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._browserSession, 'script.realmDestroyed', this._onScriptRealmDestroyed.bind(this))];
99
- }
100
116
  _onDisconnect() {
101
117
  this._didClose();
102
118
  }
103
119
  async doCreateNewContext(options) {
104
- const {
105
- userContext
106
- } = await this._browserSession.send('browser.createUserContext', {});
120
+ const { userContext } = await this._browserSession.send("browser.createUserContext", {});
107
121
  const context = new BidiBrowserContext(this, userContext, options);
108
122
  await context._initialize();
109
123
  this._contexts.set(userContext, context);
@@ -124,23 +138,27 @@ class BidiBrowser extends _browser.Browser {
124
138
  _onBrowsingContextCreated(event) {
125
139
  if (event.parent) {
126
140
  const parentFrameId = event.parent;
127
- for (const page of this._bidiPages.values()) {
128
- const parentFrame = page._page._frameManager.frame(parentFrameId);
129
- if (!parentFrame) continue;
130
- page._session.addFrameBrowsingContext(event.context);
131
- page._page._frameManager.frameAttached(event.context, parentFrameId);
132
- const frame = page._page._frameManager.frame(event.context);
133
- if (frame) frame._url = event.url;
141
+ for (const page2 of this._bidiPages.values()) {
142
+ const parentFrame = page2._page._frameManager.frame(parentFrameId);
143
+ if (!parentFrame)
144
+ continue;
145
+ page2._session.addFrameBrowsingContext(event.context);
146
+ page2._page._frameManager.frameAttached(event.context, parentFrameId);
147
+ const frame = page2._page._frameManager.frame(event.context);
148
+ if (frame)
149
+ frame._url = event.url;
134
150
  return;
135
151
  }
136
152
  return;
137
153
  }
138
154
  let context = this._contexts.get(event.userContext);
139
- if (!context) context = this._defaultContext;
140
- if (!context) return;
155
+ if (!context)
156
+ context = this._defaultContext;
157
+ if (!context)
158
+ return;
141
159
  const session = this._connection.createMainFrameBrowsingContextSession(event.context);
142
160
  const opener = event.originalOpener && this._bidiPages.get(event.originalOpener);
143
- const page = new _bidiPage.BidiPage(context, session, opener || null);
161
+ const page = new import_bidiPage.BidiPage(context, session, opener || null);
144
162
  page._page.mainFrame()._url = event.url;
145
163
  this._bidiPages.set(event.context, page);
146
164
  }
@@ -150,165 +168,213 @@ class BidiBrowser extends _browser.Browser {
150
168
  const parentFrameId = event.parent;
151
169
  for (const page of this._bidiPages.values()) {
152
170
  const parentFrame = page._page._frameManager.frame(parentFrameId);
153
- if (!parentFrame) continue;
171
+ if (!parentFrame)
172
+ continue;
154
173
  page._page._frameManager.frameDetached(event.context);
155
174
  return;
156
175
  }
157
176
  return;
158
177
  }
159
178
  const bidiPage = this._bidiPages.get(event.context);
160
- if (!bidiPage) return;
179
+ if (!bidiPage)
180
+ return;
161
181
  bidiPage.didClose();
162
182
  this._bidiPages.delete(event.context);
163
183
  }
164
184
  _onScriptRealmDestroyed(event) {
165
185
  for (const page of this._bidiPages.values()) {
166
- if (page._onRealmDestroyed(event)) return;
186
+ if (page._onRealmDestroyed(event))
187
+ return;
167
188
  }
168
189
  }
169
190
  }
170
- exports.BidiBrowser = BidiBrowser;
171
- class BidiBrowserContext extends _browserContext.BrowserContext {
191
+ class BidiBrowserContext extends import_browserContext.BrowserContext {
172
192
  constructor(browser, browserContextId, options) {
173
193
  super(browser, options, browserContextId);
194
+ this._initScriptIds = [];
174
195
  this._authenticateProxyViaHeader();
175
196
  }
176
197
  _bidiPages() {
177
- return [...this._browser._bidiPages.values()].filter(bidiPage => bidiPage._browserContext === this);
198
+ return [...this._browser._bidiPages.values()].filter((bidiPage) => bidiPage._browserContext === this);
199
+ }
200
+ async _initialize() {
201
+ const promises = [
202
+ super._initialize(),
203
+ this._installMainBinding()
204
+ ];
205
+ if (this._options.viewport) {
206
+ promises.push(this._browser._browserSession.send("browsingContext.setViewport", {
207
+ viewport: {
208
+ width: this._options.viewport.width,
209
+ height: this._options.viewport.height
210
+ },
211
+ devicePixelRatio: this._options.deviceScaleFactor || 1,
212
+ userContexts: [this._userContextId()]
213
+ }));
214
+ }
215
+ await Promise.all(promises);
216
+ }
217
+ // TODO: consider calling this only when bindings are added.
218
+ async _installMainBinding() {
219
+ const functionDeclaration = import_bidiPage.addMainBinding.toString();
220
+ const args = [{
221
+ type: "channel",
222
+ value: {
223
+ channel: import_bidiPage.kPlaywrightBindingChannel,
224
+ ownership: bidi.Script.ResultOwnership.Root
225
+ }
226
+ }];
227
+ await this._browser._browserSession.send("script.addPreloadScript", {
228
+ functionDeclaration,
229
+ arguments: args,
230
+ userContexts: [this._userContextId()]
231
+ });
178
232
  }
179
233
  possiblyUninitializedPages() {
180
- return this._bidiPages().map(bidiPage => bidiPage._page);
234
+ return this._bidiPages().map((bidiPage) => bidiPage._page);
181
235
  }
182
236
  async doCreateNewPage() {
183
- (0, _browserContext.assertBrowserContextIsNotOwned)(this);
184
- const {
185
- context
186
- } = await this._browser._browserSession.send('browsingContext.create', {
237
+ (0, import_browserContext.assertBrowserContextIsNotOwned)(this);
238
+ const { context } = await this._browser._browserSession.send("browsingContext.create", {
187
239
  type: bidi.BrowsingContext.CreateType.Window,
188
240
  userContext: this._browserContextId
189
241
  });
190
242
  return this._browser._bidiPages.get(context)._page;
191
243
  }
192
244
  async doGetCookies(urls) {
193
- const {
194
- cookies
195
- } = await this._browser._browserSession.send('storage.getCookies', {
196
- partition: {
197
- type: 'storageKey',
198
- userContext: this._browserContextId
199
- }
200
- });
201
- return network.filterCookies(cookies.map(c => {
202
- var _c$expiry;
245
+ const { cookies } = await this._browser._browserSession.send(
246
+ "storage.getCookies",
247
+ { partition: { type: "storageKey", userContext: this._browserContextId } }
248
+ );
249
+ return network.filterCookies(cookies.map((c) => {
203
250
  const copy = {
204
251
  name: c.name,
205
- value: (0, _bidiNetworkManager.bidiBytesValueToString)(c.value),
252
+ value: (0, import_bidiNetworkManager.bidiBytesValueToString)(c.value),
206
253
  domain: c.domain,
207
254
  path: c.path,
208
255
  httpOnly: c.httpOnly,
209
256
  secure: c.secure,
210
- expires: (_c$expiry = c.expiry) !== null && _c$expiry !== void 0 ? _c$expiry : -1,
211
- sameSite: c.sameSite ? fromBidiSameSite(c.sameSite) : 'None'
257
+ expires: c.expiry ?? -1,
258
+ sameSite: c.sameSite ? fromBidiSameSite(c.sameSite) : "None"
212
259
  };
213
260
  return copy;
214
261
  }), urls);
215
262
  }
216
263
  async addCookies(cookies) {
217
264
  cookies = network.rewriteCookies(cookies);
218
- const promises = cookies.map(c => {
265
+ const promises = cookies.map((c) => {
219
266
  const cookie = {
220
267
  name: c.name,
221
- value: {
222
- type: 'string',
223
- value: c.value
224
- },
268
+ value: { type: "string", value: c.value },
225
269
  domain: c.domain,
226
270
  path: c.path,
227
271
  httpOnly: c.httpOnly,
228
272
  secure: c.secure,
229
273
  sameSite: c.sameSite && toBidiSameSite(c.sameSite),
230
- expiry: c.expires === -1 || c.expires === undefined ? undefined : Math.round(c.expires)
274
+ expiry: c.expires === -1 || c.expires === void 0 ? void 0 : Math.round(c.expires)
231
275
  };
232
- return this._browser._browserSession.send('storage.setCookie', {
233
- cookie,
234
- partition: {
235
- type: 'storageKey',
236
- userContext: this._browserContextId
237
- }
238
- });
276
+ return this._browser._browserSession.send(
277
+ "storage.setCookie",
278
+ { cookie, partition: { type: "storageKey", userContext: this._browserContextId } }
279
+ );
239
280
  });
240
281
  await Promise.all(promises);
241
282
  }
242
283
  async doClearCookies() {
243
- await this._browser._browserSession.send('storage.deleteCookies', {
244
- partition: {
245
- type: 'storageKey',
246
- userContext: this._browserContextId
247
- }
248
- });
284
+ await this._browser._browserSession.send(
285
+ "storage.deleteCookies",
286
+ { partition: { type: "storageKey", userContext: this._browserContextId } }
287
+ );
288
+ }
289
+ async doGrantPermissions(origin, permissions) {
290
+ }
291
+ async doClearPermissions() {
292
+ }
293
+ async setGeolocation(geolocation) {
294
+ }
295
+ async setExtraHTTPHeaders(headers) {
296
+ }
297
+ async setUserAgent(userAgent) {
298
+ }
299
+ async setOffline(offline) {
249
300
  }
250
- async doGrantPermissions(origin, permissions) {}
251
- async doClearPermissions() {}
252
- async setGeolocation(geolocation) {}
253
- async setExtraHTTPHeaders(headers) {}
254
- async setUserAgent(userAgent) {}
255
- async setOffline(offline) {}
256
301
  async doSetHTTPCredentials(httpCredentials) {
257
302
  this._options.httpCredentials = httpCredentials;
258
- for (const page of this.pages()) await page._delegate.updateHttpCredentials();
303
+ for (const page of this.pages())
304
+ await page._delegate.updateHttpCredentials();
259
305
  }
260
306
  async doAddInitScript(initScript) {
261
- await Promise.all(this.pages().map(page => page._delegate.addInitScript(initScript)));
307
+ const { script } = await this._browser._browserSession.send("script.addPreloadScript", {
308
+ // TODO: remove function call from the source.
309
+ functionDeclaration: `() => { return ${initScript.source} }`,
310
+ userContexts: [this._browserContextId || "default"]
311
+ });
312
+ if (!initScript.internal)
313
+ this._initScriptIds.push(script);
314
+ }
315
+ async doRemoveNonInternalInitScripts() {
316
+ const promise = Promise.all(this._initScriptIds.map((script) => this._browser._browserSession.send("script.removePreloadScript", { script })));
317
+ this._initScriptIds = [];
318
+ await promise;
319
+ }
320
+ async doUpdateRequestInterception() {
321
+ }
322
+ onClosePersistent() {
323
+ }
324
+ async clearCache() {
262
325
  }
263
- async doRemoveNonInternalInitScripts() {}
264
- async doUpdateRequestInterception() {}
265
- onClosePersistent() {}
266
- async clearCache() {}
267
326
  async doClose(reason) {
268
327
  if (!this._browserContextId) {
269
- // Closing persistent context should close the browser.
270
- await this._browser.close({
271
- reason
272
- });
328
+ await this._browser.close({ reason });
273
329
  return;
274
330
  }
275
- await this._browser._browserSession.send('browser.removeUserContext', {
331
+ await this._browser._browserSession.send("browser.removeUserContext", {
276
332
  userContext: this._browserContextId
277
333
  });
278
334
  this._browser._contexts.delete(this._browserContextId);
279
335
  }
280
- async cancelDownload(uuid) {}
336
+ async cancelDownload(uuid) {
337
+ }
338
+ _userContextId() {
339
+ if (this._browserContextId)
340
+ return this._browserContextId;
341
+ return "default";
342
+ }
281
343
  }
282
- exports.BidiBrowserContext = BidiBrowserContext;
283
344
  function fromBidiSameSite(sameSite) {
284
345
  switch (sameSite) {
285
- case 'strict':
286
- return 'Strict';
287
- case 'lax':
288
- return 'Lax';
289
- case 'none':
290
- return 'None';
291
- }
292
- return 'None';
346
+ case "strict":
347
+ return "Strict";
348
+ case "lax":
349
+ return "Lax";
350
+ case "none":
351
+ return "None";
352
+ }
353
+ return "None";
293
354
  }
294
355
  function toBidiSameSite(sameSite) {
295
356
  switch (sameSite) {
296
- case 'Strict':
357
+ case "Strict":
297
358
  return bidi.Network.SameSite.Strict;
298
- case 'Lax':
359
+ case "Lax":
299
360
  return bidi.Network.SameSite.Lax;
300
- case 'None':
361
+ case "None":
301
362
  return bidi.Network.SameSite.None;
302
363
  }
303
364
  return bidi.Network.SameSite.None;
304
365
  }
305
- let Network = exports.Network = void 0;
306
- (function (_Network) {
307
- let SameSite = /*#__PURE__*/function (SameSite) {
308
- SameSite["Strict"] = "strict";
309
- SameSite["Lax"] = "lax";
310
- SameSite["None"] = "none";
311
- return SameSite;
312
- }({});
313
- _Network.SameSite = SameSite;
314
- })(Network || (exports.Network = Network = {}));
366
+ var Network;
367
+ ((Network2) => {
368
+ let SameSite;
369
+ ((SameSite2) => {
370
+ SameSite2["Strict"] = "strict";
371
+ SameSite2["Lax"] = "lax";
372
+ SameSite2["None"] = "none";
373
+ })(SameSite = Network2.SameSite || (Network2.SameSite = {}));
374
+ })(Network || (Network = {}));
375
+ // Annotate the CommonJS export names for ESM import in node:
376
+ 0 && (module.exports = {
377
+ BidiBrowser,
378
+ BidiBrowserContext,
379
+ Network
380
+ });