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,81 +1,116 @@
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 crNetworkManager_exports = {};
30
+ __export(crNetworkManager_exports, {
31
+ CRNetworkManager: () => CRNetworkManager
5
32
  });
6
- exports.CRNetworkManager = void 0;
7
- var _crypto = _interopRequireDefault(require("crypto"));
8
- var _utils = require("../../utils");
9
- var _eventsHelper = require("../utils/eventsHelper");
10
- var _helper = require("../helper");
11
- var network = _interopRequireWildcard(require("../network"));
12
- var _protocolError = require("../protocolError");
13
- 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); }
14
- 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; }
15
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
- // undetected-undetected_playwright-patch - custom imports
17
-
18
- /**
19
- * Copyright 2017 Google Inc. All rights reserved.
20
- * Modifications copyright (c) Microsoft Corporation.
21
- *
22
- * Licensed under the Apache License, Version 2.0 (the "License");
23
- * you may not use this file except in compliance with the License.
24
- * You may obtain a copy of the License at
25
- *
26
- * http://www.apache.org/licenses/LICENSE-2.0
27
- *
28
- * Unless required by applicable law or agreed to in writing, software
29
- * distributed under the License is distributed on an "AS IS" BASIS,
30
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31
- * See the License for the specific language governing permissions and
32
- * limitations under the License.
33
- */
34
-
33
+ module.exports = __toCommonJS(crNetworkManager_exports);
34
+ var import_crypto = __toESM(require("crypto"));
35
+ var import_utils = require("../../utils");
36
+ var import_eventsHelper = require("../utils/eventsHelper");
37
+ var import_helper = require("../helper");
38
+ var network = __toESM(require("../network"));
39
+ var import_protocolError = require("../protocolError");
35
40
  class CRNetworkManager {
36
41
  constructor(page, serviceWorker) {
37
- this._page = void 0;
38
- this._serviceWorker = void 0;
39
- this._requestIdToRequest = new Map();
40
- this._requestIdToRequestWillBeSentEvent = new Map();
42
+ this._requestIdToRequest = /* @__PURE__ */ new Map();
43
+ this._requestIdToRequestWillBeSentEvent = /* @__PURE__ */ new Map();
41
44
  this._credentials = null;
42
- this._attemptedAuthentications = new Set();
45
+ this._attemptedAuthentications = /* @__PURE__ */ new Set();
43
46
  this._userRequestInterceptionEnabled = false;
44
47
  this._protocolRequestInterceptionEnabled = false;
45
48
  this._offline = false;
46
49
  this._extraHTTPHeaders = [];
47
- this._requestIdToRequestPausedEvent = new Map();
50
+ this._requestIdToRequestPausedEvent = /* @__PURE__ */ new Map();
48
51
  this._responseExtraInfoTracker = new ResponseExtraInfoTracker();
49
- this._sessions = new Map();
50
- this._alreadyTrackedNetworkIds = new Set();
52
+ this._sessions = /* @__PURE__ */ new Map();
53
+ this._alreadyTrackedNetworkIds = /* @__PURE__ */ new Set();
51
54
  this._page = page;
52
55
  this._serviceWorker = serviceWorker;
53
56
  }
54
57
  async addSession(session, workerFrame, isMain) {
55
- const sessionInfo = {
56
- session,
57
- isMain,
58
- workerFrame,
59
- eventListeners: []
60
- };
61
- sessionInfo.eventListeners = [_eventsHelper.eventsHelper.addEventListener(session, 'Fetch.requestPaused', this._onRequestPaused.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Fetch.authRequired', this._onAuthRequired.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.requestWillBeSent', this._onRequestWillBeSent.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.requestWillBeSentExtraInfo', this._onRequestWillBeSentExtraInfo.bind(this)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.requestServedFromCache', this._onRequestServedFromCache.bind(this)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.responseReceived', this._onResponseReceived.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.responseReceivedExtraInfo', this._onResponseReceivedExtraInfo.bind(this)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.loadingFinished', this._onLoadingFinished.bind(this, sessionInfo)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.loadingFailed', this._onLoadingFailed.bind(this, sessionInfo))];
58
+ const sessionInfo = { session, isMain, workerFrame, eventListeners: [] };
59
+ sessionInfo.eventListeners = [
60
+ import_eventsHelper.eventsHelper.addEventListener(session, "Fetch.requestPaused", this._onRequestPaused.bind(this, sessionInfo)),
61
+ import_eventsHelper.eventsHelper.addEventListener(session, "Fetch.authRequired", this._onAuthRequired.bind(this, sessionInfo)),
62
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.requestWillBeSent", this._onRequestWillBeSent.bind(this, sessionInfo)),
63
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.requestWillBeSentExtraInfo", this._onRequestWillBeSentExtraInfo.bind(this)),
64
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.requestServedFromCache", this._onRequestServedFromCache.bind(this)),
65
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.responseReceived", this._onResponseReceived.bind(this, sessionInfo)),
66
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.responseReceivedExtraInfo", this._onResponseReceivedExtraInfo.bind(this)),
67
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.loadingFinished", this._onLoadingFinished.bind(this, sessionInfo)),
68
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.loadingFailed", this._onLoadingFailed.bind(this, sessionInfo))
69
+ ];
62
70
  if (this._page) {
63
- sessionInfo.eventListeners.push(...[_eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketCreated', e => this._page._frameManager.onWebSocketCreated(e.requestId, e.url)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketWillSendHandshakeRequest', e => this._page._frameManager.onWebSocketRequest(e.requestId)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketHandshakeResponseReceived', e => this._page._frameManager.onWebSocketResponse(e.requestId, e.response.status, e.response.statusText)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketFrameSent', e => e.response.payloadData && this._page._frameManager.onWebSocketFrameSent(e.requestId, e.response.opcode, e.response.payloadData)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketFrameReceived', e => e.response.payloadData && this._page._frameManager.webSocketFrameReceived(e.requestId, e.response.opcode, e.response.payloadData)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketClosed', e => this._page._frameManager.webSocketClosed(e.requestId)), _eventsHelper.eventsHelper.addEventListener(session, 'Network.webSocketFrameError', e => this._page._frameManager.webSocketError(e.requestId, e.errorMessage))]);
71
+ sessionInfo.eventListeners.push(...[
72
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketCreated", (e) => this._page._frameManager.onWebSocketCreated(e.requestId, e.url)),
73
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketWillSendHandshakeRequest", (e) => this._page._frameManager.onWebSocketRequest(e.requestId)),
74
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketHandshakeResponseReceived", (e) => this._page._frameManager.onWebSocketResponse(e.requestId, e.response.status, e.response.statusText)),
75
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketFrameSent", (e) => e.response.payloadData && this._page._frameManager.onWebSocketFrameSent(e.requestId, e.response.opcode, e.response.payloadData)),
76
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketFrameReceived", (e) => e.response.payloadData && this._page._frameManager.webSocketFrameReceived(e.requestId, e.response.opcode, e.response.payloadData)),
77
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketClosed", (e) => this._page._frameManager.webSocketClosed(e.requestId)),
78
+ import_eventsHelper.eventsHelper.addEventListener(session, "Network.webSocketFrameError", (e) => this._page._frameManager.webSocketError(e.requestId, e.errorMessage))
79
+ ]);
64
80
  }
65
81
  this._sessions.set(session, sessionInfo);
66
- await Promise.all([session.send('Network.enable'), this._updateProtocolRequestInterceptionForSession(sessionInfo, true /* initial */), this._setOfflineForSession(sessionInfo, true /* initial */), this._setExtraHTTPHeadersForSession(sessionInfo, true /* initial */)]);
82
+ await Promise.all([
83
+ session.send("Network.enable"),
84
+ this._updateProtocolRequestInterceptionForSession(
85
+ sessionInfo,
86
+ true
87
+ /* initial */
88
+ ),
89
+ this._setOfflineForSession(
90
+ sessionInfo,
91
+ true
92
+ /* initial */
93
+ ),
94
+ this._setExtraHTTPHeadersForSession(
95
+ sessionInfo,
96
+ true
97
+ /* initial */
98
+ )
99
+ ]);
67
100
  }
