@checkly/playwright-core 1.51.17-beta.2 → 1.54.2-beta.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 (376) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/browsers.json +16 -14
  3. package/index.js +1 -1
  4. package/lib/androidServerImpl.js +47 -50
  5. package/lib/browserServerImpl.js +89 -69
  6. package/lib/checkly/escapeRegExp.js +23 -27
  7. package/lib/checkly/fetch.js +64 -46
  8. package/lib/checkly/secretsFilter.js +49 -35
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +400 -359
  11. package/lib/cli/programWithTestStub.js +51 -45
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +151 -242
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -36
  16. package/lib/client/browser.js +96 -71
  17. package/lib/client/browserContext.js +314 -345
  18. package/lib/client/browserType.js +103 -127
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +90 -113
  21. package/lib/client/clientHelper.js +48 -39
  22. package/lib/client/clientInstrumentation.js +40 -37
  23. package/lib/client/clientStackTrace.js +41 -37
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +188 -214
  26. package/lib/client/consoleMessage.js +31 -28
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +80 -77
  31. package/lib/client/elementHandle.js +120 -159
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +124 -121
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +166 -190
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +31 -28
  38. package/lib/client/frame.js +207 -306
  39. package/lib/client/harRouter.js +42 -52
  40. package/lib/client/input.js +42 -69
  41. package/lib/client/jsHandle.js +54 -69
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +29 -29
  44. package/lib/client/locator.js +145 -237
  45. package/lib/client/network.js +282 -307
  46. package/lib/client/page.js +269 -318
  47. package/lib/client/platform.js +46 -43
  48. package/lib/client/playwright.js +51 -76
  49. package/lib/client/selectors.js +45 -63
  50. package/lib/client/stream.js +29 -25
  51. package/lib/client/timeoutSettings.js +55 -41
  52. package/lib/client/tracing.js +49 -96
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +69 -88
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +43 -56
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +27 -23
  60. package/lib/generated/bindingsControllerSource.js +28 -0
  61. package/lib/generated/clockSource.js +26 -6
  62. package/lib/generated/consoleApiSource.js +26 -6
  63. package/lib/generated/injectedScriptSource.js +26 -6
  64. package/lib/generated/pollingRecorderSource.js +26 -6
  65. package/lib/generated/storageScriptSource.js +28 -0
  66. package/lib/generated/utilityScriptSource.js +26 -6
  67. package/lib/generated/webSocketMockSource.js +333 -5
  68. package/lib/inProcessFactory.js +51 -53
  69. package/lib/inprocess.js +2 -19
  70. package/lib/outofprocess.js +51 -46
  71. package/lib/protocol/serializers.js +153 -134
  72. package/lib/protocol/validator.js +2807 -2739
  73. package/lib/protocol/validatorPrimitives.js +114 -73
  74. package/lib/remote/playwrightConnection.js +88 -242
  75. package/lib/remote/playwrightServer.js +305 -92
  76. package/lib/server/accessibility.js +44 -37
  77. package/lib/server/android/android.js +251 -241
  78. package/lib/server/android/backendAdb.js +87 -82
  79. package/lib/server/artifact.js +78 -55
  80. package/lib/server/bidi/bidiBrowser.js +297 -158
  81. package/lib/server/bidi/bidiChromium.js +119 -89
  82. package/lib/server/bidi/bidiConnection.js +66 -83
  83. package/lib/server/bidi/bidiExecutionContext.js +129 -113
  84. package/lib/server/bidi/bidiFirefox.js +86 -76
  85. package/lib/server/bidi/bidiInput.js +106 -117
  86. package/lib/server/bidi/bidiNetworkManager.js +142 -159
  87. package/lib/server/bidi/bidiOverCdp.js +57 -58
  88. package/lib/server/bidi/bidiPage.js +260 -260
  89. package/lib/server/bidi/bidiPdf.js +52 -86
  90. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  91. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  92. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  93. package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
  94. package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
  95. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  96. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  97. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  98. package/lib/server/browser.js +93 -95
  99. package/lib/server/browserContext.js +419 -429
  100. package/lib/server/browserType.js +186 -216
  101. package/lib/server/callLog.js +47 -44
  102. package/lib/server/chromium/chromium.js +235 -203
  103. package/lib/server/chromium/chromiumSwitches.js +100 -67
  104. package/lib/server/chromium/crAccessibility.js +157 -131
  105. package/lib/server/chromium/crBrowser.js +310 -292
  106. package/lib/server/chromium/crConnection.js +95 -121
  107. package/lib/server/chromium/crCoverage.js +121 -131
  108. package/lib/server/chromium/crDevTools.js +60 -51
  109. package/lib/server/chromium/crDragDrop.js +68 -84
  110. package/lib/server/chromium/crExecutionContext.js +89 -83
  111. package/lib/server/chromium/crInput.js +118 -113
  112. package/lib/server/chromium/crNetworkManager.js +274 -375
  113. package/lib/server/chromium/crPage.js +536 -593
  114. package/lib/server/chromium/crPdf.js +54 -86
  115. package/lib/server/chromium/crProtocolHelper.js +92 -80
  116. package/lib/server/chromium/crServiceWorker.js +84 -73
  117. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  118. package/lib/server/chromium/protocol.d.js +16 -0
  119. package/lib/server/chromium/videoRecorder.js +66 -99
  120. package/lib/server/clock.js +107 -83
  121. package/lib/server/codegen/csharp.js +192 -162
  122. package/lib/server/codegen/java.js +156 -129
  123. package/lib/server/codegen/javascript.js +163 -148
  124. package/lib/server/codegen/jsonl.js +32 -28
  125. package/lib/server/codegen/language.js +75 -52
  126. package/lib/server/codegen/languages.js +65 -27
  127. package/lib/server/codegen/python.js +141 -126
  128. package/lib/server/codegen/types.js +15 -4
  129. package/lib/server/console.js +28 -32
  130. package/lib/server/cookieStore.js +108 -86
  131. package/lib/server/debugController.js +147 -151
  132. package/lib/server/debugger.js +86 -78
  133. package/lib/server/deviceDescriptors.js +37 -24
  134. package/lib/server/deviceDescriptorsSource.json +238 -128
  135. package/lib/server/dialog.js +84 -39
  136. package/lib/server/dispatchers/androidDispatcher.js +257 -148
  137. package/lib/server/dispatchers/artifactDispatcher.js +79 -79
  138. package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
  139. package/lib/server/dispatchers/browserDispatcher.js +96 -148
  140. package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
  141. package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
  142. package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
  143. package/lib/server/dispatchers/dialogDispatcher.js +34 -31
  144. package/lib/server/dispatchers/dispatcher.js +208 -248
  145. package/lib/server/dispatchers/electronDispatcher.js +66 -70
  146. package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
  147. package/lib/server/dispatchers/frameDispatcher.js +211 -272
  148. package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
  149. package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
  150. package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
  151. package/lib/server/dispatchers/networkDispatchers.js +117 -128
  152. package/lib/server/dispatchers/pageDispatcher.js +256 -248
  153. package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
  154. package/lib/server/dispatchers/streamDispatcher.js +52 -48
  155. package/lib/server/dispatchers/tracingDispatcher.js +47 -52
  156. package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
  157. package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
  158. package/lib/server/dom.js +485 -582
  159. package/lib/server/download.js +47 -37
  160. package/lib/server/electron/electron.js +216 -243
  161. package/lib/server/electron/loader.js +9 -37
  162. package/lib/server/errors.js +47 -46
  163. package/lib/server/fetch.js +317 -360
  164. package/lib/server/fileChooser.js +25 -24
  165. package/lib/server/fileUploadUtils.js +66 -60
  166. package/lib/server/firefox/ffAccessibility.js +153 -131
  167. package/lib/server/firefox/ffBrowser.js +268 -305
  168. package/lib/server/firefox/ffConnection.js +63 -84
  169. package/lib/server/firefox/ffExecutionContext.js +92 -73
  170. package/lib/server/firefox/ffInput.js +82 -84
  171. package/lib/server/firefox/ffNetworkManager.js +137 -114
  172. package/lib/server/firefox/ffPage.js +261 -293
  173. package/lib/server/firefox/firefox.js +80 -72
  174. package/lib/server/firefox/protocol.d.js +16 -0
  175. package/lib/server/formData.js +107 -35
  176. package/lib/server/frameSelectors.js +98 -114
  177. package/lib/server/frames.js +845 -1055
  178. package/lib/server/har/harRecorder.js +85 -77
  179. package/lib/server/har/harTracer.js +290 -223
  180. package/lib/server/harBackend.js +80 -80
  181. package/lib/server/helper.js +55 -59
  182. package/lib/server/index.js +59 -99
  183. package/lib/server/input.js +151 -189
  184. package/lib/server/instrumentation.js +57 -44
  185. package/lib/server/javascript.js +133 -134
  186. package/lib/server/launchApp.js +113 -75
  187. package/lib/server/localUtils.js +150 -142
  188. package/lib/server/macEditingCommands.js +141 -137
  189. package/lib/server/network.js +299 -303
  190. package/lib/server/page.js +513 -544
  191. package/lib/server/pipeTransport.js +49 -45
  192. package/lib/server/playwright.js +58 -67
  193. package/lib/server/progress.js +137 -68
  194. package/lib/server/protocolError.js +34 -31
  195. package/lib/server/recorder/chat.js +70 -86
  196. package/lib/server/recorder/recorderApp.js +341 -176
  197. package/lib/server/recorder/recorderInTraceViewer.js +65 -94
  198. package/lib/server/recorder/recorderRunner.js +93 -116
  199. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  200. package/lib/server/recorder/recorderUtils.js +104 -47
  201. package/lib/server/recorder/throttledFile.js +42 -30
  202. package/lib/server/recorder.js +395 -275
  203. package/lib/server/registry/browserFetcher.js +106 -101
  204. package/lib/server/registry/dependencies.js +245 -196
  205. package/lib/server/registry/index.js +930 -803
  206. package/lib/server/registry/nativeDeps.js +1073 -464
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +160 -191
  209. package/lib/server/selectors.js +90 -51
  210. package/lib/server/socksClientCertificatesInterceptor.js +171 -186
  211. package/lib/server/socksInterceptor.js +62 -70
  212. package/lib/server/trace/recorder/snapshotter.js +76 -102
  213. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  214. package/lib/server/trace/recorder/tracing.js +354 -362
  215. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  216. package/lib/server/trace/viewer/traceViewer.js +160 -147
  217. package/lib/server/transport.js +119 -134
  218. package/lib/server/types.js +26 -22
  219. package/lib/server/usKeyboardLayout.js +135 -545
  220. package/lib/server/utils/ascii.js +39 -26
  221. package/lib/server/utils/comparators.js +105 -103
  222. package/lib/server/utils/crypto.js +157 -112
  223. package/lib/server/utils/debug.js +36 -32
  224. package/lib/server/utils/debugLogger.js +77 -48
  225. package/lib/server/utils/env.js +52 -37
  226. package/lib/server/utils/eventsHelper.js +29 -28
  227. package/lib/server/utils/expectUtils.js +31 -26
  228. package/lib/server/utils/fileUtils.js +123 -136
  229. package/lib/server/utils/happyEyeballs.js +141 -126
  230. package/lib/server/utils/hostPlatform.js +84 -120
  231. package/lib/server/utils/httpServer.js +106 -121
  232. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  233. package/lib/server/utils/image_tools/compare.js +44 -43
  234. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  235. package/lib/server/utils/image_tools/stats.js +40 -40
  236. package/lib/server/utils/linuxUtils.js +50 -37
  237. package/lib/server/utils/network.js +152 -96
  238. package/lib/server/utils/nodePlatform.js +87 -79
  239. package/lib/server/utils/pipeTransport.js +44 -42
  240. package/lib/server/utils/processLauncher.js +111 -121
  241. package/lib/server/utils/profiler.js +52 -39
  242. package/lib/server/utils/socksProxy.js +280 -339
  243. package/lib/server/utils/spawnAsync.js +37 -41
  244. package/lib/server/utils/task.js +31 -38
  245. package/lib/server/utils/userAgent.js +73 -66
  246. package/lib/server/utils/wsServer.js +68 -75
  247. package/lib/server/utils/zipFile.js +36 -37
  248. package/lib/server/utils/zones.js +37 -34
  249. package/lib/server/webkit/protocol.d.js +16 -0
  250. package/lib/server/webkit/webkit.js +77 -61
  251. package/lib/server/webkit/wkAccessibility.js +161 -118
  252. package/lib/server/webkit/wkBrowser.js +193 -184
  253. package/lib/server/webkit/wkConnection.js +59 -83
  254. package/lib/server/webkit/wkExecutionContext.js +85 -70
  255. package/lib/server/webkit/wkInput.js +97 -95
  256. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  257. package/lib/server/webkit/wkPage.js +568 -667
  258. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  259. package/lib/server/webkit/wkWorkers.js +79 -79
  260. package/lib/utils/expectUtils.js +31 -26
  261. package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
  262. package/lib/utils/isomorphic/assert.js +28 -22
  263. package/lib/utils/isomorphic/colors.js +66 -59
  264. package/lib/utils/isomorphic/cssParser.js +120 -125
  265. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  266. package/lib/utils/isomorphic/headers.js +38 -37
  267. package/lib/utils/isomorphic/locatorGenerators.js +358 -357
  268. package/lib/utils/isomorphic/locatorParser.js +96 -105
  269. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  270. package/lib/utils/isomorphic/manualPromise.js +46 -39
  271. package/lib/utils/isomorphic/mimeType.js +447 -25
  272. package/lib/utils/isomorphic/multimap.js +34 -27
  273. package/lib/utils/isomorphic/protocolFormatter.js +68 -0
  274. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  275. package/lib/utils/isomorphic/recorderUtils.js +140 -181
  276. package/lib/utils/isomorphic/rtti.js +35 -33
  277. package/lib/utils/isomorphic/selectorParser.js +182 -193
  278. package/lib/utils/isomorphic/semaphore.js +27 -24
  279. package/lib/utils/isomorphic/stackTrace.js +87 -98
  280. package/lib/utils/isomorphic/stringUtils.js +98 -112
  281. package/lib/utils/isomorphic/time.js +46 -22
  282. package/lib/utils/isomorphic/timeoutRunner.js +53 -53
  283. package/lib/utils/isomorphic/traceUtils.js +37 -41
  284. package/lib/utils/isomorphic/types.js +15 -4
  285. package/lib/utils/isomorphic/urlMatch.js +113 -67
  286. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  287. package/lib/utils.js +101 -443
  288. package/lib/utilsBundle.js +101 -52
  289. package/lib/utilsBundleImpl/index.js +160 -150
  290. package/lib/zipBundle.js +32 -23
  291. package/lib/zipBundleImpl.js +4 -4
  292. package/package.json +1 -1
  293. package/types/protocol.d.ts +1267 -1057
  294. package/types/types.d.ts +131 -29
  295. package/lib/common/socksProxy.js +0 -569
  296. package/lib/common/timeoutSettings.js +0 -73
  297. package/lib/common/types.js +0 -5
  298. package/lib/image_tools/colorUtils.js +0 -98
  299. package/lib/image_tools/compare.js +0 -108
  300. package/lib/image_tools/imageChannel.js +0 -70
  301. package/lib/image_tools/stats.js +0 -102
  302. package/lib/protocol/debug.js +0 -27
  303. package/lib/protocol/transport.js +0 -82
  304. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  305. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  306. package/lib/server/recorder/contextRecorder.js +0 -290
  307. package/lib/server/recorder/recorderCollection.js +0 -104
  308. package/lib/server/recorder/recorderFrontend.js +0 -5
  309. package/lib/server/storageScript.js +0 -160
  310. package/lib/server/timeoutSettings.js +0 -74
  311. package/lib/third_party/diff_match_patch.js +0 -2222
  312. package/lib/utils/ascii.js +0 -31
  313. package/lib/utils/comparators.js +0 -171
  314. package/lib/utils/crypto.js +0 -174
  315. package/lib/utils/debug.js +0 -46
  316. package/lib/utils/debugLogger.js +0 -91
  317. package/lib/utils/env.js +0 -49
  318. package/lib/utils/eventsHelper.js +0 -38
  319. package/lib/utils/fileUtils.js +0 -205
  320. package/lib/utils/happy-eyeballs.js +0 -210
  321. package/lib/utils/headers.js +0 -52
  322. package/lib/utils/hostPlatform.js +0 -133
  323. package/lib/utils/httpServer.js +0 -237
  324. package/lib/utils/index.js +0 -368
  325. package/lib/utils/linuxUtils.js +0 -78
  326. package/lib/utils/manualPromise.js +0 -109
  327. package/lib/utils/multimap.js +0 -75
  328. package/lib/utils/network.js +0 -160
  329. package/lib/utils/processLauncher.js +0 -248
  330. package/lib/utils/profiler.js +0 -53
  331. package/lib/utils/rtti.js +0 -44
  332. package/lib/utils/semaphore.js +0 -51
  333. package/lib/utils/spawnAsync.js +0 -45
  334. package/lib/utils/stackTrace.js +0 -121
  335. package/lib/utils/task.js +0 -58
  336. package/lib/utils/time.js +0 -37
  337. package/lib/utils/timeoutRunner.js +0 -66
  338. package/lib/utils/traceUtils.js +0 -44
  339. package/lib/utils/userAgent.js +0 -105
  340. package/lib/utils/wsServer.js +0 -127
  341. package/lib/utils/zipFile.js +0 -75
  342. package/lib/utils/zones.js +0 -62
  343. package/lib/vite/htmlReport/index.html +0 -69
  344. package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +0 -24
  345. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +0 -1
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  348. package/lib/vite/recorder/assets/index-eHBmevrY.css +0 -1
  349. package/lib/vite/recorder/index.html +0 -29
  350. package/lib/vite/recorder/playwright-logo.svg +0 -9
  351. package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +0 -24
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +0 -1
  353. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +0 -235
  354. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +0 -25
  355. package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js +0 -9
  356. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +0 -1
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +0 -1
  359. package/lib/vite/traceViewer/embedded.DpNPH6mk.js +0 -2
  360. package/lib/vite/traceViewer/embedded.html +0 -18
  361. package/lib/vite/traceViewer/embedded.mLhjB5IF.css +0 -1
  362. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  363. package/lib/vite/traceViewer/index.CuE3SYGw.js +0 -2
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +0 -1
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.BD-uZJs7.js +0 -2
  368. package/lib/vite/traceViewer/recorder.html +0 -17
  369. package/lib/vite/traceViewer/recorder.tn0RQdqM.css +0 -0
  370. package/lib/vite/traceViewer/snapshot.html +0 -21
  371. package/lib/vite/traceViewer/sw.bundle.js +0 -3
  372. package/lib/vite/traceViewer/uiMode.BatfzHMG.css +0 -1
  373. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +0 -5
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +0 -1
  376. package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +0 -32
