msw 2.5.2 → 2.6.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 (209) hide show
  1. package/lib/browser/index.d.mts +7 -6
  2. package/lib/browser/index.d.ts +7 -6
  3. package/lib/browser/index.js +28 -2
  4. package/lib/browser/index.js.map +1 -1
  5. package/lib/browser/index.mjs +28 -2
  6. package/lib/browser/index.mjs.map +1 -1
  7. package/lib/core/{GraphQLHandler-ClMB0BOy.d.mts → GraphQLHandler-B6uni-E_.d.mts} +1 -1
  8. package/lib/core/{GraphQLHandler-D6mLMXGZ.d.ts → GraphQLHandler-Cjm7JNGi.d.ts} +1 -1
  9. package/lib/core/{HttpResponse-vn-Pb4Bi.d.mts → HttpResponse-63H9vVoL.d.mts} +1 -0
  10. package/lib/core/{HttpResponse-DaYkf3ml.d.ts → HttpResponse-DzhqZzTK.d.ts} +1 -0
  11. package/lib/core/HttpResponse.d.mts +1 -1
  12. package/lib/core/HttpResponse.d.ts +1 -1
  13. package/lib/core/SetupApi.d.mts +15 -12
  14. package/lib/core/SetupApi.d.ts +15 -12
  15. package/lib/core/SetupApi.js +3 -1
  16. package/lib/core/SetupApi.js.map +1 -1
  17. package/lib/core/SetupApi.mjs +3 -1
  18. package/lib/core/SetupApi.mjs.map +1 -1
  19. package/lib/core/getResponse.d.mts +1 -1
  20. package/lib/core/getResponse.d.ts +1 -1
  21. package/lib/core/graphql.d.mts +2 -2
  22. package/lib/core/graphql.d.ts +2 -2
  23. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  24. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  25. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  26. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  27. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  28. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  29. package/lib/core/handlers/RequestHandler.js +2 -0
  30. package/lib/core/handlers/RequestHandler.js.map +1 -1
  31. package/lib/core/handlers/RequestHandler.mjs +2 -0
  32. package/lib/core/handlers/RequestHandler.mjs.map +1 -1
  33. package/lib/core/handlers/WebSocketHandler.d.mts +34 -0
  34. package/lib/core/handlers/WebSocketHandler.d.ts +34 -0
  35. package/lib/core/handlers/WebSocketHandler.js +122 -0
  36. package/lib/core/handlers/WebSocketHandler.js.map +1 -0
  37. package/lib/core/handlers/WebSocketHandler.mjs +104 -0
  38. package/lib/core/handlers/WebSocketHandler.mjs.map +1 -0
  39. package/lib/core/handlers/common.d.mts +3 -0
  40. package/lib/core/handlers/common.d.ts +3 -0
  41. package/lib/core/handlers/common.js +17 -0
  42. package/lib/core/handlers/common.js.map +1 -0
  43. package/lib/core/handlers/common.mjs +1 -0
  44. package/lib/core/handlers/common.mjs.map +1 -0
  45. package/lib/core/http.d.mts +1 -1
  46. package/lib/core/http.d.ts +1 -1
  47. package/lib/core/index.d.mts +5 -2
  48. package/lib/core/index.d.ts +5 -2
  49. package/lib/core/index.js +5 -1
  50. package/lib/core/index.js.map +1 -1
  51. package/lib/core/index.mjs +7 -1
  52. package/lib/core/index.mjs.map +1 -1
  53. package/lib/core/passthrough.d.mts +1 -1
  54. package/lib/core/passthrough.d.ts +1 -1
  55. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  56. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  57. package/lib/core/utils/executeHandlers.d.mts +1 -1
  58. package/lib/core/utils/executeHandlers.d.ts +1 -1
  59. package/lib/core/utils/executeHandlers.js.map +1 -1
  60. package/lib/core/utils/executeHandlers.mjs.map +1 -1
  61. package/lib/core/utils/handleRequest.d.mts +2 -2
  62. package/lib/core/utils/handleRequest.d.ts +2 -2
  63. package/lib/core/utils/handleRequest.js.map +1 -1
  64. package/lib/core/utils/handleRequest.mjs.map +1 -1
  65. package/lib/core/utils/internal/isHandlerKind.d.mts +17 -0
  66. package/lib/core/utils/internal/isHandlerKind.d.ts +17 -0
  67. package/lib/core/utils/internal/isHandlerKind.js +29 -0
  68. package/lib/core/utils/internal/isHandlerKind.js.map +1 -0
  69. package/lib/core/utils/internal/isHandlerKind.mjs +9 -0
  70. package/lib/core/utils/internal/isHandlerKind.mjs.map +1 -0
  71. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  72. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  73. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  74. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  75. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  76. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  77. package/lib/core/utils/logging/getTimestamp.d.mts +4 -1
  78. package/lib/core/utils/logging/getTimestamp.d.ts +4 -1
  79. package/lib/core/utils/logging/getTimestamp.js +6 -2
  80. package/lib/core/utils/logging/getTimestamp.js.map +1 -1
  81. package/lib/core/utils/logging/getTimestamp.mjs +6 -2
  82. package/lib/core/utils/logging/getTimestamp.mjs.map +1 -1
  83. package/lib/core/utils/matching/matchRequestUrl.d.mts +2 -1
  84. package/lib/core/utils/matching/matchRequestUrl.d.ts +2 -1
  85. package/lib/core/utils/matching/matchRequestUrl.js +4 -0
  86. package/lib/core/utils/matching/matchRequestUrl.js.map +1 -1
  87. package/lib/core/utils/matching/matchRequestUrl.mjs +4 -0
  88. package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -1
  89. package/lib/core/ws/WebSocketClientManager.d.mts +63 -0
  90. package/lib/core/ws/WebSocketClientManager.d.ts +63 -0
  91. package/lib/core/ws/WebSocketClientManager.js +149 -0
  92. package/lib/core/ws/WebSocketClientManager.js.map +1 -0
  93. package/lib/core/ws/WebSocketClientManager.mjs +129 -0
  94. package/lib/core/ws/WebSocketClientManager.mjs.map +1 -0
  95. package/lib/core/ws/WebSocketClientStore.d.mts +13 -0
  96. package/lib/core/ws/WebSocketClientStore.d.ts +13 -0
  97. package/lib/core/ws/WebSocketClientStore.js +26 -0
  98. package/lib/core/ws/WebSocketClientStore.js.map +1 -0
  99. package/lib/core/ws/WebSocketClientStore.mjs +6 -0
  100. package/lib/core/ws/WebSocketClientStore.mjs.map +1 -0
  101. package/lib/core/ws/WebSocketIndexedDBClientStore.d.mts +15 -0
  102. package/lib/core/ws/WebSocketIndexedDBClientStore.d.ts +15 -0
  103. package/lib/core/ws/WebSocketIndexedDBClientStore.js +130 -0
  104. package/lib/core/ws/WebSocketIndexedDBClientStore.js.map +1 -0
  105. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs +110 -0
  106. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs.map +1 -0
  107. package/lib/core/ws/WebSocketMemoryClientStore.d.mts +13 -0
  108. package/lib/core/ws/WebSocketMemoryClientStore.d.ts +13 -0
  109. package/lib/core/ws/WebSocketMemoryClientStore.js +41 -0
  110. package/lib/core/ws/WebSocketMemoryClientStore.js.map +1 -0
  111. package/lib/core/ws/WebSocketMemoryClientStore.mjs +21 -0
  112. package/lib/core/ws/WebSocketMemoryClientStore.mjs.map +1 -0
  113. package/lib/core/ws/handleWebSocketEvent.d.mts +19 -0
  114. package/lib/core/ws/handleWebSocketEvent.d.ts +19 -0
  115. package/lib/core/ws/handleWebSocketEvent.js +74 -0
  116. package/lib/core/ws/handleWebSocketEvent.js.map +1 -0
  117. package/lib/core/ws/handleWebSocketEvent.mjs +56 -0
  118. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -0
  119. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +12 -0
  120. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +12 -0
  121. package/lib/core/ws/utils/attachWebSocketLogger.js +198 -0
  122. package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -0
  123. package/lib/core/ws/utils/attachWebSocketLogger.mjs +178 -0
  124. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -0
  125. package/lib/core/ws/utils/getMessageLength.d.mts +11 -0
  126. package/lib/core/ws/utils/getMessageLength.d.ts +11 -0
  127. package/lib/core/ws/utils/getMessageLength.js +33 -0
  128. package/lib/core/ws/utils/getMessageLength.js.map +1 -0
  129. package/lib/core/ws/utils/getMessageLength.mjs +13 -0
  130. package/lib/core/ws/utils/getMessageLength.mjs.map +1 -0
  131. package/lib/core/ws/utils/getPublicData.d.mts +5 -0
  132. package/lib/core/ws/utils/getPublicData.d.ts +5 -0
  133. package/lib/core/ws/utils/getPublicData.js +36 -0
  134. package/lib/core/ws/utils/getPublicData.js.map +1 -0
  135. package/lib/core/ws/utils/getPublicData.mjs +16 -0
  136. package/lib/core/ws/utils/getPublicData.mjs.map +1 -0
  137. package/lib/core/ws/utils/truncateMessage.d.mts +3 -0
  138. package/lib/core/ws/utils/truncateMessage.d.ts +3 -0
  139. package/lib/core/ws/utils/truncateMessage.js +31 -0
  140. package/lib/core/ws/utils/truncateMessage.js.map +1 -0
  141. package/lib/core/ws/utils/truncateMessage.mjs +11 -0
  142. package/lib/core/ws/utils/truncateMessage.mjs.map +1 -0
  143. package/lib/core/ws/webSocketInterceptor.d.mts +5 -0
  144. package/lib/core/ws/webSocketInterceptor.d.ts +5 -0
  145. package/lib/core/ws/webSocketInterceptor.js +26 -0
  146. package/lib/core/ws/webSocketInterceptor.js.map +1 -0
  147. package/lib/core/ws/webSocketInterceptor.mjs +6 -0
  148. package/lib/core/ws/webSocketInterceptor.mjs.map +1 -0
  149. package/lib/core/ws.d.mts +75 -0
  150. package/lib/core/ws.d.ts +75 -0
  151. package/lib/core/ws.js +71 -0
  152. package/lib/core/ws.js.map +1 -0
  153. package/lib/core/ws.mjs +54 -0
  154. package/lib/core/ws.mjs.map +1 -0
  155. package/lib/iife/index.js +1420 -86
  156. package/lib/iife/index.js.map +1 -1
  157. package/lib/mockServiceWorker.js +1 -1
  158. package/lib/native/index.d.mts +6 -5
  159. package/lib/native/index.d.ts +6 -5
  160. package/lib/native/index.js +19 -4
  161. package/lib/native/index.js.map +1 -1
  162. package/lib/native/index.mjs +19 -4
  163. package/lib/native/index.mjs.map +1 -1
  164. package/lib/node/index.d.mts +8 -7
  165. package/lib/node/index.d.ts +8 -7
  166. package/lib/node/index.js +19 -4
  167. package/lib/node/index.js.map +1 -1
  168. package/lib/node/index.mjs +19 -4
  169. package/lib/node/index.mjs.map +1 -1
  170. package/package.json +10 -1
  171. package/src/browser/setupWorker/glossary.ts +10 -10
  172. package/src/browser/setupWorker/setupWorker.ts +32 -3
  173. package/src/browser/setupWorker/start/createFallbackRequestListener.ts +2 -1
  174. package/src/browser/setupWorker/start/createRequestListener.ts +2 -1
  175. package/src/browser/setupWorker/start/createStartHandler.ts +5 -0
  176. package/src/browser/setupWorker/stop/createStop.ts +6 -0
  177. package/src/core/SetupApi.ts +28 -20
  178. package/src/core/handlers/RequestHandler.ts +4 -0
  179. package/src/core/handlers/WebSocketHandler.ts +146 -0
  180. package/src/core/handlers/common.ts +1 -0
  181. package/src/core/index.ts +11 -1
  182. package/src/core/utils/executeHandlers.ts +1 -1
  183. package/src/core/utils/handleRequest.ts +1 -1
  184. package/src/core/utils/internal/isHandlerKind.test.ts +64 -0
  185. package/src/core/utils/internal/isHandlerKind.ts +21 -0
  186. package/src/core/utils/logging/getTimestamp.test.ts +20 -6
  187. package/src/core/utils/logging/getTimestamp.ts +11 -6
  188. package/src/core/utils/matching/matchRequestUrl.test.ts +44 -0
  189. package/src/core/utils/matching/matchRequestUrl.ts +4 -0
  190. package/src/core/ws/WebSocketClientManager.test.ts +164 -0
  191. package/src/core/ws/WebSocketClientManager.ts +211 -0
  192. package/src/core/ws/WebSocketClientStore.ts +14 -0
  193. package/src/core/ws/WebSocketIndexedDBClientStore.ts +145 -0
  194. package/src/core/ws/WebSocketMemoryClientStore.ts +27 -0
  195. package/src/core/ws/handleWebSocketEvent.ts +83 -0
  196. package/src/core/ws/utils/attachWebSocketLogger.ts +259 -0
  197. package/src/core/ws/utils/getMessageLength.test.ts +16 -0
  198. package/src/core/ws/utils/getMessageLength.ts +19 -0
  199. package/src/core/ws/utils/getPublicData.test.ts +38 -0
  200. package/src/core/ws/utils/getPublicData.ts +17 -0
  201. package/src/core/ws/utils/truncateMessage.test.ts +12 -0
  202. package/src/core/ws/utils/truncateMessage.ts +9 -0
  203. package/src/core/ws/webSocketInterceptor.ts +3 -0
  204. package/src/core/ws.test.ts +23 -0
  205. package/src/core/ws.ts +166 -0
  206. package/src/node/SetupServerApi.ts +8 -7
  207. package/src/node/SetupServerCommonApi.ts +25 -5
  208. package/src/node/glossary.ts +5 -7
  209. package/src/node/setupServer.ts +2 -1
