msw 2.5.1 → 2.6.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 (190) 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 +29 -1
  4. package/lib/browser/index.js.map +1 -1
  5. package/lib/browser/index.mjs +29 -1
  6. package/lib/browser/index.mjs.map +1 -1
  7. package/lib/core/{GraphQLHandler-ClMB0BOy.d.mts → GraphQLHandler-Doool6Q_.d.mts} +1 -1
  8. package/lib/core/{GraphQLHandler-D6mLMXGZ.d.ts → GraphQLHandler-udzgBRPf.d.ts} +1 -1
  9. package/lib/core/{HttpResponse-vn-Pb4Bi.d.mts → HttpResponse-BLGmJolh.d.mts} +1 -1
  10. package/lib/core/{HttpResponse-DaYkf3ml.d.ts → HttpResponse-Cgbkdkje.d.ts} +1 -1
  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/WebSocketHandler.d.mts +33 -0
  30. package/lib/core/handlers/WebSocketHandler.d.ts +33 -0
  31. package/lib/core/handlers/WebSocketHandler.js +120 -0
  32. package/lib/core/handlers/WebSocketHandler.js.map +1 -0
  33. package/lib/core/handlers/WebSocketHandler.mjs +102 -0
  34. package/lib/core/handlers/WebSocketHandler.mjs.map +1 -0
  35. package/lib/core/http.d.mts +1 -1
  36. package/lib/core/http.d.ts +1 -1
  37. package/lib/core/index.d.mts +5 -2
  38. package/lib/core/index.d.ts +5 -2
  39. package/lib/core/index.js +5 -1
  40. package/lib/core/index.js.map +1 -1
  41. package/lib/core/index.mjs +7 -1
  42. package/lib/core/index.mjs.map +1 -1
  43. package/lib/core/passthrough.d.mts +1 -1
  44. package/lib/core/passthrough.d.ts +1 -1
  45. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  46. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  47. package/lib/core/utils/executeHandlers.d.mts +1 -1
  48. package/lib/core/utils/executeHandlers.d.ts +1 -1
  49. package/lib/core/utils/executeHandlers.js +4 -0
  50. package/lib/core/utils/executeHandlers.js.map +1 -1
  51. package/lib/core/utils/executeHandlers.mjs +6 -0
  52. package/lib/core/utils/executeHandlers.mjs.map +1 -1
  53. package/lib/core/utils/handleRequest.d.mts +2 -2
  54. package/lib/core/utils/handleRequest.d.ts +2 -2
  55. package/lib/core/utils/handleRequest.js.map +1 -1
  56. package/lib/core/utils/handleRequest.mjs.map +1 -1
  57. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  58. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  59. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  60. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  61. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  62. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  63. package/lib/core/utils/logging/getTimestamp.d.mts +4 -1
  64. package/lib/core/utils/logging/getTimestamp.d.ts +4 -1
  65. package/lib/core/utils/logging/getTimestamp.js +6 -2
  66. package/lib/core/utils/logging/getTimestamp.js.map +1 -1
  67. package/lib/core/utils/logging/getTimestamp.mjs +6 -2
  68. package/lib/core/utils/logging/getTimestamp.mjs.map +1 -1
  69. package/lib/core/utils/matching/matchRequestUrl.d.mts +2 -1
  70. package/lib/core/utils/matching/matchRequestUrl.d.ts +2 -1
  71. package/lib/core/utils/matching/matchRequestUrl.js +4 -0
  72. package/lib/core/utils/matching/matchRequestUrl.js.map +1 -1
  73. package/lib/core/utils/matching/matchRequestUrl.mjs +4 -0
  74. package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -1
  75. package/lib/core/ws/WebSocketClientManager.d.mts +63 -0
  76. package/lib/core/ws/WebSocketClientManager.d.ts +63 -0
  77. package/lib/core/ws/WebSocketClientManager.js +149 -0
  78. package/lib/core/ws/WebSocketClientManager.js.map +1 -0
  79. package/lib/core/ws/WebSocketClientManager.mjs +129 -0
  80. package/lib/core/ws/WebSocketClientManager.mjs.map +1 -0
  81. package/lib/core/ws/WebSocketClientStore.d.mts +13 -0
  82. package/lib/core/ws/WebSocketClientStore.d.ts +13 -0
  83. package/lib/core/ws/WebSocketClientStore.js +26 -0
  84. package/lib/core/ws/WebSocketClientStore.js.map +1 -0
  85. package/lib/core/ws/WebSocketClientStore.mjs +6 -0
  86. package/lib/core/ws/WebSocketClientStore.mjs.map +1 -0
  87. package/lib/core/ws/WebSocketIndexedDBClientStore.d.mts +15 -0
  88. package/lib/core/ws/WebSocketIndexedDBClientStore.d.ts +15 -0
  89. package/lib/core/ws/WebSocketIndexedDBClientStore.js +130 -0
  90. package/lib/core/ws/WebSocketIndexedDBClientStore.js.map +1 -0
  91. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs +110 -0
  92. package/lib/core/ws/WebSocketIndexedDBClientStore.mjs.map +1 -0
  93. package/lib/core/ws/WebSocketMemoryClientStore.d.mts +13 -0
  94. package/lib/core/ws/WebSocketMemoryClientStore.d.ts +13 -0
  95. package/lib/core/ws/WebSocketMemoryClientStore.js +41 -0
  96. package/lib/core/ws/WebSocketMemoryClientStore.js.map +1 -0
  97. package/lib/core/ws/WebSocketMemoryClientStore.mjs +21 -0
  98. package/lib/core/ws/WebSocketMemoryClientStore.mjs.map +1 -0
  99. package/lib/core/ws/handleWebSocketEvent.d.mts +19 -0
  100. package/lib/core/ws/handleWebSocketEvent.d.ts +19 -0
  101. package/lib/core/ws/handleWebSocketEvent.js +73 -0
  102. package/lib/core/ws/handleWebSocketEvent.js.map +1 -0
  103. package/lib/core/ws/handleWebSocketEvent.mjs +55 -0
  104. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -0
  105. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +12 -0
  106. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +12 -0
  107. package/lib/core/ws/utils/attachWebSocketLogger.js +198 -0
  108. package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -0
  109. package/lib/core/ws/utils/attachWebSocketLogger.mjs +178 -0
  110. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -0
  111. package/lib/core/ws/utils/getMessageLength.d.mts +11 -0
  112. package/lib/core/ws/utils/getMessageLength.d.ts +11 -0
  113. package/lib/core/ws/utils/getMessageLength.js +33 -0
  114. package/lib/core/ws/utils/getMessageLength.js.map +1 -0
  115. package/lib/core/ws/utils/getMessageLength.mjs +13 -0
  116. package/lib/core/ws/utils/getMessageLength.mjs.map +1 -0
  117. package/lib/core/ws/utils/getPublicData.d.mts +5 -0
  118. package/lib/core/ws/utils/getPublicData.d.ts +5 -0
  119. package/lib/core/ws/utils/getPublicData.js +36 -0
  120. package/lib/core/ws/utils/getPublicData.js.map +1 -0
  121. package/lib/core/ws/utils/getPublicData.mjs +16 -0
  122. package/lib/core/ws/utils/getPublicData.mjs.map +1 -0
  123. package/lib/core/ws/utils/truncateMessage.d.mts +3 -0
  124. package/lib/core/ws/utils/truncateMessage.d.ts +3 -0
  125. package/lib/core/ws/utils/truncateMessage.js +31 -0
  126. package/lib/core/ws/utils/truncateMessage.js.map +1 -0
  127. package/lib/core/ws/utils/truncateMessage.mjs +11 -0
  128. package/lib/core/ws/utils/truncateMessage.mjs.map +1 -0
  129. package/lib/core/ws/webSocketInterceptor.d.mts +5 -0
  130. package/lib/core/ws/webSocketInterceptor.d.ts +5 -0
  131. package/lib/core/ws/webSocketInterceptor.js +26 -0
  132. package/lib/core/ws/webSocketInterceptor.js.map +1 -0
  133. package/lib/core/ws/webSocketInterceptor.mjs +6 -0
  134. package/lib/core/ws/webSocketInterceptor.mjs.map +1 -0
  135. package/lib/core/ws.d.mts +75 -0
  136. package/lib/core/ws.d.ts +75 -0
  137. package/lib/core/ws.js +71 -0
  138. package/lib/core/ws.js.map +1 -0
  139. package/lib/core/ws.mjs +54 -0
  140. package/lib/core/ws.mjs.map +1 -0
  141. package/lib/iife/index.js +1413 -85
  142. package/lib/iife/index.js.map +1 -1
  143. package/lib/mockServiceWorker.js +1 -1
  144. package/lib/native/index.d.mts +6 -5
  145. package/lib/native/index.d.ts +6 -5
  146. package/lib/native/index.js +22 -4
  147. package/lib/native/index.js.map +1 -1
  148. package/lib/native/index.mjs +22 -4
  149. package/lib/native/index.mjs.map +1 -1
  150. package/lib/node/index.d.mts +8 -7
  151. package/lib/node/index.d.ts +8 -7
  152. package/lib/node/index.js +22 -4
  153. package/lib/node/index.js.map +1 -1
  154. package/lib/node/index.mjs +22 -4
  155. package/lib/node/index.mjs.map +1 -1
  156. package/package.json +10 -1
  157. package/src/browser/setupWorker/glossary.ts +10 -10
  158. package/src/browser/setupWorker/setupWorker.ts +32 -3
  159. package/src/browser/setupWorker/start/createRequestListener.ts +7 -1
  160. package/src/browser/setupWorker/start/createStartHandler.ts +5 -0
  161. package/src/browser/setupWorker/stop/createStop.ts +6 -0
  162. package/src/core/SetupApi.ts +28 -20
  163. package/src/core/handlers/WebSocketHandler.ts +142 -0
  164. package/src/core/index.ts +11 -1
  165. package/src/core/utils/executeHandlers.ts +6 -2
  166. package/src/core/utils/handleRequest.ts +1 -1
  167. package/src/core/utils/logging/getTimestamp.test.ts +20 -6
  168. package/src/core/utils/logging/getTimestamp.ts +11 -6
  169. package/src/core/utils/matching/matchRequestUrl.test.ts +44 -0
  170. package/src/core/utils/matching/matchRequestUrl.ts +4 -0
  171. package/src/core/ws/WebSocketClientManager.test.ts +164 -0
  172. package/src/core/ws/WebSocketClientManager.ts +211 -0
  173. package/src/core/ws/WebSocketClientStore.ts +14 -0
  174. package/src/core/ws/WebSocketIndexedDBClientStore.ts +145 -0
  175. package/src/core/ws/WebSocketMemoryClientStore.ts +27 -0
  176. package/src/core/ws/handleWebSocketEvent.ts +82 -0
  177. package/src/core/ws/utils/attachWebSocketLogger.ts +259 -0
  178. package/src/core/ws/utils/getMessageLength.test.ts +16 -0
  179. package/src/core/ws/utils/getMessageLength.ts +19 -0
  180. package/src/core/ws/utils/getPublicData.test.ts +38 -0
  181. package/src/core/ws/utils/getPublicData.ts +17 -0
  182. package/src/core/ws/utils/truncateMessage.test.ts +12 -0
  183. package/src/core/ws/utils/truncateMessage.ts +9 -0
  184. package/src/core/ws/webSocketInterceptor.ts +3 -0
  185. package/src/core/ws.test.ts +23 -0
  186. package/src/core/ws.ts +166 -0
  187. package/src/node/SetupServerApi.ts +8 -7
  188. package/src/node/SetupServerCommonApi.ts +29 -5
  189. package/src/node/glossary.ts +5 -7
  190. package/src/node/setupServer.ts +2 -1