68
101
  removeSession(session) {
69
102
  const info = this._sessions.get(session);
70
- if (info) _eventsHelper.eventsHelper.removeEventListeners(info.eventListeners);
103
+ if (info)
104
+ import_eventsHelper.eventsHelper.removeEventListeners(info.eventListeners);
71
105
  this._sessions.delete(session);
72
106
  }
73
107
  async _forEachSession(cb) {
74
- await Promise.all([...this._sessions.values()].map(info => {
75
- if (info.isMain) return cb(info);
76
- return cb(info).catch(e => {
77
- // Broadcasting a message to the closed target should be a noop.
78
- if ((0, _protocolError.isSessionClosedError)(e)) return;
108
+ await Promise.all([...this._sessions.values()].map((info) => {
109
+ if (info.isMain)
110
+ return cb(info);
111
+ return cb(info).catch((e) => {
112
+ if ((0, import_protocolError.isSessionClosedError)(e))
113
+ return;
79
114
  throw e;
80
115
  });
81
116
  }));
@@ -85,15 +120,17 @@ class CRNetworkManager {
85
120
  await this._updateProtocolRequestInterception();
86
121
  }
87
122
  async setOffline(offline) {
88
- if (offline === this._offline) return;
123
+ if (offline === this._offline)
124
+ return;
89
125
  this._offline = offline;
90
- await this._forEachSession(info => this._setOfflineForSession(info));
126
+ await this._forEachSession((info) => this._setOfflineForSession(info));
91
127
  }
92
128
  async _setOfflineForSession(info, initial) {
93
- if (initial && !this._offline) return;
94
- // Workers are affected by the owner frame's Network.emulateNetworkConditions.
95
- if (info.workerFrame) return;
96
- await info.session.send('Network.emulateNetworkConditions', {
129
+ if (initial && !this._offline)
130
+ return;
131
+ if (info.workerFrame)
132
+ return;
133
+ await info.session.send("Network.emulateNetworkConditions", {
97
134
  offline: this._offline,
98
135
  // values of 0 remove any active throttling. crbug.com/456324#c9
99
136
  latency: 0,
@@ -107,67 +144,61 @@ class CRNetworkManager {
107
144
  }
108
145
  async _updateProtocolRequestInterception() {
109
146
  const enabled = this._userRequestInterceptionEnabled || !!this._credentials;
110
- if (enabled === this._protocolRequestInterceptionEnabled) return;
147
+ if (enabled === this._protocolRequestInterceptionEnabled)
148
+ return;
111
149
  this._protocolRequestInterceptionEnabled = enabled;
112
- await this._forEachSession(info => this._updateProtocolRequestInterceptionForSession(info));
150
+ await this._forEachSession((info) => this._updateProtocolRequestInterceptionForSession(info));
113
151
  }
114
152
  async _updateProtocolRequestInterceptionForSession(info, initial) {
115
153
  const enabled = this._protocolRequestInterceptionEnabled;
116
- if (initial && !enabled) return;
117
- const cachePromise = info.session.send('Network.setCacheDisabled', {
118
- cacheDisabled: false
119
- });
120
- let fetchPromise = Promise.resolve(undefined);
154
+ if (initial && !enabled)
155
+ return;
156
+ const cachePromise = info.session.send("Network.setCacheDisabled", { cacheDisabled: false });
157
+ let fetchPromise = Promise.resolve(void 0);
121
158
  if (!info.workerFrame) {
122
- if (enabled) fetchPromise = info.session.send('Fetch.enable', {
123
- handleAuthRequests: true,
124
- patterns: [{
125
- urlPattern: '*',
126
- requestStage: 'Request'
127
- }]
128
- });else fetchPromise = info.session.send('Fetch.disable');
159
+ if (enabled)
160
+ fetchPromise = info.session.send("Fetch.enable", { handleAuthRequests: true, patterns: [{ urlPattern: "*", requestStage: "Request" }] });
161
+ else
162
+ fetchPromise = info.session.send("Fetch.disable");
129
163
  }
130
164
  await Promise.all([cachePromise, fetchPromise]);
131
165
  }
132
166
  async setExtraHTTPHeaders(extraHTTPHeaders) {
133
- if (!this._extraHTTPHeaders.length && !extraHTTPHeaders.length) return;
167
+ if (!this._extraHTTPHeaders.length && !extraHTTPHeaders.length)
168
+ return;
134
169
  this._extraHTTPHeaders = extraHTTPHeaders;
135
- await this._forEachSession(info => this._setExtraHTTPHeadersForSession(info));
170
+ await this._forEachSession((info) => this._setExtraHTTPHeadersForSession(info));
136
171
  }
137
172
  async _setExtraHTTPHeadersForSession(info, initial) {
138
- if (initial && !this._extraHTTPHeaders.length) return;
139
- await info.session.send('Network.setExtraHTTPHeaders', {
140
- headers: (0, _utils.headersArrayToObject)(this._extraHTTPHeaders, false /* lowerCase */)
141
- });
173
+ if (initial && !this._extraHTTPHeaders.length)
174
+ return;
175
+ await info.session.send("Network.setExtraHTTPHeaders", { headers: (0, import_utils.headersArrayToObject)(
176
+ this._extraHTTPHeaders,
177
+ false
178
+ /* lowerCase */
179
+ ) });
142
180
  }
143
181
  async clearCache() {
144
- await this._forEachSession(async info => {
145
- // Sending 'Network.setCacheDisabled' with 'cacheDisabled = true' will clear the MemoryCache.
146
- await info.session.send('Network.setCacheDisabled', {
147
- cacheDisabled: true
148
- });
149
- if (!this._protocolRequestInterceptionEnabled) await info.session.send('Network.setCacheDisabled', {
150
- cacheDisabled: false
151
- });
152
- if (!info.workerFrame) await info.session.send('Network.clearBrowserCache');
182
+ await this._forEachSession(async (info) => {
183
+ await info.session.send("Network.setCacheDisabled", { cacheDisabled: true });
184
+ if (!this._protocolRequestInterceptionEnabled)
185
+ await info.session.send("Network.setCacheDisabled", { cacheDisabled: false });
186
+ if (!info.workerFrame)
187
+ await info.session.send("Network.clearBrowserCache");
153
188
  });
154
189
  }
155
190
  _onRequestWillBeSent(sessionInfo, event) {
156
- // Request interception doesn't happen for data URLs with Network Service.
157
- if (this._protocolRequestInterceptionEnabled && !event.request.url.startsWith('data:')) {
191
+ if (this._protocolRequestInterceptionEnabled && !event.request.url.startsWith("data:")) {
158
192
  const requestId = event.requestId;
159
193
  const requestPausedEvent = this._requestIdToRequestPausedEvent.get(requestId);
160
194
  if (requestPausedEvent) {
161
195
  this._onRequest(sessionInfo, event, requestPausedEvent.sessionInfo, requestPausedEvent.event);
162
196
  this._requestIdToRequestPausedEvent.delete(requestId);
163
197
  } else {
164
- this._requestIdToRequestWillBeSentEvent.set(event.requestId, {
165
- sessionInfo,
166
- event
167
- });
198
+ this._requestIdToRequestWillBeSentEvent.set(event.requestId, { sessionInfo, event });
168
199
  }
169
200
  } else {
170
- this._onRequest(sessionInfo, event, undefined, undefined);
201
+ this._onRequest(sessionInfo, event, void 0, void 0);
171
202
  }
172
203
  }
173
204
  _onRequestServedFromCache(event) {
@@ -177,159 +208,105 @@ class CRNetworkManager {
177
208
  this._responseExtraInfoTracker.requestWillBeSentExtraInfo(event);
178
209
  }
179
210
  _onAuthRequired(sessionInfo, event) {
180
- let response = 'Default';
211
+ let response = "Default";
181
212
  const shouldProvideCredentials = this._shouldProvideCredentials(event.request.url);
182
213
  if (this._attemptedAuthentications.has(event.requestId)) {
183
- response = 'CancelAuth';
214
+ response = "CancelAuth";
184
215
  } else if (shouldProvideCredentials) {
185
- response = 'ProvideCredentials';
216
+ response = "ProvideCredentials";
186
217
  this._attemptedAuthentications.add(event.requestId);
187
218
  }
188
- const {
189
- username,
190
- password
191
- } = shouldProvideCredentials && this._credentials ? this._credentials : {
192
- username: undefined,
193
- password: undefined
194
- };
195
- sessionInfo.session._sendMayFail('Fetch.continueWithAuth', {
219
+ const { username, password } = shouldProvideCredentials && this._credentials ? this._credentials : { username: void 0, password: void 0 };
220
+ sessionInfo.session._sendMayFail("Fetch.continueWithAuth", {
196
221
  requestId: event.requestId,
197
- authChallengeResponse: {
198
- response,
199
- username,
200
- password
201
- }
222
+ authChallengeResponse: { response, username, password }
202
223
  });
203
224
  }
204
225
  _shouldProvideCredentials(url) {
205
- if (!this._credentials) return false;
226
+ if (!this._credentials)
227
+ return false;
206
228
  return !this._credentials.origin || new URL(url).origin.toLowerCase() === this._credentials.origin.toLowerCase();
207
229
  }
208
230
  _onRequestPaused(sessionInfo, event) {
209
231
  if (this._alreadyTrackedNetworkIds.has(event.networkId)) return;
210
232
  if (!event.networkId) {
211
- // Fetch without networkId means that request was not recognized by inspector, and
212
- // it will never receive Network.requestWillBeSent. Continue the request to not affect it.
213
- sessionInfo.session._sendMayFail('Fetch.continueRequest', {
214
- requestId: event.requestId
215
- });
233
+ sessionInfo.session._sendMayFail("Fetch.continueRequest", { requestId: event.requestId });
216
234
  return;
217
235
  }
218
- if (event.request.url.startsWith('data:')) return;
236
+ if (event.request.url.startsWith("data:"))
237
+ return;
219
238
  const requestId = event.networkId;
220
239
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(requestId);
221
240
  if (requestWillBeSentEvent) {
222
241
  this._onRequest(requestWillBeSentEvent.sessionInfo, requestWillBeSentEvent.event, sessionInfo, event);
223
242
  this._requestIdToRequestWillBeSentEvent.delete(requestId);
224
243
  } else {
225
- var _existingRequest$_rou;
226
244
  const existingRequest = this._requestIdToRequest.get(requestId);
227
- const alreadyContinuedParams = existingRequest === null || existingRequest === void 0 || (_existingRequest$_rou = existingRequest._route) === null || _existingRequest$_rou === void 0 ? void 0 : _existingRequest$_rou._alreadyContinuedParams;
245
+ const alreadyContinuedParams = existingRequest?._route?._alreadyContinuedParams;
228
246
  if (alreadyContinuedParams && !event.redirectedRequestId) {
229
- // Sometimes Chromium network stack restarts the request internally.
230
- // For example, when no-cors request hits a "less public address space", it should be resent with cors.
231
- // There are some more examples here: https://source.chromium.org/chromium/chromium/src/+/main:services/network/url_loader.cc;l=1205-1234;drc=d5dd931e0ad3d9ffe74888ec62a3cc106efd7ea6
232
- // There are probably even more cases deep inside the network stack.
233
- //
234
- // Anyway, in this case, continue the request in the same way as before, and it should go through.
235
- //
236
- // Note: make sure not to prematurely continue the redirect, which shares the
237
- // `networkId` between the original request and the redirect.
238
- sessionInfo.session._sendMayFail('Fetch.continueRequest', {
247
+ sessionInfo.session._sendMayFail("Fetch.continueRequest", {
239
248
  ...alreadyContinuedParams,
240
249
  requestId: event.requestId
241
250
  });
242
251
  return;
243
252
  }
244
- this._requestIdToRequestPausedEvent.set(requestId, {
245
- sessionInfo,
246
- event
247
- });
253
+ this._requestIdToRequestPausedEvent.set(requestId, { sessionInfo, event });
248
254
  }
249
255
  }
250
256
  _onRequest(requestWillBeSentSessionInfo, requestWillBeSentEvent, requestPausedSessionInfo, requestPausedEvent) {
251
- var _this$_page, _this$_page2, _this$_page3;
252
257
  if (this._alreadyTrackedNetworkIds.has(requestWillBeSentEvent.initiator.requestId)) return;
253
- if (requestWillBeSentEvent.request.url.startsWith('data:')) return;
258
+ if (requestWillBeSentEvent.request.url.startsWith("data:"))
259
+ return;
254
260
  let redirectedFrom = null;
255
261
  if (requestWillBeSentEvent.redirectResponse) {
256
- const request = this._requestIdToRequest.get(requestWillBeSentEvent.requestId);
257
- // If we connect late to the target, we could have missed the requestWillBeSent event.
258
- if (request) {
259
- this._handleRequestRedirect(request, requestWillBeSentEvent.redirectResponse, requestWillBeSentEvent.timestamp, requestWillBeSentEvent.redirectHasExtraInfo);
260
- redirectedFrom = request;
262
+ const request2 = this._requestIdToRequest.get(requestWillBeSentEvent.requestId);
263
+ if (request2) {
264
+ this._handleRequestRedirect(request2, requestWillBeSentEvent.redirectResponse, requestWillBeSentEvent.timestamp, requestWillBeSentEvent.redirectHasExtraInfo);
265
+ redirectedFrom = request2;
261
266
  }
262
267
  }
263
- let frame = requestWillBeSentEvent.frameId ? (_this$_page = this._page) === null || _this$_page === void 0 ? void 0 : _this$_page._frameManager.frame(requestWillBeSentEvent.frameId) : requestWillBeSentSessionInfo.workerFrame;
264
- // Requests from workers lack frameId, because we receive Network.requestWillBeSent
265
- // on the worker target. However, we receive Fetch.requestPaused on the page target,
266
- // and lack workerFrame there. Luckily, Fetch.requestPaused provides a frameId.
267
- if (!frame && this._page && requestPausedEvent && requestPausedEvent.frameId) frame = this._page._frameManager.frame(requestPausedEvent.frameId);
268
-
269
- // Check if it's main resource request interception (targetId === main frame id).
270
- if (!frame && this._page && requestWillBeSentEvent.frameId === ((_this$_page2 = this._page) === null || _this$_page2 === void 0 ? void 0 : _this$_page2._delegate)._targetId) {
271
- // Main resource request for the page is being intercepted so the Frame is not created
272
- // yet. Precreate it here for the purposes of request interception. It will be updated
273
- // later as soon as the request continues and we receive frame tree from the page.
268
+ let frame = requestWillBeSentEvent.frameId ? this._page?._frameManager.frame(requestWillBeSentEvent.frameId) : requestWillBeSentSessionInfo.workerFrame;
269
+ if (!frame && this._page && requestPausedEvent && requestPausedEvent.frameId)
270
+ frame = this._page._frameManager.frame(requestPausedEvent.frameId);
271
+ if (!frame && this._page && requestWillBeSentEvent.frameId === (this._page?._delegate)._targetId) {
274
272
  frame = this._page._frameManager.frameAttached(requestWillBeSentEvent.frameId, null);
275
273
  }
276
-
277
- // CORS options preflight request is generated by the network stack. If interception is enabled,
278
- // we accept all CORS options, assuming that this was intended when setting route.
279
- //
280
- // Note: it would be better to match the URL against interception patterns.
281
- const isInterceptedOptionsPreflight = !!requestPausedEvent && requestPausedEvent.request.method === 'OPTIONS' && requestWillBeSentEvent.initiator.type === 'preflight';
274
+ const isInterceptedOptionsPreflight = !!requestPausedEvent && requestPausedEvent.request.method === "OPTIONS" && requestWillBeSentEvent.initiator.type === "preflight";
282
275
  if (isInterceptedOptionsPreflight && (this._page || this._serviceWorker).needsRequestInterception()) {
283
276
  const requestHeaders = requestPausedEvent.request.headers;
284
- const responseHeaders = [{
285
- name: 'Access-Control-Allow-Origin',
286
- value: requestHeaders['Origin'] || '*'
287
- }, {
288
- name: 'Access-Control-Allow-Methods',
289
- value: requestHeaders['Access-Control-Request-Method'] || 'GET, POST, OPTIONS, DELETE'
290
- }, {
291
- name: 'Access-Control-Allow-Credentials',
292
- value: 'true'
293
- }];
294
- if (requestHeaders['Access-Control-Request-Headers']) responseHeaders.push({
295
- name: 'Access-Control-Allow-Headers',
296
- value: requestHeaders['Access-Control-Request-Headers']
297
- });
298
- requestPausedSessionInfo.session._sendMayFail('Fetch.fulfillRequest', {
277
+ const responseHeaders = [
278
+ { name: "Access-Control-Allow-Origin", value: requestHeaders["Origin"] || "*" },
279
+ { name: "Access-Control-Allow-Methods", value: requestHeaders["Access-Control-Request-Method"] || "GET, POST, OPTIONS, DELETE" },
280
+ { name: "Access-Control-Allow-Credentials", value: "true" }
281
+ ];
282
+ if (requestHeaders["Access-Control-Request-Headers"])
283
+ responseHeaders.push({ name: "Access-Control-Allow-Headers", value: requestHeaders["Access-Control-Request-Headers"] });
284
+ requestPausedSessionInfo.session._sendMayFail("Fetch.fulfillRequest", {
299
285
  requestId: requestPausedEvent.requestId,
300
286
  responseCode: 204,
301
287
  responsePhrase: network.statusText(204),
302
288
  responseHeaders,
303
- body: ''
289
+ body: ""
304
290
  });
305
291
  return;
306
292
  }
307
-
308
- // Non-service-worker requests MUST have a frame—if they don't, we pretend there was no request
309
293
  if (!frame && !this._serviceWorker) {
310
- if (requestPausedEvent) requestPausedSessionInfo.session._sendMayFail('Fetch.continueRequest', {
311
- requestId: requestPausedEvent.requestId
312
- });
294
+ if (requestPausedEvent)
295
+ requestPausedSessionInfo.session._sendMayFail("Fetch.continueRequest", { requestId: requestPausedEvent.requestId });
313
296
  return;
314
297
  }
315
298
  let route = null;
316
299
  let headersOverride;
317
300
  if (requestPausedEvent) {
318
- // We do not support intercepting redirects.
319
301
  if (redirectedFrom || !this._userRequestInterceptionEnabled && this._protocolRequestInterceptionEnabled) {
320
- var _redirectedFrom;
321
- // Chromium does not preserve header overrides between redirects, so we have to do it ourselves.
322
- headersOverride = (_redirectedFrom = redirectedFrom) === null || _redirectedFrom === void 0 || (_redirectedFrom = _redirectedFrom._originalRequestRoute) === null || _redirectedFrom === void 0 || (_redirectedFrom = _redirectedFrom._alreadyContinuedParams) === null || _redirectedFrom === void 0 ? void 0 : _redirectedFrom.headers;
323
- requestPausedSessionInfo.session._sendMayFail('Fetch.continueRequest', {
324
- requestId: requestPausedEvent.requestId,
325
- headers: headersOverride
326
- });
302
+ headersOverride = redirectedFrom?._originalRequestRoute?._alreadyContinuedParams?.headers;
303
+ requestPausedSessionInfo.session._sendMayFail("Fetch.continueRequest", { requestId: requestPausedEvent.requestId, headers: headersOverride });
327
304
  } else {
328
305
  route = new RouteImpl(requestPausedSessionInfo.session, requestPausedEvent.requestId, this._page, requestPausedEvent.networkId, this);
329
306
  }
330
307
  }
331
- const isNavigationRequest = requestWillBeSentEvent.requestId === requestWillBeSentEvent.loaderId && requestWillBeSentEvent.type === 'Document';
332
- const documentId = isNavigationRequest ? requestWillBeSentEvent.loaderId : undefined;
308
+ const isNavigationRequest = requestWillBeSentEvent.requestId === requestWillBeSentEvent.loaderId && requestWillBeSentEvent.type === "Document";
309
+ const documentId = isNavigationRequest ? requestWillBeSentEvent.loaderId : void 0;
333
310
  const request = new InterceptableRequest({
334
311
  session: requestWillBeSentSessionInfo.session,
335
312
  context: (this._page || this._serviceWorker)._browserContext,
@@ -344,47 +321,27 @@ class CRNetworkManager {
344
321
  });
345
322
  this._requestIdToRequest.set(requestWillBeSentEvent.requestId, request);
346
323
  if (route) {
347
- // We may not receive extra info when intercepting the request.
348
- // Use the headers from the Fetch.requestPausedPayload and release the allHeaders()
349
- // right away, so that client can call it from the route handler.
350
- request.request.setRawRequestHeaders((0, _utils.headersObjectToArray)(requestPausedEvent.request.headers, '\n'));
324
+ request.request.setRawRequestHeaders((0, import_utils.headersObjectToArray)(requestPausedEvent.request.headers, "\n"));
351
325
  }
352
- (((_this$_page3 = this._page) === null || _this$_page3 === void 0 ? void 0 : _this$_page3._frameManager) || this._serviceWorker).requestStarted(request.request, route || undefined);
326
+ (this._page?._frameManager || this._serviceWorker).requestStarted(request.request, route || void 0);
353
327
  }
354
328
  _createResponse(request, responsePayload, hasExtraInfo) {
355
- var _responsePayload$secu, _responsePayload$secu2, _responsePayload$secu3, _responsePayload$secu4, _responsePayload$secu5;
356
329
  const getResponseBody = async () => {
357
- var _request$_route;
358
- const contentLengthHeader = Object.entries(responsePayload.headers).find(header => header[0].toLowerCase() === 'content-length');
359
- const expectedLength = contentLengthHeader ? +contentLengthHeader[1] : undefined;
330
+ const contentLengthHeader = Object.entries(responsePayload.headers).find((header) => header[0].toLowerCase() === "content-length");
331
+ const expectedLength = contentLengthHeader ? +contentLengthHeader[1] : void 0;
360
332
  const session = request.session;
361
- const response = await session.send('Network.getResponseBody', {
362
- requestId: request._requestId
363
- });
364
- if (response.body || !expectedLength) return Buffer.from(response.body, response.base64Encoded ? 'base64' : 'utf8');
365
-
366
- // Make sure no network requests sent while reading the body for fulfilled requests.
367
- if ((_request$_route = request._route) !== null && _request$_route !== void 0 && _request$_route._fulfilled) return Buffer.from('');
368
-
369
- // For <link prefetch we are going to receive empty body with non-empty content-length expectation. Reach out for the actual content.
370
- const resource = await session.send('Network.loadNetworkResource', {
371
- url: request.request.url(),
372
- frameId: this._serviceWorker ? undefined : request.request.frame()._id,
373
- options: {
374
- disableCache: false,
375
- includeCredentials: true
376
- }
377
- });
333
+ const response2 = await session.send("Network.getResponseBody", { requestId: request._requestId });
334
+ if (response2.body || !expectedLength)
335
+ return Buffer.from(response2.body, response2.base64Encoded ? "base64" : "utf8");
336
+ if (request._route?._fulfilled)
337
+ return Buffer.from("");
338
+ const resource = await session.send("Network.loadNetworkResource", { url: request.request.url(), frameId: this._serviceWorker ? void 0 : request.request.frame()._id, options: { disableCache: false, includeCredentials: true } });
378
339
  const chunks = [];
379
340
  while (resource.resource.stream) {
380
- const chunk = await session.send('IO.read', {
381
- handle: resource.resource.stream
382
- });
383
- chunks.push(Buffer.from(chunk.data, chunk.base64Encoded ? 'base64' : 'utf-8'));
341
+ const chunk = await session.send("IO.read", { handle: resource.resource.stream });
342
+ chunks.push(Buffer.from(chunk.data, chunk.base64Encoded ? "base64" : "utf-8"));
384
343
  if (chunk.eof) {
385
- await session.send('IO.close', {
386
- handle: resource.resource.stream
387
- });
344
+ await session.send("IO.close", { handle: resource.resource.stream });
388
345
  break;
389
346
  }
390
347
  }
@@ -394,7 +351,7 @@ class CRNetworkManager {
394
351
  let timing;
395
352
  if (timingPayload && !this._responseExtraInfoTracker.servedFromCache(request._requestId)) {
396
353
  timing = {
397
- startTime: (timingPayload.requestTime - request._timestamp + request._wallTime) * 1000,
354
+ startTime: (timingPayload.requestTime - request._timestamp + request._wallTime) * 1e3,
398
355
  domainLookupStart: timingPayload.dnsStart,
399
356
  domainLookupEnd: timingPayload.dnsEnd,
400
357
  connectStart: timingPayload.connectStart,
@@ -405,7 +362,7 @@ class CRNetworkManager {
405
362
  };
406
363
  } else {
407
364
  timing = {
408
- startTime: request._wallTime * 1000,
365
+ startTime: request._wallTime * 1e3,
409
366
  domainLookupStart: -1,
410
367
  domainLookupEnd: -1,
411
368
  connectStart: -1,
@@ -415,8 +372,8 @@ class CRNetworkManager {
415
372
  responseStart: -1
416
373
  };
417
374
  }
418
- const response = new network.Response(request.request, responsePayload.status, responsePayload.statusText, (0, _utils.headersObjectToArray)(responsePayload.headers), timing, getResponseBody, !!responsePayload.fromServiceWorker, responsePayload.protocol);
419
- if (responsePayload !== null && responsePayload !== void 0 && responsePayload.remoteIPAddress && typeof (responsePayload === null || responsePayload === void 0 ? void 0 : responsePayload.remotePort) === 'number') {
375
+ const response = new network.Response(request.request, responsePayload.status, responsePayload.statusText, (0, import_utils.headersObjectToArray)(responsePayload.headers), timing, getResponseBody, !!responsePayload.fromServiceWorker, responsePayload.protocol);
376
+ if (responsePayload?.remoteIPAddress && typeof responsePayload?.remotePort === "number") {
420
377
  response._serverAddrFinished({
421
378
  ipAddress: responsePayload.remoteIPAddress,
422
379
  port: responsePayload.remotePort
@@ -425,137 +382,96 @@ class CRNetworkManager {
425
382
  response._serverAddrFinished();
426
383
  }
427
384
  response._securityDetailsFinished({
428
- protocol: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu = responsePayload.securityDetails) === null || _responsePayload$secu === void 0 ? void 0 : _responsePayload$secu.protocol,
429
- subjectName: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu2 = responsePayload.securityDetails) === null || _responsePayload$secu2 === void 0 ? void 0 : _responsePayload$secu2.subjectName,
430
- issuer: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu3 = responsePayload.securityDetails) === null || _responsePayload$secu3 === void 0 ? void 0 : _responsePayload$secu3.issuer,
431
- validFrom: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu4 = responsePayload.securityDetails) === null || _responsePayload$secu4 === void 0 ? void 0 : _responsePayload$secu4.validFrom,
432
- validTo: responsePayload === null || responsePayload === void 0 || (_responsePayload$secu5 = responsePayload.securityDetails) === null || _responsePayload$secu5 === void 0 ? void 0 : _responsePayload$secu5.validTo
385
+ protocol: responsePayload?.securityDetails?.protocol,
386
+ subjectName: responsePayload?.securityDetails?.subjectName,
387
+ issuer: responsePayload?.securityDetails?.issuer,
388
+ validFrom: responsePayload?.securityDetails?.validFrom,
389
+ validTo: responsePayload?.securityDetails?.validTo
433
390
  });
434
391
  this._responseExtraInfoTracker.processResponse(request._requestId, response, hasExtraInfo);
435
392
  return response;
436
393
  }
437
394
  _deleteRequest(request) {
438
395
  this._requestIdToRequest.delete(request._requestId);
439
- if (request._interceptionId) this._attemptedAuthentications.delete(request._interceptionId);
396
+ if (request._interceptionId)
397
+ this._attemptedAuthentications.delete(request._interceptionId);
440
398
  }
441
399
  _handleRequestRedirect(request, responsePayload, timestamp, hasExtraInfo) {
442
- var _this$_page4, _this$_page5;
443
400
  const response = this._createResponse(request, responsePayload, hasExtraInfo);
444
401
  response.setTransferSize(null);
445
402
  response.setEncodedBodySize(null);
446
- response._requestFinished((timestamp - request._timestamp) * 1000);
403
+ response._requestFinished((timestamp - request._timestamp) * 1e3);
447
404
  this._deleteRequest(request);
448
- (((_this$_page4 = this._page) === null || _this$_page4 === void 0 ? void 0 : _this$_page4._frameManager) || this._serviceWorker).requestReceivedResponse(response);
449
- (((_this$_page5 = this._page) === null || _this$_page5 === void 0 ? void 0 : _this$_page5._frameManager) || this._serviceWorker).reportRequestFinished(request.request, response);
405
+ (this._page?._frameManager || this._serviceWorker).requestReceivedResponse(response);
406
+ (this._page?._frameManager || this._serviceWorker).reportRequestFinished(request.request, response);
450
407
  }
451
408
  _onResponseReceivedExtraInfo(event) {
452
409
  this._responseExtraInfoTracker.responseReceivedExtraInfo(event);
453
410
  }
454
411
  _onResponseReceived(sessionInfo, event) {
455
- var _this$_page6;
456
412
  let request = this._requestIdToRequest.get(event.requestId);
457
- // For frame-level Requests that are handled by a Service Worker's fetch handler, we'll never get a requestPaused event, so we need to
458
- // manually create the request. In an ideal world, crNetworkManager would be able to know this on Network.requestWillBeSent, but there
459
- // is not enough metadata there.
460
413
  if (!request && event.response.fromServiceWorker) {
461
414
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(event.requestId);
462
415
  if (requestWillBeSentEvent) {
463
416
  this._requestIdToRequestWillBeSentEvent.delete(event.requestId);
464
- this._onRequest(sessionInfo, requestWillBeSentEvent.event, undefined, undefined);
417
+ this._onRequest(sessionInfo, requestWillBeSentEvent.event, void 0, void 0);
465
418
  request = this._requestIdToRequest.get(event.requestId);
466
419
  }
467
420
  }
468
- // FileUpload sends a response without a matching request.
469
- if (!request) return;
421
+ if (!request)
422
+ return;
470
423
  const response = this._createResponse(request, event.response, event.hasExtraInfo);
471
- (((_this$_page6 = this._page) === null || _this$_page6 === void 0 ? void 0 : _this$_page6._frameManager) || this._serviceWorker).requestReceivedResponse(response);
424
+ (this._page?._frameManager || this._serviceWorker).requestReceivedResponse(response);
472
425
  }
473
426
  _onLoadingFinished(sessionInfo, event) {
474
- var _this$_page7;
475
427
  this._responseExtraInfoTracker.loadingFinished(event);
476
428
  const request = this._requestIdToRequest.get(event.requestId);
477
- // For certain requestIds we never receive requestWillBeSent event.
478
- // @see https://crbug.com/750469
479
- if (!request) return;
429
+ if (!request)
430
+ return;
480
431
  this._maybeUpdateOOPIFMainRequest(sessionInfo, request);
481
-
482
- // Under certain conditions we never get the Network.responseReceived
483
- // event from protocol. @see https://crbug.com/883475
484
432
  const response = request.request._existingResponse();
485
433
  if (response) {
486
434
  response.setTransferSize(event.encodedDataLength);
487
- response.responseHeadersSize().then(size => response.setEncodedBodySize(event.encodedDataLength - size));
488
- response._requestFinished(_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
435
+ response.responseHeadersSize().then((size) => response.setEncodedBodySize(event.encodedDataLength - size));
436
+ response._requestFinished(import_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
489
437
  }
490
438
  this._deleteRequest(request);
491
- (((_this$_page7 = this._page) === null || _this$_page7 === void 0 ? void 0 : _this$_page7._frameManager) || this._serviceWorker).reportRequestFinished(request.request, response);
439
+ (this._page?._frameManager || this._serviceWorker).reportRequestFinished(request.request, response);
492
440
  }
493
441
  _onLoadingFailed(sessionInfo, event) {
494
- var _this$_page8;
495
442
  this._responseExtraInfoTracker.loadingFailed(event);
496
443
  let request = this._requestIdToRequest.get(event.requestId);
497
444
  if (!request) {
498
445
  const requestWillBeSentEvent = this._requestIdToRequestWillBeSentEvent.get(event.requestId);
499
446
  if (requestWillBeSentEvent) {
500
- // This is a case where request has failed before we had a chance to intercept it.
501
- // We stop waiting for Fetch.requestPaused (it might never come), and dispatch request event
502
- // right away, followed by requestfailed event.
503
447
  this._requestIdToRequestWillBeSentEvent.delete(event.requestId);
504
- this._onRequest(sessionInfo, requestWillBeSentEvent.event, undefined, undefined);
448
+ this._onRequest(sessionInfo, requestWillBeSentEvent.event, void 0, void 0);
505
449
  request = this._requestIdToRequest.get(event.requestId);
506
450
  }
507
451
  }
508
-
509
- // For certain requestIds we never receive requestWillBeSent event.
510
- // @see https://crbug.com/750469
511
- if (!request) return;
452
+ if (!request)
453
+ return;
512
454
  this._maybeUpdateOOPIFMainRequest(sessionInfo, request);
513
455
  const response = request.request._existingResponse();
514
456
  if (response) {
515
457
  response.setTransferSize(null);
516
458
  response.setEncodedBodySize(null);
517
- response._requestFinished(_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
459
+ response._requestFinished(import_helper.helper.secondsToRoundishMillis(event.timestamp - request._timestamp));
518
460
  } else {
519
- // Loading failed before response has arrived - there will be no extra info events.
520
461
  request.request.setRawRequestHeaders(null);
521
462
  }
522
463
  this._deleteRequest(request);
523
- request.request._setFailureText(event.errorText || event.blockedReason || '');
524
- (((_this$_page8 = this._page) === null || _this$_page8 === void 0 ? void 0 : _this$_page8._frameManager) || this._serviceWorker).requestFailed(request.request, !!event.canceled);
464
+ request.request._setFailureText(event.errorText || event.blockedReason || "");
465
+ (this._page?._frameManager || this._serviceWorker).requestFailed(request.request, !!event.canceled);
525
466
  }
526
467
  _maybeUpdateOOPIFMainRequest(sessionInfo, request) {
527
- // OOPIF has a main request that starts in the parent session but finishes in the child session.
528
- // We check for the main request by matching loaderId and requestId, and if it now belongs to
529
- // a child session, migrate it there.
530
- if (request.session !== sessionInfo.session && !sessionInfo.isMain && request._documentId === request._requestId) request.session = sessionInfo.session;
468
+ if (request.session !== sessionInfo.session && !sessionInfo.isMain && request._documentId === request._requestId)
469
+ request.session = sessionInfo.session;
531
470
  }
532
471
  }
533
- exports.CRNetworkManager = CRNetworkManager;
534
472
  class InterceptableRequest {
535
473
  constructor(options) {
536
- this.request = void 0;
537
- this._requestId = void 0;
538
- this._interceptionId = void 0;
539
- this._documentId = void 0;
540
- this._timestamp = void 0;
541
- this._wallTime = void 0;
542
- this._route = void 0;
543
- // Only first request in the chain can be intercepted, so this will
544
- // store the first and only Route in the chain (if any).
545
- this._originalRequestRoute = void 0;
546
- this.session = void 0;
547
- const {
548
- session,
549
- context,
550
- frame,
551
- documentId,
552
- route,
553
- requestWillBeSentEvent,
554
- requestPausedEvent,
555
- redirectedFrom,
556
- serviceWorker,
557
- headersOverride
558
- } = options;
474
+ const { session, context, frame, documentId, route, requestWillBeSentEvent, requestPausedEvent, redirectedFrom, serviceWorker, headersOverride } = options;
559
475
  this.session = session;
560
476
  this._timestamp = requestWillBeSentEvent.timestamp;
561
477
  this._wallTime = requestWillBeSentEvent.wallTime;
@@ -563,25 +479,23 @@ class InterceptableRequest {
563
479
  this._interceptionId = requestPausedEvent && requestPausedEvent.requestId;
564
480
  this._documentId = documentId;
565
481
  this._route = route;
566
- this._originalRequestRoute = route !== null && route !== void 0 ? route : redirectedFrom === null || redirectedFrom === void 0 ? void 0 : redirectedFrom._originalRequestRoute;
482
+ this._originalRequestRoute = route ?? redirectedFrom?._originalRequestRoute;
567
483
  const {
568
484
  headers,
569
485
  method,
570
486
  url,
571
487
  postDataEntries = null
572
488
  } = requestPausedEvent ? requestPausedEvent.request : requestWillBeSentEvent.request;
573
- const type = (requestWillBeSentEvent.type || '').toLowerCase();
489
+ const type = (requestWillBeSentEvent.type || "").toLowerCase();
574
490
  let postDataBuffer = null;
575
- const entries = postDataEntries === null || postDataEntries === void 0 ? void 0 : postDataEntries.filter(entry => entry.bytes);
576
- if (entries && entries.length) postDataBuffer = Buffer.concat(entries.map(entry => Buffer.from(entry.bytes, 'base64')));
577
- this.request = new network.Request(context, frame, serviceWorker, (redirectedFrom === null || redirectedFrom === void 0 ? void 0 : redirectedFrom.request) || null, documentId, url, type, method, postDataBuffer, headersOverride || (0, _utils.headersObjectToArray)(headers));
491
+ const entries = postDataEntries?.filter((entry) => entry.bytes);
492
+ if (entries && entries.length)
493
+ postDataBuffer = Buffer.concat(entries.map((entry) => Buffer.from(entry.bytes, "base64")));
494
+ this.request = new network.Request(context, frame, serviceWorker, redirectedFrom?.request || null, documentId, url, type, method, postDataBuffer, headersOverride || (0, import_utils.headersObjectToArray)(headers));
578
495
  }
579
496
  }
580
497
  class RouteImpl {
581
498
  constructor(session, interceptionId, page, networkId, sessionManager) {
582
- this._session = void 0;
583
- this._interceptionId = void 0;
584
- this._alreadyContinuedParams = void 0;
585
499
  this._fulfilled = false;
586
500
  this._sessionManager = void 0;
587
501
  this._networkId = void 0;
@@ -591,7 +505,7 @@ class RouteImpl {
591
505
  this._page = page;
592
506
  this._networkId = networkId;
593
507
  this._sessionManager = sessionManager;
594
- _eventsHelper.eventsHelper.addEventListener(this._session, 'Fetch.requestPaused', async e => await this._networkRequestIntercepted(e));
508
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Fetch.requestPaused", async (e) => await this._networkRequestIntercepted(e));
595
509
  }
596
510
  async continue(overrides) {
597
511
  this._alreadyContinuedParams = {
@@ -599,41 +513,35 @@ class RouteImpl {
599
513
  url: overrides.url,
600
514
  headers: overrides.headers,
601
515
  method: overrides.method,
602
- postData: overrides.postData ? overrides.postData.toString('base64') : undefined
516
+ postData: overrides.postData ? overrides.postData.toString("base64") : void 0
603
517
  };
604
- if (overrides.url && (overrides.url === 'http://patchright-init-script-inject.internal/' || overrides.url === 'https://patchright-init-script-inject.internal/')) {
518
+ if (overrides.url && (overrides.url === "http://patchright-init-script-inject.internal/" || overrides.url === "https://patchright-init-script-inject.internal/")) {
605
519
  await catchDisallowedErrors(async () => {
606
520
  this._sessionManager._alreadyTrackedNetworkIds.add(this._networkId);
607
- this._session.send('Fetch.continueRequest', {
608
- requestId: this._interceptionId,
609
- interceptResponse: true
610
- });
521
+ this._session.send("Fetch.continueRequest", { requestId: this._interceptionId, interceptResponse: true });
611
522
  });
612
523
  } else {
613
524
  await catchDisallowedErrors(async () => {
614
- await this._session.send('Fetch.continueRequest', this._alreadyContinuedParams);
525
+ await this._session.send("Fetch.continueRequest", this._alreadyContinuedParams);
615
526
  });
616
527
  }
617
528
  }
618
529
  async fulfill(response) {
619
- const isTextHtml = response.resourceType === 'Document' || response.headers.some(header => header.name === 'content-type' && header.value.includes('text/html'));
530
+ const isTextHtml = response.resourceType === "Document" || response.headers.some((header) => header.name === "content-type" && header.value.includes("text/html"));
620
531
  var allInjections = [...this._page._delegate._mainFrameSession._evaluateOnNewDocumentScripts];
621
532
  for (const binding of this._page._delegate._browserContext._pageBindings.values()) {
622
533
  if (!allInjections.includes(binding)) allInjections.push(binding);
623
534
  }
624
535
  if (isTextHtml && allInjections.length) {
625
- // I Chatted so hard for this Code
626
- let scriptNonce = _crypto.default.randomBytes(22).toString('hex');
536
+ let scriptNonce = import_crypto.default.randomBytes(22).toString("hex");
627
537
  for (let i = 0; i < response.headers.length; i++) {
628
- if (response.headers[i].name === 'content-security-policy' || response.headers[i].name === 'content-security-policy-report-only') {
629
- // Search for an existing script-src nonce that we can hijack
538
+ if (response.headers[i].name === "content-security-policy" || response.headers[i].name === "content-security-policy-report-only") {
630
539
  let cspValue = response.headers[i].value;
631
540
  const nonceRegex = /script-src[^;]*'nonce-([\w-]+)'/;
632
541
  const nonceMatch = cspValue.match(nonceRegex);
633
542
  if (nonceMatch) {
634
543
  scriptNonce = nonceMatch[1];
635
544
  } else {
636
- // Add the new nonce value to the script-src directive
637
545
  const scriptSrcRegex = /(script-src[^;]*)(;|$)/;
638
546
  const newCspValue = cspValue.replace(scriptSrcRegex, `$1 'nonce-${scriptNonce}'$2`);
639
547
  response.headers[i].value = newCspValue;
@@ -642,22 +550,22 @@ class RouteImpl {
642
550
  }
643
551
  }
644
552
  let injectionHTML = "";
645
- allInjections.forEach(script => {
646
- let scriptId = _crypto.default.randomBytes(22).toString('hex');
553
+ allInjections.forEach((script) => {
554
+ let scriptId = import_crypto.default.randomBytes(22).toString("hex");
647
555
  injectionHTML += `<script class="${this._page._delegate.initScriptTag}" nonce="${scriptNonce}" type="text/javascript">document.getElementById("${scriptId}")?.remove();${script.source}</script>`;
648
556
  });
649
557
  if (response.isBase64) {
650
558
  response.isBase64 = false;
651
- response.body = injectionHTML + Buffer.from(response.body, 'base64').toString('utf-8');
559
+ response.body = injectionHTML + Buffer.from(response.body, "base64").toString("utf-8");
652
560
  } else {
653
561
  response.body = injectionHTML + response.body;
654
562
  }
655
563
  }
656
564
  this._fulfilled = true;
657
- const body = response.isBase64 ? response.body : Buffer.from(response.body).toString('base64');
565
+ const body = response.isBase64 ? response.body : Buffer.from(response.body).toString("base64");
658
566
  const responseHeaders = splitSetCookieHeader(response.headers);
659
567
  await catchDisallowedErrors(async () => {
660
- await this._session.send('Fetch.fulfillRequest', {
568
+ await this._session.send("Fetch.fulfillRequest", {
661
569
  requestId: response.interceptionId ? response.interceptionId : this._interceptionId,
662
570
  responseCode: response.status,
663
571
  responsePhrase: network.statusText(response.status),
@@ -666,34 +574,26 @@ class RouteImpl {
666
574
  });
667
575
  });
668
576
  }
669
- async abort(errorCode = 'failed') {
577
+ async abort(errorCode = "failed") {
670
578
  const errorReason = errorReasons[errorCode];
671
- (0, _utils.assert)(errorReason, 'Unknown error code: ' + errorCode);
579
+ (0, import_utils.assert)(errorReason, "Unknown error code: " + errorCode);
672
580
  await catchDisallowedErrors(async () => {
673
- await this._session.send('Fetch.failRequest', {
581
+ await this._session.send("Fetch.failRequest", {
674
582
  requestId: this._interceptionId,
675
583
  errorReason
676
584
  });
677
585
  });
678
586
  }
679
587
  async _networkRequestIntercepted(event) {
680
- if (event.resourceType !== 'Document') {
681
- /*await catchDisallowedErrors(async () => {
682
- await this._session.send('Fetch.continueRequest', { requestId: event.requestId });
683
- });*/
588
+ if (event.resourceType !== "Document") {
684
589
  return;
685
590
  }
686
591
  if (this._networkId != event.networkId || !this._sessionManager._alreadyTrackedNetworkIds.has(event.networkId)) return;
687
592
  try {
688
593
  if (event.responseStatusCode >= 301 && event.responseStatusCode <= 308 || event.redirectedRequestId && !event.responseStatusCode) {
689
- await this._session.send('Fetch.continueRequest', {
690
- requestId: event.requestId,
691
- interceptResponse: true
692
- });
594
+ await this._session.send("Fetch.continueRequest", { requestId: event.requestId, interceptResponse: true });
693
595
  } else {
694
- const responseBody = await this._session.send('Fetch.getResponseBody', {
695
- requestId: event.requestId
696
- });
596
+ const responseBody = await this._session.send("Fetch.getResponseBody", { requestId: event.requestId });
697
597
  await this.fulfill({
698
598
  headers: event.responseHeaders,
699
599
  isBase64: true,
@@ -704,70 +604,51 @@ class RouteImpl {
704
604
  });
705
605
  }
706
606
  } catch (error) {
707
- await this._session._sendMayFail('Fetch.continueRequest', {
708
- requestId: event.requestId
709
- });
607
+ await this._session._sendMayFail("Fetch.continueRequest", { requestId: event.requestId });
710
608
  }
711
609
  }
712
610
  }
713
-
714
- // In certain cases, protocol will return error if the request was already canceled
715
- // or the page was closed. We should tolerate these errors but propagate other.
716
611
  async function catchDisallowedErrors(callback) {
717
612
  try {
718
613
  return await callback();
719
614
  } catch (e) {
720
- if ((0, _protocolError.isProtocolError)(e) && e.message.includes('Invalid http status code or phrase')) throw e;
615
+ if ((0, import_protocolError.isProtocolError)(e) && e.message.includes("Invalid http status code or phrase"))
616
+ throw e;
617
+ if ((0, import_protocolError.isProtocolError)(e) && e.message.includes("Unsafe header"))
618
+ throw e;
721
619
  }
722
620
  }
723
621
  function splitSetCookieHeader(headers) {
724
- const index = headers.findIndex(({
725
- name
726
- }) => name.toLowerCase() === 'set-cookie');
727
- if (index === -1) return headers;
622
+ const index = headers.findIndex(({ name }) => name.toLowerCase() === "set-cookie");
623
+ if (index === -1)
624
+ return headers;
728
625
  const header = headers[index];
729
- const values = header.value.split('\n');
730
- if (values.length === 1) return headers;
626
+ const values = header.value.split("\n");
627
+ if (values.length === 1)
628
+ return headers;
731
629
  const result = headers.slice();
732
- result.splice(index, 1, ...values.map(value => ({
733
- name: header.name,
734
- value
735
- })));
630
+ result.splice(index, 1, ...values.map((value) => ({ name: header.name, value })));
736
631
  return result;
737
632
  }
738
633
  const errorReasons = {
739
- 'aborted': 'Aborted',
740
- 'accessdenied': 'AccessDenied',
741
- 'addressunreachable': 'AddressUnreachable',
742
- 'blockedbyclient': 'BlockedByClient',
743
- 'blockedbyresponse': 'BlockedByResponse',
744
- 'connectionaborted': 'ConnectionAborted',
745
- 'connectionclosed': 'ConnectionClosed',
746
- 'connectionfailed': 'ConnectionFailed',
747
- 'connectionrefused': 'ConnectionRefused',
748
- 'connectionreset': 'ConnectionReset',
749
- 'internetdisconnected': 'InternetDisconnected',
750
- 'namenotresolved': 'NameNotResolved',
751
- 'timedout': 'TimedOut',
752
- 'failed': 'Failed'
634
+ "aborted": "Aborted",
635
+ "accessdenied": "AccessDenied",
636
+ "addressunreachable": "AddressUnreachable",
637
+ "blockedbyclient": "BlockedByClient",
638
+ "blockedbyresponse": "BlockedByResponse",
639
+ "connectionaborted": "ConnectionAborted",
640
+ "connectionclosed": "ConnectionClosed",
641
+ "connectionfailed": "ConnectionFailed",
642
+ "connectionrefused": "ConnectionRefused",
643
+ "connectionreset": "ConnectionReset",
644
+ "internetdisconnected": "InternetDisconnected",
645
+ "namenotresolved": "NameNotResolved",
646
+ "timedout": "TimedOut",
647
+ "failed": "Failed"
753
648
  };
754
- // This class aligns responses with response headers from extra info:
755
- // - Network.requestWillBeSent, Network.responseReceived, Network.loadingFinished/loadingFailed are
756
- // dispatched using one channel.
757
- // - Network.requestWillBeSentExtraInfo and Network.responseReceivedExtraInfo are dispatched on
758
- // another channel. Those channels are not associated, so events come in random order.
759
- //
760
- // This class will associate responses with the new headers. These extra info headers will become
761
- // available to client reliably upon requestfinished event only. It consumes CDP
762
- // signals on one end and processResponse(network.Response) signals on the other hands. It then makes
763
- // sure that responses have all the extra headers in place by the time request finishes.
764
- //
765
- // The shape of the instrumentation API is deliberately following the CDP, so that it
766
- // is clear what is called when and what this means to the tracker without extra
767
- // documentation.
768
649
  class ResponseExtraInfoTracker {
769
650
  constructor() {
770
- this._requests = new Map();
651
+ this._requests = /* @__PURE__ */ new Map();
771
652
  }
772
653
  requestWillBeSentExtraInfo(event) {
773
654
  const info = this._getOrCreateEntry(event.requestId);
@@ -781,7 +662,7 @@ class ResponseExtraInfoTracker {
781
662
  }
782
663
  servedFromCache(requestId) {
783
664
  const info = this._requests.get(requestId);
784
- return !!(info !== null && info !== void 0 && info.servedFromCache);
665
+ return !!info?.servedFromCache;
785
666
  }
786
667
  responseReceivedExtraInfo(event) {
787
668
  const info = this._getOrCreateEntry(event.requestId);
@@ -790,12 +671,8 @@ class ResponseExtraInfoTracker {
790
671
  this._checkFinished(info);
791
672
  }
792
673
  processResponse(requestId, response, hasExtraInfo) {
793
- var _info;
794
674
  let info = this._requests.get(requestId);
795
- // Cached responses have erroneous "hasExtraInfo" flag.
796
- // https://bugs.chromium.org/p/chromium/issues/detail?id=1340398
797
- if (!hasExtraInfo || (_info = info) !== null && _info !== void 0 && _info.servedFromCache) {
798
- // Use "provisional" headers as "raw" ones.
675
+ if (!hasExtraInfo || info?.servedFromCache) {
799
676
  response.request().setRawRequestHeaders(null);
800
677
  response.setResponseHeadersSize(null);
801
678
  response.setRawResponseHeaders(null);
@@ -807,13 +684,15 @@ class ResponseExtraInfoTracker {
807
684
  }
808
685
  loadingFinished(event) {
809
686
  const info = this._requests.get(event.requestId);
810
- if (!info) return;
687
+ if (!info)
688
+ return;
811
689
  info.loadingFinished = event;
812
690
  this._checkFinished(info);
813
691
  }
814
692
  loadingFailed(event) {
815
693
  const info = this._requests.get(event.requestId);
816
- if (!info) return;
694
+ if (!info)
695
+ return;
817
696
  info.loadingFailed = event;
818
697
  this._checkFinished(info);
819
698
  }
@@ -821,7 +700,7 @@ class ResponseExtraInfoTracker {
821
700
  let info = this._requests.get(requestId);
822
701
  if (!info) {
823
702
  info = {
824
- requestId: requestId,
703
+ requestId,
825
704
  requestWillBeSentExtraInfo: [],
826
705
  responseReceivedExtraInfo: [],
827
706
  responses: []
@@ -834,28 +713,29 @@ class ResponseExtraInfoTracker {
834
713
  const response = info.responses[index];
835
714
  const requestExtraInfo = info.requestWillBeSentExtraInfo[index];
836
715
  if (response && requestExtraInfo) {
837
- response.request().setRawRequestHeaders((0, _utils.headersObjectToArray)(requestExtraInfo.headers, '\n'));
838
- info.requestWillBeSentExtraInfo[index] = undefined;
716
+ response.request().setRawRequestHeaders((0, import_utils.headersObjectToArray)(requestExtraInfo.headers, "\n"));
717
+ info.requestWillBeSentExtraInfo[index] = void 0;
839
718
  }
840
719
  const responseExtraInfo = info.responseReceivedExtraInfo[index];
841
720
  if (response && responseExtraInfo) {
842
- var _responseExtraInfo$he;
843
- response.setResponseHeadersSize(((_responseExtraInfo$he = responseExtraInfo.headersText) === null || _responseExtraInfo$he === void 0 ? void 0 : _responseExtraInfo$he.length) || 0);
844
- response.setRawResponseHeaders((0, _utils.headersObjectToArray)(responseExtraInfo.headers, '\n'));
845
- info.responseReceivedExtraInfo[index] = undefined;
721
+ response.setResponseHeadersSize(responseExtraInfo.headersText?.length || 0);
722
+ response.setRawResponseHeaders((0, import_utils.headersObjectToArray)(responseExtraInfo.headers, "\n"));
723
+ info.responseReceivedExtraInfo[index] = void 0;
846
724
  }
847
725
  }
848
726
  _checkFinished(info) {
849
- if (!info.loadingFinished && !info.loadingFailed) return;
727
+ if (!info.loadingFinished && !info.loadingFailed)
728
+ return;
850
729
  if (info.responses.length <= info.responseReceivedExtraInfo.length) {
851
- // We have extra info for each response.
852
730
  this._stopTracking(info.requestId);
853
731
  return;
854
732
  }
855
-
856
- // We are not done yet.
857
733
  }
858
734
  _stopTracking(requestId) {
859
735
  this._requests.delete(requestId);
860
736
  }
861
- }
737
+ }
738
+ // Annotate the CommonJS export names for ESM import in node:
739
+ 0 && (module.exports = {
740
+ CRNetworkManager
741
+ });