@stablyai/internal-playwright-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +3 -0
  4. package/ThirdPartyNotices.txt +1134 -0
  5. package/bin/install_media_pack.ps1 +5 -0
  6. package/bin/install_webkit_wsl.ps1 +35 -0
  7. package/bin/reinstall_chrome_beta_linux.sh +42 -0
  8. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  9. package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  10. package/bin/reinstall_chrome_stable_linux.sh +42 -0
  11. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  12. package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  13. package/bin/reinstall_msedge_beta_linux.sh +48 -0
  14. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  15. package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  16. package/bin/reinstall_msedge_dev_linux.sh +48 -0
  17. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  18. package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  19. package/bin/reinstall_msedge_stable_linux.sh +48 -0
  20. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  21. package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  22. package/browsers.json +80 -0
  23. package/cli.js +18 -0
  24. package/index.d.ts +17 -0
  25. package/index.js +32 -0
  26. package/index.mjs +28 -0
  27. package/lib/androidServerImpl.js +65 -0
  28. package/lib/browserServerImpl.js +120 -0
  29. package/lib/cli/cli.js +58 -0
  30. package/lib/cli/driver.js +97 -0
  31. package/lib/cli/program.js +634 -0
  32. package/lib/cli/programWithTestStub.js +74 -0
  33. package/lib/client/accessibility.js +49 -0
  34. package/lib/client/android.js +361 -0
  35. package/lib/client/api.js +137 -0
  36. package/lib/client/artifact.js +79 -0
  37. package/lib/client/browser.js +163 -0
  38. package/lib/client/browserContext.js +529 -0
  39. package/lib/client/browserType.js +184 -0
  40. package/lib/client/cdpSession.js +51 -0
  41. package/lib/client/channelOwner.js +194 -0
  42. package/lib/client/clientHelper.js +64 -0
  43. package/lib/client/clientInstrumentation.js +55 -0
  44. package/lib/client/clientStackTrace.js +69 -0
  45. package/lib/client/clock.js +68 -0
  46. package/lib/client/connection.js +314 -0
  47. package/lib/client/consoleMessage.js +54 -0
  48. package/lib/client/coverage.js +44 -0
  49. package/lib/client/dialog.js +56 -0
  50. package/lib/client/download.js +62 -0
  51. package/lib/client/electron.js +138 -0
  52. package/lib/client/elementHandle.js +281 -0
  53. package/lib/client/errors.js +77 -0
  54. package/lib/client/eventEmitter.js +314 -0
  55. package/lib/client/events.js +99 -0
  56. package/lib/client/fetch.js +369 -0
  57. package/lib/client/fileChooser.js +46 -0
  58. package/lib/client/fileUtils.js +34 -0
  59. package/lib/client/frame.js +408 -0
  60. package/lib/client/harRouter.js +87 -0
  61. package/lib/client/input.js +84 -0
  62. package/lib/client/jsHandle.js +109 -0
  63. package/lib/client/jsonPipe.js +39 -0
  64. package/lib/client/localUtils.js +60 -0
  65. package/lib/client/locator.js +368 -0
  66. package/lib/client/network.js +747 -0
  67. package/lib/client/page.js +721 -0
  68. package/lib/client/platform.js +74 -0
  69. package/lib/client/playwright.js +71 -0
  70. package/lib/client/selectors.js +55 -0
  71. package/lib/client/stream.js +39 -0
  72. package/lib/client/timeoutSettings.js +79 -0
  73. package/lib/client/tracing.js +117 -0
  74. package/lib/client/types.js +28 -0
  75. package/lib/client/video.js +59 -0
  76. package/lib/client/waiter.js +142 -0
  77. package/lib/client/webError.js +39 -0
  78. package/lib/client/webSocket.js +93 -0
  79. package/lib/client/worker.js +63 -0
  80. package/lib/client/writableStream.js +39 -0
  81. package/lib/common/debugLogger.js +90 -0
  82. package/lib/common/socksProxy.js +569 -0
  83. package/lib/common/timeoutSettings.js +73 -0
  84. package/lib/common/types.js +5 -0
  85. package/lib/generated/bindingsControllerSource.js +28 -0
  86. package/lib/generated/clockSource.js +28 -0
  87. package/lib/generated/consoleApiSource.js +28 -0
  88. package/lib/generated/injectedScriptSource.js +28 -0
  89. package/lib/generated/pollingRecorderSource.js +28 -0
  90. package/lib/generated/recorderSource.js +28 -0
  91. package/lib/generated/storageScriptSource.js +28 -0
  92. package/lib/generated/utilityScriptSource.js +28 -0
  93. package/lib/generated/webSocketMockSource.js +336 -0
  94. package/lib/image_tools/colorUtils.js +98 -0
  95. package/lib/image_tools/compare.js +108 -0
  96. package/lib/image_tools/imageChannel.js +70 -0
  97. package/lib/image_tools/stats.js +102 -0
  98. package/lib/inProcessFactory.js +60 -0
  99. package/lib/index.js +19 -0
  100. package/lib/inprocess.js +3 -0
  101. package/lib/outofprocess.js +76 -0
  102. package/lib/protocol/debug.js +27 -0
  103. package/lib/protocol/serializers.js +192 -0
  104. package/lib/protocol/transport.js +82 -0
  105. package/lib/protocol/validator.js +2919 -0
  106. package/lib/protocol/validatorPrimitives.js +193 -0
  107. package/lib/remote/playwrightConnection.js +129 -0
  108. package/lib/remote/playwrightServer.js +335 -0
  109. package/lib/server/accessibility.js +69 -0
  110. package/lib/server/android/android.js +465 -0
  111. package/lib/server/android/backendAdb.js +177 -0
  112. package/lib/server/artifact.js +127 -0
  113. package/lib/server/bidi/bidiBrowser.js +490 -0
  114. package/lib/server/bidi/bidiChromium.js +153 -0
  115. package/lib/server/bidi/bidiConnection.js +212 -0
  116. package/lib/server/bidi/bidiExecutionContext.js +221 -0
  117. package/lib/server/bidi/bidiFirefox.js +130 -0
  118. package/lib/server/bidi/bidiInput.js +146 -0
  119. package/lib/server/bidi/bidiNetworkManager.js +383 -0
  120. package/lib/server/bidi/bidiOverCdp.js +102 -0
  121. package/lib/server/bidi/bidiPage.js +552 -0
  122. package/lib/server/bidi/bidiPdf.js +106 -0
  123. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  124. package/lib/server/bidi/third_party/bidiDeserializer.js +98 -0
  125. package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  126. package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  127. package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
  128. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  129. package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  130. package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
  131. package/lib/server/browser.js +149 -0
  132. package/lib/server/browserContext.js +695 -0
  133. package/lib/server/browserType.js +328 -0
  134. package/lib/server/callLog.js +82 -0
  135. package/lib/server/chromium/appIcon.png +0 -0
  136. package/lib/server/chromium/chromium.js +402 -0
  137. package/lib/server/chromium/chromiumSwitches.js +95 -0
  138. package/lib/server/chromium/crAccessibility.js +263 -0
  139. package/lib/server/chromium/crBrowser.js +501 -0
  140. package/lib/server/chromium/crConnection.js +202 -0
  141. package/lib/server/chromium/crCoverage.js +235 -0
  142. package/lib/server/chromium/crDevTools.js +113 -0
  143. package/lib/server/chromium/crDragDrop.js +131 -0
  144. package/lib/server/chromium/crExecutionContext.js +146 -0
  145. package/lib/server/chromium/crInput.js +187 -0
  146. package/lib/server/chromium/crNetworkManager.js +666 -0
  147. package/lib/server/chromium/crPage.js +1069 -0
  148. package/lib/server/chromium/crPdf.js +121 -0
  149. package/lib/server/chromium/crProtocolHelper.js +145 -0
  150. package/lib/server/chromium/crServiceWorker.js +123 -0
  151. package/lib/server/chromium/defaultFontFamilies.js +162 -0
  152. package/lib/server/chromium/protocol.d.js +16 -0
  153. package/lib/server/chromium/videoRecorder.js +113 -0
  154. package/lib/server/clock.js +149 -0
  155. package/lib/server/codegen/csharp.js +327 -0
  156. package/lib/server/codegen/java.js +274 -0
  157. package/lib/server/codegen/javascript.js +270 -0
  158. package/lib/server/codegen/jsonl.js +52 -0
  159. package/lib/server/codegen/language.js +132 -0
  160. package/lib/server/codegen/languages.js +68 -0
  161. package/lib/server/codegen/python.js +279 -0
  162. package/lib/server/codegen/types.js +16 -0
  163. package/lib/server/console.js +53 -0
  164. package/lib/server/cookieStore.js +206 -0
  165. package/lib/server/debugController.js +191 -0
  166. package/lib/server/debugger.js +119 -0
  167. package/lib/server/deviceDescriptors.js +39 -0
  168. package/lib/server/deviceDescriptorsSource.json +1779 -0
  169. package/lib/server/dialog.js +116 -0
  170. package/lib/server/dispatchers/androidDispatcher.js +325 -0
  171. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  172. package/lib/server/dispatchers/browserContextDispatcher.js +364 -0
  173. package/lib/server/dispatchers/browserDispatcher.js +118 -0
  174. package/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
  175. package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  176. package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  177. package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  178. package/lib/server/dispatchers/dispatcher.js +371 -0
  179. package/lib/server/dispatchers/electronDispatcher.js +89 -0
  180. package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  181. package/lib/server/dispatchers/frameDispatcher.js +227 -0
  182. package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  183. package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  184. package/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
  185. package/lib/server/dispatchers/networkDispatchers.js +213 -0
  186. package/lib/server/dispatchers/pageDispatcher.js +401 -0
  187. package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  188. package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
  189. package/lib/server/dispatchers/streamDispatcher.js +67 -0
  190. package/lib/server/dispatchers/tracingDispatcher.js +68 -0
  191. package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
  192. package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  193. package/lib/server/dom.js +806 -0
  194. package/lib/server/download.js +70 -0
  195. package/lib/server/electron/electron.js +270 -0
  196. package/lib/server/electron/loader.js +29 -0
  197. package/lib/server/errors.js +69 -0
  198. package/lib/server/fetch.js +621 -0
  199. package/lib/server/fileChooser.js +43 -0
  200. package/lib/server/fileUploadUtils.js +84 -0
  201. package/lib/server/firefox/ffAccessibility.js +238 -0
  202. package/lib/server/firefox/ffBrowser.js +428 -0
  203. package/lib/server/firefox/ffConnection.js +147 -0
  204. package/lib/server/firefox/ffExecutionContext.js +150 -0
  205. package/lib/server/firefox/ffInput.js +159 -0
  206. package/lib/server/firefox/ffNetworkManager.js +256 -0
  207. package/lib/server/firefox/ffPage.js +503 -0
  208. package/lib/server/firefox/firefox.js +116 -0
  209. package/lib/server/firefox/protocol.d.js +16 -0
  210. package/lib/server/formData.js +147 -0
  211. package/lib/server/frameSelectors.js +156 -0
  212. package/lib/server/frames.js +1502 -0
  213. package/lib/server/har/harRecorder.js +147 -0
  214. package/lib/server/har/harTracer.js +607 -0
  215. package/lib/server/harBackend.js +157 -0
  216. package/lib/server/helper.js +96 -0
  217. package/lib/server/index.js +58 -0
  218. package/lib/server/input.js +273 -0
  219. package/lib/server/instrumentation.js +69 -0
  220. package/lib/server/isomorphic/utilityScriptSerializers.js +212 -0
  221. package/lib/server/javascript.js +291 -0
  222. package/lib/server/launchApp.js +128 -0
  223. package/lib/server/localUtils.js +218 -0
  224. package/lib/server/macEditingCommands.js +143 -0
  225. package/lib/server/network.js +629 -0
  226. package/lib/server/page.js +871 -0
  227. package/lib/server/pipeTransport.js +89 -0
  228. package/lib/server/playwright.js +69 -0
  229. package/lib/server/progress.js +112 -0
  230. package/lib/server/protocolError.js +52 -0
  231. package/lib/server/recorder/chat.js +161 -0
  232. package/lib/server/recorder/codeGenerator.js +153 -0
  233. package/lib/server/recorder/csharp.js +310 -0
  234. package/lib/server/recorder/java.js +248 -0
  235. package/lib/server/recorder/javascript.js +229 -0
  236. package/lib/server/recorder/jsonl.js +47 -0
  237. package/lib/server/recorder/language.js +44 -0
  238. package/lib/server/recorder/python.js +276 -0
  239. package/lib/server/recorder/recorderActions.js +5 -0
  240. package/lib/server/recorder/recorderApp.js +387 -0
  241. package/lib/server/recorder/recorderRunner.js +138 -0
  242. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  243. package/lib/server/recorder/recorderUtils.js +157 -0
  244. package/lib/server/recorder/throttledFile.js +57 -0
  245. package/lib/server/recorder/utils.js +45 -0
  246. package/lib/server/recorder.js +499 -0
  247. package/lib/server/registry/browserFetcher.js +175 -0
  248. package/lib/server/registry/dependencies.js +371 -0
  249. package/lib/server/registry/index.js +1331 -0
  250. package/lib/server/registry/nativeDeps.js +1280 -0
  251. package/lib/server/registry/oopDownloadBrowserMain.js +120 -0
  252. package/lib/server/screenshotter.js +333 -0
  253. package/lib/server/selectors.js +112 -0
  254. package/lib/server/socksClientCertificatesInterceptor.js +383 -0
  255. package/lib/server/socksInterceptor.js +95 -0
  256. package/lib/server/stably/ai-tools/http-request.js +70 -0
  257. package/lib/server/stably/ai-tools/stablyApiCaller.js +137 -0
  258. package/lib/server/stably/autohealing/elementHandleFromCoordinates.js +64 -0
  259. package/lib/server/stably/autohealing/healingService.js +228 -0
  260. package/lib/server/stably/autohealing/screenshotFrame.js +41 -0
  261. package/lib/server/stably/constants.js +31 -0
  262. package/lib/server/trace/recorder/snapshotter.js +147 -0
  263. package/lib/server/trace/recorder/snapshotterInjected.js +541 -0
  264. package/lib/server/trace/recorder/tracing.js +602 -0
  265. package/lib/server/trace/test/inMemorySnapshotter.js +87 -0
  266. package/lib/server/trace/viewer/traceViewer.js +240 -0
  267. package/lib/server/transport.js +181 -0
  268. package/lib/server/types.js +28 -0
  269. package/lib/server/usKeyboardLayout.js +145 -0
  270. package/lib/server/utils/ascii.js +44 -0
  271. package/lib/server/utils/comparators.js +161 -0
  272. package/lib/server/utils/crypto.js +216 -0
  273. package/lib/server/utils/debug.js +42 -0
  274. package/lib/server/utils/debugLogger.js +122 -0
  275. package/lib/server/utils/env.js +73 -0
  276. package/lib/server/utils/eventsHelper.js +39 -0
  277. package/lib/server/utils/expectUtils.js +38 -0
  278. package/lib/server/utils/fileUtils.js +191 -0
  279. package/lib/server/utils/happyEyeballs.js +207 -0
  280. package/lib/server/utils/hostPlatform.js +111 -0
  281. package/lib/server/utils/httpServer.js +218 -0
  282. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  283. package/lib/server/utils/image_tools/compare.js +109 -0
  284. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  285. package/lib/server/utils/image_tools/stats.js +102 -0
  286. package/lib/server/utils/linuxUtils.js +71 -0
  287. package/lib/server/utils/network.js +233 -0
  288. package/lib/server/utils/nodePlatform.js +148 -0
  289. package/lib/server/utils/pipeTransport.js +84 -0
  290. package/lib/server/utils/processLauncher.js +241 -0
  291. package/lib/server/utils/profiler.js +65 -0
  292. package/lib/server/utils/socksProxy.js +511 -0
  293. package/lib/server/utils/spawnAsync.js +41 -0
  294. package/lib/server/utils/task.js +51 -0
  295. package/lib/server/utils/userAgent.js +98 -0
  296. package/lib/server/utils/wsServer.js +121 -0
  297. package/lib/server/utils/zipFile.js +74 -0
  298. package/lib/server/utils/zones.js +57 -0
  299. package/lib/server/webkit/protocol.d.js +16 -0
  300. package/lib/server/webkit/webkit.js +119 -0
  301. package/lib/server/webkit/wkAccessibility.js +237 -0
  302. package/lib/server/webkit/wkBrowser.js +339 -0
  303. package/lib/server/webkit/wkConnection.js +149 -0
  304. package/lib/server/webkit/wkExecutionContext.js +154 -0
  305. package/lib/server/webkit/wkInput.js +181 -0
  306. package/lib/server/webkit/wkInterceptableRequest.js +169 -0
  307. package/lib/server/webkit/wkPage.js +1134 -0
  308. package/lib/server/webkit/wkProvisionalPage.js +83 -0
  309. package/lib/server/webkit/wkWorkers.js +104 -0
  310. package/lib/server/webkit/wsl/webkit-wsl-transport-client.js +74 -0
  311. package/lib/server/webkit/wsl/webkit-wsl-transport-server.js +113 -0
  312. package/lib/third_party/diff_match_patch.js +2222 -0
  313. package/lib/third_party/pixelmatch.js +255 -0
  314. package/lib/utils/ascii.js +31 -0
  315. package/lib/utils/comparators.js +171 -0
  316. package/lib/utils/crypto.js +33 -0
  317. package/lib/utils/debug.js +46 -0
  318. package/lib/utils/debugLogger.js +89 -0
  319. package/lib/utils/env.js +49 -0
  320. package/lib/utils/eventsHelper.js +38 -0
  321. package/lib/utils/fileUtils.js +205 -0
  322. package/lib/utils/glob.js +83 -0
  323. package/lib/utils/happy-eyeballs.js +160 -0
  324. package/lib/utils/headers.js +52 -0
  325. package/lib/utils/hostPlatform.js +128 -0
  326. package/lib/utils/httpServer.js +236 -0
  327. package/lib/utils/index.js +346 -0
  328. package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
  329. package/lib/utils/isomorphic/assert.js +31 -0
  330. package/lib/utils/isomorphic/colors.js +72 -0
  331. package/lib/utils/isomorphic/cssParser.js +245 -0
  332. package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  333. package/lib/utils/isomorphic/headers.js +53 -0
  334. package/lib/utils/isomorphic/locatorGenerators.js +673 -0
  335. package/lib/utils/isomorphic/locatorParser.js +176 -0
  336. package/lib/utils/isomorphic/locatorUtils.js +81 -0
  337. package/lib/utils/isomorphic/manualPromise.js +114 -0
  338. package/lib/utils/isomorphic/mimeType.js +459 -0
  339. package/lib/utils/isomorphic/multimap.js +80 -0
  340. package/lib/utils/isomorphic/protocolFormatter.js +78 -0
  341. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  342. package/lib/utils/isomorphic/rtti.js +43 -0
  343. package/lib/utils/isomorphic/selectorParser.js +386 -0
  344. package/lib/utils/isomorphic/semaphore.js +54 -0
  345. package/lib/utils/isomorphic/stackTrace.js +158 -0
  346. package/lib/utils/isomorphic/stringUtils.js +155 -0
  347. package/lib/utils/isomorphic/time.js +49 -0
  348. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  349. package/lib/utils/isomorphic/traceUtils.js +58 -0
  350. package/lib/utils/isomorphic/types.js +16 -0
  351. package/lib/utils/isomorphic/urlMatch.js +176 -0
  352. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  353. package/lib/utils/linuxUtils.js +78 -0
  354. package/lib/utils/manualPromise.js +109 -0
  355. package/lib/utils/mimeType.js +29 -0
  356. package/lib/utils/multimap.js +75 -0
  357. package/lib/utils/network.js +188 -0
  358. package/lib/utils/processLauncher.js +248 -0
  359. package/lib/utils/profiler.js +53 -0
  360. package/lib/utils/rtti.js +44 -0
  361. package/lib/utils/semaphore.js +51 -0
  362. package/lib/utils/spawnAsync.js +45 -0
  363. package/lib/utils/stackTrace.js +121 -0
  364. package/lib/utils/task.js +58 -0
  365. package/lib/utils/time.js +37 -0
  366. package/lib/utils/timeoutRunner.js +66 -0
  367. package/lib/utils/traceUtils.js +44 -0
  368. package/lib/utils/userAgent.js +105 -0
  369. package/lib/utils/wsServer.js +127 -0
  370. package/lib/utils/zipFile.js +75 -0
  371. package/lib/utils/zones.js +62 -0
  372. package/lib/utils.js +107 -0
  373. package/lib/utilsBundle.js +109 -0
  374. package/lib/utilsBundleImpl/index.js +218 -0
  375. package/lib/utilsBundleImpl/xdg-open +1066 -0
  376. package/lib/vite/htmlReport/index.html +84 -0
  377. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +1 -0
  378. package/lib/vite/recorder/assets/codeMirrorModule-RJCXzfmE.js +24 -0
  379. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  380. package/lib/vite/recorder/assets/index-Ri0uHF7I.css +1 -0
  381. package/lib/vite/recorder/assets/index-Y-X2TGJv.js +193 -0
  382. package/lib/vite/recorder/index.html +29 -0
  383. package/lib/vite/recorder/playwright-logo.svg +9 -0
  384. package/lib/vite/traceViewer/assets/codeMirrorModule-Bhnc5o2x.js +24 -0
  385. package/lib/vite/traceViewer/assets/defaultSettingsView-ClwvkA2N.js +265 -0
  386. package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  387. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +1 -0
  388. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  389. package/lib/vite/traceViewer/defaultSettingsView.TQ8_7ybu.css +1 -0
  390. package/lib/vite/traceViewer/index.DFO9NNF5.js +2 -0
  391. package/lib/vite/traceViewer/index.I8N9v4jT.css +1 -0
  392. package/lib/vite/traceViewer/index.html +43 -0
  393. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  394. package/lib/vite/traceViewer/snapshot.html +21 -0
  395. package/lib/vite/traceViewer/sw.bundle.js +3 -0
  396. package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  397. package/lib/vite/traceViewer/uiMode.Shu3QS-1.js +5 -0
  398. package/lib/vite/traceViewer/uiMode.html +17 -0
  399. package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  400. package/lib/zipBundle.js +34 -0
  401. package/lib/zipBundleImpl.js +5 -0
  402. package/package.json +43 -0
  403. package/types/protocol.d.ts +23130 -0
  404. package/types/structs.d.ts +45 -0
  405. package/types/types.d.ts +22857 -0