@@ -14,9 +14,14 @@ 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 { HttpHandler } from '~/core/handlers/HttpHandler'
18
+ import { GraphQLHandler } from '~/core/handlers/GraphQLHandler'
19
+ import type { WebSocketHandler } from '~/core/handlers/WebSocketHandler'
17
20
  import { mergeRight } from '~/core/utils/internal/mergeRight'
18
21
  import { InternalError, devUtils } from '~/core/utils/internal/devUtils'
19
22
  import type { SetupServerCommon } from './glossary'
23
+ import { handleWebSocketEvent } from '~/core/ws/handleWebSocketEvent'
24
+ import { webSocketInterceptor } from '~/core/ws/webSocketInterceptor'
20
25
 
21
26
  export const DEFAULT_LISTEN_OPTIONS: RequiredDeep<SharedOptions> = {
22
27
  onUnhandledRequest: 'warn',
@@ -34,7 +39,7 @@ export class SetupServerCommonApi
34
39
 
35
40
  constructor(
36
41
  interceptors: Array<{ new (): Interceptor<HttpRequestEventMap> }>,
37
- handlers: Array<RequestHandler>,
42
+ handlers: Array<RequestHandler | WebSocketHandler>,
38
43
  ) {
39
44
  super(...handlers)
40
45
 
@@ -58,7 +63,12 @@ export class SetupServerCommonApi
58
63
  const response = await handleRequest(
59
64
  request,
60
65
  requestId,
61
- this.handlersController.currentHandlers(),
66
+ this.handlersController.currentHandlers().filter((handler) => {
67
+ return (
68
+ handler instanceof HttpHandler ||
69
+ handler instanceof GraphQLHandler
70
+ )
71
+ }),
62
72
  this.resolvedOptions,
63
73
  this.emitter,
64
74
  )
@@ -90,6 +100,19 @@ export class SetupServerCommonApi
90
100
  )
91
101
  },
92
102
  )
103
+
104
+ // Preconfigure the WebSocket interception but don't enable it just yet.
105
+ // It will be enabled when the server starts.
106
+ handleWebSocketEvent({
107
+ getUnhandledRequestStrategy: () => {
108
+ return this.resolvedOptions.onUnhandledRequest
109
+ },
110
+ getHandlers: () => {
111
+ return this.handlersController.currentHandlers()
112
+ },
113
+ onMockedConnection: () => {},
114
+ onPassthroughConnection: () => {},
115
+ })
93
116
  }
94
117
 
95
118
  public listen(options: Partial<SharedOptions> = {}): void {
@@ -100,10 +123,11 @@ export class SetupServerCommonApi
100
123
 
101
124
  // Apply the interceptor when starting the server.
102
125
  this.interceptor.apply()
126
+ this.subscriptions.push(() => this.interceptor.dispose())
103
127
 
104
- this.subscriptions.push(() => {
105
- this.interceptor.dispose()
106
- })
128
+ // Apply the WebSocket interception.
129
+ webSocketInterceptor.apply()
130
+ this.subscriptions.push(() => webSocketInterceptor.dispose())
107
131
 
108
132
  // Assert that the interceptor has been applied successfully.
109
133
  // 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
  }