@mswjs/interceptors 0.41.9 → 0.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/README.md +274 -228
  2. package/lib/browser/{bufferUtils-BiiO6HZv.mjs → buffer-utils-DJj7YzLG.js} +3 -3
  3. package/lib/browser/buffer-utils-DJj7YzLG.js.map +1 -0
  4. package/lib/browser/create-request-id-Bk5YX1AM.js +720 -0
  5. package/lib/browser/create-request-id-Bk5YX1AM.js.map +1 -0
  6. package/lib/browser/{getRawRequest-B1BqgWG6.mjs → fetch-utils-CUOrwEQf.js} +123 -52
  7. package/lib/browser/fetch-utils-CUOrwEQf.js.map +1 -0
  8. package/lib/browser/handle-request-CqVvBhcw.js +167 -0
  9. package/lib/browser/handle-request-CqVvBhcw.js.map +1 -0
  10. package/lib/{node/hasConfigurableGlobal-BiTmog1u.mjs → browser/has-configurable-global-Cew-dYqk.js} +5 -7
  11. package/lib/browser/has-configurable-global-Cew-dYqk.js.map +1 -0
  12. package/lib/browser/http-CB9rQ7i_.d.ts +105 -0
  13. package/lib/browser/{index.d.cts → index.d.ts} +33 -38
  14. package/lib/browser/index.js +130 -0
  15. package/lib/browser/index.js.map +1 -0
  16. package/lib/browser/interceptor-dtJZ_9QT.d.ts +50 -0
  17. package/lib/browser/interceptors/WebSocket/index.d.ts +2 -0
  18. package/lib/browser/interceptors/WebSocket/{index.mjs → index.js} +39 -30
  19. package/lib/browser/interceptors/WebSocket/index.js.map +1 -0
  20. package/lib/browser/interceptors/XMLHttpRequest/web.d.ts +11 -0
  21. package/lib/browser/interceptors/XMLHttpRequest/web.js +2 -0
  22. package/lib/browser/interceptors/fetch/web.d.ts +14 -0
  23. package/lib/browser/interceptors/fetch/web.js +2 -0
  24. package/lib/browser/presets/browser.d.ts +11 -0
  25. package/lib/browser/presets/browser.js +12 -0
  26. package/lib/browser/presets/browser.js.map +1 -0
  27. package/lib/browser/{resolveWebSocketUrl-C83-x9iE.mjs → resolve-web-socket-url-CSvNPLGi.js} +3 -3
  28. package/lib/browser/resolve-web-socket-url-CSvNPLGi.js.map +1 -0
  29. package/lib/browser/{XMLHttpRequest-DrZAf3w6.mjs → web-BcKSQghf.js} +327 -255
  30. package/lib/browser/web-BcKSQghf.js.map +1 -0
  31. package/lib/browser/web-CdcYFjgm.js +248 -0
  32. package/lib/browser/web-CdcYFjgm.js.map +1 -0
  33. package/lib/browser/{interceptors/WebSocket/index.d.cts → websocket-CC0nB0md.d.ts} +41 -33
  34. package/lib/node/batch-interceptor-ByEZVih3.js +119 -0
  35. package/lib/node/batch-interceptor-ByEZVih3.js.map +1 -0
  36. package/lib/node/batch-interceptor-CPjFK2td.d.ts +28 -0
  37. package/lib/node/buffer-utils-BvPY1Tc-.js +187 -0
  38. package/lib/node/buffer-utils-BvPY1Tc-.js.map +1 -0
  39. package/lib/node/fetch-utils-Dw1PsmtX.js +568 -0
  40. package/lib/node/fetch-utils-Dw1PsmtX.js.map +1 -0
  41. package/lib/node/has-configurable-global-CJCh_g1I.js +22 -0
  42. package/lib/node/has-configurable-global-CJCh_g1I.js.map +1 -0
  43. package/lib/node/http-CB9rQ7i_.d.ts +105 -0
  44. package/lib/{browser/interceptors/WebSocket/index.d.mts → node/index.d.ts} +120 -60
  45. package/lib/node/{index.mjs → index.js} +8 -11
  46. package/lib/node/index.js.map +1 -0
  47. package/lib/node/interceptor-dtJZ_9QT.d.ts +50 -0
  48. package/lib/node/interceptors/ClientRequest/index.d.ts +14 -0
  49. package/lib/node/interceptors/ClientRequest/index.js +67 -0
  50. package/lib/node/interceptors/ClientRequest/index.js.map +1 -0
  51. package/lib/node/interceptors/XMLHttpRequest/node.d.ts +12 -0
  52. package/lib/node/interceptors/XMLHttpRequest/node.js +74 -0
  53. package/lib/node/interceptors/XMLHttpRequest/node.js.map +1 -0
  54. package/lib/node/interceptors/fetch/node.d.ts +18 -0
  55. package/lib/node/interceptors/fetch/node.js +83 -0
  56. package/lib/node/interceptors/fetch/node.js.map +1 -0
  57. package/lib/node/interceptors/http/index.d.ts +14 -0
  58. package/lib/node/interceptors/http/index.js +32 -0
  59. package/lib/node/interceptors/http/index.js.map +1 -0
  60. package/lib/node/interceptors/net/index.d.ts +203 -0
  61. package/lib/node/interceptors/net/index.js +2 -0
  62. package/lib/node/llhttp/constants.cjs +485 -0
  63. package/lib/node/llhttp/constants.d.cts +957 -0
  64. package/lib/node/llhttp/llhttp.wasm +0 -0
  65. package/lib/node/net-DtMnyEeg.js +1388 -0
  66. package/lib/node/net-DtMnyEeg.js.map +1 -0
  67. package/lib/node/presets/node.d.ts +12 -0
  68. package/lib/node/presets/node.js +17 -0
  69. package/lib/node/presets/node.js.map +1 -0
  70. package/lib/node/{RemoteHttpInterceptor.d.cts → remote-http-interceptor.d.ts} +12 -11
  71. package/lib/node/{RemoteHttpInterceptor.mjs → remote-http-interceptor.js} +38 -33
  72. package/lib/node/remote-http-interceptor.js.map +1 -0
  73. package/lib/node/source-lP0yyEtA.js +1990 -0
  74. package/lib/node/source-lP0yyEtA.js.map +1 -0
  75. package/package.json +79 -118
  76. package/src/batch-interceptor.test.ts +475 -0
  77. package/src/batch-interceptor.ts +244 -0
  78. package/src/{createRequestId.test.ts → create-request-id.test.ts} +1 -2
  79. package/src/disposable.ts +13 -0
  80. package/src/events/http.ts +92 -0
  81. package/src/events/websocket.ts +47 -0
  82. package/src/glossary.ts +1 -27
  83. package/src/index.ts +18 -10
  84. package/src/interceptor.test.ts +279 -0
  85. package/src/interceptor.ts +139 -0
  86. package/src/interceptors/ClientRequest/index.test.ts +21 -39
  87. package/src/interceptors/ClientRequest/index.ts +64 -179
  88. package/src/interceptors/ClientRequest/utils/{recordRawHeaders.test.ts → record-raw-headers.test.ts} +1 -2
  89. package/src/interceptors/ClientRequest/utils/{recordRawHeaders.ts → record-raw-headers.ts} +29 -2
  90. package/src/interceptors/WebSocket/index.ts +33 -50
  91. package/src/interceptors/WebSocket/utils/{bindEvent.test.ts → bind-event.test.ts} +1 -2
  92. package/src/interceptors/WebSocket/utils/events.test.ts +0 -1
  93. package/src/interceptors/WebSocket/{WebSocketClassTransport.ts → web-socket-class-transport.ts} +3 -3
  94. package/src/interceptors/WebSocket/{WebSocketClientConnection.ts → web-socket-client-connection.ts} +4 -4
  95. package/src/interceptors/WebSocket/{WebSocketOverride.ts → web-socket-override.ts} +6 -7
  96. package/src/interceptors/WebSocket/{WebSocketServerConnection.ts → web-socket-server-connection.ts} +4 -4
  97. package/src/interceptors/WebSocket/{WebSocketTransport.ts → web-socket-transport.ts} +1 -1
  98. package/src/interceptors/XMLHttpRequest/node.ts +104 -0
  99. package/src/interceptors/XMLHttpRequest/polyfills/{ProgressEventPolyfill.ts → progress-event-polyfill.ts} +1 -1
  100. package/src/interceptors/XMLHttpRequest/utils/{concateArrayBuffer.test.ts → concat-array-buffer.test.ts} +1 -2
  101. package/src/interceptors/XMLHttpRequest/utils/{concatArrayBuffer.ts → concat-array-buffer.ts} +1 -1
  102. package/src/interceptors/XMLHttpRequest/utils/{createEvent.test.ts → create-event.test.ts} +3 -4
  103. package/src/interceptors/XMLHttpRequest/utils/{createEvent.ts → create-event.ts} +2 -2
  104. package/src/interceptors/XMLHttpRequest/utils/{createResponse.ts → create-response.ts} +1 -1
  105. package/src/interceptors/XMLHttpRequest/utils/{getBodyByteLength.test.ts → get-body-byte-length.test.ts} +1 -2
  106. package/src/interceptors/XMLHttpRequest/web.ts +34 -0
  107. package/src/interceptors/XMLHttpRequest/{XMLHttpRequestController.ts → xml-http-request-controller.ts} +363 -204
  108. package/src/interceptors/XMLHttpRequest/{XMLHttpRequestProxy.ts → xml-http-request-proxy.ts} +28 -25
  109. package/src/interceptors/fetch/node.ts +103 -0
  110. package/src/interceptors/fetch/utils/{followRedirect.ts → follow-redirect.ts} +1 -1
  111. package/src/interceptors/fetch/web.ts +217 -0
  112. package/src/interceptors/http/forward-events.test.ts +86 -0
  113. package/src/interceptors/http/forward-events.ts +139 -0
  114. package/src/interceptors/http/http-parser/index.ts +310 -0
  115. package/src/interceptors/http/http-parser/llhttp/constants.cjs +485 -0
  116. package/src/interceptors/http/http-parser/llhttp/constants.d.cts +957 -0
  117. package/src/interceptors/http/http-parser/llhttp/llhttp.wasm +0 -0
  118. package/src/interceptors/http/http-parser.ts +138 -0
  119. package/src/interceptors/http/index.ts +34 -0
  120. package/src/interceptors/http/source.ts +688 -0
  121. package/src/interceptors/net/index.ts +368 -0
  122. package/src/interceptors/net/socket-controller.ts +1476 -0
  123. package/src/interceptors/net/utils/address-info.ts +54 -0
  124. package/src/interceptors/net/utils/connection-options-to-url.ts +56 -0
  125. package/src/interceptors/net/utils/flush-writes.ts +57 -0
  126. package/src/interceptors/net/utils/get-tls-connect-options.ts +23 -0
  127. package/src/interceptors/net/utils/normalize-net-connect-args.test.ts +233 -0
  128. package/src/interceptors/net/utils/normalize-net-connect-args.ts +121 -0
  129. package/src/interceptors/net/utils/normalize-tls-connect-args.ts +50 -0
  130. package/src/presets/browser.ts +4 -4
  131. package/src/presets/node.ts +4 -4
  132. package/src/{RemoteHttpInterceptor.ts → remote-http-interceptor.ts} +55 -42
  133. package/src/request-context.ts +40 -0
  134. package/src/{RequestController.test.ts → request-controller.test.ts} +37 -3
  135. package/src/{RequestController.ts → request-controller.ts} +33 -11
  136. package/src/utils/{bufferUtils.test.ts → buffer-utils.test.ts} +1 -2
  137. package/src/utils/buffer-utils.ts +37 -0
  138. package/src/utils/{cloneObject.test.ts → clone-object.test.ts} +1 -2
  139. package/src/utils/{cloneObject.ts → clone-object.ts} +8 -8
  140. package/src/utils/{createProxy.test.ts → create-proxy.test.ts} +6 -4
  141. package/src/utils/{createProxy.ts → create-proxy.ts} +1 -1
  142. package/src/utils/{fetchUtils.test.ts → fetch-utils.test.ts} +1 -1
  143. package/src/utils/{fetchUtils.ts → fetch-utils.ts} +28 -3
  144. package/src/utils/{findPropertySource.test.ts → find-property-source.test.ts} +1 -2
  145. package/src/utils/{getCleanUrl.test.ts → get-clean-url.test.ts} +1 -2
  146. package/src/utils/{getUrlByRequestOptions.test.ts → get-url-by-request-options.test.ts} +4 -8
  147. package/src/utils/{getUrlByRequestOptions.ts → get-url-by-request-options.ts} +16 -16
  148. package/src/utils/{getValueBySymbol.test.ts → get-value-by-symbol.test.ts} +1 -2
  149. package/src/utils/{handleRequest.ts → handle-request.ts} +61 -41
  150. package/src/utils/{hasConfigurableGlobal.test.ts → has-configurable-global.test.ts} +1 -2
  151. package/src/utils/{hasConfigurableGlobal.ts → has-configurable-global.ts} +2 -4
  152. package/src/utils/{isObject.test.ts → is-object.test.ts} +1 -2
  153. package/src/utils/logger.test.ts +154 -0
  154. package/src/utils/logger.ts +154 -0
  155. package/src/utils/{parseJson.test.ts → parse-json.test.ts} +1 -2
  156. package/src/utils/{patchesRegistry.test.ts → patches-registry.test.ts} +1 -1
  157. package/src/utils/{patchesRegistry.ts → patches-registry.ts} +1 -1
  158. package/src/utils/{responseUtils.ts → response-utils.ts} +25 -2
  159. package/ClientRequest/package.json +0 -11
  160. package/RemoteHttpInterceptor/package.json +0 -11
  161. package/WebSocket/package.json +0 -12
  162. package/XMLHttpRequest/package.json +0 -12
  163. package/fetch/package.json +0 -12
  164. package/lib/browser/Interceptor-Deczogc8.d.cts +0 -65
  165. package/lib/browser/Interceptor-gqKgs-aF.d.mts +0 -65
  166. package/lib/browser/XMLHttpRequest-DrZAf3w6.mjs.map +0 -1
  167. package/lib/browser/XMLHttpRequest-gXuzzX1g.cjs +0 -751
  168. package/lib/browser/XMLHttpRequest-gXuzzX1g.cjs.map +0 -1
  169. package/lib/browser/bufferUtils-BiiO6HZv.mjs.map +0 -1
  170. package/lib/browser/bufferUtils-Uc0eRItL.cjs +0 -38
  171. package/lib/browser/bufferUtils-Uc0eRItL.cjs.map +0 -1
  172. package/lib/browser/createRequestId-DOf8Ktjs.cjs +0 -205
  173. package/lib/browser/createRequestId-DOf8Ktjs.cjs.map +0 -1
  174. package/lib/browser/createRequestId-DYCsFHOi.mjs +0 -170
  175. package/lib/browser/createRequestId-DYCsFHOi.mjs.map +0 -1
  176. package/lib/browser/fetch-5IMPqr9e.mjs +0 -236
  177. package/lib/browser/fetch-5IMPqr9e.mjs.map +0 -1
  178. package/lib/browser/fetch-Bt9rMY9c.cjs +0 -241
  179. package/lib/browser/fetch-Bt9rMY9c.cjs.map +0 -1
  180. package/lib/browser/getRawRequest-B1BqgWG6.mjs.map +0 -1
  181. package/lib/browser/getRawRequest-DdfaiPVH.cjs +0 -376
  182. package/lib/browser/getRawRequest-DdfaiPVH.cjs.map +0 -1
  183. package/lib/browser/glossary-1lhZx6Aw.d.cts +0 -69
  184. package/lib/browser/glossary-nkHWcwvY.d.mts +0 -69
  185. package/lib/browser/handleRequest-CJim54xG.cjs +0 -191
  186. package/lib/browser/handleRequest-CJim54xG.cjs.map +0 -1
  187. package/lib/browser/handleRequest-CPPgsG7s.mjs +0 -180
  188. package/lib/browser/handleRequest-CPPgsG7s.mjs.map +0 -1
  189. package/lib/browser/hasConfigurableGlobal-C8zq1MCg.mjs +0 -109
  190. package/lib/browser/hasConfigurableGlobal-C8zq1MCg.mjs.map +0 -1
  191. package/lib/browser/hasConfigurableGlobal-CS7adEvV.cjs +0 -126
  192. package/lib/browser/hasConfigurableGlobal-CS7adEvV.cjs.map +0 -1
  193. package/lib/browser/index.cjs +0 -70
  194. package/lib/browser/index.cjs.map +0 -1
  195. package/lib/browser/index.d.mts +0 -125
  196. package/lib/browser/index.mjs +0 -56
  197. package/lib/browser/index.mjs.map +0 -1
  198. package/lib/browser/interceptors/WebSocket/index.cjs +0 -618
  199. package/lib/browser/interceptors/WebSocket/index.cjs.map +0 -1
  200. package/lib/browser/interceptors/WebSocket/index.mjs.map +0 -1
  201. package/lib/browser/interceptors/XMLHttpRequest/index.cjs +0 -8
  202. package/lib/browser/interceptors/XMLHttpRequest/index.d.cts +0 -15
  203. package/lib/browser/interceptors/XMLHttpRequest/index.d.mts +0 -15
  204. package/lib/browser/interceptors/XMLHttpRequest/index.mjs +0 -8
  205. package/lib/browser/interceptors/fetch/index.cjs +0 -7
  206. package/lib/browser/interceptors/fetch/index.d.cts +0 -13
  207. package/lib/browser/interceptors/fetch/index.d.mts +0 -13
  208. package/lib/browser/interceptors/fetch/index.mjs +0 -7
  209. package/lib/browser/presets/browser.cjs +0 -18
  210. package/lib/browser/presets/browser.cjs.map +0 -1
  211. package/lib/browser/presets/browser.d.cts +0 -12
  212. package/lib/browser/presets/browser.d.mts +0 -14
  213. package/lib/browser/presets/browser.mjs +0 -18
  214. package/lib/browser/presets/browser.mjs.map +0 -1
  215. package/lib/browser/resolveWebSocketUrl-6K6EgqsA.cjs +0 -31
  216. package/lib/browser/resolveWebSocketUrl-6K6EgqsA.cjs.map +0 -1
  217. package/lib/browser/resolveWebSocketUrl-C83-x9iE.mjs.map +0 -1
  218. package/lib/node/BatchInterceptor-BGhH8z1z.cjs +0 -49
  219. package/lib/node/BatchInterceptor-BGhH8z1z.cjs.map +0 -1
  220. package/lib/node/BatchInterceptor-C4-RX5rg.mjs +0 -44
  221. package/lib/node/BatchInterceptor-C4-RX5rg.mjs.map +0 -1
  222. package/lib/node/BatchInterceptor-KKF8Q47I.d.cts +0 -26
  223. package/lib/node/BatchInterceptor-rSr-NH_H.d.mts +0 -26
  224. package/lib/node/ClientRequest-2loAH7xM.cjs +0 -1058
  225. package/lib/node/ClientRequest-2loAH7xM.cjs.map +0 -1
  226. package/lib/node/ClientRequest-DGhBX21V.mjs +0 -1049
  227. package/lib/node/ClientRequest-DGhBX21V.mjs.map +0 -1
  228. package/lib/node/Interceptor-BsZ21ue0.d.cts +0 -132
  229. package/lib/node/Interceptor-soD-WpQO.d.mts +0 -132
  230. package/lib/node/RemoteHttpInterceptor.cjs +0 -155
  231. package/lib/node/RemoteHttpInterceptor.cjs.map +0 -1
  232. package/lib/node/RemoteHttpInterceptor.d.mts +0 -39
  233. package/lib/node/RemoteHttpInterceptor.mjs.map +0 -1
  234. package/lib/node/XMLHttpRequest-BtDNZipW.cjs +0 -752
  235. package/lib/node/XMLHttpRequest-BtDNZipW.cjs.map +0 -1
  236. package/lib/node/XMLHttpRequest-Dw6Wm-UU.mjs +0 -746
  237. package/lib/node/XMLHttpRequest-Dw6Wm-UU.mjs.map +0 -1
  238. package/lib/node/bufferUtils-DxPxwff_.mjs +0 -20
  239. package/lib/node/bufferUtils-DxPxwff_.mjs.map +0 -1
  240. package/lib/node/bufferUtils-S5_-2eN4.cjs +0 -38
  241. package/lib/node/bufferUtils-S5_-2eN4.cjs.map +0 -1
  242. package/lib/node/chunk-CbDLau6x.cjs +0 -34
  243. package/lib/node/fetch-CaC3rGEu.mjs +0 -252
  244. package/lib/node/fetch-CaC3rGEu.mjs.map +0 -1
  245. package/lib/node/fetch-D2ClLNN-.cjs +0 -259
  246. package/lib/node/fetch-D2ClLNN-.cjs.map +0 -1
  247. package/lib/node/fetchUtils-BKJ1XmiO.mjs +0 -480
  248. package/lib/node/fetchUtils-BKJ1XmiO.mjs.map +0 -1
  249. package/lib/node/fetchUtils-umV5xXBy.cjs +0 -546
  250. package/lib/node/fetchUtils-umV5xXBy.cjs.map +0 -1
  251. package/lib/node/getRawRequest-B6znU6il.cjs +0 -36
  252. package/lib/node/getRawRequest-B6znU6il.cjs.map +0 -1
  253. package/lib/node/getRawRequest-C2-1urzA.mjs +0 -24
  254. package/lib/node/getRawRequest-C2-1urzA.mjs.map +0 -1
  255. package/lib/node/handleRequest-C-cKYjIh.cjs +0 -222
  256. package/lib/node/handleRequest-C-cKYjIh.cjs.map +0 -1
  257. package/lib/node/handleRequest-FIQv5pwH.mjs +0 -192
  258. package/lib/node/handleRequest-FIQv5pwH.mjs.map +0 -1
  259. package/lib/node/hasConfigurableGlobal-BiTmog1u.mjs.map +0 -1
  260. package/lib/node/hasConfigurableGlobal-MjY06_Ok.cjs +0 -108
  261. package/lib/node/hasConfigurableGlobal-MjY06_Ok.cjs.map +0 -1
  262. package/lib/node/index-BJ5E5aW-.d.cts +0 -113
  263. package/lib/node/index-DfoF45ih.d.mts +0 -113
  264. package/lib/node/index.cjs +0 -53
  265. package/lib/node/index.cjs.map +0 -1
  266. package/lib/node/index.d.cts +0 -104
  267. package/lib/node/index.d.mts +0 -104
  268. package/lib/node/index.mjs.map +0 -1
  269. package/lib/node/interceptors/ClientRequest/index.cjs +0 -6
  270. package/lib/node/interceptors/ClientRequest/index.d.cts +0 -2
  271. package/lib/node/interceptors/ClientRequest/index.d.mts +0 -3
  272. package/lib/node/interceptors/ClientRequest/index.mjs +0 -6
  273. package/lib/node/interceptors/XMLHttpRequest/index.cjs +0 -7
  274. package/lib/node/interceptors/XMLHttpRequest/index.d.cts +0 -14
  275. package/lib/node/interceptors/XMLHttpRequest/index.d.mts +0 -14
  276. package/lib/node/interceptors/XMLHttpRequest/index.mjs +0 -7
  277. package/lib/node/interceptors/fetch/index.cjs +0 -6
  278. package/lib/node/interceptors/fetch/index.d.cts +0 -12
  279. package/lib/node/interceptors/fetch/index.d.mts +0 -12
  280. package/lib/node/interceptors/fetch/index.mjs +0 -6
  281. package/lib/node/node-DIKcnzhK.cjs +0 -39
  282. package/lib/node/node-DIKcnzhK.cjs.map +0 -1
  283. package/lib/node/node-lsdNwZEW.mjs +0 -27
  284. package/lib/node/node-lsdNwZEW.mjs.map +0 -1
  285. package/lib/node/presets/node.cjs +0 -23
  286. package/lib/node/presets/node.cjs.map +0 -1
  287. package/lib/node/presets/node.d.cts +0 -13
  288. package/lib/node/presets/node.d.mts +0 -15
  289. package/lib/node/presets/node.mjs +0 -23
  290. package/lib/node/presets/node.mjs.map +0 -1
  291. package/lib/node/utils/node/index.cjs +0 -4
  292. package/lib/node/utils/node/index.d.cts +0 -16
  293. package/lib/node/utils/node/index.d.mts +0 -16
  294. package/lib/node/utils/node/index.mjs +0 -3
  295. package/presets/browser/package.json +0 -5
  296. package/presets/node/package.json +0 -11
  297. package/src/BatchInterceptor.test.ts +0 -255
  298. package/src/BatchInterceptor.ts +0 -96
  299. package/src/Interceptor.test.ts +0 -205
  300. package/src/Interceptor.ts +0 -249
  301. package/src/getRawRequest.ts +0 -21
  302. package/src/interceptors/ClientRequest/MockHttpSocket.ts +0 -724
  303. package/src/interceptors/ClientRequest/agents.ts +0 -110
  304. package/src/interceptors/ClientRequest/utils/getIncomingMessageBody.test.ts +0 -54
  305. package/src/interceptors/ClientRequest/utils/getIncomingMessageBody.ts +0 -45
  306. package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.test.ts +0 -427
  307. package/src/interceptors/ClientRequest/utils/normalizeClientRequestArgs.ts +0 -268
  308. package/src/interceptors/ClientRequest/utils/parserUtils.ts +0 -48
  309. package/src/interceptors/Socket/MockSocket.test.ts +0 -264
  310. package/src/interceptors/Socket/MockSocket.ts +0 -58
  311. package/src/interceptors/Socket/utils/baseUrlFromConnectionOptions.ts +0 -26
  312. package/src/interceptors/Socket/utils/normalizeSocketWriteArgs.test.ts +0 -52
  313. package/src/interceptors/Socket/utils/normalizeSocketWriteArgs.ts +0 -33
  314. package/src/interceptors/XMLHttpRequest/index.ts +0 -40
  315. package/src/interceptors/fetch/index.ts +0 -203
  316. package/src/utils/bufferUtils.ts +0 -22
  317. package/src/utils/canParseUrl.ts +0 -13
  318. package/src/utils/emitAsync.ts +0 -25
  319. package/src/utils/nextTick.ts +0 -11
  320. package/src/utils/node/index.ts +0 -39
  321. /package/src/{createRequestId.ts → create-request-id.ts} +0 -0
  322. /package/src/{InterceptorError.ts → interceptor-error.ts} +0 -0
  323. /package/src/interceptors/WebSocket/utils/{bindEvent.ts → bind-event.ts} +0 -0
  324. /package/src/interceptors/XMLHttpRequest/polyfills/{EventPolyfill.ts → event-polyfill.ts} +0 -0
  325. /package/src/interceptors/XMLHttpRequest/utils/{getBodyByteLength.ts → get-body-byte-length.ts} +0 -0
  326. /package/src/interceptors/XMLHttpRequest/utils/{isDomParserSupportedType.ts → is-dom-parser-supported-type.ts} +0 -0
  327. /package/src/interceptors/fetch/utils/{createNetworkError.ts → create-network-error.ts} +0 -0
  328. /package/src/utils/{findPropertySource.ts → find-property-source.ts} +0 -0
  329. /package/src/utils/{getCleanUrl.ts → get-clean-url.ts} +0 -0
  330. /package/src/utils/{getValueBySymbol.ts → get-value-by-symbol.ts} +0 -0
  331. /package/src/utils/{isNodeLikeError.ts → is-node-like-error.ts} +0 -0
  332. /package/src/utils/{isObject.ts → is-object.ts} +0 -0
  333. /package/src/utils/{isPropertyAccessible.ts → is-property-accessible.ts} +0 -0
  334. /package/src/utils/{parseJson.ts → parse-json.ts} +0 -0
  335. /package/src/utils/{resolveWebSocketUrl.ts → resolve-web-socket-url.ts} +0 -0
