patchright-core 1.48.2

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 (333) hide show
  1. package/README.md +3 -0
  2. package/ThirdPartyNotices.txt +1548 -0
  3. package/bin/PrintDeps.exe +0 -0
  4. package/bin/README.md +2 -0
  5. package/bin/install_media_pack.ps1 +5 -0
  6. package/bin/reinstall_chrome_beta_linux.sh +40 -0
  7. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  8. package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  9. package/bin/reinstall_chrome_stable_linux.sh +40 -0
  10. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  11. package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  12. package/bin/reinstall_msedge_beta_linux.sh +40 -0
  13. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  14. package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  15. package/bin/reinstall_msedge_dev_linux.sh +40 -0
  16. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  17. package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  18. package/bin/reinstall_msedge_stable_linux.sh +40 -0
  19. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  20. package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  21. package/browsers.json +57 -0
  22. package/cli.js +18 -0
  23. package/index.d.ts +17 -0
  24. package/index.js +33 -0
  25. package/index.mjs +28 -0
  26. package/lib/androidServerImpl.js +69 -0
  27. package/lib/browserServerImpl.js +92 -0
  28. package/lib/cli/driver.js +95 -0
  29. package/lib/cli/program.js +589 -0
  30. package/lib/cli/programWithTestStub.js +67 -0
  31. package/lib/client/accessibility.js +50 -0
  32. package/lib/client/android.js +473 -0
  33. package/lib/client/api.js +285 -0
  34. package/lib/client/artifact.js +79 -0
  35. package/lib/client/browser.js +145 -0
  36. package/lib/client/browserContext.js +583 -0
  37. package/lib/client/browserType.js +241 -0
  38. package/lib/client/cdpSession.js +53 -0
  39. package/lib/client/channelOwner.js +235 -0
  40. package/lib/client/clientHelper.js +57 -0
  41. package/lib/client/clientInstrumentation.js +50 -0
  42. package/lib/client/clock.js +69 -0
  43. package/lib/client/connection.js +333 -0
  44. package/lib/client/consoleMessage.js +55 -0
  45. package/lib/client/coverage.js +41 -0
  46. package/lib/client/dialog.js +57 -0
  47. package/lib/client/download.js +62 -0
  48. package/lib/client/electron.js +135 -0
  49. package/lib/client/elementHandle.js +321 -0
  50. package/lib/client/errors.js +77 -0
  51. package/lib/client/eventEmitter.js +314 -0
  52. package/lib/client/events.js +94 -0
  53. package/lib/client/fetch.js +391 -0
  54. package/lib/client/fileChooser.js +45 -0
  55. package/lib/client/frame.js +504 -0
  56. package/lib/client/harRouter.js +99 -0
  57. package/lib/client/input.js +111 -0
  58. package/lib/client/jsHandle.js +121 -0
  59. package/lib/client/jsonPipe.js +35 -0
  60. package/lib/client/localUtils.js +36 -0
  61. package/lib/client/locator.js +441 -0
  62. package/lib/client/network.js +762 -0
  63. package/lib/client/page.js +770 -0
  64. package/lib/client/playwright.js +80 -0
  65. package/lib/client/selectors.js +67 -0
  66. package/lib/client/stream.js +54 -0
  67. package/lib/client/tracing.js +134 -0
  68. package/lib/client/types.js +24 -0
  69. package/lib/client/video.js +51 -0
  70. package/lib/client/waiter.js +158 -0
  71. package/lib/client/webError.js +37 -0
  72. package/lib/client/worker.js +71 -0
  73. package/lib/client/writableStream.js +54 -0
  74. package/lib/common/socksProxy.js +569 -0
  75. package/lib/common/timeoutSettings.js +73 -0
  76. package/lib/common/types.js +5 -0
  77. package/lib/generated/clockSource.js +7 -0
  78. package/lib/generated/consoleApiSource.js +7 -0
  79. package/lib/generated/injectedScriptSource.js +7 -0
  80. package/lib/generated/pollingRecorderSource.js +7 -0
  81. package/lib/generated/utilityScriptSource.js +7 -0
  82. package/lib/generated/webSocketMockSource.js +7 -0
  83. package/lib/image_tools/colorUtils.js +98 -0
  84. package/lib/image_tools/compare.js +108 -0
  85. package/lib/image_tools/imageChannel.js +70 -0
  86. package/lib/image_tools/stats.js +102 -0
  87. package/lib/inProcessFactory.js +54 -0
  88. package/lib/inprocess.js +20 -0
  89. package/lib/outofprocess.js +67 -0
  90. package/lib/protocol/debug.js +27 -0
  91. package/lib/protocol/serializers.js +173 -0
  92. package/lib/protocol/transport.js +82 -0
  93. package/lib/protocol/validator.js +2760 -0
  94. package/lib/protocol/validatorPrimitives.js +139 -0
  95. package/lib/remote/playwrightConnection.js +274 -0
  96. package/lib/remote/playwrightServer.js +110 -0
  97. package/lib/server/accessibility.js +62 -0
  98. package/lib/server/android/android.js +441 -0
  99. package/lib/server/android/backendAdb.js +172 -0
  100. package/lib/server/artifact.js +104 -0
  101. package/lib/server/bidi/bidiBrowser.js +311 -0
  102. package/lib/server/bidi/bidiChromium.js +124 -0
  103. package/lib/server/bidi/bidiConnection.js +206 -0
  104. package/lib/server/bidi/bidiExecutionContext.js +159 -0
  105. package/lib/server/bidi/bidiFirefox.js +104 -0
  106. package/lib/server/bidi/bidiInput.js +158 -0
  107. package/lib/server/bidi/bidiNetworkManager.js +338 -0
  108. package/lib/server/bidi/bidiOverCdp.js +103 -0
  109. package/lib/server/bidi/bidiPage.js +529 -0
  110. package/lib/server/bidi/bidiPdf.js +140 -0
  111. package/lib/server/bidi/third_party/bidiDeserializer.js +93 -0
  112. package/lib/server/bidi/third_party/bidiKeyboard.js +238 -0
  113. package/lib/server/bidi/third_party/bidiProtocol.js +139 -0
  114. package/lib/server/bidi/third_party/bidiSerializer.js +144 -0
  115. package/lib/server/bidi/third_party/firefoxPrefs.js +221 -0
  116. package/lib/server/browser.js +148 -0
  117. package/lib/server/browserContext.js +666 -0
  118. package/lib/server/browserType.js +335 -0
  119. package/lib/server/chromium/appIcon.png +0 -0
  120. package/lib/server/chromium/chromium.js +350 -0
  121. package/lib/server/chromium/chromiumSwitches.js +36 -0
  122. package/lib/server/chromium/crAccessibility.js +237 -0
  123. package/lib/server/chromium/crBrowser.js +522 -0
  124. package/lib/server/chromium/crConnection.js +228 -0
  125. package/lib/server/chromium/crCoverage.js +246 -0
  126. package/lib/server/chromium/crDevTools.js +104 -0
  127. package/lib/server/chromium/crDragDrop.js +143 -0
  128. package/lib/server/chromium/crExecutionContext.js +149 -0
  129. package/lib/server/chromium/crInput.js +171 -0
  130. package/lib/server/chromium/crNetworkManager.js +809 -0
  131. package/lib/server/chromium/crPage.js +1235 -0
  132. package/lib/server/chromium/crPdf.js +153 -0
  133. package/lib/server/chromium/crProtocolHelper.js +133 -0
  134. package/lib/server/chromium/crServiceWorker.js +111 -0
  135. package/lib/server/chromium/defaultFontFamilies.js +145 -0
  136. package/lib/server/chromium/videoRecorder.js +155 -0
  137. package/lib/server/clock.js +133 -0
  138. package/lib/server/codegen/csharp.js +299 -0
  139. package/lib/server/codegen/java.js +235 -0
  140. package/lib/server/codegen/javascript.js +223 -0
  141. package/lib/server/codegen/jsonl.js +47 -0
  142. package/lib/server/codegen/language.js +88 -0
  143. package/lib/server/codegen/languages.js +30 -0
  144. package/lib/server/codegen/python.js +265 -0
  145. package/lib/server/codegen/types.js +5 -0
  146. package/lib/server/console.js +57 -0
  147. package/lib/server/cookieStore.js +185 -0
  148. package/lib/server/debugController.js +234 -0
  149. package/lib/server/debugger.js +132 -0
  150. package/lib/server/deviceDescriptors.js +26 -0
  151. package/lib/server/deviceDescriptorsSource.json +1669 -0
  152. package/lib/server/dialog.js +71 -0
  153. package/lib/server/dispatchers/androidDispatcher.js +193 -0
  154. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  155. package/lib/server/dispatchers/browserContextDispatcher.js +368 -0
  156. package/lib/server/dispatchers/browserDispatcher.js +170 -0
  157. package/lib/server/dispatchers/browserTypeDispatcher.js +55 -0
  158. package/lib/server/dispatchers/cdpSessionDispatcher.js +48 -0
  159. package/lib/server/dispatchers/debugControllerDispatcher.js +103 -0
  160. package/lib/server/dispatchers/dialogDispatcher.js +44 -0
  161. package/lib/server/dispatchers/dispatcher.js +395 -0
  162. package/lib/server/dispatchers/electronDispatcher.js +93 -0
  163. package/lib/server/dispatchers/elementHandlerDispatcher.js +228 -0
  164. package/lib/server/dispatchers/frameDispatcher.js +286 -0
  165. package/lib/server/dispatchers/jsHandleDispatcher.js +97 -0
  166. package/lib/server/dispatchers/jsonPipeDispatcher.js +59 -0
  167. package/lib/server/dispatchers/localUtilsDispatcher.js +413 -0
  168. package/lib/server/dispatchers/networkDispatchers.js +221 -0
  169. package/lib/server/dispatchers/pageDispatcher.js +367 -0
  170. package/lib/server/dispatchers/playwrightDispatcher.js +107 -0
  171. package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
  172. package/lib/server/dispatchers/streamDispatcher.js +62 -0
  173. package/lib/server/dispatchers/tracingDispatcher.js +54 -0
  174. package/lib/server/dispatchers/webSocketRouteDispatcher.js +189 -0
  175. package/lib/server/dispatchers/writableStreamDispatcher.js +58 -0
  176. package/lib/server/dom.js +845 -0
  177. package/lib/server/download.js +60 -0
  178. package/lib/server/electron/electron.js +296 -0
  179. package/lib/server/electron/loader.js +57 -0
  180. package/lib/server/errors.js +68 -0
  181. package/lib/server/fetch.js +656 -0
  182. package/lib/server/fileChooser.js +42 -0
  183. package/lib/server/fileUploadUtils.js +75 -0
  184. package/lib/server/firefox/ffAccessibility.js +216 -0
  185. package/lib/server/firefox/ffBrowser.js +460 -0
  186. package/lib/server/firefox/ffConnection.js +168 -0
  187. package/lib/server/firefox/ffExecutionContext.js +135 -0
  188. package/lib/server/firefox/ffInput.js +150 -0
  189. package/lib/server/firefox/ffNetworkManager.js +233 -0
  190. package/lib/server/firefox/ffPage.js +559 -0
  191. package/lib/server/firefox/firefox.js +99 -0
  192. package/lib/server/formData.js +75 -0
  193. package/lib/server/frameSelectors.js +171 -0
  194. package/lib/server/frames.js +1808 -0
  195. package/lib/server/har/harRecorder.js +139 -0
  196. package/lib/server/har/harTracer.js +542 -0
  197. package/lib/server/helper.js +103 -0
  198. package/lib/server/index.js +114 -0
  199. package/lib/server/input.js +310 -0
  200. package/lib/server/instrumentation.js +70 -0
  201. package/lib/server/isomorphic/utilityScriptSerializers.js +226 -0
  202. package/lib/server/javascript.js +299 -0
  203. package/lib/server/launchApp.js +91 -0
  204. package/lib/server/macEditingCommands.js +139 -0
  205. package/lib/server/network.js +617 -0
  206. package/lib/server/page.js +819 -0
  207. package/lib/server/pipeTransport.js +85 -0
  208. package/lib/server/playwright.js +88 -0
  209. package/lib/server/progress.js +102 -0
  210. package/lib/server/protocolError.js +49 -0
  211. package/lib/server/recorder/contextRecorder.js +299 -0
  212. package/lib/server/recorder/recorderApp.js +196 -0
  213. package/lib/server/recorder/recorderCollection.js +116 -0
  214. package/lib/server/recorder/recorderFrontend.js +5 -0
  215. package/lib/server/recorder/recorderInTraceViewer.js +144 -0
  216. package/lib/server/recorder/recorderRunner.js +155 -0
  217. package/lib/server/recorder/recorderUtils.js +112 -0
  218. package/lib/server/recorder/throttledFile.js +46 -0
  219. package/lib/server/recorder.js +329 -0
  220. package/lib/server/registry/browserFetcher.js +168 -0
  221. package/lib/server/registry/dependencies.js +322 -0
  222. package/lib/server/registry/index.js +1005 -0
  223. package/lib/server/registry/nativeDeps.js +490 -0
  224. package/lib/server/registry/oopDownloadBrowserMain.js +138 -0
  225. package/lib/server/screenshotter.js +348 -0
  226. package/lib/server/selectors.js +73 -0
  227. package/lib/server/socksClientCertificatesInterceptor.js +340 -0
  228. package/lib/server/socksInterceptor.js +100 -0
  229. package/lib/server/trace/recorder/snapshotter.js +172 -0
  230. package/lib/server/trace/recorder/snapshotterInjected.js +493 -0
  231. package/lib/server/trace/recorder/tracing.js +542 -0
  232. package/lib/server/trace/test/inMemorySnapshotter.js +93 -0
  233. package/lib/server/trace/viewer/traceViewer.js +213 -0
  234. package/lib/server/transport.js +191 -0
  235. package/lib/server/types.js +24 -0
  236. package/lib/server/usKeyboardLayout.js +555 -0
  237. package/lib/server/webkit/webkit.js +87 -0
  238. package/lib/server/webkit/wkAccessibility.js +194 -0
  239. package/lib/server/webkit/wkBrowser.js +329 -0
  240. package/lib/server/webkit/wkConnection.js +173 -0
  241. package/lib/server/webkit/wkExecutionContext.js +143 -0
  242. package/lib/server/webkit/wkInput.js +169 -0
  243. package/lib/server/webkit/wkInterceptableRequest.js +162 -0
  244. package/lib/server/webkit/wkPage.js +1219 -0
  245. package/lib/server/webkit/wkProvisionalPage.js +94 -0
  246. package/lib/server/webkit/wkWorkers.js +104 -0
  247. package/lib/third_party/diff_match_patch.js +2222 -0
  248. package/lib/third_party/pixelmatch.js +255 -0
  249. package/lib/utils/ascii.js +31 -0
  250. package/lib/utils/comparators.js +171 -0
  251. package/lib/utils/crypto.js +174 -0
  252. package/lib/utils/debug.js +46 -0
  253. package/lib/utils/debugLogger.js +91 -0
  254. package/lib/utils/env.js +49 -0
  255. package/lib/utils/eventsHelper.js +38 -0
  256. package/lib/utils/expectUtils.js +33 -0
  257. package/lib/utils/fileUtils.js +205 -0
  258. package/lib/utils/happy-eyeballs.js +194 -0
  259. package/lib/utils/headers.js +52 -0
  260. package/lib/utils/hostPlatform.js +133 -0
  261. package/lib/utils/httpServer.js +237 -0
  262. package/lib/utils/index.js +368 -0
  263. package/lib/utils/isomorphic/cssParser.js +250 -0
  264. package/lib/utils/isomorphic/cssTokenizer.js +979 -0
  265. package/lib/utils/isomorphic/locatorGenerators.js +642 -0
  266. package/lib/utils/isomorphic/locatorParser.js +179 -0
  267. package/lib/utils/isomorphic/locatorUtils.js +62 -0
  268. package/lib/utils/isomorphic/mimeType.js +29 -0
  269. package/lib/utils/isomorphic/recorderUtils.js +195 -0
  270. package/lib/utils/isomorphic/selectorParser.js +397 -0
  271. package/lib/utils/isomorphic/stringUtils.js +139 -0
  272. package/lib/utils/isomorphic/traceUtils.js +39 -0
  273. package/lib/utils/isomorphic/urlMatch.js +120 -0
  274. package/lib/utils/linuxUtils.js +78 -0
  275. package/lib/utils/manualPromise.js +109 -0
  276. package/lib/utils/multimap.js +75 -0
  277. package/lib/utils/network.js +160 -0
  278. package/lib/utils/processLauncher.js +248 -0
  279. package/lib/utils/profiler.js +53 -0
  280. package/lib/utils/rtti.js +44 -0
  281. package/lib/utils/semaphore.js +51 -0
  282. package/lib/utils/spawnAsync.js +45 -0
  283. package/lib/utils/stackTrace.js +121 -0
  284. package/lib/utils/task.js +58 -0
  285. package/lib/utils/time.js +37 -0
  286. package/lib/utils/timeoutRunner.js +66 -0
  287. package/lib/utils/traceUtils.js +44 -0
  288. package/lib/utils/userAgent.js +105 -0
  289. package/lib/utils/wsServer.js +127 -0
  290. package/lib/utils/zipFile.js +75 -0
  291. package/lib/utils/zones.js +62 -0
  292. package/lib/utilsBundle.js +82 -0
  293. package/lib/utilsBundleImpl/index.js +53 -0
  294. package/lib/utilsBundleImpl/xdg-open +1066 -0
  295. package/lib/vite/htmlReport/index.html +66 -0
  296. package/lib/vite/recorder/assets/codeMirrorModule-baozm8ur.js +24 -0
  297. package/lib/vite/recorder/assets/codeMirrorModule-ez37Vkbh.css +1 -0
  298. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  299. package/lib/vite/recorder/assets/index-2ElAIWFB.js +42 -0
  300. package/lib/vite/recorder/assets/index-BW-aOBcL.css +1 -0
  301. package/lib/vite/recorder/index.html +29 -0
  302. package/lib/vite/recorder/playwright-logo.svg +9 -0
  303. package/lib/vite/traceViewer/assets/codeMirrorModule-Bh1rfd2w.js +24 -0
  304. package/lib/vite/traceViewer/assets/inspectorTab-7GHnKvSD.js +64 -0
  305. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +1 -0
  306. package/lib/vite/traceViewer/assets/workbench-DPQnTHYP.js +9 -0
  307. package/lib/vite/traceViewer/assets/xtermModule-BeNbaIVa.js +9 -0
  308. package/lib/vite/traceViewer/codeMirrorModule.ez37Vkbh.css +1 -0
  309. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  310. package/lib/vite/traceViewer/embedded.BlHoW5LY.js +2 -0
  311. package/lib/vite/traceViewer/embedded.html +18 -0
  312. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +1 -0
  313. package/lib/vite/traceViewer/index.CrbWWHbf.css +1 -0
  314. package/lib/vite/traceViewer/index.DaWVfou1.js +2 -0
  315. package/lib/vite/traceViewer/index.html +29 -0
  316. package/lib/vite/traceViewer/inspectorTab.DLjBDrQR.css +1 -0
  317. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  318. package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
  319. package/lib/vite/traceViewer/recorder.C4zxcvd2.js +2 -0
  320. package/lib/vite/traceViewer/recorder.html +17 -0
  321. package/lib/vite/traceViewer/snapshot.html +21 -0
  322. package/lib/vite/traceViewer/sw.bundle.js +3 -0
  323. package/lib/vite/traceViewer/uiMode.CAYqod-m.css +1 -0
  324. package/lib/vite/traceViewer/uiMode.html +20 -0
  325. package/lib/vite/traceViewer/uiMode.mTXWniJb.js +5 -0
  326. package/lib/vite/traceViewer/workbench.D3JVcA9K.css +1 -0
  327. package/lib/vite/traceViewer/xtermModule.DSXBckUd.css +32 -0
  328. package/lib/zipBundle.js +25 -0
  329. package/lib/zipBundleImpl.js +5 -0
  330. package/package.json +44 -0
  331. package/types/protocol.d.ts +21571 -0
  332. package/types/structs.d.ts +45 -0
  333. package/types/types.d.ts +22519 -0
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BidiNetworkManager = void 0;
7
+ exports.bidiBytesValueToString = bidiBytesValueToString;
8
+ var _eventsHelper = require("../../utils/eventsHelper");
9
+ var network = _interopRequireWildcard(require("../network"));
10
+ var bidi = _interopRequireWildcard(require("./third_party/bidiProtocol"));
11
+ var _cookieStore = require("../cookieStore");
12
+ 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); }
13
+ 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 && Object.prototype.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; }
14
+ /**
15
+ * Copyright (c) Microsoft Corporation.
16
+ *
17
+ * Licensed under the Apache License, Version 2.0 (the 'License');
18
+ * you may not use this file except in compliance with the License.
19
+ * You may obtain a copy of the License at
20
+ *
21
+ * http://www.apache.org/licenses/LICENSE-2.0
22
+ *
23
+ * Unless required by applicable law or agreed to in writing, software
24
+ * distributed under the License is distributed on an 'AS IS' BASIS,
25
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26
+ * See the License for the specific language governing permissions and
27
+ * limitations under the License.
28
+ */
29
+
30
+ class BidiNetworkManager {
31
+ constructor(bidiSession, page, onNavigationResponseStarted) {
32
+ this._session = void 0;
33
+ this._requests = void 0;
34
+ this._page = void 0;
35
+ this._eventListeners = void 0;
36
+ this._onNavigationResponseStarted = void 0;
37
+ this._userRequestInterceptionEnabled = false;
38
+ this._protocolRequestInterceptionEnabled = false;
39
+ this._credentials = void 0;
40
+ this._intercepId = void 0;
41
+ this._session = bidiSession;
42
+ this._requests = new Map();
43
+ this._page = page;
44
+ this._onNavigationResponseStarted = onNavigationResponseStarted;
45
+ this._eventListeners = [_eventsHelper.eventsHelper.addEventListener(bidiSession, 'network.beforeRequestSent', this._onBeforeRequestSent.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'network.responseStarted', this._onResponseStarted.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'network.responseCompleted', this._onResponseCompleted.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'network.fetchError', this._onFetchError.bind(this)), _eventsHelper.eventsHelper.addEventListener(bidiSession, 'network.authRequired', this._onAuthRequired.bind(this))];
46
+ }
47
+ dispose() {
48
+ _eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
49
+ }
50
+ _onBeforeRequestSent(param) {
51
+ if (param.request.url.startsWith('data:')) return;
52
+ const redirectedFrom = param.redirectCount ? this._requests.get(param.request.request) || null : null;
53
+ const frame = redirectedFrom ? redirectedFrom.request.frame() : param.context ? this._page._frameManager.frame(param.context) : null;
54
+ if (!frame) return;
55
+ if (redirectedFrom) this._requests.delete(redirectedFrom._id);
56
+ let route;
57
+ if (param.intercepts) {
58
+ // We do not support intercepting redirects.
59
+ if (redirectedFrom) {
60
+ var _redirectedFrom$_orig;
61
+ this._session.sendMayFail('network.continueRequest', {
62
+ request: param.request.request,
63
+ ...(((_redirectedFrom$_orig = redirectedFrom._originalRequestRoute) === null || _redirectedFrom$_orig === void 0 ? void 0 : _redirectedFrom$_orig._alreadyContinuedHeaders) || {})
64
+ });
65
+ } else {
66
+ route = new BidiRouteImpl(this._session, param.request.request);
67
+ }
68
+ }
69
+ const request = new BidiRequest(frame, redirectedFrom, param, route);
70
+ this._requests.set(request._id, request);
71
+ this._page._frameManager.requestStarted(request.request, route);
72
+ }
73
+ _onResponseStarted(params) {
74
+ const request = this._requests.get(params.request.request);
75
+ if (!request) return;
76
+ const getResponseBody = async () => {
77
+ throw new Error(`Response body is not available for requests in Bidi`);
78
+ };
79
+ const timings = params.request.timings;
80
+ const startTime = timings.requestTime;
81
+ function relativeToStart(time) {
82
+ if (!time) return -1;
83
+ return (time - startTime) / 1000;
84
+ }
85
+ const timing = {
86
+ startTime: startTime / 1000,
87
+ requestStart: relativeToStart(timings.requestStart),
88
+ responseStart: relativeToStart(timings.responseStart),
89
+ domainLookupStart: relativeToStart(timings.dnsStart),
90
+ domainLookupEnd: relativeToStart(timings.dnsEnd),
91
+ connectStart: relativeToStart(timings.connectStart),
92
+ secureConnectionStart: relativeToStart(timings.tlsStart),
93
+ connectEnd: relativeToStart(timings.connectEnd)
94
+ };
95
+ const response = new network.Response(request.request, params.response.status, params.response.statusText, fromBidiHeaders(params.response.headers), timing, getResponseBody, false);
96
+ response._serverAddrFinished();
97
+ response._securityDetailsFinished();
98
+ // "raw" headers are the same as "provisional" headers in Bidi.
99
+ response.setRawResponseHeaders(null);
100
+ response.setResponseHeadersSize(params.response.headersSize);
101
+ this._page._frameManager.requestReceivedResponse(response);
102
+ if (params.navigation) this._onNavigationResponseStarted(params);
103
+ }
104
+ _onResponseCompleted(params) {
105
+ const request = this._requests.get(params.request.request);
106
+ if (!request) return;
107
+ const response = request.request._existingResponse();
108
+ // TODO: body size is the encoded size
109
+ response.setTransferSize(params.response.bodySize);
110
+ response.setEncodedBodySize(params.response.bodySize);
111
+
112
+ // Keep redirected requests in the map for future reference as redirectedFrom.
113
+ const isRedirected = response.status() >= 300 && response.status() <= 399;
114
+ const responseEndTime = params.request.timings.responseEnd / 1000 - response.timing().startTime;
115
+ if (isRedirected) {
116
+ response._requestFinished(responseEndTime);
117
+ } else {
118
+ this._requests.delete(request._id);
119
+ response._requestFinished(responseEndTime);
120
+ }
121
+ response._setHttpVersion(params.response.protocol);
122
+ this._page._frameManager.reportRequestFinished(request.request, response);
123
+ }
124
+ _onFetchError(params) {
125
+ const request = this._requests.get(params.request.request);
126
+ if (!request) return;
127
+ this._requests.delete(request._id);
128
+ const response = request.request._existingResponse();
129
+ if (response) {
130
+ response.setTransferSize(null);
131
+ response.setEncodedBodySize(null);
132
+ response._requestFinished(-1);
133
+ }
134
+ request.request._setFailureText(params.errorText);
135
+ // TODO: support canceled flag
136
+ this._page._frameManager.requestFailed(request.request, params.errorText === 'NS_BINDING_ABORTED');
137
+ }
138
+ _onAuthRequired(params) {
139
+ var _params$response$auth;
140
+ const isBasic = (_params$response$auth = params.response.authChallenges) === null || _params$response$auth === void 0 ? void 0 : _params$response$auth.some(challenge => challenge.scheme.startsWith('Basic'));
141
+ const credentials = this._page._browserContext._options.httpCredentials;
142
+ if (isBasic && credentials) {
143
+ this._session.sendMayFail('network.continueWithAuth', {
144
+ request: params.request.request,
145
+ action: 'provideCredentials',
146
+ credentials: {
147
+ type: 'password',
148
+ username: credentials.username,
149
+ password: credentials.password
150
+ }
151
+ });
152
+ } else {
153
+ this._session.sendMayFail('network.continueWithAuth', {
154
+ request: params.request.request,
155
+ action: 'default'
156
+ });
157
+ }
158
+ }
159
+ async setRequestInterception(value) {
160
+ this._userRequestInterceptionEnabled = value;
161
+ await this._updateProtocolRequestInterception();
162
+ }
163
+ async setCredentials(credentials) {
164
+ this._credentials = credentials;
165
+ await this._updateProtocolRequestInterception();
166
+ }
167
+ async _updateProtocolRequestInterception(initial) {
168
+ const enabled = this._userRequestInterceptionEnabled || !!this._credentials;
169
+ if (enabled === this._protocolRequestInterceptionEnabled) return;
170
+ this._protocolRequestInterceptionEnabled = enabled;
171
+ if (initial && !enabled) return;
172
+ const cachePromise = this._session.send('network.setCacheBehavior', {
173
+ cacheBehavior: enabled ? 'bypass' : 'default'
174
+ });
175
+ let interceptPromise = Promise.resolve(undefined);
176
+ if (enabled) {
177
+ interceptPromise = this._session.send('network.addIntercept', {
178
+ phases: [bidi.Network.InterceptPhase.AuthRequired, bidi.Network.InterceptPhase.BeforeRequestSent],
179
+ urlPatterns: [{
180
+ type: 'pattern'
181
+ }]
182
+ // urlPatterns: [{ type: 'string', pattern: '*' }],
183
+ }).then(r => {
184
+ this._intercepId = r.intercept;
185
+ });
186
+ } else if (this._intercepId) {
187
+ interceptPromise = this._session.send('network.removeIntercept', {
188
+ intercept: this._intercepId
189
+ });
190
+ this._intercepId = undefined;
191
+ }
192
+ await Promise.all([cachePromise, interceptPromise]);
193
+ }
194
+ }
195
+ exports.BidiNetworkManager = BidiNetworkManager;
196
+ class BidiRequest {
197
+ constructor(frame, redirectedFrom, payload, route) {
198
+ var _payload$navigation;
199
+ this.request = void 0;
200
+ this._id = void 0;
201
+ this._redirectedTo = void 0;
202
+ // Only first request in the chain can be intercepted, so this will
203
+ // store the first and only Route in the chain (if any).
204
+ this._originalRequestRoute = void 0;
205
+ this._id = payload.request.request;
206
+ if (redirectedFrom) redirectedFrom._redirectedTo = this;
207
+ // TODO: missing in the spec?
208
+ const postDataBuffer = null;
209
+ this.request = new network.Request(frame._page._browserContext, frame, null, redirectedFrom ? redirectedFrom.request : null, (_payload$navigation = payload.navigation) !== null && _payload$navigation !== void 0 ? _payload$navigation : undefined, payload.request.url, 'other', payload.request.method, postDataBuffer, fromBidiHeaders(payload.request.headers));
210
+ // "raw" headers are the same as "provisional" headers in Bidi.
211
+ this.request.setRawRequestHeaders(null);
212
+ this.request._setBodySize(payload.request.bodySize || 0);
213
+ this._originalRequestRoute = route !== null && route !== void 0 ? route : redirectedFrom === null || redirectedFrom === void 0 ? void 0 : redirectedFrom._originalRequestRoute;
214
+ route === null || route === void 0 || route._setRequest(this.request);
215
+ }
216
+ _finalRequest() {
217
+ let request = this;
218
+ while (request._redirectedTo) request = request._redirectedTo;
219
+ return request;
220
+ }
221
+ }
222
+ class BidiRouteImpl {
223
+ constructor(session, requestId) {
224
+ this._requestId = void 0;
225
+ this._session = void 0;
226
+ this._request = void 0;
227
+ this._alreadyContinuedHeaders = void 0;
228
+ this._session = session;
229
+ this._requestId = requestId;
230
+ }
231
+ _setRequest(request) {
232
+ this._request = request;
233
+ }
234
+ async continue(overrides) {
235
+ // Firefox does not update content-length header.
236
+ let headers = overrides.headers || this._request.headers();
237
+ if (overrides.postData && headers) {
238
+ headers = headers.map(header => {
239
+ if (header.name.toLowerCase() === 'content-length') return {
240
+ name: header.name,
241
+ value: overrides.postData.byteLength.toString()
242
+ };
243
+ return header;
244
+ });
245
+ }
246
+ this._alreadyContinuedHeaders = headers;
247
+ await this._session.sendMayFail('network.continueRequest', {
248
+ request: this._requestId,
249
+ url: overrides.url,
250
+ method: overrides.method,
251
+ ...toBidiRequestHeaders(this._alreadyContinuedHeaders),
252
+ body: overrides.postData ? {
253
+ type: 'base64',
254
+ value: Buffer.from(overrides.postData).toString('base64')
255
+ } : undefined
256
+ });
257
+ }
258
+ async fulfill(response) {
259
+ const base64body = response.isBase64 ? response.body : Buffer.from(response.body).toString('base64');
260
+ await this._session.sendMayFail('network.provideResponse', {
261
+ request: this._requestId,
262
+ statusCode: response.status,
263
+ reasonPhrase: network.statusText(response.status),
264
+ ...toBidiResponseHeaders(response.headers),
265
+ body: {
266
+ type: 'base64',
267
+ value: base64body
268
+ }
269
+ });
270
+ }
271
+ async abort(errorCode) {
272
+ await this._session.sendMayFail('network.failRequest', {
273
+ request: this._requestId
274
+ });
275
+ }
276
+ }
277
+ function fromBidiHeaders(bidiHeaders) {
278
+ const result = [];
279
+ for (const {
280
+ name,
281
+ value
282
+ } of bidiHeaders) result.push({
283
+ name,
284
+ value: bidiBytesValueToString(value)
285
+ });
286
+ return result;
287
+ }
288
+ function toBidiRequestHeaders(allHeaders) {
289
+ const bidiHeaders = toBidiHeaders(allHeaders);
290
+ const cookies = bidiHeaders.filter(h => h.name.toLowerCase() === 'cookie');
291
+ const headers = bidiHeaders.filter(h => h.name.toLowerCase() !== 'cookie');
292
+ return {
293
+ cookies,
294
+ headers
295
+ };
296
+ }
297
+ function toBidiResponseHeaders(headers) {
298
+ const setCookieHeaders = headers.filter(h => h.name.toLowerCase() === 'set-cookie');
299
+ const otherHeaders = headers.filter(h => h.name.toLowerCase() !== 'set-cookie');
300
+ const rawCookies = setCookieHeaders.map(h => (0, _cookieStore.parseRawCookie)(h.value));
301
+ const cookies = rawCookies.filter(Boolean).map(c => {
302
+ return {
303
+ ...c,
304
+ value: {
305
+ type: 'string',
306
+ value: c.value
307
+ },
308
+ sameSite: toBidiSameSite(c.sameSite)
309
+ };
310
+ });
311
+ return {
312
+ cookies,
313
+ headers: toBidiHeaders(otherHeaders)
314
+ };
315
+ }
316
+ function toBidiHeaders(headers) {
317
+ return headers.map(({
318
+ name,
319
+ value
320
+ }) => ({
321
+ name,
322
+ value: {
323
+ type: 'string',
324
+ value
325
+ }
326
+ }));
327
+ }
328
+ function bidiBytesValueToString(value) {
329
+ if (value.type === 'string') return value.value;
330
+ if (value.type === 'base64') return Buffer.from(value.type, 'base64').toString('binary');
331
+ return 'unknown value type: ' + value.type;
332
+ }
333
+ function toBidiSameSite(sameSite) {
334
+ if (!sameSite) return undefined;
335
+ if (sameSite === 'Strict') return bidi.Network.SameSite.Strict;
336
+ if (sameSite === 'Lax') return bidi.Network.SameSite.Lax;
337
+ return bidi.Network.SameSite.None;
338
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.connectBidiOverCdp = connectBidiOverCdp;
7
+ var bidiMapper = _interopRequireWildcard(require("chromium-bidi/lib/cjs/bidiMapper/BidiMapper"));
8
+ var bidiCdpConnection = _interopRequireWildcard(require("chromium-bidi/lib/cjs/cdp/CdpConnection"));
9
+ var _debugLogger = require("../../utils/debugLogger");
10
+ 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); }
11
+ 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 && Object.prototype.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; }
12
+ /**
13
+ * Copyright (c) Microsoft Corporation.
14
+ *
15
+ * Licensed under the Apache License, Version 2.0 (the 'License');
16
+ * you may not use this file except in compliance with the License.
17
+ * You may obtain a copy of the License at
18
+ *
19
+ * http://www.apache.org/licenses/LICENSE-2.0
20
+ *
21
+ * Unless required by applicable law or agreed to in writing, software
22
+ * distributed under the License is distributed on an 'AS IS' BASIS,
23
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
+ * See the License for the specific language governing permissions and
25
+ * limitations under the License.
26
+ */
27
+
28
+ const bidiServerLogger = (prefix, ...args) => {
29
+ _debugLogger.debugLogger.log(prefix, args);
30
+ };
31
+ async function connectBidiOverCdp(cdp) {
32
+ let server = undefined;
33
+ const bidiTransport = new BidiTransportImpl();
34
+ const bidiConnection = new BidiConnection(bidiTransport, () => {
35
+ var _server;
36
+ return (_server = server) === null || _server === void 0 ? void 0 : _server.close();
37
+ });
38
+ const cdpTransportImpl = new CdpTransportImpl(cdp);
39
+ const cdpConnection = new bidiCdpConnection.MapperCdpConnection(cdpTransportImpl, bidiServerLogger);
40
+ // Make sure onclose event is propagated.
41
+ cdp.onclose = () => {
42
+ var _bidiConnection$onclo;
43
+ return (_bidiConnection$onclo = bidiConnection.onclose) === null || _bidiConnection$onclo === void 0 ? void 0 : _bidiConnection$onclo.call(bidiConnection);
44
+ };
45
+ server = await bidiMapper.BidiServer.createAndStart(bidiTransport, cdpConnection, await cdpConnection.createBrowserSession(), /* selfTargetId= */'', undefined, bidiServerLogger);
46
+ return bidiConnection;
47
+ }
48
+ class BidiTransportImpl {
49
+ constructor() {
50
+ this._handler = void 0;
51
+ this._bidiConnection = void 0;
52
+ }
53
+ setOnMessage(handler) {
54
+ this._handler = handler;
55
+ }
56
+ sendMessage(message) {
57
+ var _this$_bidiConnection, _this$_bidiConnection2;
58
+ return (_this$_bidiConnection = (_this$_bidiConnection2 = this._bidiConnection).onmessage) === null || _this$_bidiConnection === void 0 ? void 0 : _this$_bidiConnection.call(_this$_bidiConnection2, message);
59
+ }
60
+ close() {
61
+ var _this$_bidiConnection3, _this$_bidiConnection4;
62
+ (_this$_bidiConnection3 = (_this$_bidiConnection4 = this._bidiConnection).onclose) === null || _this$_bidiConnection3 === void 0 || _this$_bidiConnection3.call(_this$_bidiConnection4);
63
+ }
64
+ }
65
+ class BidiConnection {
66
+ constructor(bidiTransport, closeCallback) {
67
+ this._bidiTransport = void 0;
68
+ this._closeCallback = void 0;
69
+ this.onmessage = void 0;
70
+ this.onclose = void 0;
71
+ this._bidiTransport = bidiTransport;
72
+ this._bidiTransport._bidiConnection = this;
73
+ this._closeCallback = closeCallback;
74
+ }
75
+ send(s) {
76
+ var _this$_bidiTransport$, _this$_bidiTransport;
77
+ (_this$_bidiTransport$ = (_this$_bidiTransport = this._bidiTransport)._handler) === null || _this$_bidiTransport$ === void 0 || _this$_bidiTransport$.call(_this$_bidiTransport, s);
78
+ }
79
+ close() {
80
+ this._closeCallback();
81
+ }
82
+ }
83
+ class CdpTransportImpl {
84
+ constructor(connection) {
85
+ this._connection = void 0;
86
+ this._handler = void 0;
87
+ this._bidiConnection = void 0;
88
+ this._connection = connection;
89
+ this._connection.onmessage = message => {
90
+ var _this$_handler;
91
+ (_this$_handler = this._handler) === null || _this$_handler === void 0 || _this$_handler.call(this, JSON.stringify(message));
92
+ };
93
+ }
94
+ setOnMessage(handler) {
95
+ this._handler = handler;
96
+ }
97
+ sendMessage(message) {
98
+ return this._connection.send(JSON.parse(message));
99
+ }
100
+ close() {
101
+ this._connection.close();
102
+ }
103
+ }