@@ -0,0 +1,629 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var network_exports = {};
20
+ __export(network_exports, {
21
+ Request: () => Request,
22
+ Response: () => Response,
23
+ Route: () => Route,
24
+ WebSocket: () => WebSocket,
25
+ filterCookies: () => filterCookies,
26
+ isLocalHostname: () => isLocalHostname,
27
+ kMaxCookieExpiresDateInSeconds: () => kMaxCookieExpiresDateInSeconds,
28
+ mergeHeaders: () => mergeHeaders,
29
+ parseURL: () => parseURL,
30
+ rewriteCookies: () => rewriteCookies,
31
+ singleHeader: () => singleHeader,
32
+ statusText: () => statusText,
33
+ stripFragmentFromUrl: () => stripFragmentFromUrl
34
+ });
35
+ module.exports = __toCommonJS(network_exports);
36
+ var import_utils = require("../utils");
37
+ var import_browserContext = require("./browserContext");
38
+ var import_fetch = require("./fetch");
39
+ var import_instrumentation = require("./instrumentation");
40
+ var import_manualPromise = require("../utils/isomorphic/manualPromise");
41
+ function filterCookies(cookies, urls) {
42
+ const parsedURLs = urls.map((s) => new URL(s));
43
+ return cookies.filter((c) => {
44
+ if (!parsedURLs.length)
45
+ return true;
46
+ for (const parsedURL of parsedURLs) {
47
+ let domain = c.domain;
48
+ if (!domain.startsWith("."))
49
+ domain = "." + domain;
50
+ if (!("." + parsedURL.hostname).endsWith(domain))
51
+ continue;
52
+ if (!parsedURL.pathname.startsWith(c.path))
53
+ continue;
54
+ if (parsedURL.protocol !== "https:" && !isLocalHostname(parsedURL.hostname) && c.secure)
55
+ continue;
56
+ return true;
57
+ }
58
+ return false;
59
+ });
60
+ }
61
+ function isLocalHostname(hostname) {
62
+ return hostname === "localhost" || hostname.endsWith(".localhost");
63
+ }
64
+ const kMaxCookieExpiresDateInSeconds = 253402300799;
65
+ function rewriteCookies(cookies) {
66
+ return cookies.map((c) => {
67
+ (0, import_utils.assert)(c.url || c.domain && c.path, "Cookie should have a url or a domain/path pair");
68
+ (0, import_utils.assert)(!(c.url && c.domain), "Cookie should have either url or domain");
69
+ (0, import_utils.assert)(!(c.url && c.path), "Cookie should have either url or path");
70
+ (0, import_utils.assert)(!(c.expires && c.expires < 0 && c.expires !== -1), "Cookie should have a valid expires, only -1 or a positive number for the unix timestamp in seconds is allowed");
71
+ (0, import_utils.assert)(!(c.expires && c.expires > 0 && c.expires > kMaxCookieExpiresDateInSeconds), "Cookie should have a valid expires, only -1 or a positive number for the unix timestamp in seconds is allowed");
72
+ const copy = { ...c };
73
+ if (copy.url) {
74
+ (0, import_utils.assert)(copy.url !== "about:blank", `Blank page can not have cookie "${c.name}"`);
75
+ (0, import_utils.assert)(!copy.url.startsWith("data:"), `Data URL page can not have cookie "${c.name}"`);
76
+ const url = new URL(copy.url);
77
+ copy.domain = url.hostname;
78
+ copy.path = url.pathname.substring(0, url.pathname.lastIndexOf("/") + 1);
79
+ copy.secure = url.protocol === "https:";
80
+ }
81
+ return copy;
82
+ });
83
+ }
84
+ function parseURL(url) {
85
+ try {
86
+ return new URL(url);
87
+ } catch (e) {
88
+ return null;
89
+ }
90
+ }
91
+ function stripFragmentFromUrl(url) {
92
+ if (!url.includes("#"))
93
+ return url;
94
+ return url.substring(0, url.indexOf("#"));
95
+ }
96
+ class Request extends import_instrumentation.SdkObject {
97
+ constructor(context, frame, serviceWorker, redirectedFrom, documentId, url, resourceType, method, postData, headers) {
98
+ super(frame || context, "request");
99
+ this._response = null;
100
+ this._redirectedTo = null;
101
+ this._failureText = null;
102
+ this._headersMap = /* @__PURE__ */ new Map();
103
+ this._frame = null;
104
+ this._serviceWorker = null;
105
+ this._rawRequestHeadersPromise = new import_manualPromise.ManualPromise();
106
+ this._waitForResponsePromise = new import_manualPromise.ManualPromise();
107
+ this._responseEndTiming = -1;
108
+ (0, import_utils.assert)(!url.startsWith("data:"), "Data urls should not fire requests");
109
+ this._context = context;
110
+ this._frame = frame;
111
+ this._serviceWorker = serviceWorker;
112
+ this._redirectedFrom = redirectedFrom;
113
+ if (redirectedFrom)
114
+ redirectedFrom._redirectedTo = this;
115
+ this._documentId = documentId;
116
+ this._url = stripFragmentFromUrl(url);
117
+ this._resourceType = resourceType;
118
+ this._method = method;
119
+ this._postData = postData;
120
+ this._headers = headers;
121
+ this._updateHeadersMap();
122
+ this._isFavicon = url.endsWith("/favicon.ico") || !!redirectedFrom?._isFavicon;
123
+ }
124
+ static {
125
+ this.Events = {
126
+ Response: "response"
127
+ };
128
+ }
129
+ _setFailureText(failureText) {
130
+ this._failureText = failureText;
131
+ this._waitForResponsePromise.resolve(null);
132
+ }
133
+ _applyOverrides(overrides) {
134
+ this._overrides = { ...this._overrides, ...overrides };
135
+ this._updateHeadersMap();
136
+ return this._overrides;
137
+ }
138
+ _updateHeadersMap() {
139
+ for (const { name, value } of this.headers())
140
+ this._headersMap.set(name.toLowerCase(), value);
141
+ }
142
+ overrides() {
143
+ return this._overrides;
144
+ }
145
+ url() {
146
+ return this._overrides?.url || this._url;
147
+ }
148
+ resourceType() {
149
+ return this._resourceType;
150
+ }
151
+ method() {
152
+ return this._overrides?.method || this._method;
153
+ }
154
+ postDataBuffer() {
155
+ return this._overrides?.postData || this._postData;
156
+ }
157
+ headers() {
158
+ return this._overrides?.headers || this._headers;
159
+ }
160
+ headerValue(name) {
161
+ return this._headersMap.get(name);
162
+ }
163
+ // "null" means no raw headers available - we'll use provisional headers as raw headers.
164
+ setRawRequestHeaders(headers) {
165
+ if (!this._rawRequestHeadersPromise.isDone())
166
+ this._rawRequestHeadersPromise.resolve(headers || this._headers);
167
+ }
168
+ async rawRequestHeaders() {
169
+ return this._overrides?.headers || this._rawRequestHeadersPromise;
170
+ }
171
+ response() {
172
+ return this._waitForResponsePromise;
173
+ }
174
+ _existingResponse() {
175
+ return this._response;
176
+ }
177
+ _setResponse(response) {
178
+ this._response = response;
179
+ this._waitForResponsePromise.resolve(response);
180
+ this.emit(Request.Events.Response, response);
181
+ }
182
+ _finalRequest() {
183
+ return this._redirectedTo ? this._redirectedTo._finalRequest() : this;
184
+ }
185
+ frame() {
186
+ return this._frame;
187
+ }
188
+ serviceWorker() {
189
+ return this._serviceWorker;
190
+ }
191
+ isNavigationRequest() {
192
+ return !!this._documentId;
193
+ }
194
+ redirectedFrom() {
195
+ return this._redirectedFrom;
196
+ }
197
+ failure() {
198
+ if (this._failureText === null)
199
+ return null;
200
+ return {
201
+ errorText: this._failureText
202
+ };
203
+ }
204
+ // TODO(bidi): remove once post body is available.
205
+ _setBodySize(size) {
206
+ this._bodySize = size;
207
+ }
208
+ bodySize() {
209
+ return this._bodySize || this.postDataBuffer()?.length || 0;
210
+ }
211
+ async requestHeadersSize() {
212
+ let headersSize = 4;
213
+ headersSize += this.method().length;
214
+ headersSize += new URL(this.url()).pathname.length;
215
+ headersSize += 8;
216
+ const headers = await this.rawRequestHeaders();
217
+ for (const header of headers)
218
+ headersSize += header.name.length + header.value.length + 4;
219
+ return headersSize;
220
+ }
221
+ }
222
+ class Route extends import_instrumentation.SdkObject {
223
+ constructor(request, delegate) {
224
+ super(request._frame || request._context, "route");
225
+ this._handled = false;
226
+ this._futureHandlers = [];
227
+ this._request = request;
228
+ this._delegate = delegate;
229
+ this._request._context.addRouteInFlight(this);
230
+ }
231
+ handle(handlers) {
232
+ this._futureHandlers = [...handlers];
233
+ this.continue({ isFallback: true }).catch(() => {
234
+ });
235
+ }
236
+ async removeHandler(handler) {
237
+ this._futureHandlers = this._futureHandlers.filter((h) => h !== handler);
238
+ if (handler === this._currentHandler) {
239
+ await this.continue({ isFallback: true }).catch(() => {
240
+ });
241
+ return;
242
+ }
243
+ }
244
+ request() {
245
+ return this._request;
246
+ }
247
+ async abort(errorCode = "failed") {
248
+ this._startHandling();
249
+ this._request._context.emit(import_browserContext.BrowserContext.Events.RequestAborted, this._request);
250
+ await this._delegate.abort(errorCode);
251
+ this._endHandling();
252
+ }
253
+ redirectNavigationRequest(url) {
254
+ this._startHandling();
255
+ (0, import_utils.assert)(this._request.isNavigationRequest());
256
+ this._request.frame().redirectNavigation(url, this._request._documentId, this._request.headerValue("referer"));
257
+ this._endHandling();
258
+ }
259
+ async fulfill(overrides) {
260
+ this._startHandling();
261
+ let body = overrides.body;
262
+ let isBase64 = overrides.isBase64 || false;
263
+ if (body === void 0) {
264
+ if (overrides.fetchResponseUid) {
265
+ const buffer = this._request._context.fetchRequest.fetchResponses.get(overrides.fetchResponseUid) || import_fetch.APIRequestContext.findResponseBody(overrides.fetchResponseUid);
266
+ (0, import_utils.assert)(buffer, "Fetch response has been disposed");
267
+ body = buffer.toString("base64");
268
+ isBase64 = true;
269
+ } else {
270
+ body = "";
271
+ isBase64 = false;
272
+ }
273
+ } else if (!overrides.status || overrides.status < 200 || overrides.status >= 400) {
274
+ this._request._responseBodyOverride = { body, isBase64 };
275
+ }
276
+ const headers = [...overrides.headers || []];
277
+ this._maybeAddCorsHeaders(headers);
278
+ this._request._context.emit(import_browserContext.BrowserContext.Events.RequestFulfilled, this._request);
279
+ await this._delegate.fulfill({
280
+ status: overrides.status || 200,
281
+ headers,
282
+ body,
283
+ isBase64
284
+ });
285
+ this._endHandling();
286
+ }
287
+ // See https://github.com/microsoft/playwright/issues/12929
288
+ _maybeAddCorsHeaders(headers) {
289
+ const origin = this._request.headerValue("origin");
290
+ if (!origin)
291
+ return;
292
+ const requestUrl = new URL(this._request.url());
293
+ if (!requestUrl.protocol.startsWith("http"))
294
+ return;
295
+ if (requestUrl.origin === origin.trim())
296
+ return;
297
+ const corsHeader = headers.find(({ name }) => name === "access-control-allow-origin");
298
+ if (corsHeader)
299
+ return;
300
+ headers.push({ name: "access-control-allow-origin", value: origin });
301
+ headers.push({ name: "access-control-allow-credentials", value: "true" });
302
+ headers.push({ name: "vary", value: "Origin" });
303
+ }
304
+ async continue(overrides) {
305
+ if (overrides.url) {
306
+ const newUrl = new URL(overrides.url);
307
+ const oldUrl = new URL(this._request.url());
308
+ if (oldUrl.protocol !== newUrl.protocol)
309
+ throw new Error("New URL must have same protocol as overridden URL");
310
+ }
311
+ if (overrides.headers) {
312
+ overrides.headers = overrides.headers?.filter((header) => {
313
+ const headerName = header.name.toLowerCase();
314
+ return headerName !== "cookie" && headerName !== "host";
315
+ });
316
+ }
317
+ overrides = this._request._applyOverrides(overrides);
318
+ const nextHandler = this._futureHandlers.shift();
319
+ if (nextHandler) {
320
+ this._currentHandler = nextHandler;
321
+ nextHandler(this, this._request);
322
+ return;
323
+ }
324
+ if (!overrides.isFallback)
325
+ this._request._context.emit(import_browserContext.BrowserContext.Events.RequestContinued, this._request);
326
+ this._startHandling();
327
+ await this._delegate.continue(overrides);
328
+ this._endHandling();
329
+ }
330
+ _startHandling() {
331
+ (0, import_utils.assert)(!this._handled, "Route is already handled!");
332
+ this._handled = true;
333
+ this._currentHandler = void 0;
334
+ }
335
+ _endHandling() {
336
+ this._futureHandlers = [];
337
+ this._currentHandler = void 0;
338
+ this._request._context.removeRouteInFlight(this);
339
+ }
340
+ }
341
+ class Response extends import_instrumentation.SdkObject {
342
+ constructor(request, status, statusText2, headers, timing, getResponseBodyCallback, fromServiceWorker, httpVersion) {
343
+ super(request.frame() || request._context, "response");
344
+ this._contentPromise = null;
345
+ this._finishedPromise = new import_manualPromise.ManualPromise();
346
+ this._headersMap = /* @__PURE__ */ new Map();
347
+ this._serverAddrPromise = new import_manualPromise.ManualPromise();
348
+ this._securityDetailsPromise = new import_manualPromise.ManualPromise();
349
+ this._rawResponseHeadersPromise = new import_manualPromise.ManualPromise();
350
+ this._encodedBodySizePromise = new import_manualPromise.ManualPromise();
351
+ this._transferSizePromise = new import_manualPromise.ManualPromise();
352
+ this._responseHeadersSizePromise = new import_manualPromise.ManualPromise();
353
+ this._request = request;
354
+ this._timing = timing;
355
+ this._status = status;
356
+ this._statusText = statusText2;
357
+ this._url = request.url();
358
+ this._headers = headers;
359
+ for (const { name, value } of this._headers)
360
+ this._headersMap.set(name.toLowerCase(), value);
361
+ this._getResponseBodyCallback = getResponseBodyCallback;
362
+ this._request._setResponse(this);
363
+ this._httpVersion = httpVersion;
364
+ this._fromServiceWorker = fromServiceWorker;
365
+ }
366
+ _serverAddrFinished(addr) {
367
+ this._serverAddrPromise.resolve(addr);
368
+ }
369
+ _securityDetailsFinished(securityDetails) {
370
+ this._securityDetailsPromise.resolve(securityDetails);
371
+ }
372
+ _requestFinished(responseEndTiming) {
373
+ this._request._responseEndTiming = Math.max(responseEndTiming, this._timing.responseStart);
374
+ if (this._timing.requestStart === -1)
375
+ this._timing.requestStart = this._request._responseEndTiming;
376
+ this._finishedPromise.resolve();
377
+ }
378
+ _setHttpVersion(httpVersion) {
379
+ this._httpVersion = httpVersion;
380
+ }
381
+ url() {
382
+ return this._url;
383
+ }
384
+ status() {
385
+ return this._status;
386
+ }
387
+ statusText() {
388
+ return this._statusText;
389
+ }
390
+ headers() {
391
+ return this._headers;
392
+ }
393
+ headerValue(name) {
394
+ return this._headersMap.get(name);
395
+ }
396
+ async rawResponseHeaders() {
397
+ return this._rawResponseHeadersPromise;
398
+ }
399
+ // "null" means no raw headers available - we'll use provisional headers as raw headers.
400
+ setRawResponseHeaders(headers) {
401
+ if (!this._rawResponseHeadersPromise.isDone())
402
+ this._rawResponseHeadersPromise.resolve(headers || this._headers);
403
+ }
404
+ setTransferSize(size) {
405
+ this._transferSizePromise.resolve(size);
406
+ }
407
+ setEncodedBodySize(size) {
408
+ this._encodedBodySizePromise.resolve(size);
409
+ }
410
+ setResponseHeadersSize(size) {
411
+ this._responseHeadersSizePromise.resolve(size);
412
+ }
413
+ timing() {
414
+ return this._timing;
415
+ }
416
+ async serverAddr() {
417
+ return await this._serverAddrPromise || null;
418
+ }
419
+ async securityDetails() {
420
+ return await this._securityDetailsPromise || null;
421
+ }
422
+ body() {
423
+ if (!this._contentPromise) {
424
+ this._contentPromise = this._finishedPromise.then(async () => {
425
+ if (this._status >= 300 && this._status <= 399)
426
+ throw new Error("Response body is unavailable for redirect responses");
427
+ if (this._request._responseBodyOverride) {
428
+ const { body, isBase64 } = this._request._responseBodyOverride;
429
+ return Buffer.from(body, isBase64 ? "base64" : "utf-8");
430
+ }
431
+ return this._getResponseBodyCallback();
432
+ });
433
+ }
434
+ return this._contentPromise;
435
+ }
436
+ request() {
437
+ return this._request;
438
+ }
439
+ frame() {
440
+ return this._request.frame();
441
+ }
442
+ httpVersion() {
443
+ if (!this._httpVersion)
444
+ return "HTTP/1.1";
445
+ if (this._httpVersion === "http/1.1")
446
+ return "HTTP/1.1";
447
+ if (this._httpVersion === "h2")
448
+ return "HTTP/2.0";
449
+ return this._httpVersion;
450
+ }
451
+ fromServiceWorker() {
452
+ return this._fromServiceWorker;
453
+ }
454
+ async responseHeadersSize() {
455
+ const availableSize = await this._responseHeadersSizePromise;
456
+ if (availableSize !== null)
457
+ return availableSize;
458
+ let headersSize = 4;
459
+ headersSize += 8;
460
+ headersSize += 3;
461
+ headersSize += this.statusText().length;
462
+ const headers = await this._rawResponseHeadersPromise;
463
+ for (const header of headers)
464
+ headersSize += header.name.length + header.value.length + 4;
465
+ headersSize += 2;
466
+ return headersSize;
467
+ }
468
+ async sizes() {
469
+ const requestHeadersSize = await this._request.requestHeadersSize();
470
+ const responseHeadersSize = await this.responseHeadersSize();
471
+ let encodedBodySize = await this._encodedBodySizePromise;
472
+ if (encodedBodySize === null) {
473
+ const headers = await this._rawResponseHeadersPromise;
474
+ const contentLength = headers.find((h) => h.name.toLowerCase() === "content-length")?.value;
475
+ encodedBodySize = contentLength ? +contentLength : 0;
476
+ }
477
+ let transferSize = await this._transferSizePromise;
478
+ if (transferSize === null) {
479
+ transferSize = responseHeadersSize + encodedBodySize;
480
+ }
481
+ return {
482
+ requestBodySize: this._request.bodySize(),
483
+ requestHeadersSize,
484
+ responseBodySize: encodedBodySize,
485
+ responseHeadersSize,
486
+ transferSize
487
+ };
488
+ }
489
+ }
490
+ class WebSocket extends import_instrumentation.SdkObject {
491
+ constructor(parent, url) {
492
+ super(parent, "ws");
493
+ this._notified = false;
494
+ this._url = url;
495
+ }
496
+ static {
497
+ this.Events = {
498
+ Close: "close",
499
+ SocketError: "socketerror",
500
+ FrameReceived: "framereceived",
501
+ FrameSent: "framesent"
502
+ };
503
+ }
504
+ markAsNotified() {
505
+ if (this._notified)
506
+ return false;
507
+ this._notified = true;
508
+ return true;
509
+ }
510
+ url() {
511
+ return this._url;
512
+ }
513
+ frameSent(opcode, data) {
514
+ this.emit(WebSocket.Events.FrameSent, { opcode, data });
515
+ }
516
+ frameReceived(opcode, data) {
517
+ this.emit(WebSocket.Events.FrameReceived, { opcode, data });
518
+ }
519
+ error(errorMessage) {
520
+ this.emit(WebSocket.Events.SocketError, errorMessage);
521
+ }
522
+ closed() {
523
+ this.emit(WebSocket.Events.Close);
524
+ }
525
+ }
526
+ const STATUS_TEXTS = {
527
+ "100": "Continue",
528
+ "101": "Switching Protocols",
529
+ "102": "Processing",
530
+ "103": "Early Hints",
531
+ "200": "OK",
532
+ "201": "Created",
533
+ "202": "Accepted",
534
+ "203": "Non-Authoritative Information",
535
+ "204": "No Content",
536
+ "205": "Reset Content",
537
+ "206": "Partial Content",
538
+ "207": "Multi-Status",
539
+ "208": "Already Reported",
540
+ "226": "IM Used",
541
+ "300": "Multiple Choices",
542
+ "301": "Moved Permanently",
543
+ "302": "Found",
544
+ "303": "See Other",
545
+ "304": "Not Modified",
546
+ "305": "Use Proxy",
547
+ "306": "Switch Proxy",
548
+ "307": "Temporary Redirect",
549
+ "308": "Permanent Redirect",
550
+ "400": "Bad Request",
551
+ "401": "Unauthorized",
552
+ "402": "Payment Required",
553
+ "403": "Forbidden",
554
+ "404": "Not Found",
555
+ "405": "Method Not Allowed",
556
+ "406": "Not Acceptable",
557
+ "407": "Proxy Authentication Required",
558
+ "408": "Request Timeout",
559
+ "409": "Conflict",
560
+ "410": "Gone",
561
+ "411": "Length Required",
562
+ "412": "Precondition Failed",
563
+ "413": "Payload Too Large",
564
+ "414": "URI Too Long",
565
+ "415": "Unsupported Media Type",
566
+ "416": "Range Not Satisfiable",
567
+ "417": "Expectation Failed",
568
+ "418": "I'm a teapot",
569
+ "421": "Misdirected Request",
570
+ "422": "Unprocessable Entity",
571
+ "423": "Locked",
572
+ "424": "Failed Dependency",
573
+ "425": "Too Early",
574
+ "426": "Upgrade Required",
575
+ "428": "Precondition Required",
576
+ "429": "Too Many Requests",
577
+ "431": "Request Header Fields Too Large",
578
+ "451": "Unavailable For Legal Reasons",
579
+ "500": "Internal Server Error",
580
+ "501": "Not Implemented",
581
+ "502": "Bad Gateway",
582
+ "503": "Service Unavailable",
583
+ "504": "Gateway Timeout",
584
+ "505": "HTTP Version Not Supported",
585
+ "506": "Variant Also Negotiates",
586
+ "507": "Insufficient Storage",
587
+ "508": "Loop Detected",
588
+ "510": "Not Extended",
589
+ "511": "Network Authentication Required"
590
+ };
591
+ function statusText(status) {
592
+ return STATUS_TEXTS[String(status)] || "Unknown";
593
+ }
594
+ function singleHeader(name, value) {
595
+ return [{ name, value }];
596
+ }
597
+ function mergeHeaders(headers) {
598
+ const lowerCaseToValue = /* @__PURE__ */ new Map();
599
+ const lowerCaseToOriginalCase = /* @__PURE__ */ new Map();
600
+ for (const h of headers) {
601
+ if (!h)
602
+ continue;
603
+ for (const { name, value } of h) {
604
+ const lower = name.toLowerCase();
605
+ lowerCaseToOriginalCase.set(lower, name);
606
+ lowerCaseToValue.set(lower, value);
607
+ }
608
+ }
609
+ const result = [];
610
+ for (const [lower, value] of lowerCaseToValue)
611
+ result.push({ name: lowerCaseToOriginalCase.get(lower), value });
612
+ return result;
613
+ }
614
+ // Annotate the CommonJS export names for ESM import in node:
615
+ 0 && (module.exports = {
616
+ Request,
617
+ Response,
618
+ Route,
619
+ WebSocket,
620
+ filterCookies,
621
+ isLocalHostname,
622
+ kMaxCookieExpiresDateInSeconds,
623
+ mergeHeaders,
624
+ parseURL,
625
+ rewriteCookies,
626
+ singleHeader,
627
+ statusText,
628
+ stripFragmentFromUrl
629
+ });