@@ -1,24 +1,26 @@
1
- import { it, expect, beforeAll, afterEach, afterAll } from 'vitest'
2
- import http from 'node:http'
3
- import { HttpServer } from '@open-draft/test-server/http'
4
- import { DeferredPromise } from '@open-draft/deferred-promise'
1
+ import * as http from 'node:http'
2
+ import { setTimeout } from 'node:timers/promises'
3
+ import {
4
+ createTestHttpServer,
5
+ type TestHttpServer,
6
+ } from '@epic-web/test-server/http'
5
7
  import { ClientRequestInterceptor } from '.'
6
- import { sleep, waitForClientRequest } from '../../../test/helpers'
8
+ import { toWebResponse } from '../../../test/helpers'
7
9
 
8
- const httpServer = new HttpServer((app) => {
9
- app.get('/', (_req, res) => {
10
- res.status(200).send('/')
11
- })
12
- app.get('/get', (_req, res) => {
13
- res.status(200).send('/get')
14
- })
15
- })
10
+ let httpServer: TestHttpServer
16
11
 
17
12
  const interceptor = new ClientRequestInterceptor()
18
13
 
19
14
  beforeAll(async () => {
20
15
  interceptor.apply()
21
- await httpServer.listen()
16
+ httpServer = await createTestHttpServer({
17
+ defineRoutes(router) {
18
+ // The test server always defines a root ("/") route.
19
+ router.get('/get', () => {
20
+ return new Response('/get')
21
+ })
22
+ },
23
+ })
22
24
  })
