msw 2.15.0 → 3.0.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 (765) hide show
  1. package/README.md +8 -0
  2. package/cli/init.js +12 -9
  3. package/cli/invariant.js +2 -2
  4. package/lib/_chunks/attach-sibling-handlers.js +360 -0
  5. package/lib/_chunks/attach-sibling-handlers.js.map +1 -0
  6. package/lib/_chunks/colors.js +18 -0
  7. package/lib/_chunks/colors.js.map +1 -0
  8. package/lib/_chunks/cookie-store.js +348 -0
  9. package/lib/_chunks/cookie-store.js.map +1 -0
  10. package/lib/_chunks/execute-handlers.js +29 -0
  11. package/lib/_chunks/execute-handlers.js.map +1 -0
  12. package/lib/_chunks/handlers-controller.d.ts +262 -0
  13. package/lib/_chunks/has-ref-counted.js +9 -0
  14. package/lib/_chunks/has-ref-counted.js.map +1 -0
  15. package/lib/_chunks/http-handler.d.ts +72 -0
  16. package/lib/_chunks/http-handler.js +182 -0
  17. package/lib/_chunks/http-handler.js.map +1 -0
  18. package/lib/_chunks/http-response.js +137 -0
  19. package/lib/_chunks/http-response.js.map +1 -0
  20. package/lib/{core → _chunks}/http.d.ts +15 -18
  21. package/lib/_chunks/http.js +30 -0
  22. package/lib/_chunks/http.js.map +1 -0
  23. package/lib/_chunks/interceptor-source.d.ts +163 -0
  24. package/lib/_chunks/interceptor-source.js +756 -0
  25. package/lib/_chunks/interceptor-source.js.map +1 -0
  26. package/lib/_chunks/is-object.js +11 -0
  27. package/lib/_chunks/is-object.js.map +1 -0
  28. package/lib/_chunks/match-request-url.d.ts +14 -0
  29. package/lib/_chunks/request-handler.d.ts +295 -0
  30. package/lib/_chunks/request-handler.js +369 -0
  31. package/lib/_chunks/request-handler.js.map +1 -0
  32. package/lib/_chunks/shared-options.d.ts +20 -0
  33. package/lib/_chunks/sse.d.ts +95 -0
  34. package/lib/_chunks/sse.js +599 -0
  35. package/lib/_chunks/sse.js.map +1 -0
  36. package/lib/_chunks/symbols.js +22 -0
  37. package/lib/_chunks/symbols.js.map +1 -0
  38. package/lib/_chunks/websocket-upgrade.js +46 -0
  39. package/lib/_chunks/websocket-upgrade.js.map +1 -0
  40. package/lib/_chunks/ws.d.ts +133 -0
  41. package/lib/_chunks/ws.js +293 -0
  42. package/lib/_chunks/ws.js.map +1 -0
  43. package/lib/browser/index.d.ts +225 -96
  44. package/lib/browser/index.js +555 -3694
  45. package/lib/browser/index.js.map +1 -1
  46. package/lib/core/experimental/index.d.ts +3 -17
  47. package/lib/core/experimental/index.js +2 -38
  48. package/lib/core/index.d.ts +15 -27
  49. package/lib/core/index.js +15 -64
  50. package/lib/graphql/index.d.ts +550 -0
  51. package/lib/graphql/index.js +1244 -0
  52. package/lib/graphql/index.js.map +1 -0
  53. package/lib/http/index.d.ts +4 -0
  54. package/lib/http/index.js +4 -0
  55. package/lib/iife/index.js +35857 -28422
  56. package/lib/iife/index.js.map +1 -1
  57. package/lib/mockServiceWorker.js +185 -86
  58. package/lib/node/index.d.ts +79 -104
  59. package/lib/node/index.js +103 -201
  60. package/lib/node/index.js.map +1 -1
  61. package/lib/sse/index.d.ts +2 -0
  62. package/lib/sse/index.js +2 -0
  63. package/lib/{core → utils}/bypass.d.ts +5 -4
  64. package/lib/utils/bypass.js +41 -0
  65. package/lib/utils/bypass.js.map +1 -0
  66. package/lib/utils/delay.d.ts +15 -0
  67. package/lib/utils/delay.js +45 -0
  68. package/lib/utils/delay.js.map +1 -0
  69. package/lib/utils/get-clean-url-string.d.ts +9 -0
  70. package/lib/utils/get-clean-url-string.js +15 -0
  71. package/lib/utils/get-clean-url-string.js.map +1 -0
  72. package/lib/utils/get-response.d.ts +13 -0
  73. package/lib/utils/get-response.js +23 -0
  74. package/lib/utils/get-response.js.map +1 -0
  75. package/lib/utils/is-common-asset-request.d.ts +22 -0
  76. package/lib/utils/is-common-asset-request.js +31 -0
  77. package/lib/utils/is-common-asset-request.js.map +1 -0
  78. package/lib/utils/passthrough.d.ts +31 -0
  79. package/lib/utils/passthrough.js +41 -0
  80. package/lib/utils/passthrough.js.map +1 -0
  81. package/lib/vite/index.d.ts +44 -0
  82. package/lib/vite/index.js +90 -0
  83. package/lib/vite/index.js.map +1 -0
  84. package/lib/vite/runtime.d.ts +6 -0
  85. package/lib/vite/runtime.js +77 -0
  86. package/lib/vite/runtime.js.map +1 -0
  87. package/lib/ws/index.d.ts +4 -0
  88. package/lib/ws/index.js +4 -0
  89. package/package.json +93 -201
  90. package/src/browser/default-network-options.ts +31 -0
  91. package/src/browser/glossary.ts +11 -23
  92. package/src/browser/index.ts +5 -1
  93. package/src/browser/setup-worker.ts +15 -68
  94. package/src/browser/sources/fallback-http-source.ts +1 -1
  95. package/src/browser/sources/service-worker-source.ts +76 -69
  96. package/src/browser/tsconfig.browser.json +4 -2
  97. package/src/browser/utils/{deserializeRequest.ts → deserialize-request.ts} +3 -4
  98. package/src/browser/utils/{getAbsoluteWorkerUrl.test.ts → get-absolute-worker-url.test.ts} +3 -3
  99. package/src/browser/utils/get-worker-instance.ts +2 -2
  100. package/src/browser/utils/should-invalidate-worker.test.ts +11 -11
  101. package/src/browser/utils/should-invalidate-worker.ts +1 -1
  102. package/src/browser/utils/validate-worker-scope.ts +1 -1
  103. package/src/browser/utils/{workerChannel.ts → worker-channel.ts} +42 -20
  104. package/src/core/experimental/define-network.test.ts +43 -8
  105. package/src/core/experimental/define-network.ts +32 -13
  106. package/src/core/experimental/frames/http-frame.test.ts +15 -13
  107. package/src/core/experimental/frames/http-frame.ts +10 -9
  108. package/src/core/experimental/frames/websocket-frame.test.ts +129 -15
  109. package/src/core/experimental/frames/websocket-frame.ts +71 -20
  110. package/src/core/experimental/handlers-controller.test.ts +141 -34
  111. package/src/core/experimental/handlers-controller.ts +107 -30
  112. package/src/core/experimental/index.ts +1 -0
  113. package/src/core/experimental/on-unhandled-frame.test.ts +19 -19
  114. package/src/core/experimental/on-unhandled-frame.ts +7 -12
  115. package/src/core/experimental/request-utils.test.ts +4 -29
  116. package/src/core/experimental/request-utils.ts +0 -14
  117. package/src/core/experimental/sources/interceptor-source.ts +44 -29
  118. package/src/core/experimental/sources/network-source.test.ts +3 -3
  119. package/src/core/experimental/sources/network-source.ts +3 -3
  120. package/src/core/handlers/handler.ts +42 -0
  121. package/src/core/handlers/{RequestHandler.ts → request-handler.ts} +26 -41
  122. package/src/core/index.ts +35 -58
  123. package/src/core/shared-options.ts +21 -0
  124. package/src/core/type-utils.ts +18 -0
  125. package/src/core/utils/{cookieStore.ts → cookie-store.ts} +14 -9
  126. package/src/core/utils/{executeHandlers.ts → execute-handlers.ts} +2 -2
  127. package/src/core/utils/http-status-messages.ts +69 -0
  128. package/src/core/utils/internal/{attachSiblingHandlers.ts → attach-sibling-handlers.ts} +20 -0
  129. package/src/core/utils/internal/{devUtils.test.ts → dev-utils.test.ts} +3 -3
  130. package/src/core/utils/internal/{Disposable.ts → disposable.ts} +1 -1
  131. package/src/core/utils/internal/{getCallFrame.test.ts → get-call-frame.test.ts} +1 -1
  132. package/src/core/utils/internal/{getCallFrame.ts → get-call-frame.ts} +1 -1
  133. package/src/core/utils/internal/{hasRefCounted.test.ts → has-ref-counted.test.ts} +4 -4
  134. package/src/core/utils/internal/{hasRefCounted.ts → has-ref-counted.ts} +1 -1
  135. package/src/core/utils/internal/{isIterable.test.ts → is-iterable.test.ts} +1 -1
  136. package/src/core/utils/internal/is-iterable.ts +16 -0
  137. package/src/core/utils/internal/{isObject.test.ts → is-object.test.ts} +1 -1
  138. package/src/core/utils/internal/{isStringEqual.test.ts → is-string-equal.test.ts} +7 -7
  139. package/src/core/utils/internal/{jsonParse.test.ts → json-parse.test.ts} +1 -1
  140. package/src/core/utils/internal/observe-response-body-stream.test.ts +7 -7
  141. package/src/core/utils/internal/observe-response-body-stream.ts +3 -4
  142. package/src/core/utils/internal/{parseMultipartData.test.ts → parse-multipart-data.test.ts} +1 -1
  143. package/src/core/utils/internal/{parseMultipartData.ts → parse-multipart-data.ts} +1 -1
  144. package/src/core/utils/internal/{toReadonlyArray.test.ts → to-readonly-array.test.ts} +4 -4
  145. package/src/core/utils/logging/colors.ts +13 -0
  146. package/src/core/utils/logging/{getStatusCodeColor.test.ts → get-status-code-color.test.ts} +1 -1
  147. package/src/core/utils/logging/{getTimestamp.test.ts → get-timestamp.test.ts} +1 -1
  148. package/src/core/utils/logging/{serializeRequest.test.ts → serialize-request.test.ts} +1 -1
  149. package/src/core/utils/logging/{serializeResponse.test.ts → serialize-response.test.ts} +8 -10
  150. package/src/core/utils/logging/{serializeResponse.ts → serialize-response.ts} +2 -4
  151. package/src/core/utils/matching/match-request-url.test.ts +90 -0
  152. package/src/core/utils/matching/match-request-url.ts +45 -0
  153. package/src/core/utils/matching/{normalizePath.node.test.ts → normalize-path.node.test.ts} +2 -4
  154. package/src/core/utils/matching/{normalizePath.test.ts → normalize-path.test.ts} +2 -4
  155. package/src/core/utils/matching/{normalizePath.ts → normalize-path.ts} +8 -5
  156. package/src/core/utils/request/{getAllAcceptedMimeTypes.test.ts → get-all-accepted-mime-types.test.ts} +14 -14
  157. package/src/core/utils/request/get-request-cookies.ts +76 -0
  158. package/src/core/utils/request/store-response-cookies.ts +15 -0
  159. package/src/core/utils/request/{toPublicUrl.node.test.ts → to-public-url.node.test.ts} +1 -1
  160. package/src/core/utils/request/{toPublicUrl.test.ts → to-public-url.test.ts} +2 -2
  161. package/src/core/utils/{HttpResponse/decorators.ts → response-decorators.ts} +6 -8
  162. package/src/core/utils/url/{getAbsoluteUrl.node.test.ts → get-absolute-url.node.test.ts} +5 -7
  163. package/src/core/utils/url/{getAbsoluteUrl.test.ts → get-absolute-url.test.ts} +7 -7
  164. package/src/core/utils/url/{getAbsoluteUrl.ts → get-absolute-url.ts} +1 -1
  165. package/src/core/utils/url/is-absolute-url.test.ts +30 -0
  166. package/src/{core/handlers/GraphQLHandler.test.ts → graphql/graphql-handler.test.ts} +37 -36
  167. package/src/{core/handlers/GraphQLHandler.ts → graphql/graphql-handler.ts} +54 -41
  168. package/src/graphql/graphql-subscription-event.ts +39 -0
  169. package/src/graphql/graphql-subscription.test.ts +208 -0
  170. package/src/graphql/graphql-subscription.ts +1487 -0
  171. package/src/graphql/graphql.test.ts +14 -0
  172. package/src/graphql/graphql.ts +179 -0
  173. package/src/graphql/index.ts +34 -0
  174. package/src/{core/utils/internal/parseGraphQLRequest.test.ts → graphql/parse-graphql-request.test.ts} +47 -6
  175. package/src/{core/utils/internal/parseGraphQLRequest.ts → graphql/parse-graphql-request.ts} +59 -32
  176. package/src/{core/handlers/HttpHandler.test.ts → http/http-handler.test.ts} +22 -22
  177. package/src/{core/handlers/HttpHandler.ts → http/http-handler.ts} +16 -18
  178. package/src/{core/HttpResponse.test.ts → http/http-response.test.ts} +25 -27
  179. package/src/{core/HttpResponse.ts → http/http-response.ts} +15 -17
  180. package/src/{core → http}/http.ts +7 -7
  181. package/src/http/index.test.ts +19 -0
  182. package/src/http/index.ts +22 -0
  183. package/src/http/symbols.ts +19 -0
  184. package/src/iife/index.ts +2 -0
  185. package/src/mockServiceWorker.js +183 -84
  186. package/src/node/async-handlers-controller.test.ts +4 -4
  187. package/src/node/glossary.ts +8 -4
  188. package/src/node/index.ts +1 -6
  189. package/src/node/setup-server-common.ts +16 -73
  190. package/src/node/setup-server.ts +9 -40
  191. package/src/sse/index.test.ts +14 -0
  192. package/src/sse/index.ts +7 -0
  193. package/src/{core → sse}/sse.ts +25 -21
  194. package/src/tsconfig.core.build.json +5 -1
  195. package/src/tsconfig.core.json +8 -1
  196. package/src/tsconfig.node.json +1 -1
  197. package/src/tsconfig.src.json +1 -1
  198. package/src/{core → utils}/bypass.test.ts +22 -5
  199. package/src/{core → utils}/bypass.ts +11 -0
  200. package/src/{core → utils}/delay.ts +5 -5
  201. package/src/utils/get-clean-url-string.test.ts +24 -0
  202. package/src/utils/get-clean-url-string.ts +16 -0
  203. package/src/{core/getResponse.test.ts → utils/get-response.test.ts} +9 -9
  204. package/src/{core/getResponse.ts → utils/get-response.ts} +2 -2
  205. package/src/{core/isCommonAssetRequest.ts → utils/is-common-asset-request.ts} +4 -3
  206. package/src/utils/passthrough.test.ts +41 -0
  207. package/src/utils/passthrough.ts +46 -0
  208. package/src/vite/client.d.ts +16 -0
  209. package/src/vite/index.ts +4 -0
  210. package/src/vite/options.d.ts +5 -0
  211. package/src/vite/plugin.test.ts +918 -0
  212. package/src/vite/plugin.ts +133 -0
  213. package/src/vite/runtime.ts +117 -0
  214. package/src/vite/tsconfig.build.json +7 -0
  215. package/src/ws/index.ts +23 -0
  216. package/src/{core/ws/utils/attachWebSocketLogger.ts → ws/utils/attach-websocket-logger.ts} +45 -23
  217. package/src/{core/ws/utils/getMessageLength.test.ts → ws/utils/get-message-length.test.ts} +4 -4
  218. package/src/{core/ws/utils/getMessageLength.ts → ws/utils/get-message-length.ts} +1 -1
  219. package/src/{core/ws/utils/getPublicData.test.ts → ws/utils/get-public-data.test.ts} +7 -7
  220. package/src/ws/utils/get-public-data.ts +23 -0
  221. package/src/{core/ws/utils/truncateMessage.test.ts → ws/utils/truncate-message.test.ts} +3 -3
  222. package/src/{core/ws/WebSocketClientManager.test.ts → ws/websocket-client-manager.test.ts} +8 -9
  223. package/src/{core/ws/WebSocketClientManager.ts → ws/websocket-client-manager.ts} +24 -28
  224. package/src/{core/ws/WebSocketClientStore.ts → ws/websocket-client-store.ts} +2 -2
  225. package/src/{core/handlers/WebSocketHandler.test.ts → ws/websocket-handler.test.ts} +15 -15
  226. package/src/{core/handlers/WebSocketHandler.ts → ws/websocket-handler.ts} +144 -32
  227. package/src/{core/ws/WebSocketIndexedDBClientStore.ts → ws/websocket-indexeddb-client-store.ts} +12 -13
  228. package/src/{core/ws/WebSocketMemoryClientStore.ts → ws/websocket-memory-client-store.ts} +4 -4
  229. package/src/ws/websocket-upgrade.ts +83 -0
  230. package/src/{core → ws}/ws.test.ts +3 -4
  231. package/src/{core → ws}/ws.ts +106 -53
  232. package/browser/package.json +0 -31
  233. package/cli/package.json +0 -3
  234. package/config/package.json +0 -3
  235. package/config/scripts/postinstall.js +0 -36
  236. package/lib/browser/index.d.mts +0 -112
  237. package/lib/browser/index.mjs +0 -3706
  238. package/lib/browser/index.mjs.map +0 -1
  239. package/lib/core/HttpResponse-BE_Y2Ak9.d.mts +0 -389
  240. package/lib/core/HttpResponse-DL-P1EeG.d.ts +0 -389
  241. package/lib/core/HttpResponse.d.mts +0 -6
  242. package/lib/core/HttpResponse.d.ts +0 -6
  243. package/lib/core/HttpResponse.js +0 -176
  244. package/lib/core/HttpResponse.js.map +0 -1
  245. package/lib/core/HttpResponse.mjs +0 -159
  246. package/lib/core/HttpResponse.mjs.map +0 -1
  247. package/lib/core/bypass.d.mts +0 -16
  248. package/lib/core/bypass.js +0 -42
  249. package/lib/core/bypass.js.map +0 -1
  250. package/lib/core/bypass.mjs +0 -22
  251. package/lib/core/bypass.mjs.map +0 -1
  252. package/lib/core/delay.d.mts +0 -18
  253. package/lib/core/delay.d.ts +0 -18
  254. package/lib/core/delay.js +0 -77
  255. package/lib/core/delay.js.map +0 -1
  256. package/lib/core/delay.mjs +0 -57
  257. package/lib/core/delay.mjs.map +0 -1
  258. package/lib/core/experimental/compat.d.mts +0 -17
  259. package/lib/core/experimental/compat.d.ts +0 -17
  260. package/lib/core/experimental/compat.js +0 -55
  261. package/lib/core/experimental/compat.js.map +0 -1
  262. package/lib/core/experimental/compat.mjs +0 -37
  263. package/lib/core/experimental/compat.mjs.map +0 -1
  264. package/lib/core/experimental/define-network.d.mts +0 -75
  265. package/lib/core/experimental/define-network.d.ts +0 -75
  266. package/lib/core/experimental/define-network.js +0 -134
  267. package/lib/core/experimental/define-network.js.map +0 -1
  268. package/lib/core/experimental/define-network.mjs +0 -119
  269. package/lib/core/experimental/define-network.mjs.map +0 -1
  270. package/lib/core/experimental/frames/http-frame.d.mts +0 -77
  271. package/lib/core/experimental/frames/http-frame.d.ts +0 -77
  272. package/lib/core/experimental/frames/http-frame.js +0 -197
  273. package/lib/core/experimental/frames/http-frame.js.map +0 -1
  274. package/lib/core/experimental/frames/http-frame.mjs +0 -181
  275. package/lib/core/experimental/frames/http-frame.mjs.map +0 -1
  276. package/lib/core/experimental/frames/network-frame.d.mts +0 -12
  277. package/lib/core/experimental/frames/network-frame.d.ts +0 -12
  278. package/lib/core/experimental/frames/network-frame.js +0 -35
  279. package/lib/core/experimental/frames/network-frame.js.map +0 -1
  280. package/lib/core/experimental/frames/network-frame.mjs +0 -15
  281. package/lib/core/experimental/frames/network-frame.mjs.map +0 -1
  282. package/lib/core/experimental/frames/websocket-frame.d.mts +0 -55
  283. package/lib/core/experimental/frames/websocket-frame.d.ts +0 -55
  284. package/lib/core/experimental/frames/websocket-frame.js +0 -131
  285. package/lib/core/experimental/frames/websocket-frame.js.map +0 -1
  286. package/lib/core/experimental/frames/websocket-frame.mjs +0 -118
  287. package/lib/core/experimental/frames/websocket-frame.mjs.map +0 -1
  288. package/lib/core/experimental/handlers-controller.d.mts +0 -36
  289. package/lib/core/experimental/handlers-controller.d.ts +0 -36
  290. package/lib/core/experimental/handlers-controller.js +0 -146
  291. package/lib/core/experimental/handlers-controller.js.map +0 -1
  292. package/lib/core/experimental/handlers-controller.mjs +0 -126
  293. package/lib/core/experimental/handlers-controller.mjs.map +0 -1
  294. package/lib/core/experimental/index.d.mts +0 -17
  295. package/lib/core/experimental/index.js.map +0 -1
  296. package/lib/core/experimental/index.mjs +0 -27
  297. package/lib/core/experimental/index.mjs.map +0 -1
  298. package/lib/core/experimental/on-unhandled-frame.d.mts +0 -12
  299. package/lib/core/experimental/on-unhandled-frame.d.ts +0 -12
  300. package/lib/core/experimental/on-unhandled-frame.js +0 -91
  301. package/lib/core/experimental/on-unhandled-frame.js.map +0 -1
  302. package/lib/core/experimental/on-unhandled-frame.mjs +0 -71
  303. package/lib/core/experimental/on-unhandled-frame.mjs.map +0 -1
  304. package/lib/core/experimental/request-utils.d.mts +0 -12
  305. package/lib/core/experimental/request-utils.d.ts +0 -12
  306. package/lib/core/experimental/request-utils.js +0 -50
  307. package/lib/core/experimental/request-utils.js.map +0 -1
  308. package/lib/core/experimental/request-utils.mjs +0 -30
  309. package/lib/core/experimental/request-utils.mjs.map +0 -1
  310. package/lib/core/experimental/setup-api.d.mts +0 -33
  311. package/lib/core/experimental/setup-api.d.ts +0 -33
  312. package/lib/core/experimental/setup-api.js +0 -58
  313. package/lib/core/experimental/setup-api.js.map +0 -1
  314. package/lib/core/experimental/setup-api.mjs +0 -40
  315. package/lib/core/experimental/setup-api.mjs.map +0 -1
  316. package/lib/core/experimental/sources/interceptor-source.d.mts +0 -28
  317. package/lib/core/experimental/sources/interceptor-source.d.ts +0 -28
  318. package/lib/core/experimental/sources/interceptor-source.js +0 -155
  319. package/lib/core/experimental/sources/interceptor-source.js.map +0 -1
  320. package/lib/core/experimental/sources/interceptor-source.mjs +0 -135
  321. package/lib/core/experimental/sources/interceptor-source.mjs.map +0 -1
  322. package/lib/core/experimental/sources/network-source.d.mts +0 -31
  323. package/lib/core/experimental/sources/network-source.d.ts +0 -31
  324. package/lib/core/experimental/sources/network-source.js +0 -51
  325. package/lib/core/experimental/sources/network-source.js.map +0 -1
  326. package/lib/core/experimental/sources/network-source.mjs +0 -32
  327. package/lib/core/experimental/sources/network-source.mjs.map +0 -1
  328. package/lib/core/getResponse.d.mts +0 -18
  329. package/lib/core/getResponse.d.ts +0 -18
  330. package/lib/core/getResponse.js +0 -35
  331. package/lib/core/getResponse.js.map +0 -1
  332. package/lib/core/getResponse.mjs +0 -17
  333. package/lib/core/getResponse.mjs.map +0 -1
  334. package/lib/core/graphql.d.mts +0 -76
  335. package/lib/core/graphql.d.ts +0 -76
  336. package/lib/core/graphql.js +0 -91
  337. package/lib/core/graphql.js.map +0 -1
  338. package/lib/core/graphql.mjs +0 -74
  339. package/lib/core/graphql.mjs.map +0 -1
  340. package/lib/core/handlers/GraphQLHandler.d.mts +0 -6
  341. package/lib/core/handlers/GraphQLHandler.d.ts +0 -6
  342. package/lib/core/handlers/GraphQLHandler.js +0 -232
  343. package/lib/core/handlers/GraphQLHandler.js.map +0 -1
  344. package/lib/core/handlers/GraphQLHandler.mjs +0 -221
  345. package/lib/core/handlers/GraphQLHandler.mjs.map +0 -1
  346. package/lib/core/handlers/HttpHandler.d.mts +0 -75
  347. package/lib/core/handlers/HttpHandler.d.ts +0 -75
  348. package/lib/core/handlers/HttpHandler.js +0 -129
  349. package/lib/core/handlers/HttpHandler.js.map +0 -1
  350. package/lib/core/handlers/HttpHandler.mjs +0 -113
  351. package/lib/core/handlers/HttpHandler.mjs.map +0 -1
  352. package/lib/core/handlers/RequestHandler.d.mts +0 -6
  353. package/lib/core/handlers/RequestHandler.d.ts +0 -6
  354. package/lib/core/handlers/RequestHandler.js +0 -365
  355. package/lib/core/handlers/RequestHandler.js.map +0 -1
  356. package/lib/core/handlers/RequestHandler.mjs +0 -348
  357. package/lib/core/handlers/RequestHandler.mjs.map +0 -1
  358. package/lib/core/handlers/WebSocketHandler.d.mts +0 -49
  359. package/lib/core/handlers/WebSocketHandler.d.ts +0 -49
  360. package/lib/core/handlers/WebSocketHandler.js +0 -178
  361. package/lib/core/handlers/WebSocketHandler.js.map +0 -1
  362. package/lib/core/handlers/WebSocketHandler.mjs +0 -160
  363. package/lib/core/handlers/WebSocketHandler.mjs.map +0 -1
  364. package/lib/core/http.d.mts +0 -31
  365. package/lib/core/http.js +0 -41
  366. package/lib/core/http.js.map +0 -1
  367. package/lib/core/http.mjs +0 -25
  368. package/lib/core/http.mjs.map +0 -1
  369. package/lib/core/index.d.mts +0 -27
  370. package/lib/core/index.js.map +0 -1
  371. package/lib/core/index.mjs +0 -52
  372. package/lib/core/index.mjs.map +0 -1
  373. package/lib/core/isCommonAssetRequest.d.mts +0 -20
  374. package/lib/core/isCommonAssetRequest.d.ts +0 -20
  375. package/lib/core/isCommonAssetRequest.js +0 -42
  376. package/lib/core/isCommonAssetRequest.js.map +0 -1
  377. package/lib/core/isCommonAssetRequest.mjs +0 -22
  378. package/lib/core/isCommonAssetRequest.mjs.map +0 -1
  379. package/lib/core/on-unhandled-frame-0KmwUmeV.d.ts +0 -56
  380. package/lib/core/on-unhandled-frame-gkokW4Rr.d.mts +0 -56
  381. package/lib/core/passthrough.d.mts +0 -24
  382. package/lib/core/passthrough.d.ts +0 -24
  383. package/lib/core/passthrough.js +0 -33
  384. package/lib/core/passthrough.js.map +0 -1
  385. package/lib/core/passthrough.mjs +0 -13
  386. package/lib/core/passthrough.mjs.map +0 -1
  387. package/lib/core/sharedOptions.d.mts +0 -68
  388. package/lib/core/sharedOptions.d.ts +0 -68
  389. package/lib/core/sharedOptions.js +0 -17
  390. package/lib/core/sharedOptions.js.map +0 -1
  391. package/lib/core/sharedOptions.mjs +0 -1
  392. package/lib/core/sharedOptions.mjs.map +0 -1
  393. package/lib/core/sse.d.mts +0 -102
  394. package/lib/core/sse.d.ts +0 -102
  395. package/lib/core/sse.js +0 -690
  396. package/lib/core/sse.js.map +0 -1
  397. package/lib/core/sse.mjs +0 -672
  398. package/lib/core/sse.mjs.map +0 -1
  399. package/lib/core/typeUtils.d.mts +0 -12
  400. package/lib/core/typeUtils.d.ts +0 -12
  401. package/lib/core/typeUtils.js +0 -17
  402. package/lib/core/typeUtils.js.map +0 -1
  403. package/lib/core/typeUtils.mjs +0 -1
  404. package/lib/core/typeUtils.mjs.map +0 -1
  405. package/lib/core/utils/HttpResponse/decorators.d.mts +0 -22
  406. package/lib/core/utils/HttpResponse/decorators.d.ts +0 -22
  407. package/lib/core/utils/HttpResponse/decorators.js +0 -84
  408. package/lib/core/utils/HttpResponse/decorators.js.map +0 -1
  409. package/lib/core/utils/HttpResponse/decorators.mjs +0 -54
  410. package/lib/core/utils/HttpResponse/decorators.mjs.map +0 -1
  411. package/lib/core/utils/cookieStore.d.mts +0 -13
  412. package/lib/core/utils/cookieStore.d.ts +0 -13
  413. package/lib/core/utils/cookieStore.js +0 -90
  414. package/lib/core/utils/cookieStore.js.map +0 -1
  415. package/lib/core/utils/cookieStore.mjs +0 -74
  416. package/lib/core/utils/cookieStore.mjs.map +0 -1
  417. package/lib/core/utils/executeHandlers.d.mts +0 -6
  418. package/lib/core/utils/executeHandlers.d.ts +0 -6
  419. package/lib/core/utils/executeHandlers.js +0 -51
  420. package/lib/core/utils/executeHandlers.js.map +0 -1
  421. package/lib/core/utils/executeHandlers.mjs +0 -31
  422. package/lib/core/utils/executeHandlers.mjs.map +0 -1
  423. package/lib/core/utils/handleRequest.d.mts +0 -30
  424. package/lib/core/utils/handleRequest.d.ts +0 -30
  425. package/lib/core/utils/handleRequest.js +0 -76
  426. package/lib/core/utils/handleRequest.js.map +0 -1
  427. package/lib/core/utils/handleRequest.mjs +0 -58
  428. package/lib/core/utils/handleRequest.mjs.map +0 -1
  429. package/lib/core/utils/internal/Disposable.d.mts +0 -7
  430. package/lib/core/utils/internal/Disposable.d.ts +0 -7
  431. package/lib/core/utils/internal/Disposable.js +0 -51
  432. package/lib/core/utils/internal/Disposable.js.map +0 -1
  433. package/lib/core/utils/internal/Disposable.mjs +0 -31
  434. package/lib/core/utils/internal/Disposable.mjs.map +0 -1
  435. package/lib/core/utils/internal/attachSiblingHandlers.d.mts +0 -15
  436. package/lib/core/utils/internal/attachSiblingHandlers.d.ts +0 -15
  437. package/lib/core/utils/internal/attachSiblingHandlers.js +0 -44
  438. package/lib/core/utils/internal/attachSiblingHandlers.js.map +0 -1
  439. package/lib/core/utils/internal/attachSiblingHandlers.mjs +0 -24
  440. package/lib/core/utils/internal/attachSiblingHandlers.mjs.map +0 -1
  441. package/lib/core/utils/internal/checkGlobals.d.mts +0 -3
  442. package/lib/core/utils/internal/checkGlobals.d.ts +0 -3
  443. package/lib/core/utils/internal/checkGlobals.js +0 -34
  444. package/lib/core/utils/internal/checkGlobals.js.map +0 -1
  445. package/lib/core/utils/internal/checkGlobals.mjs +0 -14
  446. package/lib/core/utils/internal/checkGlobals.mjs.map +0 -1
  447. package/lib/core/utils/internal/devUtils.d.mts +0 -28
  448. package/lib/core/utils/internal/devUtils.d.ts +0 -28
  449. package/lib/core/utils/internal/devUtils.js +0 -48
  450. package/lib/core/utils/internal/devUtils.js.map +0 -1
  451. package/lib/core/utils/internal/devUtils.mjs +0 -28
  452. package/lib/core/utils/internal/devUtils.mjs.map +0 -1
  453. package/lib/core/utils/internal/getCallFrame.d.mts +0 -6
  454. package/lib/core/utils/internal/getCallFrame.d.ts +0 -6
  455. package/lib/core/utils/internal/getCallFrame.js +0 -41
  456. package/lib/core/utils/internal/getCallFrame.js.map +0 -1
  457. package/lib/core/utils/internal/getCallFrame.mjs +0 -21
  458. package/lib/core/utils/internal/getCallFrame.mjs.map +0 -1
  459. package/lib/core/utils/internal/hasRefCounted.d.mts +0 -3
  460. package/lib/core/utils/internal/hasRefCounted.d.ts +0 -3
  461. package/lib/core/utils/internal/hasRefCounted.js +0 -34
  462. package/lib/core/utils/internal/hasRefCounted.js.map +0 -1
  463. package/lib/core/utils/internal/hasRefCounted.mjs +0 -14
  464. package/lib/core/utils/internal/hasRefCounted.mjs.map +0 -1
  465. package/lib/core/utils/internal/isHandlerKind.d.mts +0 -19
  466. package/lib/core/utils/internal/isHandlerKind.d.ts +0 -19
  467. package/lib/core/utils/internal/isHandlerKind.js +0 -30
  468. package/lib/core/utils/internal/isHandlerKind.js.map +0 -1
  469. package/lib/core/utils/internal/isHandlerKind.mjs +0 -10
  470. package/lib/core/utils/internal/isHandlerKind.mjs.map +0 -1
  471. package/lib/core/utils/internal/isIterable.d.mts +0 -20
  472. package/lib/core/utils/internal/isIterable.d.ts +0 -20
  473. package/lib/core/utils/internal/isIterable.js +0 -30
  474. package/lib/core/utils/internal/isIterable.js.map +0 -1
  475. package/lib/core/utils/internal/isIterable.mjs +0 -10
  476. package/lib/core/utils/internal/isIterable.mjs.map +0 -1
  477. package/lib/core/utils/internal/isObject.d.mts +0 -6
  478. package/lib/core/utils/internal/isObject.d.ts +0 -6
  479. package/lib/core/utils/internal/isObject.js +0 -27
  480. package/lib/core/utils/internal/isObject.js.map +0 -1
  481. package/lib/core/utils/internal/isObject.mjs +0 -7
  482. package/lib/core/utils/internal/isObject.mjs.map +0 -1
  483. package/lib/core/utils/internal/isStringEqual.d.mts +0 -6
  484. package/lib/core/utils/internal/isStringEqual.d.ts +0 -6
  485. package/lib/core/utils/internal/isStringEqual.js +0 -27
  486. package/lib/core/utils/internal/isStringEqual.js.map +0 -1
  487. package/lib/core/utils/internal/isStringEqual.mjs +0 -7
  488. package/lib/core/utils/internal/isStringEqual.mjs.map +0 -1
  489. package/lib/core/utils/internal/jsonParse.d.mts +0 -7
  490. package/lib/core/utils/internal/jsonParse.d.ts +0 -7
  491. package/lib/core/utils/internal/jsonParse.js +0 -31
  492. package/lib/core/utils/internal/jsonParse.js.map +0 -1
  493. package/lib/core/utils/internal/jsonParse.mjs +0 -11
  494. package/lib/core/utils/internal/jsonParse.mjs.map +0 -1
  495. package/lib/core/utils/internal/mergeRight.d.mts +0 -7
  496. package/lib/core/utils/internal/mergeRight.d.ts +0 -7
  497. package/lib/core/utils/internal/mergeRight.js +0 -43
  498. package/lib/core/utils/internal/mergeRight.js.map +0 -1
  499. package/lib/core/utils/internal/mergeRight.mjs +0 -23
  500. package/lib/core/utils/internal/mergeRight.mjs.map +0 -1
  501. package/lib/core/utils/internal/observe-response-body-stream.d.mts +0 -18
  502. package/lib/core/utils/internal/observe-response-body-stream.d.ts +0 -18
  503. package/lib/core/utils/internal/observe-response-body-stream.js +0 -64
  504. package/lib/core/utils/internal/observe-response-body-stream.js.map +0 -1
  505. package/lib/core/utils/internal/observe-response-body-stream.mjs +0 -44
  506. package/lib/core/utils/internal/observe-response-body-stream.mjs.map +0 -1
  507. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +0 -6
  508. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +0 -6
  509. package/lib/core/utils/internal/parseGraphQLRequest.js +0 -146
  510. package/lib/core/utils/internal/parseGraphQLRequest.js.map +0 -1
  511. package/lib/core/utils/internal/parseGraphQLRequest.mjs +0 -129
  512. package/lib/core/utils/internal/parseGraphQLRequest.mjs.map +0 -1
  513. package/lib/core/utils/internal/parseMultipartData.d.mts +0 -14
  514. package/lib/core/utils/internal/parseMultipartData.d.ts +0 -14
  515. package/lib/core/utils/internal/parseMultipartData.js +0 -84
  516. package/lib/core/utils/internal/parseMultipartData.js.map +0 -1
  517. package/lib/core/utils/internal/parseMultipartData.mjs +0 -64
  518. package/lib/core/utils/internal/parseMultipartData.mjs.map +0 -1
  519. package/lib/core/utils/internal/pipeEvents.d.mts +0 -8
  520. package/lib/core/utils/internal/pipeEvents.d.ts +0 -8
  521. package/lib/core/utils/internal/pipeEvents.js +0 -37
  522. package/lib/core/utils/internal/pipeEvents.js.map +0 -1
  523. package/lib/core/utils/internal/pipeEvents.mjs +0 -17
  524. package/lib/core/utils/internal/pipeEvents.mjs.map +0 -1
  525. package/lib/core/utils/internal/toReadonlyArray.d.mts +0 -6
  526. package/lib/core/utils/internal/toReadonlyArray.d.ts +0 -6
  527. package/lib/core/utils/internal/toReadonlyArray.js +0 -29
  528. package/lib/core/utils/internal/toReadonlyArray.js.map +0 -1
  529. package/lib/core/utils/internal/toReadonlyArray.mjs +0 -9
  530. package/lib/core/utils/internal/toReadonlyArray.mjs.map +0 -1
  531. package/lib/core/utils/internal/tryCatch.d.mts +0 -3
  532. package/lib/core/utils/internal/tryCatch.d.ts +0 -3
  533. package/lib/core/utils/internal/tryCatch.js +0 -32
  534. package/lib/core/utils/internal/tryCatch.js.map +0 -1
  535. package/lib/core/utils/internal/tryCatch.mjs +0 -12
  536. package/lib/core/utils/internal/tryCatch.mjs.map +0 -1
  537. package/lib/core/utils/logging/getStatusCodeColor.d.mts +0 -11
  538. package/lib/core/utils/logging/getStatusCodeColor.d.ts +0 -11
  539. package/lib/core/utils/logging/getStatusCodeColor.js +0 -40
  540. package/lib/core/utils/logging/getStatusCodeColor.js.map +0 -1
  541. package/lib/core/utils/logging/getStatusCodeColor.mjs +0 -20
  542. package/lib/core/utils/logging/getStatusCodeColor.mjs.map +0 -1
  543. package/lib/core/utils/logging/getTimestamp.d.mts +0 -9
  544. package/lib/core/utils/logging/getTimestamp.d.ts +0 -9
  545. package/lib/core/utils/logging/getTimestamp.js +0 -32
  546. package/lib/core/utils/logging/getTimestamp.js.map +0 -1
  547. package/lib/core/utils/logging/getTimestamp.mjs +0 -12
  548. package/lib/core/utils/logging/getTimestamp.mjs.map +0 -1
  549. package/lib/core/utils/logging/serializeRequest.d.mts +0 -12
  550. package/lib/core/utils/logging/serializeRequest.d.ts +0 -12
  551. package/lib/core/utils/logging/serializeRequest.js +0 -34
  552. package/lib/core/utils/logging/serializeRequest.js.map +0 -1
  553. package/lib/core/utils/logging/serializeRequest.mjs +0 -14
  554. package/lib/core/utils/logging/serializeRequest.mjs.map +0 -1
  555. package/lib/core/utils/logging/serializeResponse.d.mts +0 -9
  556. package/lib/core/utils/logging/serializeResponse.d.ts +0 -9
  557. package/lib/core/utils/logging/serializeResponse.js +0 -48
  558. package/lib/core/utils/logging/serializeResponse.js.map +0 -1
  559. package/lib/core/utils/logging/serializeResponse.mjs +0 -18
  560. package/lib/core/utils/logging/serializeResponse.mjs.map +0 -1
  561. package/lib/core/utils/matching/matchRequestUrl.d.mts +0 -20
  562. package/lib/core/utils/matching/matchRequestUrl.d.ts +0 -20
  563. package/lib/core/utils/matching/matchRequestUrl.js +0 -55
  564. package/lib/core/utils/matching/matchRequestUrl.js.map +0 -1
  565. package/lib/core/utils/matching/matchRequestUrl.mjs +0 -35
  566. package/lib/core/utils/matching/matchRequestUrl.mjs.map +0 -1
  567. package/lib/core/utils/matching/normalizePath.d.mts +0 -13
  568. package/lib/core/utils/matching/normalizePath.d.ts +0 -13
  569. package/lib/core/utils/matching/normalizePath.js +0 -33
  570. package/lib/core/utils/matching/normalizePath.js.map +0 -1
  571. package/lib/core/utils/matching/normalizePath.mjs +0 -13
  572. package/lib/core/utils/matching/normalizePath.mjs.map +0 -1
  573. package/lib/core/utils/request/getAllAcceptedMimeTypes.d.mts +0 -14
  574. package/lib/core/utils/request/getAllAcceptedMimeTypes.d.ts +0 -14
  575. package/lib/core/utils/request/getAllAcceptedMimeTypes.js +0 -61
  576. package/lib/core/utils/request/getAllAcceptedMimeTypes.js.map +0 -1
  577. package/lib/core/utils/request/getAllAcceptedMimeTypes.mjs +0 -41
  578. package/lib/core/utils/request/getAllAcceptedMimeTypes.mjs.map +0 -1
  579. package/lib/core/utils/request/getRequestCookies.d.mts +0 -3
  580. package/lib/core/utils/request/getRequestCookies.d.ts +0 -3
  581. package/lib/core/utils/request/getRequestCookies.js +0 -79
  582. package/lib/core/utils/request/getRequestCookies.js.map +0 -1
  583. package/lib/core/utils/request/getRequestCookies.mjs +0 -62
  584. package/lib/core/utils/request/getRequestCookies.mjs.map +0 -1
  585. package/lib/core/utils/request/onUnhandledRequest.d.mts +0 -9
  586. package/lib/core/utils/request/onUnhandledRequest.d.ts +0 -9
  587. package/lib/core/utils/request/onUnhandledRequest.js +0 -76
  588. package/lib/core/utils/request/onUnhandledRequest.js.map +0 -1
  589. package/lib/core/utils/request/onUnhandledRequest.mjs +0 -56
  590. package/lib/core/utils/request/onUnhandledRequest.mjs.map +0 -1
  591. package/lib/core/utils/request/storeResponseCookies.d.mts +0 -3
  592. package/lib/core/utils/request/storeResponseCookies.d.ts +0 -3
  593. package/lib/core/utils/request/storeResponseCookies.js +0 -32
  594. package/lib/core/utils/request/storeResponseCookies.js.map +0 -1
  595. package/lib/core/utils/request/storeResponseCookies.mjs +0 -12
  596. package/lib/core/utils/request/storeResponseCookies.mjs.map +0 -1
  597. package/lib/core/utils/request/toPublicUrl.d.mts +0 -7
  598. package/lib/core/utils/request/toPublicUrl.d.ts +0 -7
  599. package/lib/core/utils/request/toPublicUrl.js +0 -31
  600. package/lib/core/utils/request/toPublicUrl.js.map +0 -1
  601. package/lib/core/utils/request/toPublicUrl.mjs +0 -11
  602. package/lib/core/utils/request/toPublicUrl.mjs.map +0 -1
  603. package/lib/core/utils/toResponseInit.d.mts +0 -3
  604. package/lib/core/utils/toResponseInit.d.ts +0 -3
  605. package/lib/core/utils/toResponseInit.js +0 -31
  606. package/lib/core/utils/toResponseInit.js.map +0 -1
  607. package/lib/core/utils/toResponseInit.mjs +0 -11
  608. package/lib/core/utils/toResponseInit.mjs.map +0 -1
  609. package/lib/core/utils/url/cleanUrl.d.mts +0 -7
  610. package/lib/core/utils/url/cleanUrl.d.ts +0 -7
  611. package/lib/core/utils/url/cleanUrl.js +0 -31
  612. package/lib/core/utils/url/cleanUrl.js.map +0 -1
  613. package/lib/core/utils/url/cleanUrl.mjs +0 -11
  614. package/lib/core/utils/url/cleanUrl.mjs.map +0 -1
  615. package/lib/core/utils/url/getAbsoluteUrl.d.mts +0 -6
  616. package/lib/core/utils/url/getAbsoluteUrl.d.ts +0 -6
  617. package/lib/core/utils/url/getAbsoluteUrl.js +0 -38
  618. package/lib/core/utils/url/getAbsoluteUrl.js.map +0 -1
  619. package/lib/core/utils/url/getAbsoluteUrl.mjs +0 -18
  620. package/lib/core/utils/url/getAbsoluteUrl.mjs.map +0 -1
  621. package/lib/core/utils/url/isAbsoluteUrl.d.mts +0 -6
  622. package/lib/core/utils/url/isAbsoluteUrl.d.ts +0 -6
  623. package/lib/core/utils/url/isAbsoluteUrl.js +0 -27
  624. package/lib/core/utils/url/isAbsoluteUrl.js.map +0 -1
  625. package/lib/core/utils/url/isAbsoluteUrl.mjs +0 -7
  626. package/lib/core/utils/url/isAbsoluteUrl.mjs.map +0 -1
  627. package/lib/core/ws/WebSocketClientManager.d.mts +0 -65
  628. package/lib/core/ws/WebSocketClientManager.d.ts +0 -65
  629. package/lib/core/ws/WebSocketClientManager.js +0 -163
  630. package/lib/core/ws/WebSocketClientManager.js.map +0 -1
  631. package/lib/core/ws/WebSocketClientManager.mjs +0 -143
  632. package/lib/core/ws/WebSocketClientManager.mjs.map +0 -1
  633. package/lib/core/ws/WebSocketClientStore.d.mts +0 -13
  634. package/lib/core/ws/WebSocketClientStore.d.ts +0 -13
  635. package/lib/core/ws/WebSocketClientStore.js +0 -26
  636. package/lib/core/ws/WebSocketClientStore.js.map +0 -1
  637. package/lib/core/ws/WebSocketClientStore.mjs +0 -6
  638. package/lib/core/ws/WebSocketClientStore.mjs.map +0 -1
  639. package/lib/core/ws/WebSocketIndexedDBClientStore.d.mts +0 -14
  640. package/lib/core/ws/WebSocketIndexedDBClientStore.d.ts +0 -14
  641. package/lib/core/ws/WebSocketIndexedDBClientStore.js +0 -131
  642. package/lib/core/ws/WebSocketIndexedDBClientStore.js.map +0 -1
  643. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs +0 -111
  644. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs.map +0 -1
  645. package/lib/core/ws/WebSocketMemoryClientStore.d.mts +0 -12
  646. package/lib/core/ws/WebSocketMemoryClientStore.d.ts +0 -12
  647. package/lib/core/ws/WebSocketMemoryClientStore.js +0 -42
  648. package/lib/core/ws/WebSocketMemoryClientStore.js.map +0 -1
  649. package/lib/core/ws/WebSocketMemoryClientStore.mjs +0 -22
  650. package/lib/core/ws/WebSocketMemoryClientStore.mjs.map +0 -1
  651. package/lib/core/ws/handleWebSocketEvent.d.mts +0 -20
  652. package/lib/core/ws/handleWebSocketEvent.d.ts +0 -20
  653. package/lib/core/ws/handleWebSocketEvent.js +0 -61
  654. package/lib/core/ws/handleWebSocketEvent.js.map +0 -1
  655. package/lib/core/ws/handleWebSocketEvent.mjs +0 -43
  656. package/lib/core/ws/handleWebSocketEvent.mjs.map +0 -1
  657. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +0 -18
  658. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +0 -18
  659. package/lib/core/ws/utils/attachWebSocketLogger.js +0 -228
  660. package/lib/core/ws/utils/attachWebSocketLogger.js.map +0 -1
  661. package/lib/core/ws/utils/attachWebSocketLogger.mjs +0 -208
  662. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +0 -1
  663. package/lib/core/ws/utils/getMessageLength.d.mts +0 -11
  664. package/lib/core/ws/utils/getMessageLength.d.ts +0 -11
  665. package/lib/core/ws/utils/getMessageLength.js +0 -34
  666. package/lib/core/ws/utils/getMessageLength.js.map +0 -1
  667. package/lib/core/ws/utils/getMessageLength.mjs +0 -14
  668. package/lib/core/ws/utils/getMessageLength.mjs.map +0 -1
  669. package/lib/core/ws/utils/getPublicData.d.mts +0 -5
  670. package/lib/core/ws/utils/getPublicData.d.ts +0 -5
  671. package/lib/core/ws/utils/getPublicData.js +0 -37
  672. package/lib/core/ws/utils/getPublicData.js.map +0 -1
  673. package/lib/core/ws/utils/getPublicData.mjs +0 -17
  674. package/lib/core/ws/utils/getPublicData.mjs.map +0 -1
  675. package/lib/core/ws/utils/truncateMessage.d.mts +0 -3
  676. package/lib/core/ws/utils/truncateMessage.d.ts +0 -3
  677. package/lib/core/ws/utils/truncateMessage.js +0 -31
  678. package/lib/core/ws/utils/truncateMessage.js.map +0 -1
  679. package/lib/core/ws/utils/truncateMessage.mjs +0 -11
  680. package/lib/core/ws/utils/truncateMessage.mjs.map +0 -1
  681. package/lib/core/ws/webSocketInterceptor.d.mts +0 -5
  682. package/lib/core/ws/webSocketInterceptor.d.ts +0 -5
  683. package/lib/core/ws/webSocketInterceptor.js +0 -26
  684. package/lib/core/ws/webSocketInterceptor.js.map +0 -1
  685. package/lib/core/ws/webSocketInterceptor.mjs +0 -6
  686. package/lib/core/ws/webSocketInterceptor.mjs.map +0 -1
  687. package/lib/core/ws.d.mts +0 -88
  688. package/lib/core/ws.d.ts +0 -88
  689. package/lib/core/ws.js +0 -94
  690. package/lib/core/ws.js.map +0 -1
  691. package/lib/core/ws.mjs +0 -80
  692. package/lib/core/ws.mjs.map +0 -1
  693. package/lib/native/index.d.mts +0 -66
  694. package/lib/native/index.d.ts +0 -66
  695. package/lib/native/index.js +0 -88
  696. package/lib/native/index.js.map +0 -1
  697. package/lib/native/index.mjs +0 -67
  698. package/lib/native/index.mjs.map +0 -1
  699. package/lib/node/index.d.mts +0 -113
  700. package/lib/node/index.mjs +0 -185
  701. package/lib/node/index.mjs.map +0 -1
  702. package/lib/shims/cookie.d.mts +0 -7
  703. package/lib/shims/cookie.d.ts +0 -7
  704. package/lib/shims/cookie.js +0 -294
  705. package/lib/shims/cookie.mjs +0 -286
  706. package/lib/shims/statuses.d.mts +0 -6
  707. package/lib/shims/statuses.d.ts +0 -6
  708. package/lib/shims/statuses.js +0 -195
  709. package/lib/shims/statuses.mjs +0 -187
  710. package/native/package.json +0 -30
  711. package/node/package.json +0 -33
  712. package/src/browser/utils/pruneGetRequestBody.test.ts +0 -51
  713. package/src/browser/utils/pruneGetRequestBody.ts +0 -21
  714. package/src/core/experimental/compat.ts +0 -50
  715. package/src/core/experimental/setup-api.ts +0 -55
  716. package/src/core/graphql.test.ts +0 -11
  717. package/src/core/graphql.ts +0 -136
  718. package/src/core/passthrough.test.ts +0 -11
  719. package/src/core/passthrough.ts +0 -25
  720. package/src/core/sharedOptions.ts +0 -71
  721. package/src/core/typeUtils.ts +0 -26
  722. package/src/core/utils/handleRequest.test.ts +0 -574
  723. package/src/core/utils/handleRequest.ts +0 -117
  724. package/src/core/utils/internal/checkGlobals.ts +0 -17
  725. package/src/core/utils/internal/isHandlerKind.test.ts +0 -62
  726. package/src/core/utils/internal/isHandlerKind.ts +0 -17
  727. package/src/core/utils/internal/isIterable.ts +0 -32
  728. package/src/core/utils/internal/mergeRight.test.ts +0 -43
  729. package/src/core/utils/internal/mergeRight.ts +0 -30
  730. package/src/core/utils/internal/pipeEvents.test.ts +0 -14
  731. package/src/core/utils/internal/pipeEvents.ts +0 -26
  732. package/src/core/utils/internal/tryCatch.test.ts +0 -29
  733. package/src/core/utils/internal/tryCatch.ts +0 -11
  734. package/src/core/utils/matching/matchRequestUrl.test.ts +0 -267
  735. package/src/core/utils/matching/matchRequestUrl.ts +0 -77
  736. package/src/core/utils/request/getRequestCookies.ts +0 -88
  737. package/src/core/utils/request/onUnhandledRequest.node.test.ts +0 -62
  738. package/src/core/utils/request/onUnhandledRequest.test.ts +0 -226
  739. package/src/core/utils/request/onUnhandledRequest.ts +0 -81
  740. package/src/core/utils/request/storeResponseCookies.ts +0 -15
  741. package/src/core/utils/url/cleanUrl.test.ts +0 -22
  742. package/src/core/utils/url/cleanUrl.ts +0 -16
  743. package/src/core/utils/url/isAbsoluteUrl.test.ts +0 -32
  744. package/src/core/ws/handleWebSocketEvent.ts +0 -68
  745. package/src/core/ws/utils/getPublicData.ts +0 -18
  746. package/src/core/ws/webSocketInterceptor.ts +0 -3
  747. package/src/native/index.ts +0 -44
  748. package/src/package.json +0 -3
  749. package/src/shims/cookie.ts +0 -7
  750. package/src/shims/statuses.ts +0 -6
  751. /package/src/browser/utils/{getAbsoluteWorkerUrl.ts → get-absolute-worker-url.ts} +0 -0
  752. /package/src/core/utils/internal/{devUtils.ts → dev-utils.ts} +0 -0
  753. /package/src/core/utils/internal/{isObject.ts → is-object.ts} +0 -0
  754. /package/src/core/utils/internal/{isStringEqual.ts → is-string-equal.ts} +0 -0
  755. /package/src/core/utils/internal/{jsonParse.ts → json-parse.ts} +0 -0
  756. /package/src/core/utils/internal/{toReadonlyArray.ts → to-readonly-array.ts} +0 -0
  757. /package/src/core/utils/logging/{getStatusCodeColor.ts → get-status-code-color.ts} +0 -0
  758. /package/src/core/utils/logging/{getTimestamp.ts → get-timestamp.ts} +0 -0
  759. /package/src/core/utils/logging/{serializeRequest.ts → serialize-request.ts} +0 -0
  760. /package/src/core/utils/request/{getAllAcceptedMimeTypes.ts → get-all-accepted-mime-types.ts} +0 -0
  761. /package/src/core/utils/request/{toPublicUrl.ts → to-public-url.ts} +0 -0
  762. /package/src/core/utils/{toResponseInit.ts → to-response-init.ts} +0 -0
  763. /package/src/core/utils/url/{isAbsoluteUrl.ts → is-absolute-url.ts} +0 -0
  764. /package/src/{core → http}/http.test.ts +0 -0
  765. /package/src/{core/ws/utils/truncateMessage.ts → ws/utils/truncate-message.ts} +0 -0