@@ -1,128 +1,120 @@
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 socksProxy_exports = {};
30
+ __export(socksProxy_exports, {
31
+ SocksProxy: () => SocksProxy,
32
+ SocksProxyHandler: () => SocksProxyHandler,
33
+ parsePattern: () => parsePattern
5
34
  });
6
- exports.SocksProxyHandler = exports.SocksProxy = void 0;
7
- exports.parsePattern = parsePattern;
8
- var _events = _interopRequireDefault(require("events"));
9
- var _net = _interopRequireDefault(require("net"));
10
- var _assert = require("../../utils/isomorphic/assert");
11
- var _crypto = require("./crypto");
12
- var _debugLogger = require("./debugLogger");
13
- var _happyEyeballs = require("./happyEyeballs");
14
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- /**
16
- * Copyright (c) Microsoft Corporation.
17
- *
18
- * Licensed under the Apache License, Version 2.0 (the "License");
19
- * you may not use this file except in compliance with the License.
20
- * You may obtain a copy of the License at
21
- *
22
- * http://www.apache.org/licenses/LICENSE-2.0
23
- *
24
- * Unless required by applicable law or agreed to in writing, software
25
- * distributed under the License is distributed on an "AS IS" BASIS,
26
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27
- * See the License for the specific language governing permissions and
28
- * limitations under the License.
29
- */
30
- // https://tools.ietf.org/html/rfc1928
31
- var SocksAuth = /*#__PURE__*/function (SocksAuth) {
32
- SocksAuth[SocksAuth["NO_AUTHENTICATION_REQUIRED"] = 0] = "NO_AUTHENTICATION_REQUIRED";
33
- SocksAuth[SocksAuth["GSSAPI"] = 1] = "GSSAPI";
34
- SocksAuth[SocksAuth["USERNAME_PASSWORD"] = 2] = "USERNAME_PASSWORD";
35
- SocksAuth[SocksAuth["NO_ACCEPTABLE_METHODS"] = 255] = "NO_ACCEPTABLE_METHODS";
36
- return SocksAuth;
37
- }(SocksAuth || {});
38
- var SocksAddressType = /*#__PURE__*/function (SocksAddressType) {
39
- SocksAddressType[SocksAddressType["IPv4"] = 1] = "IPv4";
40
- SocksAddressType[SocksAddressType["FqName"] = 3] = "FqName";
41
- SocksAddressType[SocksAddressType["IPv6"] = 4] = "IPv6";
42
- return SocksAddressType;
43
- }(SocksAddressType || {});
44
- var SocksCommand = /*#__PURE__*/function (SocksCommand) {
45
- SocksCommand[SocksCommand["CONNECT"] = 1] = "CONNECT";
46
- SocksCommand[SocksCommand["BIND"] = 2] = "BIND";
47
- SocksCommand[SocksCommand["UDP_ASSOCIATE"] = 3] = "UDP_ASSOCIATE";
48
- return SocksCommand;
49
- }(SocksCommand || {});
50
- var SocksReply = /*#__PURE__*/function (SocksReply) {
51
- SocksReply[SocksReply["Succeeded"] = 0] = "Succeeded";
52
- SocksReply[SocksReply["GeneralServerFailure"] = 1] = "GeneralServerFailure";
53
- SocksReply[SocksReply["NotAllowedByRuleSet"] = 2] = "NotAllowedByRuleSet";
54
- SocksReply[SocksReply["NetworkUnreachable"] = 3] = "NetworkUnreachable";
55
- SocksReply[SocksReply["HostUnreachable"] = 4] = "HostUnreachable";
56
- SocksReply[SocksReply["ConnectionRefused"] = 5] = "ConnectionRefused";
57
- SocksReply[SocksReply["TtlExpired"] = 6] = "TtlExpired";
58
- SocksReply[SocksReply["CommandNotSupported"] = 7] = "CommandNotSupported";
59
- SocksReply[SocksReply["AddressTypeNotSupported"] = 8] = "AddressTypeNotSupported";
60
- return SocksReply;
61
- }(SocksReply || {});
35
+ module.exports = __toCommonJS(socksProxy_exports);
36
+ var import_events = __toESM(require("events"));
37
+ var import_net = __toESM(require("net"));
38
+ var import_assert = require("../../utils/isomorphic/assert");
39
+ var import_crypto = require("./crypto");
40
+ var import_debugLogger = require("./debugLogger");
41
+ var import_happyEyeballs = require("./happyEyeballs");
42
+ var SocksAuth = /* @__PURE__ */ ((SocksAuth2) => {
43
+ SocksAuth2[SocksAuth2["NO_AUTHENTICATION_REQUIRED"] = 0] = "NO_AUTHENTICATION_REQUIRED";
44
+ SocksAuth2[SocksAuth2["GSSAPI"] = 1] = "GSSAPI";
45
+ SocksAuth2[SocksAuth2["USERNAME_PASSWORD"] = 2] = "USERNAME_PASSWORD";
46
+ SocksAuth2[SocksAuth2["NO_ACCEPTABLE_METHODS"] = 255] = "NO_ACCEPTABLE_METHODS";
47
+ return SocksAuth2;
48
+ })(SocksAuth || {});
49
+ var SocksAddressType = /* @__PURE__ */ ((SocksAddressType2) => {
50
+ SocksAddressType2[SocksAddressType2["IPv4"] = 1] = "IPv4";
51
+ SocksAddressType2[SocksAddressType2["FqName"] = 3] = "FqName";
52
+ SocksAddressType2[SocksAddressType2["IPv6"] = 4] = "IPv6";
53
+ return SocksAddressType2;
54
+ })(SocksAddressType || {});
55
+ var SocksCommand = /* @__PURE__ */ ((SocksCommand2) => {
56
+ SocksCommand2[SocksCommand2["CONNECT"] = 1] = "CONNECT";
57
+ SocksCommand2[SocksCommand2["BIND"] = 2] = "BIND";
58
+ SocksCommand2[SocksCommand2["UDP_ASSOCIATE"] = 3] = "UDP_ASSOCIATE";
59
+ return SocksCommand2;
60
+ })(SocksCommand || {});
61
+ var SocksReply = /* @__PURE__ */ ((SocksReply2) => {
62
+ SocksReply2[SocksReply2["Succeeded"] = 0] = "Succeeded";
63
+ SocksReply2[SocksReply2["GeneralServerFailure"] = 1] = "GeneralServerFailure";
64
+ SocksReply2[SocksReply2["NotAllowedByRuleSet"] = 2] = "NotAllowedByRuleSet";
65
+ SocksReply2[SocksReply2["NetworkUnreachable"] = 3] = "NetworkUnreachable";
66
+ SocksReply2[SocksReply2["HostUnreachable"] = 4] = "HostUnreachable";
67
+ SocksReply2[SocksReply2["ConnectionRefused"] = 5] = "ConnectionRefused";
68
+ SocksReply2[SocksReply2["TtlExpired"] = 6] = "TtlExpired";
69
+ SocksReply2[SocksReply2["CommandNotSupported"] = 7] = "CommandNotSupported";
70
+ SocksReply2[SocksReply2["AddressTypeNotSupported"] = 8] = "AddressTypeNotSupported";
71
+ return SocksReply2;
72
+ })(SocksReply || {});
62
73
  class SocksConnection {
63
74
  constructor(uid, socket, client) {
64
75
  this._buffer = Buffer.from([]);
65
76
  this._offset = 0;
66
77
  this._fence = 0;
67
- this._fenceCallback = void 0;
68
- this._socket = void 0;
69
- this._boundOnData = void 0;
70
- this._uid = void 0;
71
- this._client = void 0;
72
78
  this._uid = uid;
73
79
  this._socket = socket;
74
80
  this._client = client;
75
81
  this._boundOnData = this._onData.bind(this);
76
- socket.on('data', this._boundOnData);
77
- socket.on('close', () => this._onClose());
78
- socket.on('end', () => this._onClose());
79
- socket.on('error', () => this._onClose());
82
+ socket.on("data", this._boundOnData);
83
+ socket.on("close", () => this._onClose());
84
+ socket.on("end", () => this._onClose());
85
+ socket.on("error", () => this._onClose());
80
86
  this._run().catch(() => this._socket.end());
81
87
  }
82
88
  async _run() {
83
- (0, _assert.assert)(await this._authenticate());
84
- const {
85
- command,
86
- host,
87
- port
88
- } = await this._parseRequest();
89
- if (command !== SocksCommand.CONNECT) {
90
- this._writeBytes(Buffer.from([0x05, SocksReply.CommandNotSupported, 0x00,
91
- // RSV
92
- 0x01,
93
- // IPv4
94
- 0x00, 0x00, 0x00, 0x00,
95
- // Address
96
- 0x00, 0x00 // Port
89
+ (0, import_assert.assert)(await this._authenticate());
90
+ const { command, host, port } = await this._parseRequest();
91
+ if (command !== 1 /* CONNECT */) {
92
+ this._writeBytes(Buffer.from([
93
+ 5,
94
+ 7 /* CommandNotSupported */,
95
+ 0,
96
+ // RSV
97
+ 1,
98
+ // IPv4
99
+ 0,
100
+ 0,
101
+ 0,
102
+ 0,
103
+ // Address
104
+ 0,
105
+ 0
106
+ // Port
97
107
  ]));
98
108
  return;
99
109
  }
100
- this._socket.off('data', this._boundOnData);
101
- this._client.onSocketRequested({
102
- uid: this._uid,
103
- host,
104
- port
105
- });
110
+ this._socket.off("data", this._boundOnData);
111
+ this._client.onSocketRequested({ uid: this._uid, host, port });
106
112
  }
107
113
  async _authenticate() {
108
- // Request:
109
- // +----+----------+----------+
110
- // |VER | NMETHODS | METHODS |
111
- // +----+----------+----------+
112
- // | 1 | 1 | 1 to 255 |
113
- // +----+----------+----------+
114
-
115
- // Response:
116
- // +----+--------+
117
- // |VER | METHOD |
118
- // +----+--------+
119
- // | 1 | 1 |
120
- // +----+--------+
121
-
122
114
  const version = await this._readByte();
123
- (0, _assert.assert)(version === 0x05, 'The VER field must be set to x05 for this version of the protocol, was ' + version);
115
+ (0, import_assert.assert)(version === 5, "The VER field must be set to x05 for this version of the protocol, was " + version);
124
116
  const nMethods = await this._readByte();
125
- (0, _assert.assert)(nMethods, 'No authentication methods specified');
117
+ (0, import_assert.assert)(nMethods, "No authentication methods specified");
126
118
  const methods = await this._readBytes(nMethods);
127
119
  for (const method of methods) {
128
120
  if (method === 0) {
@@ -130,43 +122,30 @@ class SocksConnection {
130
122
  return true;
131
123
  }
132
124
  }
133
- this._writeBytes(Buffer.from([version, SocksAuth.NO_ACCEPTABLE_METHODS]));
125
+ this._writeBytes(Buffer.from([version, 255 /* NO_ACCEPTABLE_METHODS */]));
134
126
  return false;
135
127
  }
136
128
  async _parseRequest() {
137
- // Request.
138
- // +----+-----+-------+------+----------+----------+
139
- // |VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT |
140
- // +----+-----+-------+------+----------+----------+
141
- // | 1 | 1 | X'00' | 1 | Variable | 2 |
142
- // +----+-----+-------+------+----------+----------+
143
-
144
- // Response.
145
- // +----+-----+-------+------+----------+----------+
146
- // |VER | REP | RSV | ATYP | BND.ADDR | BND.PORT |
147
- // +----+-----+-------+------+----------+----------+
148
- // | 1 | 1 | X'00' | 1 | Variable | 2 |
149
- // +----+-----+-------+------+----------+----------+
150
-
151
129
  const version = await this._readByte();
152
- (0, _assert.assert)(version === 0x05, 'The VER field must be set to x05 for this version of the protocol, was ' + version);
130
+ (0, import_assert.assert)(version === 5, "The VER field must be set to x05 for this version of the protocol, was " + version);
153
131
  const command = await this._readByte();
154
- await this._readByte(); // skip reserved.
132
+ await this._readByte();
155
133
  const addressType = await this._readByte();
156
- let host = '';
134
+ let host = "";
157
135
  switch (addressType) {
158
- case SocksAddressType.IPv4:
159
- host = (await this._readBytes(4)).join('.');
136
+ case 1 /* IPv4 */:
137
+ host = (await this._readBytes(4)).join(".");
160
138
  break;
161
- case SocksAddressType.FqName:
139
+ case 3 /* FqName */:
162
140
  const length = await this._readByte();
163
141
  host = (await this._readBytes(length)).toString();
164
142
  break;
165
- case SocksAddressType.IPv6:
143
+ case 4 /* IPv6 */:
166
144
  const bytes = await this._readBytes(16);
167
145
  const tokens = [];
168
- for (let i = 0; i < 8; ++i) tokens.push(bytes.readUInt16BE(i * 2).toString(16));
169
- host = tokens.join(':');
146
+ for (let i = 0; i < 8; ++i)
147
+ tokens.push(bytes.readUInt16BE(i * 2).toString(16));
148
+ host = tokens.join(":");
170
149
  break;
171
150
  }
172
151
  const port = (await this._readBytes(2)).readUInt16BE(0);
@@ -185,60 +164,67 @@ class SocksConnection {
185
164
  }
186
165
  async _readBytes(length) {
187
166
  this._fence = this._offset + length;
188
- if (!this._buffer || this._buffer.length < this._fence) await new Promise(f => this._fenceCallback = f);
167
+ if (!this._buffer || this._buffer.length < this._fence)
168
+ await new Promise((f) => this._fenceCallback = f);
189
169
  this._offset += length;
190
170
  return this._buffer.slice(this._offset - length, this._offset);
191
171
  }
192
172
  _writeBytes(buffer) {
193
- if (this._socket.writable) this._socket.write(buffer);
173
+ if (this._socket.writable)
174
+ this._socket.write(buffer);
194
175
  }
195
176
  _onClose() {
196
- this._client.onSocketClosed({
197
- uid: this._uid
198
- });
177
+ this._client.onSocketClosed({ uid: this._uid });
199
178
  }
200
179
  _onData(buffer) {
201
180
  this._buffer = Buffer.concat([this._buffer, buffer]);
202
181
  if (this._fenceCallback && this._buffer.length >= this._fence) {
203
182
  const callback = this._fenceCallback;
204
- this._fenceCallback = undefined;
183
+ this._fenceCallback = void 0;
205
184
  callback();
206
185
  }
207
186
  }
208
187
  socketConnected(host, port) {
209
- this._writeBytes(Buffer.from([0x05, SocksReply.Succeeded, 0x00,
210
- // RSV
211
- ...ipToSocksAddress(host),
212
- // ATYP, Address
213
- port >> 8, port & 0xFF // Port
188
+ this._writeBytes(Buffer.from([
189
+ 5,
190
+ 0 /* Succeeded */,
191
+ 0,
192
+ // RSV
193
+ ...ipToSocksAddress(host),
194
+ // ATYP, Address
195
+ port >> 8,
196
+ port & 255
197
+ // Port
214
198
  ]));
215
- this._socket.on('data', data => this._client.onSocketData({
216
- uid: this._uid,
217
- data
218
- }));
199
+ this._socket.on("data", (data) => this._client.onSocketData({ uid: this._uid, data }));
219
200
  }
220
201
  socketFailed(errorCode) {
221
- const buffer = Buffer.from([0x05, 0, 0x00,
222
- // RSV
223
- ...ipToSocksAddress('0.0.0.0'),
224
- // ATYP, Address
225
- 0, 0 // Port
202
+ const buffer = Buffer.from([
203
+ 5,
204
+ 0,
205
+ 0,
206
+ // RSV
207
+ ...ipToSocksAddress("0.0.0.0"),
208
+ // ATYP, Address
209
+ 0,
210
+ 0
211
+ // Port
226
212
  ]);
227
213
  switch (errorCode) {
228
- case 'ENOENT':
229
- case 'ENOTFOUND':
230
- case 'ETIMEDOUT':
231
- case 'EHOSTUNREACH':
232
- buffer[1] = SocksReply.HostUnreachable;
214
+ case "ENOENT":
215
+ case "ENOTFOUND":
216
+ case "ETIMEDOUT":
217
+ case "EHOSTUNREACH":
218
+ buffer[1] = 4 /* HostUnreachable */;
233
219
  break;
234
- case 'ENETUNREACH':
235
- buffer[1] = SocksReply.NetworkUnreachable;
220
+ case "ENETUNREACH":
221
+ buffer[1] = 3 /* NetworkUnreachable */;
236
222
  break;
237
- case 'ECONNREFUSED':
238
- buffer[1] = SocksReply.ConnectionRefused;
223
+ case "ECONNREFUSED":
224
+ buffer[1] = 5 /* ConnectionRefused */;
239
225
  break;
240
- case 'ERULESET':
241
- buffer[1] = SocksReply.NotAllowedByRuleSet;
226
+ case "ERULESET":
227
+ buffer[1] = 2 /* NotAllowedByRuleSet */;
242
228
  break;
243
229
  }
244
230
  this._writeBytes(buffer);
@@ -255,100 +241,108 @@ class SocksConnection {
255
241
  }
256
242
  }
257
243
  function hexToNumber(hex) {
258
- // Note: parseInt has a few issues including ignoring trailing characters and allowing leading 0x.
259
244
  return [...hex].reduce((value, digit) => {
260
245
  const code = digit.charCodeAt(0);
261
246
  if (code >= 48 && code <= 57)
262
- // 0..9
263
247
  return value + code;
264
248
  if (code >= 97 && code <= 102)
265
- // a..f
266
249
  return value + (code - 97) + 10;
267
250
  if (code >= 65 && code <= 70)
268
- // A..F
269
251
  return value + (code - 65) + 10;
270
- throw new Error('Invalid IPv6 token ' + hex);
252
+ throw new Error("Invalid IPv6 token " + hex);
271
253
  }, 0);
272
254
  }
273
255
  function ipToSocksAddress(address) {
274
- if (_net.default.isIPv4(address)) {
275
- return [0x01,
276
- // IPv4
277
- ...address.split('.', 4).map(t => +t & 0xFF) // Address
256
+ if (import_net.default.isIPv4(address)) {
257
+ return [
258
+ 1,
259
+ // IPv4
260
+ ...address.split(".", 4).map((t) => +t & 255)
261
+ // Address
278
262
  ];
279
263
  }
280
- if (_net.default.isIPv6(address)) {
281
- const result = [0x04]; // IPv6
282
- const tokens = address.split(':', 8);
283
- while (tokens.length < 8) tokens.unshift('');
264
+ if (import_net.default.isIPv6(address)) {
265
+ const result = [4];
266
+ const tokens = address.split(":", 8);
267
+ while (tokens.length < 8)
268
+ tokens.unshift("");
284
269
  for (const token of tokens) {
285
270
  const value = hexToNumber(token);
286
- result.push(value >> 8 & 0xFF, value & 0xFF); // Big-endian
271
+ result.push(value >> 8 & 255, value & 255);
287
272
  }
288
273
  return result;
289
274
  }
290
- throw new Error('Only IPv4 and IPv6 addresses are supported');
275
+ throw new Error("Only IPv4 and IPv6 addresses are supported");
291
276
  }
292
277
  function starMatchToRegex(pattern) {
293
- const source = pattern.split('*').map(s => {
294
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
295
- return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
296
- }).join('.*');
297
- return new RegExp('^' + source + '$');
278
+ const source = pattern.split("*").map((s) => {
279
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
280
+ }).join(".*");
281
+ return new RegExp("^" + source + "$");
298
282
  }
299
-
300
- // This follows "Proxy bypass rules" syntax without implicit and negative rules.
301
- // https://source.chromium.org/chromium/chromium/src/+/main:net/docs/proxy.md;l=331
302
283
  function parsePattern(pattern) {
303
- if (!pattern) return () => false;
304
- const matchers = pattern.split(',').map(token => {
284
+ if (!pattern)
285
+ return () => false;
286
+ const matchers = pattern.split(",").map((token) => {
305
287
  const match = token.match(/^(.*?)(?::(\d+))?$/);
306
- if (!match) throw new Error(`Unsupported token "${token}" in pattern "${pattern}"`);
307
- const tokenPort = match[2] ? +match[2] : undefined;
308
- const portMatches = port => tokenPort === undefined || tokenPort === port;
288
+ if (!match)
289
+ throw new Error(`Unsupported token "${token}" in pattern "${pattern}"`);
290
+ const tokenPort = match[2] ? +match[2] : void 0;
291
+ const portMatches = (port) => tokenPort === void 0 || tokenPort === port;
309
292
  let tokenHost = match[1];
310
- if (tokenHost === '<loopback>') {
293
+ if (tokenHost === "<loopback>") {
311
294
  return (host, port) => {
312
- if (!portMatches(port)) return false;
313
- return host === 'localhost' || host.endsWith('.localhost') || host === '127.0.0.1' || host === '[::1]';
295
+ if (!portMatches(port))
296
+ return false;
297
+ return host === "localhost" || host.endsWith(".localhost") || host === "127.0.0.1" || host === "[::1]";
314
298
  };
315
299
  }
316
- if (tokenHost === '*') return (host, port) => portMatches(port);
317
- if (_net.default.isIPv4(tokenHost) || _net.default.isIPv6(tokenHost)) return (host, port) => host === tokenHost && portMatches(port);
318
- if (tokenHost[0] === '.') tokenHost = '*' + tokenHost;
300
+ if (tokenHost === "*")
301
+ return (host, port) => portMatches(port);
302
+ if (import_net.default.isIPv4(tokenHost) || import_net.default.isIPv6(tokenHost))
303
+ return (host, port) => host === tokenHost && portMatches(port);
304
+ if (tokenHost[0] === ".")
305
+ tokenHost = "*" + tokenHost;
319
306
  const tokenRegex = starMatchToRegex(tokenHost);
320
307
  return (host, port) => {
321
- if (!portMatches(port)) return false;
322
- if (_net.default.isIPv4(host) || _net.default.isIPv6(host)) return false;
308
+ if (!portMatches(port))
309
+ return false;
310
+ if (import_net.default.isIPv4(host) || import_net.default.isIPv6(host))
311
+ return false;
323
312
  return !!host.match(tokenRegex);
324
313
  };
325
314
  });
326
- return (host, port) => matchers.some(matcher => matcher(host, port));
315
+ return (host, port) => matchers.some((matcher) => matcher(host, port));
327
316
  }
328
- class SocksProxy extends _events.default {
317
+ class SocksProxy extends import_events.default {
329
318
  constructor() {
330
319
  super();
331
- this._server = void 0;
332
- this._connections = new Map();
333
- this._sockets = new Set();
320
+ this._connections = /* @__PURE__ */ new Map();
321
+ this._sockets = /* @__PURE__ */ new Set();
334
322
  this._closed = false;
335
- this._port = void 0;
336
323
  this._patternMatcher = () => false;
337
- this._directSockets = new Map();
338
- this._server = new _net.default.Server(socket => {
339
- const uid = (0, _crypto.createGuid)();
324
+ this._directSockets = /* @__PURE__ */ new Map();
325
+ this._server = new import_net.default.Server((socket) => {
326
+ const uid = (0, import_crypto.createGuid)();
340
327
  const connection = new SocksConnection(uid, socket, this);
341
328
  this._connections.set(uid, connection);
342
329
  });
343
- this._server.on('connection', socket => {
330
+ this._server.on("connection", (socket) => {
344
331
  if (this._closed) {
345
332
  socket.destroy();
346
333
  return;
347
334
  }
348
335
  this._sockets.add(socket);
349
- socket.once('close', () => this._sockets.delete(socket));
336
+ socket.once("close", () => this._sockets.delete(socket));
350
337
  });
351
338
  }
339
+ static {
340
+ this.Events = {
341
+ SocksRequested: "socksRequested",
342
+ SocksData: "socksData",
343
+ SocksClosed: "socksClosed"
344
+ };
345
+ }
352
346
  setPattern(pattern) {
353
347
  try {
354
348
  this._patternMatcher = parsePattern(pattern);
@@ -358,49 +352,44 @@ class SocksProxy extends _events.default {
358
352
  }
359
353
  async _handleDirect(request) {
360
354
  try {
361
- var _this$_connections$ge4;
362
- const socket = await (0, _happyEyeballs.createSocket)(request.host, request.port);
363
- socket.on('data', data => {
364
- var _this$_connections$ge;
365
- return (_this$_connections$ge = this._connections.get(request.uid)) === null || _this$_connections$ge === void 0 ? void 0 : _this$_connections$ge.sendData(data);
366
- });
367
- socket.on('error', error => {
368
- var _this$_connections$ge2;
369
- (_this$_connections$ge2 = this._connections.get(request.uid)) === null || _this$_connections$ge2 === void 0 || _this$_connections$ge2.error(error.message);
355
+ const socket = await (0, import_happyEyeballs.createSocket)(request.host, request.port);
356
+ socket.on("data", (data) => this._connections.get(request.uid)?.sendData(data));
357
+ socket.on("error", (error) => {
358
+ this._connections.get(request.uid)?.error(error.message);
370
359
  this._directSockets.delete(request.uid);
371
360
  });
372
- socket.on('end', () => {
373
- var _this$_connections$ge3;
374
- (_this$_connections$ge3 = this._connections.get(request.uid)) === null || _this$_connections$ge3 === void 0 || _this$_connections$ge3.end();
361
+ socket.on("end", () => {
362
+ this._connections.get(request.uid)?.end();
375
363
  this._directSockets.delete(request.uid);
376
364
  });
377
365
  const localAddress = socket.localAddress;
378
366
  const localPort = socket.localPort;
379
367
  this._directSockets.set(request.uid, socket);
380
- (_this$_connections$ge4 = this._connections.get(request.uid)) === null || _this$_connections$ge4 === void 0 || _this$_connections$ge4.socketConnected(localAddress, localPort);
368
+ this._connections.get(request.uid)?.socketConnected(localAddress, localPort);
381
369
  } catch (error) {
382
- var _this$_connections$ge5;
383
- (_this$_connections$ge5 = this._connections.get(request.uid)) === null || _this$_connections$ge5 === void 0 || _this$_connections$ge5.socketFailed(error.code);
370
+ this._connections.get(request.uid)?.socketFailed(error.code);
384
371
  }
385
372
  }
386
373
  port() {
387
374
  return this._port;
388
375
  }
389
376
  async listen(port, hostname) {
390
- return new Promise(f => {
377
+ return new Promise((f) => {
391
378
  this._server.listen(port, hostname, () => {
392
- const port = this._server.address().port;
393
- this._port = port;
394
- f(port);
379
+ const port2 = this._server.address().port;
380
+ this._port = port2;
381
+ f(port2);
395
382
  });
396
383
  });
397
384
  }
398
385
  async close() {
399
- if (this._closed) return;
386
+ if (this._closed)
387
+ return;
400
388
  this._closed = true;
401
- for (const socket of this._sockets) socket.destroy();
389
+ for (const socket of this._sockets)
390
+ socket.destroy();
402
391
  this._sockets.clear();
403
- await new Promise(f => this._server.close(f));
392
+ await new Promise((f) => this._server.close(f));
404
393
  }
405
394
  onSocketRequested(payload) {
406
395
  if (!this._patternMatcher(payload.host, payload.port)) {
@@ -426,145 +415,97 @@ class SocksProxy extends _events.default {
426
415
  }
427
416
  this.emit(SocksProxy.Events.SocksClosed, payload);
428
417
  }
429
- socketConnected({
430
- uid,
431
- host,
432
- port
433
- }) {
434
- var _this$_connections$ge6;
435
- (_this$_connections$ge6 = this._connections.get(uid)) === null || _this$_connections$ge6 === void 0 || _this$_connections$ge6.socketConnected(host, port);
436
- }
437
- socketFailed({
438
- uid,
439
- errorCode
440
- }) {
441
- var _this$_connections$ge7;
442
- (_this$_connections$ge7 = this._connections.get(uid)) === null || _this$_connections$ge7 === void 0 || _this$_connections$ge7.socketFailed(errorCode);
443
- }
444
- sendSocketData({
445
- uid,
446
- data
447
- }) {
448
- var _this$_connections$ge8;
449
- (_this$_connections$ge8 = this._connections.get(uid)) === null || _this$_connections$ge8 === void 0 || _this$_connections$ge8.sendData(data);
450
- }
451
- sendSocketEnd({
452
- uid
453
- }) {
454
- var _this$_connections$ge9;
455
- (_this$_connections$ge9 = this._connections.get(uid)) === null || _this$_connections$ge9 === void 0 || _this$_connections$ge9.end();
456
- }
457
- sendSocketError({
458
- uid,
459
- error
460
- }) {
461
- var _this$_connections$ge10;
462
- (_this$_connections$ge10 = this._connections.get(uid)) === null || _this$_connections$ge10 === void 0 || _this$_connections$ge10.error(error);
418
+ socketConnected({ uid, host, port }) {
419
+ this._connections.get(uid)?.socketConnected(host, port);
420
+ }
421
+ socketFailed({ uid, errorCode }) {
422
+ this._connections.get(uid)?.socketFailed(errorCode);
423
+ }
424
+ sendSocketData({ uid, data }) {
425
+ this._connections.get(uid)?.sendData(data);
426
+ }
427
+ sendSocketEnd({ uid }) {
428
+ this._connections.get(uid)?.end();
429
+ }
430
+ sendSocketError({ uid, error }) {
431
+ this._connections.get(uid)?.error(error);
463
432
  }
464
433
  }
465
- exports.SocksProxy = SocksProxy;
466
- SocksProxy.Events = {
467
- SocksRequested: 'socksRequested',
468
- SocksData: 'socksData',
469
- SocksClosed: 'socksClosed'
470
- };
471
- class SocksProxyHandler extends _events.default {
434
+ class SocksProxyHandler extends import_events.default {
472
435
  constructor(pattern, redirectPortForTest) {
473
436
  super();
474
- this._sockets = new Map();
437
+ this._sockets = /* @__PURE__ */ new Map();
475
438
  this._patternMatcher = () => false;
476
- this._redirectPortForTest = void 0;
477
439
  this._patternMatcher = parsePattern(pattern);
478
440
  this._redirectPortForTest = redirectPortForTest;
479
441
  }
442
+ static {
443
+ this.Events = {
444
+ SocksConnected: "socksConnected",
445
+ SocksData: "socksData",
446
+ SocksError: "socksError",
447
+ SocksFailed: "socksFailed",
448
+ SocksEnd: "socksEnd"
449
+ };
450
+ }
480
451
  cleanup() {
481
- for (const uid of this._sockets.keys()) this.socketClosed({
482
- uid
483
- });
452
+ for (const uid of this._sockets.keys())
453
+ this.socketClosed({ uid });
484
454
  }
485
- async socketRequested({
486
- uid,
487
- host,
488
- port
489
- }) {
490
- _debugLogger.debugLogger.log('socks', `[${uid}] => request ${host}:${port}`);
455
+ async socketRequested({ uid, host, port }) {
456
+ import_debugLogger.debugLogger.log("socks", `[${uid}] => request ${host}:${port}`);
491
457
  if (!this._patternMatcher(host, port)) {
492
- const payload = {
493
- uid,
494
- errorCode: 'ERULESET'
495
- };
496
- _debugLogger.debugLogger.log('socks', `[${uid}] <= pattern error ${payload.errorCode}`);
458
+ const payload = { uid, errorCode: "ERULESET" };
459
+ import_debugLogger.debugLogger.log("socks", `[${uid}] <= pattern error ${payload.errorCode}`);
497
460
  this.emit(SocksProxyHandler.Events.SocksFailed, payload);
498
461
  return;
499
462
  }
500
- if (host === 'local.playwright') host = 'localhost';
463
+ if (host === "local.playwright")
464
+ host = "localhost";
501
465
  try {
502
- if (this._redirectPortForTest) port = this._redirectPortForTest;
503
- const socket = await (0, _happyEyeballs.createSocket)(host, port);
504
- socket.on('data', data => {
505
- const payload = {
506
- uid,
507
- data
508
- };
509
- this.emit(SocksProxyHandler.Events.SocksData, payload);
466
+ if (this._redirectPortForTest)
467
+ port = this._redirectPortForTest;
468
+ const socket = await (0, import_happyEyeballs.createSocket)(host, port);
469
+ socket.on("data", (data) => {
470
+ const payload2 = { uid, data };
471
+ this.emit(SocksProxyHandler.Events.SocksData, payload2);
510
472
  });
511
- socket.on('error', error => {
512
- const payload = {
513
- uid,
514
- error: error.message
515
- };
516
- _debugLogger.debugLogger.log('socks', `[${uid}] <= network socket error ${payload.error}`);
517
- this.emit(SocksProxyHandler.Events.SocksError, payload);
473
+ socket.on("error", (error) => {
474
+ const payload2 = { uid, error: error.message };
475
+ import_debugLogger.debugLogger.log("socks", `[${uid}] <= network socket error ${payload2.error}`);
476
+ this.emit(SocksProxyHandler.Events.SocksError, payload2);
518
477
  this._sockets.delete(uid);
519
478
  });
520
- socket.on('end', () => {
521
- const payload = {
522
- uid
523
- };
524
- _debugLogger.debugLogger.log('socks', `[${uid}] <= network socket closed`);
525
- this.emit(SocksProxyHandler.Events.SocksEnd, payload);
479
+ socket.on("end", () => {
480
+ const payload2 = { uid };
481
+ import_debugLogger.debugLogger.log("socks", `[${uid}] <= network socket closed`);
482
+ this.emit(SocksProxyHandler.Events.SocksEnd, payload2);
526
483
  this._sockets.delete(uid);
527
484
  });
528
485
  const localAddress = socket.localAddress;
529
486
  const localPort = socket.localPort;
530
487
  this._sockets.set(uid, socket);
531
- const payload = {
532
- uid,
533
- host: localAddress,
534
- port: localPort
535
- };
536
- _debugLogger.debugLogger.log('socks', `[${uid}] <= connected to network ${payload.host}:${payload.port}`);
488
+ const payload = { uid, host: localAddress, port: localPort };
489
+ import_debugLogger.debugLogger.log("socks", `[${uid}] <= connected to network ${payload.host}:${payload.port}`);
537
490
  this.emit(SocksProxyHandler.Events.SocksConnected, payload);
538
491
  } catch (error) {
539
- const payload = {
540
- uid,
541
- errorCode: error.code
542
- };
543
- _debugLogger.debugLogger.log('socks', `[${uid}] <= connect error ${payload.errorCode}`);
492
+ const payload = { uid, errorCode: error.code };
493
+ import_debugLogger.debugLogger.log("socks", `[${uid}] <= connect error ${payload.errorCode}`);
544
494
  this.emit(SocksProxyHandler.Events.SocksFailed, payload);
545
495
  }
546
496
  }
547
- sendSocketData({
548
- uid,
549
- data
550
- }) {
551
- var _this$_sockets$get;
552
- (_this$_sockets$get = this._sockets.get(uid)) === null || _this$_sockets$get === void 0 || _this$_sockets$get.write(data);
553
- }
554
- socketClosed({
555
- uid
556
- }) {
557
- var _this$_sockets$get2;
558
- _debugLogger.debugLogger.log('socks', `[${uid}] <= browser socket closed`);
559
- (_this$_sockets$get2 = this._sockets.get(uid)) === null || _this$_sockets$get2 === void 0 || _this$_sockets$get2.destroy();
497
+ sendSocketData({ uid, data }) {
498
+ this._sockets.get(uid)?.write(data);
499
+ }
500
+ socketClosed({ uid }) {
501
+ import_debugLogger.debugLogger.log("socks", `[${uid}] <= browser socket closed`);
502
+ this._sockets.get(uid)?.destroy();
560
503
  this._sockets.delete(uid);
561
504
  }
562
505
  }
563
- exports.SocksProxyHandler = SocksProxyHandler;
564
- SocksProxyHandler.Events = {
565
- SocksConnected: 'socksConnected',
566
- SocksData: 'socksData',
567
- SocksError: 'socksError',
568
- SocksFailed: 'socksFailed',
569
- SocksEnd: 'socksEnd'
570
- };
506
+ // Annotate the CommonJS export names for ESM import in node:
507
+ 0 && (module.exports = {
508
+ SocksProxy,
509
+ SocksProxyHandler,
510
+ parsePattern
511
+ });