23
25
 
24
26
  afterEach(() => {
@@ -31,10 +33,10 @@ afterAll(async () => {
31
33
  })
32
34
 
33
35
  it('abort the request if the abort signal is emitted', async () => {
34
- const requestUrl = httpServer.http.url('/')
36
+ const requestUrl = httpServer.http.url('/').href
35
37
 
36
38
  interceptor.on('request', async function delayedResponse({ controller }) {
37
- await sleep(1_000)
39
+ await setTimeout(1000)
38
40
  controller.respondWith(new Response())
39
41
  })
40
42
 
@@ -43,33 +45,13 @@ it('abort the request if the abort signal is emitted', async () => {
43
45
 
44
46
  abortController.abort()
45
47
 
46
- const abortErrorPromise = new DeferredPromise<Error>()
48
+ const abortErrorPromise = Promise.withResolvers<Error>()
47
49
  request.on('error', function (error) {
48
50
  abortErrorPromise.resolve(error)
49
51
  })
50
52
 
51
- const abortError = await abortErrorPromise
52
- expect(abortError.name).toEqual('AbortError')
53
+ const abortError = await abortErrorPromise.promise
54
+ expect(abortError.name).toBe('AbortError')
53
55
 
54
56
  expect(request.destroyed).toBe(true)
55
57
  })
56
-
57
- it('patch the Headers object correctly after dispose and reapply', async () => {
58
- interceptor.dispose()
59
- interceptor.apply()
60
-
61
- interceptor.on('request', ({ controller }) => {
62
- const headers = new Headers({
63
- 'X-CustoM-HeadeR': 'Yes',
64
- })
65
- controller.respondWith(new Response(null, { headers }))
66
- })
67
-
68
- const request = http.get(httpServer.http.url('/'))
69
- const { res } = await waitForClientRequest(request)
70
-
71
- expect(res.rawHeaders).toEqual(
72
- expect.arrayContaining(['X-CustoM-HeadeR', 'Yes'])
73
- )
74
- expect(res.headers['x-custom-header']).toEqual('Yes')
75
- })
@@ -1,193 +1,78 @@
1
1
  import http from 'node:http'
2
2
  import https from 'node:https'
3
- import { Interceptor } from '../../Interceptor'
4
- import type { HttpRequestEventMap } from '../../glossary'
5
- import {
6
- kRequestId,
7
- MockHttpSocketRequestCallback,
8
- MockHttpSocketResponseCallback,
9
- } from './MockHttpSocket'
10
- import { MockAgent, MockHttpsAgent } from './agents'
11
- import { RequestController } from '../../RequestController'
12
- import { emitAsync } from '../../utils/emitAsync'
13
- import { normalizeClientRequestArgs } from './utils/normalizeClientRequestArgs'
14
- import { handleRequest } from '../../utils/handleRequest'
15
- import {
16
- recordRawFetchHeaders,
17
- restoreHeadersPrototype,
18
- } from './utils/recordRawHeaders'
19
-
3
+ import { runInRequestContext } from '#/src/request-context'
4
+ import { patchesRegistry } from '#/src/utils/patches-registry'
5
+ import { forwardHttpEvents } from '#/src/interceptors/http/forward-events'
6
+ import { NodeHttpRequestSource } from '#/src/interceptors/http/source'
7
+ import { Interceptor } from '../../interceptor'
8
+ import { HttpRequestEventMap } from '#/src/events/http'
9
+
10
+ /**
11
+ * Interceptor for HTTP requests in Node.js made via `http.ClientRequest`.
12
+ */
20
13
  export class ClientRequestInterceptor extends Interceptor<HttpRequestEventMap> {
21
14
  static symbol = Symbol.for('client-request-interceptor')
22
15
 
23
- constructor() {
24
- super(ClientRequestInterceptor.symbol)
16
+ protected predicate(): boolean {
17
+ return true
25
18
  }
26
19
 
27
20
  protected setup(): void {
28
- const {
29
- ClientRequest: OriginalClientRequest,
30
- get: originalGet,
31
- request: originalRequest,
32
- } = http
33
- const { get: originalHttpsGet, request: originalHttpsRequest } = https
34
-
35
- const onRequest = this.onRequest.bind(this)
36
- const onResponse = this.onResponse.bind(this)
37
-
38
- // Support requests performed via the `ClientRequest` constructor directly.
39
- http.ClientRequest = new Proxy(http.ClientRequest, {
40
- construct: (target, args: Parameters<typeof http.request>) => {
41
- const [url, options, callback] = normalizeClientRequestArgs(
42
- 'http:',
43
- args
44
- )
45
-
46
- // Create a mock agent instance appropriate for the request protocol.
47
- const Agent = options.protocol === 'https:' ? MockHttpsAgent : MockAgent
48
- const mockAgent = new Agent({
49
- customAgent: options.agent,
50
- onRequest,
51
- onResponse,
52
- })
53
- options.agent = mockAgent
54
-
55
- return Reflect.construct(target, [url, options, callback])
56
- },
57
- })
58
-
59
- http.request = new Proxy(http.request, {
60
- apply: (target, thisArg, args: Parameters<typeof http.request>) => {
61
- const [url, options, callback] = normalizeClientRequestArgs(
62
- 'http:',
63
- args
64
- )
65
- const mockAgent = new MockAgent({
66
- customAgent: options.agent,
67
- onRequest,
68
- onResponse,
69
- })
70
- options.agent = mockAgent
71
-
72
- return Reflect.apply(target, thisArg, [url, options, callback])
73
- },
74
- })
75
-
76
- http.get = new Proxy(http.get, {
77
- apply: (target, thisArg, args: Parameters<typeof http.get>) => {
78
- const [url, options, callback] = normalizeClientRequestArgs(
79
- 'http:',
80
- args
81
- )
82
-
83
- const mockAgent = new MockAgent({
84
- customAgent: options.agent,
85
- onRequest,
86
- onResponse,
87
- })
88
- options.agent = mockAgent
89
-
90
- return Reflect.apply(target, thisArg, [url, options, callback])
91
- },
92
- })
93
-
94
- //
95
- // HTTPS.
96
- //
97
-
98
- https.request = new Proxy(https.request, {
99
- apply: (target, thisArg, args: Parameters<typeof https.request>) => {
100
- const [url, options, callback] = normalizeClientRequestArgs(
101
- 'https:',
102
- args
103
- )
104
-
105
- const mockAgent = new MockHttpsAgent({
106
- customAgent: options.agent,
107
- onRequest,
108
- onResponse,
109
- })
110
- options.agent = mockAgent
111
-
112
- return Reflect.apply(target, thisArg, [url, options, callback])
113
- },
114
- })
115
-
116
- https.get = new Proxy(https.get, {
117
- apply: (target, thisArg, args: Parameters<typeof https.get>) => {
118
- const [url, options, callback] = normalizeClientRequestArgs(
119
- 'https:',
120
- args
121
- )
122
-
123
- const mockAgent = new MockHttpsAgent({
124
- customAgent: options.agent,
125
- onRequest,
126
- onResponse,
127
- })
128
- options.agent = mockAgent
129
-
130
- return Reflect.apply(target, thisArg, [url, options, callback])
131
- },
132
- })
133
-
134
- // Spy on `Header.prototype.set` and `Header.prototype.append` calls
135
- // and record the raw header names provided. This is to support
136
- // `IncomingMessage.prototype.rawHeaders`.
137
- recordRawFetchHeaders()
138
-
21
+ const requestSource = Interceptor.singleton(NodeHttpRequestSource)
22
+ const requestLogger = this.logger
23
+ requestSource.apply(this)
139
24
  this.subscriptions.push(() => {
140
- http.ClientRequest = OriginalClientRequest
141
-
142
- http.get = originalGet
143
- http.request = originalRequest
144
-
145
- https.get = originalHttpsGet
146
- https.request = originalHttpsRequest
147
-
148
- restoreHeadersPrototype()
25
+ requestSource.dispose(this)
149
26
  })
150
- }
151
27
 
152
- private onRequest: MockHttpSocketRequestCallback = async ({
153
- request,
154
- socket,
155
- }) => {
156
- const controller = new RequestController(request, {
157
- passthrough() {
158
- socket.passthrough()
159
- },
160
- async respondWith(response) {
161
- await socket.respondWith(response)
162
- },
163
- errorWith(reason) {
164
- if (reason instanceof Error) {
165
- socket.errorWith(reason)
28
+ this.subscriptions.push(
29
+ forwardHttpEvents({
30
+ source: requestSource,
31
+ emitter: this.emitter,
32
+ predicate: (initiator) => {
33
+ return initiator instanceof http.ClientRequest
34
+ },
35
+ })
36
+ )
37
+
38
+ this.subscriptions.push(
39
+ patchesRegistry.applyPatch(http, 'ClientRequest', (ClientRequest) => {
40
+ return new Proxy(ClientRequest, {
41
+ construct(target, args, newTarget) {
42
+ return runInRequestContext(() => {
43
+ return Reflect.construct(target, args, newTarget)
44
+ }, requestLogger)
45
+ },
46
+ })
47
+ }),
48
+ patchesRegistry.applyPatch(http, 'get', (httpGet) => {
49
+ return function mockHttpGet(...args) {
50
+ return runInRequestContext(() => {
51
+ return httpGet(...(args as [any, any]))
52
+ }, requestLogger)
166
53
  }
167
- },
168
- })
169
-
170
- await handleRequest({
171
- request,
172
- requestId: Reflect.get(request, kRequestId),
173
- controller,
174
- emitter: this.emitter,
175
- })
176
- }
177
-
178
- public onResponse: MockHttpSocketResponseCallback = async ({
179
- requestId,
180
- request,
181
- response,
182
- isMockedResponse,
183
- }) => {
184
- // Return the promise to when all the response event listeners
185
- // are finished.
186
- return emitAsync(this.emitter, 'response', {
187
- requestId,
188
- request,
189
- response,
190
- isMockedResponse,
191
- })
54
+ }),
55
+ patchesRegistry.applyPatch(http, 'request', (httpRequest) => {
56
+ return function mockHttpRequest(...args) {
57
+ return runInRequestContext(() => {
58
+ return httpRequest(...(args as [any, any]))
59
+ }, requestLogger)
60
+ }
61
+ }),
62
+ patchesRegistry.applyPatch(https, 'get', (httpsGet) => {
63
+ return function mockHttpsGet(...args) {
64
+ return runInRequestContext(() => {
65
+ return httpsGet(...(args as [any, any]))
66
+ }, requestLogger)
67
+ }
68
+ }),
69
+ patchesRegistry.applyPatch(https, 'request', (httpsRequest) => {
70
+ return function mockHttpsRequest(...args) {
71
+ return runInRequestContext(() => {
72
+ return httpsRequest(...(args as [any, any]))
73
+ }, requestLogger)
74
+ }
75
+ })
76
+ )
192
77
  }
193
78
  }
@@ -1,10 +1,9 @@
1
1
  // @vitest-environment node
2
- import { it, expect, afterEach } from 'vitest'
3
2
  import {
4
3
  recordRawFetchHeaders,
5
4
  restoreHeadersPrototype,
6
5
  getRawFetchHeaders,
7
- } from './recordRawHeaders'
6
+ } from './record-raw-headers'
8
7
 
9
8
  const url = 'http://localhost'
10
9
 
@@ -1,4 +1,4 @@
1
- import { FetchRequest, FetchResponse } from '../../../utils/fetchUtils'
1
+ import { FetchRequest, FetchResponse } from '../../../utils/fetch-utils'
2
2
 
3
3
  type HeaderTuple = [string, string]
4
4
  type RawHeaders = Array<HeaderTuple>
@@ -71,7 +71,7 @@ function defineRawHeadersSymbol(headers: Headers, rawHeaders: RawHeaders) {
71
71
  * h.append('x-custom', 'two')
72
72
  * h[Symbol('headers map')] // Map { 'X-Custom' => 'one, two' }
73
73
  */
74
- export function recordRawFetchHeaders() {
74
+ export function recordRawFetchHeaders(): () => void {
75
75
  // Prevent patching the Headers prototype multiple times.
76
76
  if (Reflect.get(Headers, kRestorePatches)) {
77
77
  return Reflect.get(Headers, kRestorePatches)
@@ -255,6 +255,8 @@ export function recordRawFetchHeaders() {
255
255
  Object.setPrototypeOf(FetchRequest.prototype, globalThis.Request.prototype)
256
256
  Object.setPrototypeOf(FetchResponse, globalThis.Response)
257
257
  Object.setPrototypeOf(FetchResponse.prototype, globalThis.Response.prototype)
258
+
259
+ return restoreHeadersPrototype
258
260
  }
259
261
 
260
262
  export function restoreHeadersPrototype() {
@@ -293,3 +295,28 @@ function inferRawHeaders(headers: HeadersInit): RawHeaders {
293
295
 
294
296
  return Reflect.get(new Headers(headers), kRawHeaders)
295
297
  }
298
+
299
+ export function copyRawHeaders(source: Headers, destination: Headers): void {
300
+ const rawHeaders = [...getRawFetchHeaders(source)]
301
+
302
+ if (rawHeaders.length === 0) {
303
+ return
304
+ }
305
+
306
+ /**
307
+ * @note Add headers from trhe destination that raw headers from the source
308
+ * don't have. Undici automatically appends a "Content-Type" header for responses
309
+ * and, for some reason, that change is not recorded. This preserves it.
310
+ */
311
+ for (const [name, value] of destination) {
312
+ if (
313
+ rawHeaders.every(
314
+ (header) => header[0].toLowerCase() !== name.toLowerCase()
315
+ )
316
+ ) {
317
+ rawHeaders.push([name, value])
318
+ }
319
+ }
320
+
321
+ defineRawHeadersSymbol(destination, rawHeaders)
322
+ }
@@ -1,29 +1,33 @@
1
- import { Interceptor } from '../../Interceptor'
1
+ import { Interceptor } from '../../interceptor'
2
+ import {
3
+ WebSocketConnectionEvent,
4
+ type WebSocketEventMap,
5
+ } from '../../events/websocket'
2
6
  import {
3
7
  WebSocketClientConnectionProtocol,
4
8
  WebSocketClientConnection,
5
9
  type WebSocketClientEventMap,
6
- } from './WebSocketClientConnection'
10
+ } from './web-socket-client-connection'
7
11
  import {
8
12
  WebSocketServerConnectionProtocol,
9
13
  WebSocketServerConnection,
10
14
  type WebSocketServerEventMap,
11
- } from './WebSocketServerConnection'
12
- import { WebSocketClassTransport } from './WebSocketClassTransport'
15
+ } from './web-socket-server-connection'
16
+ import { WebSocketClassTransport } from './web-socket-class-transport'
13
17
  import {
14
18
  kClose,
15
19
  kPassthroughPromise,
16
20
  WebSocketOverride,
17
- } from './WebSocketOverride'
18
- import { bindEvent } from './utils/bindEvent'
19
- import { hasConfigurableGlobal } from '../../utils/hasConfigurableGlobal'
20
- import { emitAsync } from '../../utils/emitAsync'
21
- import { patchesRegistry } from '../../utils/patchesRegistry'
21
+ } from './web-socket-override'
22
+ import { bindEvent } from './utils/bind-event'
23
+ import { hasConfigurableGlobal } from '../../utils/has-configurable-global'
24
+ import { patchesRegistry } from '../../utils/patches-registry'
25
+ import { createLogger } from '../../utils/logger'
22
26
 
23
27
  export {
24
28
  type WebSocketData,
25
29
  type WebSocketTransport,
26
- } from './WebSocketTransport'
30
+ } from './web-socket-transport'
27
31
  export {
28
32
  WebSocketClientEventMap,
29
33
  WebSocketClientConnectionProtocol,
@@ -39,31 +43,7 @@ export {
39
43
  CancelableMessageEvent,
40
44
  } from './utils/events'
41
45
 
42
- export type WebSocketEventMap = {
43
- connection: [args: WebSocketConnectionData]
44
- }
45
-
46
- export type WebSocketConnectionData = {
47
- /**
48
- * The incoming WebSocket client connection.
49
- */
50
- client: WebSocketClientConnection
51
-
52
- /**
53
- * The original WebSocket server connection.
54
- */
55
- server: WebSocketServerConnection
56
-
57
- /**
58
- * The connection information.
59
- */
60
- info: {
61
- /**
62
- * The protocols supported by the WebSocket client.
63
- */
64
- protocols: string | Array<string> | undefined
65
- }
66
- }
46
+ const logger = createLogger('websocket')
67
47
 
68
48
  /**
69
49
  * Intercept the outgoing WebSocket connections created using
@@ -72,16 +52,12 @@ export type WebSocketConnectionData = {
72
52
  export class WebSocketInterceptor extends Interceptor<WebSocketEventMap> {
73
53
  static symbol = Symbol.for('websocket-interceptor')
74
54
 
75
- constructor() {
76
- super(WebSocketInterceptor.symbol)
77
- }
78
-
79
- protected checkEnvironment(): boolean {
55
+ protected predicate(): boolean {
80
56
  return hasConfigurableGlobal('WebSocket')
81
57
  }
82
58
 
83
59
  protected setup(): void {
84
- const logger = this.logger.extend('setup')
60
+ logger.verbose('setup')
85
61
 
86
62
  const WebSocketProxy = new Proxy(globalThis.WebSocket, {
87
63
  construct: (
@@ -91,6 +67,11 @@ export class WebSocketInterceptor extends Interceptor<WebSocketEventMap> {
91
67
  ) => {
92
68
  const [url, protocols] = args
93
69
 
70
+ logger.info('connection intercepted %o', {
71
+ url: url.toString(),
72
+ protocols,
73
+ })
74
+
94
75
  const createConnection = (): WebSocket => {
95
76
  return Reflect.construct(target, args, newTarget)
96
77
  }
@@ -118,13 +99,15 @@ export class WebSocketInterceptor extends Interceptor<WebSocketEventMap> {
118
99
  // The "globalThis.WebSocket" class stands for
119
100
  // the client-side connection. Assume it's established
120
101
  // as soon as the WebSocket instance is constructed.
121
- await emitAsync(this.emitter, 'connection', {
122
- client: new WebSocketClientConnection(socket, transport),
123
- server,
124
- info: {
125
- protocols,
126
- },
127
- })
102
+ await this.emitter.emitAsPromise(
103
+ new WebSocketConnectionEvent({
104
+ client: new WebSocketClientConnection(socket, transport),
105
+ server,
106
+ info: {
107
+ protocols,
108
+ },
109
+ })
110
+ )
128
111
 
129
112
  if (hasConnectionListeners) {
130
113
  socket[kPassthroughPromise].resolve(false)
@@ -173,12 +156,12 @@ export class WebSocketInterceptor extends Interceptor<WebSocketEventMap> {
173
156
  },
174
157
  })
175
158
 
176
- logger.info('patching global WebSocket...')
159
+ logger.verbose('patching global WebSocket...')
177
160
 
178
161
  this.subscriptions.push(
179
162
  patchesRegistry.applyPatch(globalThis, 'WebSocket', () => WebSocketProxy)
180
163
  )
181
164
 
182
- logger.info('global WebSocket patched!', globalThis.WebSocket.name)
165
+ logger.verbose('global WebSocket patched: %s', globalThis.WebSocket.name)
183
166
  }
184
167
  }
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @vitest-environment node
3
3
  */
4
- import { it, expect } from 'vitest'
5
- import { bindEvent } from './bindEvent'
4
+ import { bindEvent } from './bind-event'
6
5
 
7
6
  it('sets the "target" on the given event', () => {
8
7
  class Target {}
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * @vitest-environment node
3
3
  */
4
- import { describe, it, expect } from 'vitest'
5
4
  import { CancelableMessageEvent, CloseEvent } from './events'
6
5
 
7
6
  describe(CancelableMessageEvent, () => {
@@ -1,11 +1,11 @@
1
- import { bindEvent } from './utils/bindEvent'
1
+ import { bindEvent } from './utils/bind-event'
2
2
  import {
3
3
  StrictEventListenerOrEventListenerObject,
4
4
  WebSocketData,
5
5
  WebSocketTransport,
6
6
  WebSocketTransportEventMap,
7
- } from './WebSocketTransport'
8
- import { kOnSend, kClose, WebSocketOverride } from './WebSocketOverride'
7
+ } from './web-socket-transport'
8
+ import { kOnSend, kClose, WebSocketOverride } from './web-socket-override'
9
9
  import { CancelableMessageEvent, CloseEvent } from './utils/events'
10
10
 
11
11
  /**
@@ -1,8 +1,8 @@
1
- import type { WebSocketData, WebSocketTransport } from './WebSocketTransport'
2
- import type { WebSocketEventListener } from './WebSocketOverride'
3
- import { bindEvent } from './utils/bindEvent'
1
+ import type { WebSocketData, WebSocketTransport } from './web-socket-transport'
2
+ import type { WebSocketEventListener } from './web-socket-override'
3
+ import { bindEvent } from './utils/bind-event'
4
4
  import { CancelableMessageEvent, CloseEvent } from './utils/events'
5
- import { createRequestId } from '../../createRequestId'
5
+ import { createRequestId } from '../../create-request-id'
6
6
 
7
7
  const kEmitter = Symbol('kEmitter')
8
8
  const kBoundListener = Symbol('kBoundListener')
@@ -1,9 +1,8 @@
1
1
  import { invariant } from 'outvariant'
2
- import { DeferredPromise } from '@open-draft/deferred-promise'
3
- import type { WebSocketData } from './WebSocketTransport'
4
- import { bindEvent } from './utils/bindEvent'
2
+ import type { WebSocketData } from './web-socket-transport'
3
+ import { bindEvent } from './utils/bind-event'
5
4
  import { CloseEvent } from './utils/events'
6
- import { resolveWebSocketUrl } from '../../utils/resolveWebSocketUrl'
5
+ import { resolveWebSocketUrl } from '../../utils/resolve-web-socket-url'
7
6
 
8
7
  export type WebSocketEventListener<
9
8
  EventType extends WebSocketEventMap[keyof WebSocketEventMap] = Event,
@@ -40,7 +39,7 @@ export class WebSocketOverride extends EventTarget implements WebSocket {
40
39
  private _onerror: WebSocketEventListener | null = null
41
40
  private _onclose: WebSocketEventListener<CloseEvent> | null = null
42
41
 
43
- private [kPassthroughPromise]: DeferredPromise<boolean>
42
+ private [kPassthroughPromise]: PromiseWithResolvers<boolean>
44
43
  private [kOnSend]?: (data: WebSocketData) => void
45
44
 
46
45
  constructor(url: string | URL, protocols?: string | Array<string>) {
@@ -52,10 +51,10 @@ export class WebSocketOverride extends EventTarget implements WebSocket {
52
51
  this.readyState = this.CONNECTING
53
52
  this.bufferedAmount = 0
54
53
 
55
- this[kPassthroughPromise] = new DeferredPromise<boolean>()
54
+ this[kPassthroughPromise] = Promise.withResolvers<boolean>()
56
55
 
57
56
  queueMicrotask(async () => {
58
- if (await this[kPassthroughPromise]) {
57
+ if (await this[kPassthroughPromise].promise) {
59
58
  return
60
59
  }
61
60
 
@@ -3,10 +3,10 @@ import {
3
3
  kClose,
4
4
  WebSocketEventListener,
5
5
  WebSocketOverride,
6
- } from './WebSocketOverride'
7
- import type { WebSocketData } from './WebSocketTransport'
8
- import type { WebSocketClassTransport } from './WebSocketClassTransport'
9
- import { bindEvent } from './utils/bindEvent'
6
+ } from './web-socket-override'
7
+ import type { WebSocketData } from './web-socket-transport'
8
+ import type { WebSocketClassTransport } from './web-socket-class-transport'
9
+ import { bindEvent } from './utils/bind-event'
10
10
  import {
11
11
  CancelableMessageEvent,
12
12
  CancelableCloseEvent,
@@ -1,6 +1,6 @@
1
1
  import { CloseEvent } from './utils/events'
2
2
 
3
- export type WebSocketData = string | ArrayBufferLike | Blob | ArrayBufferView
3
+ export type WebSocketData = string | ArrayBuffer | Blob | ArrayBufferView<ArrayBuffer>
4
4
 
5
5
  export type WebSocketTransportEventMap = {
6
6
  incoming: MessageEvent<WebSocketData>