@@ -1,18 +1,18 @@
1
1
  import type {
2
2
  WebSocketData,
3
- WebSocketClientConnectionProtocol,
3
+ WebSocketClientHandle,
4
4
  WebSocketClientEventMap,
5
5
  } from '@mswjs/interceptors/WebSocket'
6
- import type { WebSocketClientStore } from './WebSocketClientStore'
7
- import { WebSocketMemoryClientStore } from './WebSocketMemoryClientStore'
8
- import { WebSocketIndexedDBClientStore } from './WebSocketIndexedDBClientStore'
6
+ import type { WebSocketClientStore } from './websocket-client-store'
7
+ import { WebSocketMemoryClientStore } from './websocket-memory-client-store'
8
+ import { WebSocketIndexedDBClientStore } from './websocket-indexeddb-client-store'
9
9
 
10
- export type WebSocketBroadcastChannelMessage =
10
+ export type WebSocketBroadcastChannelMessage<Message = WebSocketData> =
11
11
  | {
12
12
  type: 'extraneous:send'
13
13
  payload: {
14
14
  clientId: string
15
- data: WebSocketData
15
+ data: Message
16
16
  }
17
17
  }
18
18
  | {
@@ -28,10 +28,10 @@ export type WebSocketBroadcastChannelMessage =
28
28
  * A manager responsible for accumulating WebSocket client
29
29
  * connections across different browser runtimes.
30
30
  */
31
- export class WebSocketClientManager {
31
+ export class WebSocketClientManager<Message = WebSocketData> {
32
32
  private store: WebSocketClientStore
33
- private runtimeClients: Map<string, WebSocketClientConnectionProtocol>
34
- private allClients: Set<WebSocketClientConnectionProtocol>
33
+ private runtimeClients: Map<string, WebSocketClientHandle<Message>>
34
+ private allClients: Set<WebSocketClientHandle<Message>>
35
35
 
36
36
  constructor(private channel: BroadcastChannel) {
37
37
  // Store the clients in the IndexedDB in the browser,
@@ -74,7 +74,7 @@ export class WebSocketClientManager {
74
74
  return runtimeClient
75
75
  }
76
76
 
77
- return new WebSocketRemoteClientConnection(
77
+ return new WebSocketRemoteClientConnection<Message>(
78
78
  client.id,
79
79
  new URL(client.url),
80
80
  this.channel,
@@ -93,7 +93,7 @@ export class WebSocketClientManager {
93
93
  /**
94
94
  * All active WebSocket client connections.
95
95
  */
96
- get clients(): Set<WebSocketClientConnectionProtocol> {
96
+ get clients(): Set<WebSocketClientHandle<Message>> {
97
97
  return this.allClients
98
98
  }
99
99
 
@@ -105,9 +105,7 @@ export class WebSocketClientManager {
105
105
  this.channel.postMessage({ type: 'db:update' })
106
106
  }
107
107
 
108
- private async addClient(
109
- client: WebSocketClientConnectionProtocol,
110
- ): Promise<void> {
108
+ private async addClient(client: WebSocketClientHandle): Promise<void> {
111
109
  await this.store.add(client)
112
110
  // Sync the in-memory clients in this runtime with the
113
111
  // updated database. This pulls in all the stored clients.
@@ -121,9 +119,7 @@ export class WebSocketClientManager {
121
119
  * connection object because `addConnection()` is called only
122
120
  * for the opened connections in the same runtime.
123
121
  */
124
- public async addConnection(
125
- client: WebSocketClientConnectionProtocol,
126
- ): Promise<void> {
122
+ public async addConnection(client: WebSocketClientHandle): Promise<void> {
127
123
  // Store this client in the map of clients created in this runtime.
128
124
  // This way, the manager can distinguish between this runtime clients
129
125
  // and extraneous runtime clients when synchronizing clients storage.
@@ -136,7 +132,7 @@ export class WebSocketClientManager {
136
132
  // that attempt to control this runtime (via a remote connection wrapper).
137
133
  // E.g. another runtime calling `client.send()` for the client in this runtime.
138
134
  const handleExtraneousMessage = (
139
- message: MessageEvent<WebSocketBroadcastChannelMessage>,
135
+ message: MessageEvent<WebSocketBroadcastChannelMessage<Message>>,
140
136
  ) => {
141
137
  const { type, payload } = message.data
142
138
 
@@ -183,23 +179,23 @@ export class WebSocketClientManager {
183
179
  * on the given `BroadcastChannel` to communicate instructions
184
180
  * with the client connections from other runtimes.
185
181
  */
186
- export class WebSocketRemoteClientConnection
187
- implements WebSocketClientConnectionProtocol
188
- {
182
+ class WebSocketRemoteClientConnection<
183
+ Message = WebSocketData,
184
+ > implements WebSocketClientHandle<Message> {
189
185
  constructor(
190
186
  public readonly id: string,
191
187
  public readonly url: URL,
192
188
  private channel: BroadcastChannel,
193
189
  ) {}
194
190
 
195
- send(data: WebSocketData): void {
191
+ send(data: Message): void {
196
192
  this.channel.postMessage({
197
193
  type: 'extraneous:send',
198
194
  payload: {
199
195
  clientId: this.id,
200
196
  data,
201
197
  },
202
- } as WebSocketBroadcastChannelMessage)
198
+ } as WebSocketBroadcastChannelMessage<Message>)
203
199
  }
204
200
 
205
201
  close(code?: number | undefined, reason?: string | undefined): void {
@@ -210,14 +206,14 @@ export class WebSocketRemoteClientConnection
210
206
  code,
211
207
  reason,
212
208
  },
213
- } as WebSocketBroadcastChannelMessage)
209
+ } as WebSocketBroadcastChannelMessage<Message>)
214
210
  }
215
211
 
216
- addEventListener<EventType extends keyof WebSocketClientEventMap>(
212
+ addEventListener<EventType extends keyof WebSocketClientEventMap<Message>>(
217
213
  _type: EventType,
218
214
  _listener: (
219
215
  this: WebSocket,
220
- event: WebSocketClientEventMap[EventType],
216
+ event: WebSocketClientEventMap<Message>[EventType],
221
217
  ) => void,
222
218
  _options?: AddEventListenerOptions | boolean,
223
219
  ): void {
@@ -226,11 +222,11 @@ export class WebSocketRemoteClientConnection
226
222
  )
227
223
  }
228
224
 
229
- removeEventListener<EventType extends keyof WebSocketClientEventMap>(
225
+ removeEventListener<EventType extends keyof WebSocketClientEventMap<Message>>(
230
226
  _event: EventType,
231
227
  _listener: (
232
228
  this: WebSocket,
233
- event: WebSocketClientEventMap[EventType],
229
+ event: WebSocketClientEventMap<Message>[EventType],
234
230
  ) => void,
235
231
  _options?: EventListenerOptions | boolean,
236
232
  ): void {
@@ -1,4 +1,4 @@
1
- import type { WebSocketClientConnectionProtocol } from '@mswjs/interceptors/WebSocket'
1
+ import type { WebSocketClientHandle } from '@mswjs/interceptors/WebSocket'
2
2
 
3
3
  export interface SerializedWebSocketClient {
4
4
  id: string
@@ -6,7 +6,7 @@ export interface SerializedWebSocketClient {
6
6
  }
7
7
 
8
8
  export abstract class WebSocketClientStore {
9
- public abstract add(client: WebSocketClientConnectionProtocol): Promise<void>
9
+ public abstract add(client: WebSocketClientHandle): Promise<void>
10
10
 
11
11
  public abstract getAll(): Promise<Array<SerializedWebSocketClient>>
12
12
 
@@ -1,7 +1,7 @@
1
- import { WebSocketHandler } from './WebSocketHandler'
1
+ import { WebSocketHandler } from './websocket-handler'
2
2
 
3
3
  describe('parse', () => {
4
- it('matches an exact url', () => {
4
+ test('matches an exact url', () => {
5
5
  expect(
6
6
  new WebSocketHandler('ws://localhost:3000').parse({
7
7
  url: new URL('ws://localhost:3000'),
@@ -14,7 +14,7 @@ describe('parse', () => {
14
14
  })
15
15
  })
16
16
 
17
- it('ignores trailing slash', () => {
17
+ test('ignores trailing slash', () => {
18
18
  expect(
19
19
  new WebSocketHandler('ws://localhost:3000').parse({
20
20
  url: new URL('ws://localhost:3000/'),
@@ -38,7 +38,7 @@ describe('parse', () => {
38
38
  })
39
39
  })
40
40
 
41
- it('supports path parameters', () => {
41
+ test('supports path parameters', () => {
42
42
  expect(
43
43
  new WebSocketHandler('ws://localhost:3000/:serviceName').parse({
44
44
  url: new URL('ws://localhost:3000/auth'),
@@ -53,7 +53,7 @@ describe('parse', () => {
53
53
  })
54
54
  })
55
55
 
56
- it('ignores "/socket.io/" prefix in the client url', () => {
56
+ test('ignores "/socket.io/" prefix in the client url', () => {
57
57
  expect(
58
58
  new WebSocketHandler('ws://localhost:3000').parse({
59
59
  url: new URL(
@@ -81,7 +81,7 @@ describe('parse', () => {
81
81
  })
82
82
  })
83
83
 
84
- it('preserves non-prefix "/socket.io/" path segment', () => {
84
+ test('preserves non-prefix "/socket.io/" path segment', () => {
85
85
  /**
86
86
  * @note It is highly unlikely but we still shouldn't modify the
87
87
  * WebSocket client URL if it contains a user-defined "socket.io" segment.
@@ -109,7 +109,7 @@ describe('parse', () => {
109
109
  })
110
110
  })
111
111
 
112
- it('supports a custom resolution context (base url)', () => {
112
+ test('supports a custom resolution context (base url)', () => {
113
113
  expect(
114
114
  new WebSocketHandler('/api/ws').parse({
115
115
  url: new URL('ws://localhost:3000/api/ws'),
@@ -127,19 +127,19 @@ describe('parse', () => {
127
127
  })
128
128
 
129
129
  describe('test', () => {
130
- it('returns true for a matching string', () => {
130
+ test('returns true for a matching string', () => {
131
131
  expect(
132
132
  new WebSocketHandler('ws://localhost/ws').test('ws://localhost/ws'),
133
133
  ).toBe(true)
134
134
  })
135
135
 
136
- it('returns false for a non-matching string', () => {
136
+ test('returns false for a non-matching string', () => {
137
137
  expect(
138
138
  new WebSocketHandler('ws://localhost/ws').test('ws://localhost/other'),
139
139
  ).toBe(false)
140
140
  })
141
141
 
142
- it('returns true for a relative matching string', () => {
142
+ test('returns true for a relative matching string', () => {
143
143
  expect(
144
144
  new WebSocketHandler('ws://localhost/ws').test('/ws', {
145
145
  baseUrl: 'ws://localhost',
@@ -147,7 +147,7 @@ describe('test', () => {
147
147
  ).toBe(true)
148
148
  })
149
149
 
150
- it('returns false for a relative non-matching string', () => {
150
+ test('returns false for a relative non-matching string', () => {
151
151
  expect(
152
152
  new WebSocketHandler('ws://localhost/ws').test('/other', {
153
153
  baseUrl: 'ws://localhost',
@@ -155,7 +155,7 @@ describe('test', () => {
155
155
  ).toBe(false)
156
156
  })
157
157
 
158
- it('returns true for a matching URL', () => {
158
+ test('returns true for a matching URL', () => {
159
159
  expect(
160
160
  new WebSocketHandler('ws://localhost/ws').test(
161
161
  new URL('ws://localhost/ws'),
@@ -163,7 +163,7 @@ describe('test', () => {
163
163
  ).toBe(true)
164
164
  })
165
165
 
166
- it('returns false for a non-matching URL', () => {
166
+ test('returns false for a non-matching URL', () => {
167
167
  expect(
168
168
  new WebSocketHandler('ws://localhost/ws').test(
169
169
  new URL('ws://localhost/other'),
@@ -171,13 +171,13 @@ describe('test', () => {
171
171
  ).toBe(false)
172
172
  })
173
173
 
174
- it('returns true for a matching HTTP url string', () => {
174
+ test('returns true for a matching HTTP url string', () => {
175
175
  expect(
176
176
  new WebSocketHandler('ws://localhost/ws').test('http://localhost/ws'),
177
177
  ).toBe(true)
178
178
  })
179
179
 
180
- it('returns false for a non-matching HTTP url string', () => {
180
+ test('returns false for a non-matching HTTP url string', () => {
181
181
  expect(
182
182
  new WebSocketHandler('ws://localhost/ws').test('http://localhost/other'),
183
183
  ).toBe(false)
@@ -1,56 +1,142 @@
1
- import { Emitter } from 'strict-event-emitter'
1
+ import { Emitter, TypedEvent } from 'rettime'
2
2
  import { createRequestId, resolveWebSocketUrl } from '@mswjs/interceptors'
3
3
  import type {
4
- WebSocketClientConnectionProtocol,
5
- WebSocketConnectionData,
6
- WebSocketServerConnectionProtocol,
4
+ WebSocketData,
5
+ WebSocketExtension,
6
+ WebSocketExtensionMessage,
7
+ WebSocketExtensionApi,
8
+ WebSocketConnectionInfo,
9
+ WebSocketConnectionEventData,
10
+ WebSocketClientHandle,
11
+ WebSocketServerHandle,
7
12
  } from '@mswjs/interceptors/WebSocket'
13
+ /**
14
+ * @note A type-only import to prevent a runtime module cycle
15
+ * (the frame module imports this handler at runtime).
16
+ */
17
+ import type { WebSocketNetworkFrameEventMap } from '#core/experimental/frames/websocket-frame'
8
18
  import {
9
19
  type Match,
10
20
  type Path,
11
21
  type PathParams,
12
22
  matchRequestUrl,
13
- } from '../utils/matching/matchRequestUrl'
14
- import { getCallFrame } from '../utils/internal/getCallFrame'
15
- import { attachWebSocketLogger } from '../ws/utils/attachWebSocketLogger'
23
+ } from '#core/utils/matching/match-request-url'
24
+ import { isAbsoluteUrl } from '#core/utils/url/is-absolute-url'
25
+ import { Handler } from '#core/handlers/handler'
26
+ import { getCallFrame } from '#core/utils/internal/get-call-frame'
27
+ import { attachWebSocketLogger } from './utils/attach-websocket-logger'
16
28
 
17
29
  type WebSocketHandlerParsedResult = {
18
30
  match: Match
19
31
  }
20
32
 
21
- export type WebSocketHandlerEventMap = {
22
- connection: [args: WebSocketHandlerConnection]
33
+ export interface WebSocketHandlerOptions {
34
+ /**
35
+ * WebSocket extensions applied to every connection matched by this handler,
36
+ * left to right. The last one applied encodes and decodes the traffic,
37
+ * and every one of them extends the connection event with its own API.
38
+ */
39
+ extensions?: ReadonlyArray<AnyWebSocketExtension>
23
40
  }
24
41
 
25
- export interface WebSocketHandlerConnection {
26
- client: WebSocketClientConnectionProtocol
27
- server: WebSocketServerConnectionProtocol
28
- info: WebSocketConnectionData['info']
42
+ export type AnyWebSocketExtension = WebSocketExtension<unknown, unknown>
43
+
44
+ /**
45
+ * The connection event of a handler with the given extension:
46
+ * the connection speaks the extension's messages and the event
47
+ * carries the extension's own API (e.g. rooms).
48
+ */
49
+ export type WebSocketHandlerConnectionEvent<
50
+ Extension extends AnyWebSocketExtension = WebSocketExtension,
51
+ > = WebSocketConnectionEvent<WebSocketExtensionMessage<Extension>> &
52
+ WebSocketExtensionApi<Extension>
53
+
54
+ export type WebSocketHandlerEventMap<
55
+ Extension extends AnyWebSocketExtension = WebSocketExtension,
56
+ > = {
57
+ connection: WebSocketHandlerConnectionEvent<Extension>
58
+ }
59
+
60
+ /**
61
+ * The connection matched by a handler.
62
+ *
63
+ * @note Typed against the connection handles, not the connection classes,
64
+ * so a handler accepts connections living anywhere (e.g. in another
65
+ * runtime, or a custom implementation of the handles).
66
+ */
67
+ export interface WebSocketHandlerConnection<Message = WebSocketData> {
68
+ client: WebSocketClientHandle<Message>
69
+ server: WebSocketServerHandle<Message>
70
+ info: WebSocketConnectionInfo
29
71
  params: PathParams
30
72
  }
31
73
 
74
+ export class WebSocketConnectionEvent<Message = WebSocketData>
75
+ extends TypedEvent<void, void, 'connection'>
76
+ implements WebSocketHandlerConnection<Message>
77
+ {
78
+ public readonly client: WebSocketClientHandle<Message>
79
+ public readonly server: WebSocketServerHandle<Message>
80
+ public readonly info: WebSocketConnectionInfo
81
+ public readonly params: PathParams
82
+
83
+ constructor(connection: WebSocketHandlerConnection<Message>) {
84
+ super('connection')
85
+ this.client = connection.client
86
+ this.server = connection.server
87
+ this.info = connection.info
88
+ this.params = connection.params
89
+ }
90
+ }
91
+
92
+ /**
93
+ * The connection resolved by a handler: the matched connection
94
+ * extended with the handler extension's own API.
95
+ */
96
+ export type WebSocketHandlerResolvedConnection<
97
+ Extension extends AnyWebSocketExtension = WebSocketExtension,
98
+ > = WebSocketHandlerConnection<WebSocketExtensionMessage<Extension>> &
99
+ WebSocketExtensionApi<Extension>
100
+
32
101
  export interface WebSocketResolutionContext {
33
102
  baseUrl?: string
103
+
104
+ /**
105
+ * An emit-only reference to the network frame's events.
106
+ * Allows handlers to emit additional events not covered by the frame
107
+ * into the network's life-cycle event stream (e.g. `server.events`).
108
+ */
109
+ events?: Pick<Emitter<WebSocketNetworkFrameEventMap>, 'emit'>
110
+
34
111
  [kAutoConnect]?: boolean
35
112
  }
36
113
 
37
114
  export const kEmitter = Symbol('kEmitter')
38
- export const kSender = Symbol('kSender')
39
115
  export const kConnect = Symbol('kConnect')
40
116
  export const kAutoConnect = Symbol('kAutoConnect')
41
117
 
42
118
  const kStopPropagationPatched = Symbol('kStopPropagationPatched')
43
119
  const KOnStopPropagation = Symbol('KOnStopPropagation')
44
120
 
45
- export class WebSocketHandler {
121
+ export class WebSocketHandler<
122
+ Extension extends AnyWebSocketExtension = WebSocketExtension,
123
+ > extends Handler {
46
124
  public id: string
47
125
  public callFrame?: string
48
- public kind = 'websocket' as const
49
126
 
50
- protected [kEmitter]: Emitter<WebSocketHandlerEventMap>
127
+ public readonly kind = 'websocket'
128
+
129
+ protected [kEmitter]: Emitter<WebSocketHandlerEventMap<Extension>>
130
+ protected readonly extensions: ReadonlyArray<AnyWebSocketExtension>
131
+
132
+ constructor(
133
+ protected readonly url: Path,
134
+ options?: WebSocketHandlerOptions,
135
+ ) {
136
+ super()
51
137
 
52
- constructor(protected readonly url: Path) {
53
138
  this.id = createRequestId()
139
+ this.extensions = options?.extensions ?? []
54
140
 
55
141
  this[kEmitter] = new Emitter()
56
142
  this.callFrame = getCallFrame(new Error())
@@ -63,11 +149,15 @@ export class WebSocketHandler {
63
149
  const clientUrl = new URL(args.url)
64
150
 
65
151
  // Resolve the WebSocket handler path:
66
- // - Plain string URLs resolved as per the specification (via Interceptors).
152
+ // - Relative string URLs are resolved against the base URL (via Interceptors).
153
+ // - Absolute string URLs are preserved. Parsing them as a URL would
154
+ // percent-encode wildcards in the host (e.g. "ws://*" becomes "ws://%2A").
67
155
  // - String URLs starting with a wildcard are preserved (prepending a scheme there will break them).
68
156
  // - RegExp paths are preserved.
69
157
  const resolvedHandlerUrl =
70
- this.url instanceof RegExp || this.url.startsWith('*')
158
+ this.url instanceof RegExp ||
159
+ isAbsoluteUrl(this.url) ||
160
+ this.url.startsWith('*')
71
161
  ? this.url
72
162
  : this.#resolveWebSocketUrl(this.url, args.resolutionContext?.baseUrl)
73
163
 
@@ -104,20 +194,38 @@ export class WebSocketHandler {
104
194
  }
105
195
 
106
196
  public async run(
107
- connection: WebSocketConnectionData,
197
+ connection: WebSocketConnectionEventData,
108
198
  resolutionContext?: WebSocketResolutionContext,
109
- ): Promise<WebSocketHandlerConnection | null> {
199
+ ): Promise<WebSocketHandlerResolvedConnection<Extension> | null> {
110
200
  const parsedResult = this.#match(connection.client.url, resolutionContext)
111
201
 
112
202
  if (parsedResult == null) {
113
203
  return null
114
204
  }
115
205
 
116
- const resolvedConnection: WebSocketHandlerConnection = {
117
- ...connection,
118
- params: parsedResult.match.params || {},
206
+ // Every consumer of the connection objects (listeners, `link.broadcast()`,
207
+ // the logger) speaks the extensions' message domain from here on.
208
+ for (const extension of this.extensions) {
209
+ extension.apply(connection)
119
210
  }
120
211
 
212
+ /**
213
+ * @note Expose the extensions' own APIs (e.g. rooms) on the connection
214
+ * event, merged left to right. The link infers the merged type from the
215
+ * extensions it was given; `Object.assign` with a spread of sources is
216
+ * untyped, which is what allows the merged value to take that type.
217
+ */
218
+ const resolvedConnection: WebSocketHandlerResolvedConnection<Extension> =
219
+ Object.assign(
220
+ {
221
+ client: connection.client,
222
+ server: connection.server,
223
+ info: connection.info,
224
+ params: parsedResult.match.params || {},
225
+ },
226
+ ...this.extensions.map((extension) => extension.extend?.(connection)),
227
+ )
228
+
121
229
  if (resolutionContext?.[kAutoConnect] ?? true) {
122
230
  if (this[kConnect](resolvedConnection)) {
123
231
  return resolvedConnection
@@ -154,7 +262,9 @@ export class WebSocketHandler {
154
262
  return null
155
263
  }
156
264
 
157
- protected [kConnect](connection: WebSocketHandlerConnection): boolean {
265
+ protected [kConnect](
266
+ connection: WebSocketHandlerResolvedConnection<Extension>,
267
+ ): boolean {
158
268
  // Support `event.stopPropagation()` for various client/server events.
159
269
  connection.client.addEventListener(
160
270
  'message',
@@ -183,13 +293,16 @@ export class WebSocketHandler {
183
293
  )
184
294
 
185
295
  /**
186
- * @fixme Use "rettime" and await these events to have
187
- * exceptions propagate properly.
296
+ * @fixme Await these events (e.g. via `.emitAsPromise()`) to have
297
+ * exceptions from asynchronous listeners propagate properly.
188
298
  */
189
- return this[kEmitter].emit('connection', connection)
299
+ return this[kEmitter].emit(
300
+ // Carry the extension's own API (e.g. rooms) over to the event.
301
+ Object.assign(new WebSocketConnectionEvent(connection), connection),
302
+ )
190
303
  }
191
304
 
192
- public log(connection: WebSocketConnectionData): () => void {
305
+ public log(connection: WebSocketConnectionEventData): () => void {
193
306
  return attachWebSocketLogger(connection)
194
307
  }
195
308
 
@@ -217,8 +330,7 @@ export class WebSocketHandler {
217
330
  function createStopPropagationListener(handler: WebSocketHandler) {
218
331
  return function stopPropagationListener(event: Event) {
219
332
  const propagationStoppedAt = Reflect.get(event, 'kPropagationStoppedAt') as
220
- | string
221
- | undefined
333
+ string | undefined
222
334
 
223
335
  if (propagationStoppedAt && handler.id !== propagationStoppedAt) {
224
336
  event.stopImmediatePropagation()
@@ -1,7 +1,6 @@
1
- import { DeferredPromise } from '@open-draft/deferred-promise'
2
- import type { WebSocketClientConnectionProtocol } from '@mswjs/interceptors/WebSocket'
3
- import type { WebSocketClientStore } from './WebSocketClientStore'
4
- import { type SerializedWebSocketClient } from './WebSocketClientStore'
1
+ import type { WebSocketClientHandle } from '@mswjs/interceptors/WebSocket'
2
+ import type { WebSocketClientStore } from './websocket-client-store'
3
+ import type { SerializedWebSocketClient } from './websocket-client-store'
5
4
 
6
5
  const DB_NAME = 'msw-websocket-clients'
7
6
  const DB_STORE_NAME = 'clients'
@@ -13,8 +12,8 @@ export class WebSocketIndexedDBClientStore implements WebSocketClientStore {
13
12
  this.db = this.createDatabase()
14
13
  }
15
14
 
16
- public async add(client: WebSocketClientConnectionProtocol): Promise<void> {
17
- const promise = new DeferredPromise<void>()
15
+ public async add(client: WebSocketClientHandle): Promise<void> {
16
+ const promise = Promise.withResolvers<void>()
18
17
  const store = await this.getStore()
19
18
 
20
19
  /**
@@ -40,11 +39,11 @@ export class WebSocketIndexedDBClientStore implements WebSocketClientStore {
40
39
  )
41
40
  }
42
41
 
43
- return promise
42
+ return promise.promise
44
43
  }
45
44
 
46
45
  public async getAll(): Promise<Array<SerializedWebSocketClient>> {
47
- const promise = new DeferredPromise<Array<SerializedWebSocketClient>>()
46
+ const promise = Promise.withResolvers<Array<SerializedWebSocketClient>>()
48
47
  const store = await this.getStore()
49
48
  const request = store.getAll() as IDBRequest<
50
49
  Array<SerializedWebSocketClient>
@@ -62,11 +61,11 @@ export class WebSocketIndexedDBClientStore implements WebSocketClientStore {
62
61
  )
63
62
  }
64
63
 
65
- return promise
64
+ return promise.promise
66
65
  }
67
66
 
68
67
  public async deleteMany(clientIds: Array<string>): Promise<void> {
69
- const promise = new DeferredPromise<void>()
68
+ const promise = Promise.withResolvers<void>()
70
69
  const store = await this.getStore()
71
70
 
72
71
  for (const clientId of clientIds) {
@@ -85,11 +84,11 @@ export class WebSocketIndexedDBClientStore implements WebSocketClientStore {
85
84
  )
86
85
  }
87
86
 
88
- return promise
87
+ return promise.promise
89
88
  }
90
89
 
91
90
  private async createDatabase(): Promise<IDBDatabase> {
92
- const promise = new DeferredPromise<IDBDatabase>()
91
+ const promise = Promise.withResolvers<IDBDatabase>()
93
92
  const request = indexedDB.open(DB_NAME, 1)
94
93
 
95
94
  request.onsuccess = ({ currentTarget }) => {
@@ -128,7 +127,7 @@ export class WebSocketIndexedDBClientStore implements WebSocketClientStore {
128
127
  )
129
128
  }
130
129
 
131
- return promise
130
+ return promise.promise
132
131
  }
133
132
 
134
133
  private async getStore(): Promise<IDBObjectStore> {
@@ -1,6 +1,6 @@
1
- import type { WebSocketClientConnectionProtocol } from '@mswjs/interceptors/WebSocket'
2
- import type { WebSocketClientStore } from './WebSocketClientStore'
3
- import { type SerializedWebSocketClient } from './WebSocketClientStore'
1
+ import type { WebSocketClientHandle } from '@mswjs/interceptors/WebSocket'
2
+ import type { WebSocketClientStore } from './websocket-client-store'
3
+ import type { SerializedWebSocketClient } from './websocket-client-store'
4
4
 
5
5
  export class WebSocketMemoryClientStore implements WebSocketClientStore {
6
6
  private store: Map<string, SerializedWebSocketClient>
@@ -9,7 +9,7 @@ export class WebSocketMemoryClientStore implements WebSocketClientStore {
9
9
  this.store = new Map()
10
10
  }
11
11
 
12
- public async add(client: WebSocketClientConnectionProtocol): Promise<void> {
12
+ public async add(client: WebSocketClientHandle): Promise<void> {
13
13
  this.store.set(client.id, { id: client.id, url: client.url.href })
14
14
  }
15
15