@@ -4,14 +4,15 @@ import { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'
4
4
  import { FetchInterceptor } from '@mswjs/interceptors/fetch'
5
5
  import { HandlersController } from '~/core/SetupApi'
6
6
  import type { RequestHandler } from '~/core/handlers/RequestHandler'
7
+ import type { WebSocketHandler } from '~/core/handlers/WebSocketHandler'
7
8
  import type { SetupServer } from './glossary'
8
9
  import { SetupServerCommonApi } from './SetupServerCommonApi'
9
10
 
10
11
  const store = new AsyncLocalStorage<RequestHandlersContext>()
11
12
 
12
13
  type RequestHandlersContext = {
13
- initialHandlers: Array<RequestHandler>
14
- handlers: Array<RequestHandler>
14
+ initialHandlers: Array<RequestHandler | WebSocketHandler>
15
+ handlers: Array<RequestHandler | WebSocketHandler>
15
16
  }
16
17
 
17
18
  /**
@@ -22,7 +23,7 @@ type RequestHandlersContext = {
22
23
  class AsyncHandlersController implements HandlersController {
23
24
  private rootContext: RequestHandlersContext
24
25
 
25
- constructor(initialHandlers: Array<RequestHandler>) {
26
+ constructor(initialHandlers: Array<RequestHandler | WebSocketHandler>) {
26
27
  this.rootContext = { initialHandlers, handlers: [] }
27
28
  }
28
29
 
@@ -30,18 +31,18 @@ class AsyncHandlersController implements HandlersController {
30
31
  return store.getStore() || this.rootContext
31
32
  }
32
33
 
33
- public prepend(runtimeHandlers: Array<RequestHandler>) {
34
+ public prepend(runtimeHandlers: Array<RequestHandler | WebSocketHandler>) {
34
35
  this.context.handlers.unshift(...runtimeHandlers)
35
36
  }
36
37
 
37
- public reset(nextHandlers: Array<RequestHandler>) {
38
+ public reset(nextHandlers: Array<RequestHandler | WebSocketHandler>) {
38
39
  const context = this.context
39
40
  context.handlers = []
40
41
  context.initialHandlers =
41
42
  nextHandlers.length > 0 ? nextHandlers : context.initialHandlers
42
43
  }
43
44
 
44
- public currentHandlers(): Array<RequestHandler> {
45
+ public currentHandlers(): Array<RequestHandler | WebSocketHandler> {
45
46
  const { initialHandlers, handlers } = this.context
46
47
  return handlers.concat(initialHandlers)
47
48
  }
@@ -51,7 +52,7 @@ export class SetupServerApi
51
52
  extends SetupServerCommonApi
52
53
  implements SetupServer
53
54
  {
54
- constructor(handlers: Array<RequestHandler>) {
55
+ constructor(handlers: Array<RequestHandler | WebSocketHandler>) {
55
56
  super(
56
57
  [ClientRequestInterceptor, XMLHttpRequestInterceptor, FetchInterceptor],
57
58
  handlers,
@@ -14,9 +14,13 @@ import type { LifeCycleEventsMap, SharedOptions } from '~/core/sharedOptions'
14
14
  import { SetupApi } from '~/core/SetupApi'
15
15
  import { handleRequest } from '~/core/utils/handleRequest'
16
16
  import type { RequestHandler } from '~/core/handlers/RequestHandler'
17
+ import type { WebSocketHandler } from '~/core/handlers/WebSocketHandler'
17
18
  import { mergeRight } from '~/core/utils/internal/mergeRight'
18
19
  import { InternalError, devUtils } from '~/core/utils/internal/devUtils'
19
20
  import type { SetupServerCommon } from './glossary'
21
+ import { handleWebSocketEvent } from '~/core/ws/handleWebSocketEvent'
22
+ import { webSocketInterceptor } from '~/core/ws/webSocketInterceptor'
23
+ import { isHandlerKind } from '~/core/utils/internal/isHandlerKind'
20
24
 
21
25
  export const DEFAULT_LISTEN_OPTIONS: RequiredDeep<SharedOptions> = {
22
26
  onUnhandledRequest: 'warn',
@@ -34,7 +38,7 @@ export class SetupServerCommonApi
34
38
 
35
39
  constructor(
36
40
  interceptors: Array<{ new (): Interceptor<HttpRequestEventMap> }>,
37
- handlers: Array<RequestHandler>,
41
+ handlers: Array<RequestHandler | WebSocketHandler>,
38
42
  ) {
39
43
  super(...handlers)
40
44
 
@@ -58,7 +62,9 @@ export class SetupServerCommonApi
58
62
  const response = await handleRequest(
59
63
  request,
60
64
  requestId,
61
- this.handlersController.currentHandlers(),
65
+ this.handlersController
66
+ .currentHandlers()
67
+ .filter(isHandlerKind('RequestHandler')),
62
68
  this.resolvedOptions,
63
69
  this.emitter,
64
70
  )
@@ -90,6 +96,19 @@ export class SetupServerCommonApi
90
96
  )
91
97
  },
92
98
  )
99
+
100
+ // Preconfigure the WebSocket interception but don't enable it just yet.
101
+ // It will be enabled when the server starts.
102
+ handleWebSocketEvent({
103
+ getUnhandledRequestStrategy: () => {
104
+ return this.resolvedOptions.onUnhandledRequest
105
+ },
106
+ getHandlers: () => {
107
+ return this.handlersController.currentHandlers()
108
+ },
109
+ onMockedConnection: () => {},
110
+ onPassthroughConnection: () => {},
111
+ })
93
112
  }
94
113
 
95
114
  public listen(options: Partial<SharedOptions> = {}): void {
@@ -100,10 +119,11 @@ export class SetupServerCommonApi
100
119
 
101
120
  // Apply the interceptor when starting the server.
102
121
  this.interceptor.apply()
122
+ this.subscriptions.push(() => this.interceptor.dispose())
103
123
 
104
- this.subscriptions.push(() => {
105
- this.interceptor.dispose()
106
- })
124
+ // Apply the WebSocket interception.
125
+ webSocketInterceptor.apply()
126
+ this.subscriptions.push(() => webSocketInterceptor.dispose())
107
127
 
108
128
  // Assert that the interceptor has been applied successfully.
109
129
  // Also guards us from forgetting to call "interceptor.apply()"
@@ -1,8 +1,6 @@
1
1
  import type { PartialDeep } from 'type-fest'
2
- import type {
3
- RequestHandler,
4
- RequestHandlerDefaultInfo,
5
- } from '~/core/handlers/RequestHandler'
2
+ import type { RequestHandler } from '~/core/handlers/RequestHandler'
3
+ import type { WebSocketHandler } from '~/core/handlers/WebSocketHandler'
6
4
  import type {
7
5
  LifeCycleEventEmitter,
8
6
  LifeCycleEventsMap,
@@ -29,7 +27,7 @@ export interface SetupServerCommon {
29
27
  *
30
28
  * @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
31
29
  */
32
- use(...handlers: Array<RequestHandler>): void
30
+ use(...handlers: Array<RequestHandler | WebSocketHandler>): void
33
31
 
34
32
  /**
35
33
  * Marks all request handlers that respond using `res.once()` as unused.
@@ -43,14 +41,14 @@ export interface SetupServerCommon {
43
41
  *
44
42
  * @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
45
43
  */
46
- resetHandlers(...nextHandlers: Array<RequestHandler>): void
44
+ resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void
47
45
 
48
46
  /**
49
47
  * Returns a readonly list of currently active request handlers.
50
48
  *
51
49
  * @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
52
50
  */
53
- listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any>>
51
+ listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>
54
52
 
55
53
  /**
56
54
  * Life-cycle events.
@@ -1,4 +1,5 @@
1
1
  import type { RequestHandler } from '~/core/handlers/RequestHandler'
2
+ import type { WebSocketHandler } from '~/core/handlers/WebSocketHandler'
2
3
  import { SetupServerApi } from './SetupServerApi'
3
4
 
4
5
  /**
@@ -8,7 +9,7 @@ import { SetupServerApi } from './SetupServerApi'
8
9
  * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
9
10
  */
10
11
  export const setupServer = (
11
- ...handlers: Array<RequestHandler>
12
+ ...handlers: Array<RequestHandler | WebSocketHandler>
12
13
  ): SetupServerApi => {
13
14
  return new SetupServerApi(handlers)
14
15
  }