@pedropaulovc/playwright-core 1.59.0-next

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 (366) hide show
  1. package/README.md +3 -0
  2. package/ThirdPartyNotices.txt +4076 -0
  3. package/bin/install_media_pack.ps1 +5 -0
  4. package/bin/install_webkit_wsl.ps1 +33 -0
  5. package/bin/reinstall_chrome_beta_linux.sh +42 -0
  6. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  7. package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  8. package/bin/reinstall_chrome_stable_linux.sh +42 -0
  9. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  10. package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  11. package/bin/reinstall_msedge_beta_linux.sh +48 -0
  12. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  13. package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  14. package/bin/reinstall_msedge_dev_linux.sh +48 -0
  15. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  16. package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  17. package/bin/reinstall_msedge_stable_linux.sh +48 -0
  18. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  19. package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  20. package/browsers.json +79 -0
  21. package/cli.js +18 -0
  22. package/index.d.ts +17 -0
  23. package/index.js +32 -0
  24. package/index.mjs +28 -0
  25. package/lib/androidServerImpl.js +65 -0
  26. package/lib/browserServerImpl.js +120 -0
  27. package/lib/cli/driver.js +97 -0
  28. package/lib/cli/program.js +603 -0
  29. package/lib/cli/programWithTestStub.js +74 -0
  30. package/lib/client/android.js +361 -0
  31. package/lib/client/api.js +137 -0
  32. package/lib/client/artifact.js +79 -0
  33. package/lib/client/browser.js +161 -0
  34. package/lib/client/browserContext.js +582 -0
  35. package/lib/client/browserType.js +185 -0
  36. package/lib/client/cdpSession.js +51 -0
  37. package/lib/client/channelOwner.js +194 -0
  38. package/lib/client/clientHelper.js +64 -0
  39. package/lib/client/clientInstrumentation.js +55 -0
  40. package/lib/client/clientStackTrace.js +69 -0
  41. package/lib/client/clock.js +68 -0
  42. package/lib/client/connection.js +318 -0
  43. package/lib/client/consoleMessage.js +58 -0
  44. package/lib/client/coverage.js +44 -0
  45. package/lib/client/dialog.js +56 -0
  46. package/lib/client/download.js +62 -0
  47. package/lib/client/electron.js +138 -0
  48. package/lib/client/elementHandle.js +284 -0
  49. package/lib/client/errors.js +77 -0
  50. package/lib/client/eventEmitter.js +314 -0
  51. package/lib/client/events.js +103 -0
  52. package/lib/client/fetch.js +368 -0
  53. package/lib/client/fileChooser.js +46 -0
  54. package/lib/client/fileUtils.js +34 -0
  55. package/lib/client/frame.js +409 -0
  56. package/lib/client/harRouter.js +87 -0
  57. package/lib/client/input.js +84 -0
  58. package/lib/client/jsHandle.js +109 -0
  59. package/lib/client/jsonPipe.js +39 -0
  60. package/lib/client/localUtils.js +60 -0
  61. package/lib/client/locator.js +369 -0
  62. package/lib/client/network.js +747 -0
  63. package/lib/client/page.js +745 -0
  64. package/lib/client/pageAgent.js +64 -0
  65. package/lib/client/platform.js +77 -0
  66. package/lib/client/playwright.js +71 -0
  67. package/lib/client/selectors.js +55 -0
  68. package/lib/client/stream.js +39 -0
  69. package/lib/client/timeoutSettings.js +79 -0
  70. package/lib/client/tracing.js +119 -0
  71. package/lib/client/types.js +28 -0
  72. package/lib/client/video.js +59 -0
  73. package/lib/client/waiter.js +142 -0
  74. package/lib/client/webError.js +39 -0
  75. package/lib/client/webSocket.js +93 -0
  76. package/lib/client/worker.js +85 -0
  77. package/lib/client/writableStream.js +39 -0
  78. package/lib/generated/bindingsControllerSource.js +28 -0
  79. package/lib/generated/clockSource.js +28 -0
  80. package/lib/generated/injectedScriptSource.js +28 -0
  81. package/lib/generated/pollingRecorderSource.js +28 -0
  82. package/lib/generated/storageScriptSource.js +28 -0
  83. package/lib/generated/utilityScriptSource.js +28 -0
  84. package/lib/generated/webSocketMockSource.js +336 -0
  85. package/lib/inProcessFactory.js +60 -0
  86. package/lib/inprocess.js +3 -0
  87. package/lib/mcpBundle.js +84 -0
  88. package/lib/mcpBundleImpl/index.js +147 -0
  89. package/lib/outofprocess.js +76 -0
  90. package/lib/protocol/serializers.js +197 -0
  91. package/lib/protocol/validator.js +2969 -0
  92. package/lib/protocol/validatorPrimitives.js +193 -0
  93. package/lib/remote/playwrightConnection.js +129 -0
  94. package/lib/remote/playwrightServer.js +334 -0
  95. package/lib/server/agent/actionRunner.js +335 -0
  96. package/lib/server/agent/actions.js +128 -0
  97. package/lib/server/agent/codegen.js +111 -0
  98. package/lib/server/agent/context.js +150 -0
  99. package/lib/server/agent/expectTools.js +156 -0
  100. package/lib/server/agent/pageAgent.js +204 -0
  101. package/lib/server/agent/performTools.js +262 -0
  102. package/lib/server/agent/tool.js +109 -0
  103. package/lib/server/android/android.js +465 -0
  104. package/lib/server/android/backendAdb.js +177 -0
  105. package/lib/server/artifact.js +127 -0
  106. package/lib/server/bidi/bidiBrowser.js +549 -0
  107. package/lib/server/bidi/bidiChromium.js +148 -0
  108. package/lib/server/bidi/bidiConnection.js +213 -0
  109. package/lib/server/bidi/bidiDeserializer.js +116 -0
  110. package/lib/server/bidi/bidiExecutionContext.js +267 -0
  111. package/lib/server/bidi/bidiFirefox.js +128 -0
  112. package/lib/server/bidi/bidiInput.js +146 -0
  113. package/lib/server/bidi/bidiNetworkManager.js +383 -0
  114. package/lib/server/bidi/bidiOverCdp.js +102 -0
  115. package/lib/server/bidi/bidiPage.js +583 -0
  116. package/lib/server/bidi/bidiPdf.js +106 -0
  117. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  118. package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  119. package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  120. package/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
  121. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  122. package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  123. package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
  124. package/lib/server/browser.js +149 -0
  125. package/lib/server/browserContext.js +702 -0
  126. package/lib/server/browserType.js +336 -0
  127. package/lib/server/callLog.js +82 -0
  128. package/lib/server/chromium/appIcon.png +0 -0
  129. package/lib/server/chromium/chromium.js +395 -0
  130. package/lib/server/chromium/chromiumSwitches.js +104 -0
  131. package/lib/server/chromium/crBrowser.js +511 -0
  132. package/lib/server/chromium/crConnection.js +197 -0
  133. package/lib/server/chromium/crCoverage.js +235 -0
  134. package/lib/server/chromium/crDevTools.js +111 -0
  135. package/lib/server/chromium/crDragDrop.js +131 -0
  136. package/lib/server/chromium/crExecutionContext.js +146 -0
  137. package/lib/server/chromium/crInput.js +187 -0
  138. package/lib/server/chromium/crNetworkManager.js +707 -0
  139. package/lib/server/chromium/crPage.js +1001 -0
  140. package/lib/server/chromium/crPdf.js +121 -0
  141. package/lib/server/chromium/crProtocolHelper.js +145 -0
  142. package/lib/server/chromium/crServiceWorker.js +136 -0
  143. package/lib/server/chromium/defaultFontFamilies.js +162 -0
  144. package/lib/server/chromium/protocol.d.js +16 -0
  145. package/lib/server/clock.js +149 -0
  146. package/lib/server/codegen/csharp.js +327 -0
  147. package/lib/server/codegen/java.js +274 -0
  148. package/lib/server/codegen/javascript.js +247 -0
  149. package/lib/server/codegen/jsonl.js +52 -0
  150. package/lib/server/codegen/language.js +132 -0
  151. package/lib/server/codegen/languages.js +68 -0
  152. package/lib/server/codegen/python.js +279 -0
  153. package/lib/server/codegen/types.js +16 -0
  154. package/lib/server/console.js +57 -0
  155. package/lib/server/cookieStore.js +206 -0
  156. package/lib/server/debugController.js +191 -0
  157. package/lib/server/debugger.js +119 -0
  158. package/lib/server/deviceDescriptors.js +39 -0
  159. package/lib/server/deviceDescriptorsSource.json +1779 -0
  160. package/lib/server/dialog.js +116 -0
  161. package/lib/server/dispatchers/androidDispatcher.js +325 -0
  162. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  163. package/lib/server/dispatchers/browserContextDispatcher.js +384 -0
  164. package/lib/server/dispatchers/browserDispatcher.js +118 -0
  165. package/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
  166. package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  167. package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  168. package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  169. package/lib/server/dispatchers/dispatcher.js +364 -0
  170. package/lib/server/dispatchers/electronDispatcher.js +89 -0
  171. package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  172. package/lib/server/dispatchers/frameDispatcher.js +227 -0
  173. package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  174. package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  175. package/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
  176. package/lib/server/dispatchers/networkDispatchers.js +213 -0
  177. package/lib/server/dispatchers/pageAgentDispatcher.js +96 -0
  178. package/lib/server/dispatchers/pageDispatcher.js +393 -0
  179. package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  180. package/lib/server/dispatchers/streamDispatcher.js +67 -0
  181. package/lib/server/dispatchers/tracingDispatcher.js +68 -0
  182. package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
  183. package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  184. package/lib/server/dom.js +815 -0
  185. package/lib/server/download.js +70 -0
  186. package/lib/server/electron/electron.js +273 -0
  187. package/lib/server/electron/loader.js +29 -0
  188. package/lib/server/errors.js +69 -0
  189. package/lib/server/fetch.js +621 -0
  190. package/lib/server/fileChooser.js +43 -0
  191. package/lib/server/fileUploadUtils.js +84 -0
  192. package/lib/server/firefox/ffBrowser.js +418 -0
  193. package/lib/server/firefox/ffConnection.js +142 -0
  194. package/lib/server/firefox/ffExecutionContext.js +150 -0
  195. package/lib/server/firefox/ffInput.js +159 -0
  196. package/lib/server/firefox/ffNetworkManager.js +256 -0
  197. package/lib/server/firefox/ffPage.js +497 -0
  198. package/lib/server/firefox/firefox.js +114 -0
  199. package/lib/server/firefox/protocol.d.js +16 -0
  200. package/lib/server/formData.js +147 -0
  201. package/lib/server/frameSelectors.js +160 -0
  202. package/lib/server/frames.js +1471 -0
  203. package/lib/server/har/harRecorder.js +147 -0
  204. package/lib/server/har/harTracer.js +607 -0
  205. package/lib/server/harBackend.js +157 -0
  206. package/lib/server/helper.js +96 -0
  207. package/lib/server/index.js +58 -0
  208. package/lib/server/input.js +277 -0
  209. package/lib/server/instrumentation.js +72 -0
  210. package/lib/server/javascript.js +291 -0
  211. package/lib/server/launchApp.js +128 -0
  212. package/lib/server/localUtils.js +214 -0
  213. package/lib/server/macEditingCommands.js +143 -0
  214. package/lib/server/network.js +667 -0
  215. package/lib/server/page.js +830 -0
  216. package/lib/server/pipeTransport.js +89 -0
  217. package/lib/server/playwright.js +69 -0
  218. package/lib/server/progress.js +132 -0
  219. package/lib/server/protocolError.js +52 -0
  220. package/lib/server/recorder/chat.js +161 -0
  221. package/lib/server/recorder/recorderApp.js +366 -0
  222. package/lib/server/recorder/recorderRunner.js +138 -0
  223. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  224. package/lib/server/recorder/recorderUtils.js +157 -0
  225. package/lib/server/recorder/throttledFile.js +57 -0
  226. package/lib/server/recorder.js +499 -0
  227. package/lib/server/registry/browserFetcher.js +177 -0
  228. package/lib/server/registry/dependencies.js +371 -0
  229. package/lib/server/registry/index.js +1422 -0
  230. package/lib/server/registry/nativeDeps.js +1280 -0
  231. package/lib/server/registry/oopDownloadBrowserMain.js +127 -0
  232. package/lib/server/screencast.js +190 -0
  233. package/lib/server/screenshotter.js +333 -0
  234. package/lib/server/selectors.js +112 -0
  235. package/lib/server/socksClientCertificatesInterceptor.js +383 -0
  236. package/lib/server/socksInterceptor.js +95 -0
  237. package/lib/server/trace/recorder/snapshotter.js +147 -0
  238. package/lib/server/trace/recorder/snapshotterInjected.js +561 -0
  239. package/lib/server/trace/recorder/tracing.js +604 -0
  240. package/lib/server/trace/viewer/traceExporter.js +679 -0
  241. package/lib/server/trace/viewer/traceParser.js +72 -0
  242. package/lib/server/trace/viewer/traceViewer.js +245 -0
  243. package/lib/server/transport.js +181 -0
  244. package/lib/server/types.js +28 -0
  245. package/lib/server/usKeyboardLayout.js +145 -0
  246. package/lib/server/utils/ascii.js +44 -0
  247. package/lib/server/utils/comparators.js +139 -0
  248. package/lib/server/utils/crypto.js +216 -0
  249. package/lib/server/utils/debug.js +42 -0
  250. package/lib/server/utils/debugLogger.js +122 -0
  251. package/lib/server/utils/env.js +73 -0
  252. package/lib/server/utils/eventsHelper.js +39 -0
  253. package/lib/server/utils/expectUtils.js +123 -0
  254. package/lib/server/utils/fileUtils.js +191 -0
  255. package/lib/server/utils/happyEyeballs.js +207 -0
  256. package/lib/server/utils/hostPlatform.js +123 -0
  257. package/lib/server/utils/httpServer.js +203 -0
  258. package/lib/server/utils/imageUtils.js +141 -0
  259. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  260. package/lib/server/utils/image_tools/compare.js +109 -0
  261. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  262. package/lib/server/utils/image_tools/stats.js +102 -0
  263. package/lib/server/utils/linuxUtils.js +71 -0
  264. package/lib/server/utils/network.js +242 -0
  265. package/lib/server/utils/nodePlatform.js +154 -0
  266. package/lib/server/utils/pipeTransport.js +84 -0
  267. package/lib/server/utils/processLauncher.js +241 -0
  268. package/lib/server/utils/profiler.js +65 -0
  269. package/lib/server/utils/socksProxy.js +511 -0
  270. package/lib/server/utils/spawnAsync.js +41 -0
  271. package/lib/server/utils/task.js +51 -0
  272. package/lib/server/utils/userAgent.js +98 -0
  273. package/lib/server/utils/wsServer.js +121 -0
  274. package/lib/server/utils/zipFile.js +74 -0
  275. package/lib/server/utils/zones.js +57 -0
  276. package/lib/server/videoRecorder.js +124 -0
  277. package/lib/server/webkit/protocol.d.js +16 -0
  278. package/lib/server/webkit/webkit.js +108 -0
  279. package/lib/server/webkit/wkBrowser.js +335 -0
  280. package/lib/server/webkit/wkConnection.js +144 -0
  281. package/lib/server/webkit/wkExecutionContext.js +154 -0
  282. package/lib/server/webkit/wkInput.js +181 -0
  283. package/lib/server/webkit/wkInterceptableRequest.js +197 -0
  284. package/lib/server/webkit/wkPage.js +1158 -0
  285. package/lib/server/webkit/wkProvisionalPage.js +83 -0
  286. package/lib/server/webkit/wkWorkers.js +105 -0
  287. package/lib/third_party/pixelmatch.js +255 -0
  288. package/lib/utils/isomorphic/ariaSnapshot.js +455 -0
  289. package/lib/utils/isomorphic/assert.js +31 -0
  290. package/lib/utils/isomorphic/colors.js +72 -0
  291. package/lib/utils/isomorphic/cssParser.js +245 -0
  292. package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  293. package/lib/utils/isomorphic/headers.js +53 -0
  294. package/lib/utils/isomorphic/locatorGenerators.js +689 -0
  295. package/lib/utils/isomorphic/locatorParser.js +176 -0
  296. package/lib/utils/isomorphic/locatorUtils.js +81 -0
  297. package/lib/utils/isomorphic/lruCache.js +51 -0
  298. package/lib/utils/isomorphic/manualPromise.js +114 -0
  299. package/lib/utils/isomorphic/mimeType.js +459 -0
  300. package/lib/utils/isomorphic/multimap.js +80 -0
  301. package/lib/utils/isomorphic/protocolFormatter.js +81 -0
  302. package/lib/utils/isomorphic/protocolMetainfo.js +330 -0
  303. package/lib/utils/isomorphic/rtti.js +43 -0
  304. package/lib/utils/isomorphic/selectorParser.js +386 -0
  305. package/lib/utils/isomorphic/semaphore.js +54 -0
  306. package/lib/utils/isomorphic/stackTrace.js +158 -0
  307. package/lib/utils/isomorphic/stringUtils.js +204 -0
  308. package/lib/utils/isomorphic/time.js +49 -0
  309. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  310. package/lib/utils/isomorphic/trace/entries.js +16 -0
  311. package/lib/utils/isomorphic/trace/snapshotRenderer.js +499 -0
  312. package/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
  313. package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
  314. package/lib/utils/isomorphic/trace/traceLoader.js +131 -0
  315. package/lib/utils/isomorphic/trace/traceModel.js +365 -0
  316. package/lib/utils/isomorphic/trace/traceModernizer.js +400 -0
  317. package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
  318. package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
  319. package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
  320. package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
  321. package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
  322. package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
  323. package/lib/utils/isomorphic/traceUtils.js +58 -0
  324. package/lib/utils/isomorphic/types.js +16 -0
  325. package/lib/utils/isomorphic/urlMatch.js +190 -0
  326. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  327. package/lib/utils/isomorphic/yaml.js +84 -0
  328. package/lib/utils.js +111 -0
  329. package/lib/utilsBundle.js +109 -0
  330. package/lib/utilsBundleImpl/index.js +218 -0
  331. package/lib/utilsBundleImpl/xdg-open +1066 -0
  332. package/lib/vite/htmlReport/index.html +84 -0
  333. package/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
  334. package/lib/vite/recorder/assets/codeMirrorModule-DadYNm1I.js +32 -0
  335. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  336. package/lib/vite/recorder/assets/index-BSjZa4pk.css +1 -0
  337. package/lib/vite/recorder/assets/index-BhTWtUlo.js +193 -0
  338. package/lib/vite/recorder/index.html +29 -0
  339. package/lib/vite/recorder/playwright-logo.svg +9 -0
  340. package/lib/vite/traceViewer/assets/codeMirrorModule-DwzBH9eL.js +32 -0
  341. package/lib/vite/traceViewer/assets/codeMirrorModule-a5XoALAZ.js +32 -0
  342. package/lib/vite/traceViewer/assets/defaultSettingsView-CJSZINFr.js +266 -0
  343. package/lib/vite/traceViewer/assets/defaultSettingsView-CdCX8877.js +266 -0
  344. package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  345. package/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
  346. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  347. package/lib/vite/traceViewer/defaultSettingsView.7ch9cixO.css +1 -0
  348. package/lib/vite/traceViewer/index.BVu7tZDe.css +1 -0
  349. package/lib/vite/traceViewer/index.Dd9jebqr.js +2 -0
  350. package/lib/vite/traceViewer/index.f4OcrOqs.js +2 -0
  351. package/lib/vite/traceViewer/index.html +43 -0
  352. package/lib/vite/traceViewer/manifest.webmanifest +16 -0
  353. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  354. package/lib/vite/traceViewer/snapshot.html +21 -0
  355. package/lib/vite/traceViewer/sw.bundle.js +5 -0
  356. package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  357. package/lib/vite/traceViewer/uiMode.CQJ9SCIQ.js +5 -0
  358. package/lib/vite/traceViewer/uiMode.html +17 -0
  359. package/lib/vite/traceViewer/uiMode.qcahlSup.js +5 -0
  360. package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  361. package/lib/zipBundle.js +34 -0
  362. package/lib/zipBundleImpl.js +5 -0
  363. package/package.json +43 -0
  364. package/types/protocol.d.ts +23824 -0
  365. package/types/structs.d.ts +45 -0
  366. package/types/types.d.ts +22843 -0
@@ -0,0 +1,241 @@
1
+ "use strict";
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 processLauncher_exports = {};
30
+ __export(processLauncher_exports, {
31
+ envArrayToObject: () => envArrayToObject,
32
+ gracefullyCloseAll: () => gracefullyCloseAll,
33
+ gracefullyCloseSet: () => gracefullyCloseSet,
34
+ gracefullyProcessExitDoNotHang: () => gracefullyProcessExitDoNotHang,
35
+ launchProcess: () => launchProcess
36
+ });
37
+ module.exports = __toCommonJS(processLauncher_exports);
38
+ var childProcess = __toESM(require("child_process"));
39
+ var import_fs = __toESM(require("fs"));
40
+ var readline = __toESM(require("readline"));
41
+ var import_fileUtils = require("./fileUtils");
42
+ var import_utils = require("../../utils");
43
+ const gracefullyCloseSet = /* @__PURE__ */ new Set();
44
+ const killSet = /* @__PURE__ */ new Set();
45
+ async function gracefullyCloseAll() {
46
+ await Promise.all(Array.from(gracefullyCloseSet).map((gracefullyClose) => gracefullyClose().catch((e) => {
47
+ })));
48
+ }
49
+ function gracefullyProcessExitDoNotHang(code) {
50
+ setTimeout(() => process.exit(code), 3e4);
51
+ gracefullyCloseAll().then(() => {
52
+ process.exit(code);
53
+ });
54
+ }
55
+ function exitHandler() {
56
+ for (const kill of killSet)
57
+ kill();
58
+ }
59
+ let sigintHandlerCalled = false;
60
+ function sigintHandler() {
61
+ const exitWithCode130 = () => {
62
+ if ((0, import_utils.isUnderTest)()) {
63
+ setTimeout(() => process.exit(130), 1e3);
64
+ } else {
65
+ process.exit(130);
66
+ }
67
+ };
68
+ if (sigintHandlerCalled) {
69
+ process.off("SIGINT", sigintHandler);
70
+ for (const kill of killSet)
71
+ kill();
72
+ exitWithCode130();
73
+ } else {
74
+ sigintHandlerCalled = true;
75
+ gracefullyCloseAll().then(() => exitWithCode130());
76
+ }
77
+ }
78
+ function sigtermHandler() {
79
+ gracefullyCloseAll();
80
+ }
81
+ function sighupHandler() {
82
+ gracefullyCloseAll();
83
+ }
84
+ const installedHandlers = /* @__PURE__ */ new Set();
85
+ const processHandlers = {
86
+ exit: exitHandler,
87
+ SIGINT: sigintHandler,
88
+ SIGTERM: sigtermHandler,
89
+ SIGHUP: sighupHandler
90
+ };
91
+ function addProcessHandlerIfNeeded(name) {
92
+ if (!installedHandlers.has(name)) {
93
+ installedHandlers.add(name);
94
+ process.on(name, processHandlers[name]);
95
+ }
96
+ }
97
+ function removeProcessHandlersIfNeeded() {
98
+ if (killSet.size)
99
+ return;
100
+ for (const handler of installedHandlers)
101
+ process.off(handler, processHandlers[handler]);
102
+ installedHandlers.clear();
103
+ }
104
+ async function launchProcess(options) {
105
+ const stdio = options.stdio === "pipe" ? ["ignore", "pipe", "pipe", "pipe", "pipe"] : ["pipe", "pipe", "pipe"];
106
+ options.log(`<launching> ${options.command} ${options.args ? options.args.join(" ") : ""}`);
107
+ const spawnOptions = {
108
+ // On non-windows platforms, `detached: true` makes child process a leader of a new
109
+ // process group, making it possible to kill child process tree with `.kill(-pid)` command.
110
+ // @see https://nodejs.org/api/child_process.html#child_process_options_detached
111
+ detached: process.platform !== "win32",
112
+ env: options.env,
113
+ cwd: options.cwd,
114
+ shell: options.shell,
115
+ stdio
116
+ };
117
+ const spawnedProcess = childProcess.spawn(options.command, options.args || [], spawnOptions);
118
+ const cleanup = async () => {
119
+ options.log(`[pid=${spawnedProcess.pid || "N/A"}] starting temporary directories cleanup`);
120
+ const errors = await (0, import_fileUtils.removeFolders)(options.tempDirectories);
121
+ for (let i = 0; i < options.tempDirectories.length; ++i) {
122
+ if (errors[i])
123
+ options.log(`[pid=${spawnedProcess.pid || "N/A"}] exception while removing ${options.tempDirectories[i]}: ${errors[i]}`);
124
+ }
125
+ options.log(`[pid=${spawnedProcess.pid || "N/A"}] finished temporary directories cleanup`);
126
+ };
127
+ spawnedProcess.on("error", () => {
128
+ });
129
+ if (!spawnedProcess.pid) {
130
+ let failed;
131
+ const failedPromise = new Promise((f, r) => failed = f);
132
+ spawnedProcess.once("error", (error) => {
133
+ failed(new Error("Failed to launch: " + error));
134
+ });
135
+ return failedPromise.then(async (error) => {
136
+ await cleanup();
137
+ throw error;
138
+ });
139
+ }
140
+ options.log(`<launched> pid=${spawnedProcess.pid}`);
141
+ const stdout = readline.createInterface({ input: spawnedProcess.stdout });
142
+ stdout.on("line", (data) => {
143
+ options.log(`[pid=${spawnedProcess.pid}][out] ` + data);
144
+ });
145
+ const stderr = readline.createInterface({ input: spawnedProcess.stderr });
146
+ stderr.on("line", (data) => {
147
+ options.log(`[pid=${spawnedProcess.pid}][err] ` + data);
148
+ });
149
+ let processClosed = false;
150
+ let fulfillCleanup = () => {
151
+ };
152
+ const waitForCleanup = new Promise((f) => fulfillCleanup = f);
153
+ spawnedProcess.once("close", (exitCode, signal) => {
154
+ options.log(`[pid=${spawnedProcess.pid}] <process did exit: exitCode=${exitCode}, signal=${signal}>`);
155
+ processClosed = true;
156
+ gracefullyCloseSet.delete(gracefullyClose);
157
+ killSet.delete(killProcessAndCleanup);
158
+ removeProcessHandlersIfNeeded();
159
+ options.onExit(exitCode, signal);
160
+ cleanup().then(fulfillCleanup);
161
+ });
162
+ addProcessHandlerIfNeeded("exit");
163
+ if (options.handleSIGINT)
164
+ addProcessHandlerIfNeeded("SIGINT");
165
+ if (options.handleSIGTERM)
166
+ addProcessHandlerIfNeeded("SIGTERM");
167
+ if (options.handleSIGHUP)
168
+ addProcessHandlerIfNeeded("SIGHUP");
169
+ gracefullyCloseSet.add(gracefullyClose);
170
+ killSet.add(killProcessAndCleanup);
171
+ let gracefullyClosing = false;
172
+ async function gracefullyClose() {
173
+ if (gracefullyClosing) {
174
+ options.log(`[pid=${spawnedProcess.pid}] <forcefully close>`);
175
+ killProcess();
176
+ await waitForCleanup;
177
+ return;
178
+ }
179
+ gracefullyClosing = true;
180
+ options.log(`[pid=${spawnedProcess.pid}] <gracefully close start>`);
181
+ await options.attemptToGracefullyClose().catch(() => killProcess());
182
+ await waitForCleanup;
183
+ options.log(`[pid=${spawnedProcess.pid}] <gracefully close end>`);
184
+ }
185
+ function killProcess() {
186
+ gracefullyCloseSet.delete(gracefullyClose);
187
+ killSet.delete(killProcessAndCleanup);
188
+ removeProcessHandlersIfNeeded();
189
+ options.log(`[pid=${spawnedProcess.pid}] <kill>`);
190
+ if (spawnedProcess.pid && !spawnedProcess.killed && !processClosed) {
191
+ options.log(`[pid=${spawnedProcess.pid}] <will force kill>`);
192
+ try {
193
+ if (process.platform === "win32") {
194
+ const taskkillProcess = childProcess.spawnSync(`taskkill /pid ${spawnedProcess.pid} /T /F`, { shell: true });
195
+ const [stdout2, stderr2] = [taskkillProcess.stdout.toString(), taskkillProcess.stderr.toString()];
196
+ if (stdout2)
197
+ options.log(`[pid=${spawnedProcess.pid}] taskkill stdout: ${stdout2}`);
198
+ if (stderr2)
199
+ options.log(`[pid=${spawnedProcess.pid}] taskkill stderr: ${stderr2}`);
200
+ } else {
201
+ process.kill(-spawnedProcess.pid, "SIGKILL");
202
+ }
203
+ } catch (e) {
204
+ options.log(`[pid=${spawnedProcess.pid}] exception while trying to kill process: ${e}`);
205
+ }
206
+ } else {
207
+ options.log(`[pid=${spawnedProcess.pid}] <skipped force kill spawnedProcess.killed=${spawnedProcess.killed} processClosed=${processClosed}>`);
208
+ }
209
+ }
210
+ function killProcessAndCleanup() {
211
+ killProcess();
212
+ options.log(`[pid=${spawnedProcess.pid || "N/A"}] starting temporary directories cleanup`);
213
+ for (const dir of options.tempDirectories) {
214
+ try {
215
+ import_fs.default.rmSync(dir, { force: true, recursive: true, maxRetries: 5 });
216
+ } catch (e) {
217
+ options.log(`[pid=${spawnedProcess.pid || "N/A"}] exception while removing ${dir}: ${e}`);
218
+ }
219
+ }
220
+ options.log(`[pid=${spawnedProcess.pid || "N/A"}] finished temporary directories cleanup`);
221
+ }
222
+ function killAndWait() {
223
+ killProcess();
224
+ return waitForCleanup;
225
+ }
226
+ return { launchedProcess: spawnedProcess, gracefullyClose, kill: killAndWait };
227
+ }
228
+ function envArrayToObject(env) {
229
+ const result = {};
230
+ for (const { name, value } of env)
231
+ result[name] = value;
232
+ return result;
233
+ }
234
+ // Annotate the CommonJS export names for ESM import in node:
235
+ 0 && (module.exports = {
236
+ envArrayToObject,
237
+ gracefullyCloseAll,
238
+ gracefullyCloseSet,
239
+ gracefullyProcessExitDoNotHang,
240
+ launchProcess
241
+ });
@@ -0,0 +1,65 @@
1
+ "use strict";
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 profiler_exports = {};
30
+ __export(profiler_exports, {
31
+ startProfiling: () => startProfiling,
32
+ stopProfiling: () => stopProfiling
33
+ });
34
+ module.exports = __toCommonJS(profiler_exports);
35
+ var import_fs = __toESM(require("fs"));
36
+ var import_path = __toESM(require("path"));
37
+ const profileDir = process.env.PWTEST_PROFILE_DIR || "";
38
+ let session;
39
+ async function startProfiling() {
40
+ if (!profileDir)
41
+ return;
42
+ session = new (require("inspector")).Session();
43
+ session.connect();
44
+ await new Promise((f) => {
45
+ session.post("Profiler.enable", () => {
46
+ session.post("Profiler.start", f);
47
+ });
48
+ });
49
+ }
50
+ async function stopProfiling(profileName) {
51
+ if (!profileDir)
52
+ return;
53
+ await new Promise((f) => session.post("Profiler.stop", (err, { profile }) => {
54
+ if (!err) {
55
+ import_fs.default.mkdirSync(profileDir, { recursive: true });
56
+ import_fs.default.writeFileSync(import_path.default.join(profileDir, profileName + ".json"), JSON.stringify(profile));
57
+ }
58
+ f();
59
+ }));
60
+ }
61
+ // Annotate the CommonJS export names for ESM import in node:
62
+ 0 && (module.exports = {
63
+ startProfiling,
64
+ stopProfiling
65
+ });