msw 2.12.13 → 2.13.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 (272) hide show
  1. package/lib/browser/index.d.mts +29 -19
  2. package/lib/browser/index.d.ts +29 -19
  3. package/lib/browser/index.js +1763 -1321
  4. package/lib/browser/index.js.map +1 -1
  5. package/lib/browser/index.mjs +1769 -1321
  6. package/lib/browser/index.mjs.map +1 -1
  7. package/lib/core/{HttpResponse-Dj6ibgFJ.d.ts → HttpResponse-CksOMVAa.d.ts} +5 -5
  8. package/lib/core/{HttpResponse-Be4eT3x6.d.mts → HttpResponse-DlRR1D-f.d.mts} +5 -5
  9. package/lib/core/HttpResponse.d.mts +1 -1
  10. package/lib/core/HttpResponse.d.ts +1 -1
  11. package/lib/core/experimental/compat.d.mts +17 -0
  12. package/lib/core/experimental/compat.d.ts +17 -0
  13. package/lib/core/experimental/compat.js +54 -0
  14. package/lib/core/experimental/compat.js.map +1 -0
  15. package/lib/core/experimental/compat.mjs +36 -0
  16. package/lib/core/experimental/compat.mjs.map +1 -0
  17. package/lib/core/experimental/define-network.d.mts +75 -0
  18. package/lib/core/experimental/define-network.d.ts +75 -0
  19. package/lib/core/experimental/define-network.js +124 -0
  20. package/lib/core/experimental/define-network.js.map +1 -0
  21. package/lib/core/experimental/define-network.mjs +107 -0
  22. package/lib/core/experimental/define-network.mjs.map +1 -0
  23. package/lib/core/experimental/frames/http-frame.d.mts +77 -0
  24. package/lib/core/experimental/frames/http-frame.d.ts +77 -0
  25. package/lib/core/experimental/frames/http-frame.js +194 -0
  26. package/lib/core/experimental/frames/http-frame.js.map +1 -0
  27. package/lib/core/experimental/frames/http-frame.mjs +176 -0
  28. package/lib/core/experimental/frames/http-frame.mjs.map +1 -0
  29. package/lib/core/experimental/frames/network-frame.d.mts +12 -0
  30. package/lib/core/experimental/frames/network-frame.d.ts +12 -0
  31. package/lib/core/{handlers/common.js → experimental/frames/network-frame.js} +19 -3
  32. package/lib/core/experimental/frames/network-frame.js.map +1 -0
  33. package/lib/core/experimental/frames/network-frame.mjs +13 -0
  34. package/lib/core/experimental/frames/network-frame.mjs.map +1 -0
  35. package/lib/core/experimental/frames/websocket-frame.d.mts +55 -0
  36. package/lib/core/experimental/frames/websocket-frame.d.ts +55 -0
  37. package/lib/core/experimental/frames/websocket-frame.js +129 -0
  38. package/lib/core/experimental/frames/websocket-frame.js.map +1 -0
  39. package/lib/core/experimental/frames/websocket-frame.mjs +116 -0
  40. package/lib/core/experimental/frames/websocket-frame.mjs.map +1 -0
  41. package/lib/core/experimental/handlers-controller.d.mts +35 -0
  42. package/lib/core/experimental/handlers-controller.d.ts +35 -0
  43. package/lib/core/experimental/handlers-controller.js +121 -0
  44. package/lib/core/experimental/handlers-controller.js.map +1 -0
  45. package/lib/core/experimental/handlers-controller.mjs +101 -0
  46. package/lib/core/experimental/handlers-controller.mjs.map +1 -0
  47. package/lib/core/experimental/index.d.mts +17 -0
  48. package/lib/core/experimental/index.d.ts +17 -0
  49. package/lib/core/experimental/index.js +36 -0
  50. package/lib/core/experimental/index.js.map +1 -0
  51. package/lib/core/experimental/index.mjs +20 -0
  52. package/lib/core/experimental/index.mjs.map +1 -0
  53. package/lib/core/experimental/on-unhandled-frame.d.mts +12 -0
  54. package/lib/core/experimental/on-unhandled-frame.d.ts +12 -0
  55. package/lib/core/experimental/on-unhandled-frame.js +90 -0
  56. package/lib/core/experimental/on-unhandled-frame.js.map +1 -0
  57. package/lib/core/experimental/on-unhandled-frame.mjs +70 -0
  58. package/lib/core/experimental/on-unhandled-frame.mjs.map +1 -0
  59. package/lib/core/experimental/request-utils.d.mts +12 -0
  60. package/lib/core/experimental/request-utils.d.ts +12 -0
  61. package/lib/core/experimental/request-utils.js +50 -0
  62. package/lib/core/experimental/request-utils.js.map +1 -0
  63. package/lib/core/experimental/request-utils.mjs +30 -0
  64. package/lib/core/experimental/request-utils.mjs.map +1 -0
  65. package/lib/core/experimental/setup-api.d.mts +33 -0
  66. package/lib/core/experimental/setup-api.d.ts +33 -0
  67. package/lib/core/experimental/setup-api.js +61 -0
  68. package/lib/core/experimental/setup-api.js.map +1 -0
  69. package/lib/core/experimental/setup-api.mjs +43 -0
  70. package/lib/core/experimental/setup-api.mjs.map +1 -0
  71. package/lib/core/experimental/sources/interceptor-source.d.mts +28 -0
  72. package/lib/core/experimental/sources/interceptor-source.d.ts +28 -0
  73. package/lib/core/experimental/sources/interceptor-source.js +142 -0
  74. package/lib/core/experimental/sources/interceptor-source.js.map +1 -0
  75. package/lib/core/experimental/sources/interceptor-source.mjs +124 -0
  76. package/lib/core/experimental/sources/interceptor-source.mjs.map +1 -0
  77. package/lib/core/experimental/sources/network-source.d.mts +31 -0
  78. package/lib/core/experimental/sources/network-source.d.ts +31 -0
  79. package/lib/core/experimental/sources/network-source.js +50 -0
  80. package/lib/core/experimental/sources/network-source.js.map +1 -0
  81. package/lib/core/experimental/sources/network-source.mjs +30 -0
  82. package/lib/core/experimental/sources/network-source.mjs.map +1 -0
  83. package/lib/core/getResponse.d.mts +1 -1
  84. package/lib/core/getResponse.d.ts +1 -1
  85. package/lib/core/graphql.d.mts +1 -1
  86. package/lib/core/graphql.d.ts +1 -1
  87. package/lib/core/handlers/GraphQLHandler.d.mts +1 -1
  88. package/lib/core/handlers/GraphQLHandler.d.ts +1 -1
  89. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  90. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  91. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  92. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  93. package/lib/core/handlers/RequestHandler.js +5 -6
  94. package/lib/core/handlers/RequestHandler.js.map +1 -1
  95. package/lib/core/handlers/RequestHandler.mjs +5 -6
  96. package/lib/core/handlers/RequestHandler.mjs.map +1 -1
  97. package/lib/core/handlers/WebSocketHandler.d.mts +8 -4
  98. package/lib/core/handlers/WebSocketHandler.d.ts +8 -4
  99. package/lib/core/handlers/WebSocketHandler.js +18 -5
  100. package/lib/core/handlers/WebSocketHandler.js.map +1 -1
  101. package/lib/core/handlers/WebSocketHandler.mjs +18 -5
  102. package/lib/core/handlers/WebSocketHandler.mjs.map +1 -1
  103. package/lib/core/http.d.mts +1 -1
  104. package/lib/core/http.d.ts +1 -1
  105. package/lib/core/index.d.mts +7 -12
  106. package/lib/core/index.d.ts +7 -12
  107. package/lib/core/index.js +2 -2
  108. package/lib/core/index.js.map +1 -1
  109. package/lib/core/index.mjs +1 -1
  110. package/lib/core/index.mjs.map +1 -1
  111. package/lib/core/network-frame-B7A0ggXE.d.mts +56 -0
  112. package/lib/core/network-frame-usYiHS0K.d.ts +56 -0
  113. package/lib/core/passthrough.d.mts +1 -1
  114. package/lib/core/passthrough.d.ts +1 -1
  115. package/lib/core/sharedOptions.d.mts +6 -2
  116. package/lib/core/sharedOptions.d.ts +6 -2
  117. package/lib/core/sharedOptions.js.map +1 -1
  118. package/lib/core/sse.d.mts +1 -1
  119. package/lib/core/sse.d.ts +1 -1
  120. package/lib/core/sse.js.map +1 -1
  121. package/lib/core/sse.mjs.map +1 -1
  122. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  123. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  124. package/lib/core/utils/cookieStore.js.map +1 -1
  125. package/lib/core/utils/cookieStore.mjs.map +1 -1
  126. package/lib/core/utils/executeHandlers.d.mts +1 -1
  127. package/lib/core/utils/executeHandlers.d.ts +1 -1
  128. package/lib/core/utils/handleRequest.d.mts +2 -1
  129. package/lib/core/utils/handleRequest.d.ts +2 -1
  130. package/lib/core/utils/internal/isHandlerKind.d.mts +3 -3
  131. package/lib/core/utils/internal/isHandlerKind.d.ts +3 -3
  132. package/lib/core/utils/internal/isHandlerKind.js +2 -1
  133. package/lib/core/utils/internal/isHandlerKind.js.map +1 -1
  134. package/lib/core/utils/internal/isHandlerKind.mjs +2 -1
  135. package/lib/core/utils/internal/isHandlerKind.mjs.map +1 -1
  136. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +1 -1
  137. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +1 -1
  138. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  139. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  140. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  141. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  142. package/lib/core/utils/matching/matchRequestUrl.js +1 -1
  143. package/lib/core/utils/matching/matchRequestUrl.js.map +1 -1
  144. package/lib/core/utils/matching/matchRequestUrl.mjs +1 -1
  145. package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -1
  146. package/lib/core/utils/request/onUnhandledRequest.d.mts +2 -2
  147. package/lib/core/utils/request/onUnhandledRequest.d.ts +2 -2
  148. package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
  149. package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
  150. package/lib/core/ws/handleWebSocketEvent.d.mts +1 -1
  151. package/lib/core/ws/handleWebSocketEvent.d.ts +1 -1
  152. package/lib/core/ws/handleWebSocketEvent.js +1 -1
  153. package/lib/core/ws/handleWebSocketEvent.js.map +1 -1
  154. package/lib/core/ws/handleWebSocketEvent.mjs +1 -1
  155. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -1
  156. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +1 -1
  157. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +1 -1
  158. package/lib/core/ws/utils/attachWebSocketLogger.js +39 -10
  159. package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -1
  160. package/lib/core/ws/utils/attachWebSocketLogger.mjs +39 -10
  161. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -1
  162. package/lib/core/ws.d.mts +3 -3
  163. package/lib/core/ws.d.ts +3 -3
  164. package/lib/core/ws.js.map +1 -1
  165. package/lib/core/ws.mjs.map +1 -1
  166. package/lib/iife/index.js +2022 -1433
  167. package/lib/iife/index.js.map +1 -1
  168. package/lib/mockServiceWorker.js +1 -1
  169. package/lib/native/index.d.mts +21 -29
  170. package/lib/native/index.d.ts +21 -29
  171. package/lib/native/index.js +48 -116
  172. package/lib/native/index.js.map +1 -1
  173. package/lib/native/index.mjs +51 -118
  174. package/lib/native/index.mjs.map +1 -1
  175. package/lib/node/index.d.mts +55 -33
  176. package/lib/node/index.d.ts +55 -33
  177. package/lib/node/index.js +152 -154
  178. package/lib/node/index.js.map +1 -1
  179. package/lib/node/index.mjs +156 -156
  180. package/lib/node/index.mjs.map +1 -1
  181. package/package.json +10 -2
  182. package/src/browser/{setupWorker/glossary.ts → glossary.ts} +16 -33
  183. package/src/browser/index.ts +2 -3
  184. package/src/browser/{setupWorker/setupWorker.node.test.ts → setup-worker.node.test.ts} +2 -4
  185. package/src/browser/setup-worker.ts +148 -0
  186. package/src/browser/sources/fallback-http-source.ts +56 -0
  187. package/src/browser/sources/service-worker-source.ts +455 -0
  188. package/src/browser/tsconfig.browser.json +7 -2
  189. package/src/browser/utils/deserializeRequest.ts +1 -1
  190. package/src/browser/{setupWorker/start/utils/getWorkerByRegistration.ts → utils/get-worker-by-registration.ts} +3 -1
  191. package/src/browser/{setupWorker/start/utils/getWorkerInstance.ts → utils/get-worker-instance.ts} +4 -4
  192. package/src/browser/utils/pruneGetRequestBody.test.ts +1 -3
  193. package/src/browser/utils/pruneGetRequestBody.ts +1 -1
  194. package/src/browser/utils/validate-worker-scope.ts +19 -0
  195. package/src/browser/utils/workerChannel.ts +2 -2
  196. package/src/core/experimental/compat.ts +50 -0
  197. package/src/core/experimental/define-network.test.ts +124 -0
  198. package/src/core/experimental/define-network.ts +215 -0
  199. package/src/core/experimental/frames/http-frame.test.ts +360 -0
  200. package/src/core/experimental/frames/http-frame.ts +271 -0
  201. package/src/core/experimental/frames/network-frame.ts +64 -0
  202. package/src/core/experimental/frames/websocket-frame.test.ts +280 -0
  203. package/src/core/experimental/frames/websocket-frame.ts +188 -0
  204. package/src/core/experimental/handlers-controller.test.ts +198 -0
  205. package/src/core/experimental/handlers-controller.ts +145 -0
  206. package/src/core/experimental/index.ts +16 -0
  207. package/src/core/experimental/on-unhandled-frame.test.ts +360 -0
  208. package/src/core/experimental/on-unhandled-frame.ts +110 -0
  209. package/src/core/experimental/request-utils.test.ts +70 -0
  210. package/src/core/experimental/request-utils.ts +39 -0
  211. package/src/core/experimental/setup-api.ts +59 -0
  212. package/src/core/experimental/sources/interceptor-source.ts +185 -0
  213. package/src/core/experimental/sources/network-source.test.ts +74 -0
  214. package/src/core/experimental/sources/network-source.ts +56 -0
  215. package/src/core/handlers/RequestHandler.ts +9 -10
  216. package/src/core/handlers/WebSocketHandler.ts +27 -11
  217. package/src/core/index.ts +3 -7
  218. package/src/core/sharedOptions.ts +9 -4
  219. package/src/core/sse.ts +1 -1
  220. package/src/core/utils/cookieStore.ts +2 -1
  221. package/src/core/utils/internal/isHandlerKind.test.ts +20 -22
  222. package/src/core/utils/internal/isHandlerKind.ts +5 -9
  223. package/src/core/utils/matching/matchRequestUrl.test.ts +87 -3
  224. package/src/core/utils/matching/matchRequestUrl.ts +2 -2
  225. package/src/core/utils/request/onUnhandledRequest.ts +2 -2
  226. package/src/core/ws/WebSocketClientManager.test.ts +2 -10
  227. package/src/core/ws/handleWebSocketEvent.ts +5 -1
  228. package/src/core/ws/utils/attachWebSocketLogger.ts +43 -11
  229. package/src/core/ws.test.ts +1 -3
  230. package/src/core/ws.ts +6 -6
  231. package/src/iife/index.ts +1 -1
  232. package/src/native/index.ts +34 -11
  233. package/src/node/async-handlers-controller.test.ts +50 -0
  234. package/src/node/async-handlers-controller.ts +69 -0
  235. package/src/node/glossary.ts +19 -18
  236. package/src/node/index.ts +6 -2
  237. package/src/node/setup-server-common.ts +100 -0
  238. package/src/node/setup-server.ts +91 -0
  239. package/src/tsconfig.core.json +8 -0
  240. package/src/tsconfig.node.json +8 -3
  241. package/src/tsconfig.src.json +0 -2
  242. package/src/tsconfig.worker.json +2 -1
  243. package/lib/core/SetupApi.d.mts +0 -44
  244. package/lib/core/SetupApi.d.ts +0 -44
  245. package/lib/core/SetupApi.js +0 -112
  246. package/lib/core/SetupApi.js.map +0 -1
  247. package/lib/core/SetupApi.mjs +0 -92
  248. package/lib/core/SetupApi.mjs.map +0 -1
  249. package/lib/core/handlers/common.d.mts +0 -3
  250. package/lib/core/handlers/common.d.ts +0 -3
  251. package/lib/core/handlers/common.js.map +0 -1
  252. package/lib/core/handlers/common.mjs +0 -1
  253. package/lib/core/handlers/common.mjs.map +0 -1
  254. package/src/browser/setupWorker/setupWorker.ts +0 -184
  255. package/src/browser/setupWorker/start/createFallbackRequestListener.ts +0 -71
  256. package/src/browser/setupWorker/start/createRequestListener.ts +0 -138
  257. package/src/browser/setupWorker/start/createResponseListener.ts +0 -57
  258. package/src/browser/setupWorker/start/createStartHandler.ts +0 -137
  259. package/src/browser/setupWorker/start/utils/enableMocking.ts +0 -30
  260. package/src/browser/setupWorker/start/utils/prepareStartHandler.test.ts +0 -59
  261. package/src/browser/setupWorker/start/utils/prepareStartHandler.ts +0 -44
  262. package/src/browser/setupWorker/start/utils/printStartMessage.test.ts +0 -84
  263. package/src/browser/setupWorker/start/utils/printStartMessage.ts +0 -51
  264. package/src/browser/setupWorker/start/utils/validateWorkerScope.ts +0 -18
  265. package/src/browser/setupWorker/stop/utils/printStopMessage.test.ts +0 -26
  266. package/src/browser/setupWorker/stop/utils/printStopMessage.ts +0 -13
  267. package/src/browser/utils/checkWorkerIntegrity.ts +0 -42
  268. package/src/core/SetupApi.ts +0 -127
  269. package/src/core/handlers/common.ts +0 -1
  270. package/src/node/SetupServerApi.ts +0 -87
  271. package/src/node/SetupServerCommonApi.ts +0 -169
  272. package/src/node/setupServer.ts +0 -15
@@ -7,7 +7,7 @@
7
7
  * - Please do NOT modify this file.
8
8
  */
9
9
 
10
- const PACKAGE_VERSION = '2.12.13'
10
+ const PACKAGE_VERSION = '2.13.0'
11
11
  const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82'
12
12
  const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
13
13
  const activeClientIds = new Set()
@@ -1,74 +1,66 @@
1
- import { RequestHandler } from "../core/handlers/RequestHandler.mjs";
2
- import { BatchInterceptor, Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
3
- import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from "../core/sharedOptions.mjs";
4
- import { SetupApi } from "../core/SetupApi.mjs";
5
- import { WebSocketHandler } from "../core/handlers/WebSocketHandler.mjs";
1
+ import { AnyHandler } from "../core/experimental/handlers-controller.mjs";
2
+ import { DefineNetworkOptions } from "../core/experimental/define-network.mjs";
3
+ import { InterceptorSource } from "../core/experimental/sources/interceptor-source.mjs";
6
4
  import { PartialDeep } from 'type-fest';
5
+ import { HttpNetworkFrameEventMap } from "../core/experimental/frames/http-frame.mjs";
6
+ import { WebSocketNetworkFrameEventMap } from "../core/experimental/frames/websocket-frame.mjs";
7
+ import { SharedOptions, LifeCycleEventEmitter } from "../core/sharedOptions.mjs";
7
8
 
9
+ interface ListenOptions extends SharedOptions {
10
+ }
8
11
  interface SetupServerCommon {
9
12
  /**
10
- * Starts requests interception based on the previously provided request handlers.
13
+ * Starts the request interception based on the previously provided request handlers.
11
14
  *
12
15
  * @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
13
16
  */
14
- listen(options?: PartialDeep<SharedOptions>): void;
17
+ listen: (options?: PartialDeep<ListenOptions>) => void;
15
18
  /**
16
- * Stops requests interception by restoring all augmented modules.
19
+ * Stops the request interception by restoring all augmented modules.
17
20
  *
18
21
  * @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
19
22
  */
20
- close(): void;
23
+ close: () => void;
21
24
  /**
22
25
  * Prepends given request handlers to the list of existing handlers.
23
26
  *
24
27
  * @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
25
28
  */
26
- use(...handlers: Array<RequestHandler | WebSocketHandler>): void;
29
+ use: (...handlers: Array<AnyHandler>) => void;
27
30
  /**
28
31
  * Marks all request handlers that respond using `res.once()` as unused.
29
32
  *
30
33
  * @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
31
34
  */
32
- restoreHandlers(): void;
35
+ restoreHandlers: () => void;
33
36
  /**
34
37
  * Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
35
38
  *
36
39
  * @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
37
40
  */
38
- resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
41
+ resetHandlers: (...nextHandlers: Array<AnyHandler>) => void;
39
42
  /**
40
43
  * Returns a readonly list of currently active request handlers.
41
44
  *
42
45
  * @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
43
46
  */
44
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
47
+ listHandlers: () => ReadonlyArray<AnyHandler>;
45
48
  /**
46
49
  * Life-cycle events.
47
50
  * Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
48
51
  *
49
52
  * @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
50
53
  */
51
- events: LifeCycleEventEmitter<LifeCycleEventsMap>;
52
- }
53
-
54
- declare class SetupServerCommonApi extends SetupApi<LifeCycleEventsMap> implements SetupServerCommon {
55
- protected readonly interceptor: BatchInterceptor<Array<Interceptor<HttpRequestEventMap>>, HttpRequestEventMap>;
56
- private resolvedOptions;
57
- constructor(interceptors: Array<Interceptor<HttpRequestEventMap>>, handlers: Array<RequestHandler | WebSocketHandler>);
58
- /**
59
- * Subscribe to all requests that are using the interceptor object
60
- */
61
- private init;
62
- listen(options?: Partial<SharedOptions>): void;
63
- close(): void;
54
+ events: LifeCycleEventEmitter<HttpNetworkFrameEventMap | WebSocketNetworkFrameEventMap>;
64
55
  }
65
56
 
57
+ declare const defaultNetworkOptions: DefineNetworkOptions<[InterceptorSource]>;
66
58
  /**
67
59
  * Sets up a requests interception in React Native with the given request handlers.
68
- * @param {RequestHandler[]} handlers List of request handlers.
60
+ * @param {Array<AnyHandler>} handlers List of request handlers.
69
61
  *
70
62
  * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
71
63
  */
72
- declare function setupServer(...handlers: Array<RequestHandler>): SetupServerCommonApi;
64
+ declare function setupServer(...handlers: Array<AnyHandler>): SetupServerCommon;
73
65
 
74
- export { setupServer };
66
+ export { defaultNetworkOptions, setupServer };
@@ -1,74 +1,66 @@
1
- import { RequestHandler } from "../core/handlers/RequestHandler";
2
- import { BatchInterceptor, Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
3
- import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from "../core/sharedOptions";
4
- import { SetupApi } from "../core/SetupApi";
5
- import { WebSocketHandler } from "../core/handlers/WebSocketHandler";
1
+ import { AnyHandler } from "../core/experimental/handlers-controller";
2
+ import { DefineNetworkOptions } from "../core/experimental/define-network";
3
+ import { InterceptorSource } from "../core/experimental/sources/interceptor-source";
6
4
  import { PartialDeep } from 'type-fest';
5
+ import { HttpNetworkFrameEventMap } from "../core/experimental/frames/http-frame";
6
+ import { WebSocketNetworkFrameEventMap } from "../core/experimental/frames/websocket-frame";
7
+ import { SharedOptions, LifeCycleEventEmitter } from "../core/sharedOptions";
7
8
 
9
+ interface ListenOptions extends SharedOptions {
10
+ }
8
11
  interface SetupServerCommon {
9
12
  /**
10
- * Starts requests interception based on the previously provided request handlers.
13
+ * Starts the request interception based on the previously provided request handlers.
11
14
  *
12
15
  * @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
13
16
  */
14
- listen(options?: PartialDeep<SharedOptions>): void;
17
+ listen: (options?: PartialDeep<ListenOptions>) => void;
15
18
  /**
16
- * Stops requests interception by restoring all augmented modules.
19
+ * Stops the request interception by restoring all augmented modules.
17
20
  *
18
21
  * @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
19
22
  */
20
- close(): void;
23
+ close: () => void;
21
24
  /**
22
25
  * Prepends given request handlers to the list of existing handlers.
23
26
  *
24
27
  * @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
25
28
  */
26
- use(...handlers: Array<RequestHandler | WebSocketHandler>): void;
29
+ use: (...handlers: Array<AnyHandler>) => void;
27
30
  /**
28
31
  * Marks all request handlers that respond using `res.once()` as unused.
29
32
  *
30
33
  * @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
31
34
  */
32
- restoreHandlers(): void;
35
+ restoreHandlers: () => void;
33
36
  /**
34
37
  * Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
35
38
  *
36
39
  * @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
37
40
  */
38
- resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
41
+ resetHandlers: (...nextHandlers: Array<AnyHandler>) => void;
39
42
  /**
40
43
  * Returns a readonly list of currently active request handlers.
41
44
  *
42
45
  * @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
43
46
  */
44
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
47
+ listHandlers: () => ReadonlyArray<AnyHandler>;
45
48
  /**
46
49
  * Life-cycle events.
47
50
  * Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
48
51
  *
49
52
  * @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
50
53
  */
51
- events: LifeCycleEventEmitter<LifeCycleEventsMap>;
52
- }
53
-
54
- declare class SetupServerCommonApi extends SetupApi<LifeCycleEventsMap> implements SetupServerCommon {
55
- protected readonly interceptor: BatchInterceptor<Array<Interceptor<HttpRequestEventMap>>, HttpRequestEventMap>;
56
- private resolvedOptions;
57
- constructor(interceptors: Array<Interceptor<HttpRequestEventMap>>, handlers: Array<RequestHandler | WebSocketHandler>);
58
- /**
59
- * Subscribe to all requests that are using the interceptor object
60
- */
61
- private init;
62
- listen(options?: Partial<SharedOptions>): void;
63
- close(): void;
54
+ events: LifeCycleEventEmitter<HttpNetworkFrameEventMap | WebSocketNetworkFrameEventMap>;
64
55
  }
65
56
 
57
+ declare const defaultNetworkOptions: DefineNetworkOptions<[InterceptorSource]>;
66
58
  /**
67
59
  * Sets up a requests interception in React Native with the given request handlers.
68
- * @param {RequestHandler[]} handlers List of request handlers.
60
+ * @param {Array<AnyHandler>} handlers List of request handlers.
69
61
  *
70
62
  * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
71
63
  */
72
- declare function setupServer(...handlers: Array<RequestHandler>): SetupServerCommonApi;
64
+ declare function setupServer(...handlers: Array<AnyHandler>): SetupServerCommon;
73
65
 
74
- export { setupServer };
66
+ export { defaultNetworkOptions, setupServer };
@@ -20,137 +20,69 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/native/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ defaultNetworkOptions: () => defaultNetworkOptions,
23
24
  setupServer: () => setupServer
24
25
  });
25
26
  module.exports = __toCommonJS(index_exports);
26
27
  var import_fetch = require("@mswjs/interceptors/fetch");
27
28
  var import_XMLHttpRequest = require("@mswjs/interceptors/XMLHttpRequest");
29
+ var import_define_network2 = require("../core/experimental/define-network");
30
+ var import_interceptor_source2 = require("../core/experimental/sources/interceptor-source");
28
31
 
29
- // src/node/SetupServerCommonApi.ts
30
- var import_outvariant = require("outvariant");
31
- var import_interceptors = require("@mswjs/interceptors");
32
- var import_SetupApi = require("../core/SetupApi");
33
- var import_handleRequest = require("../core/utils/handleRequest");
34
- var import_mergeRight = require("../core/utils/internal/mergeRight");
35
- var import_devUtils = require("../core/utils/internal/devUtils");
36
- var import_handleWebSocketEvent = require("../core/ws/handleWebSocketEvent");
37
- var import_webSocketInterceptor = require("../core/ws/webSocketInterceptor");
38
- var import_isHandlerKind = require("../core/utils/internal/isHandlerKind");
39
- var DEFAULT_LISTEN_OPTIONS = {
40
- onUnhandledRequest: "warn"
41
- };
42
- var SetupServerCommonApi = class extends import_SetupApi.SetupApi {
43
- interceptor;
44
- resolvedOptions;
45
- constructor(interceptors, handlers) {
46
- super(...handlers);
47
- this.interceptor = new import_interceptors.BatchInterceptor({
48
- name: "setup-server",
49
- interceptors
50
- });
51
- this.resolvedOptions = {};
52
- }
53
- /**
54
- * Subscribe to all requests that are using the interceptor object
55
- */
56
- init() {
57
- this.interceptor.on(
58
- "request",
59
- async ({ request, requestId, controller }) => {
60
- const response = await (0, import_handleRequest.handleRequest)(
61
- request,
62
- requestId,
63
- this.handlersController.currentHandlers().filter((0, import_isHandlerKind.isHandlerKind)("RequestHandler")),
64
- this.resolvedOptions,
65
- this.emitter,
66
- {
67
- onPassthroughResponse(request2) {
68
- const acceptHeader = request2.headers.get("accept");
69
- if (acceptHeader) {
70
- const nextAcceptHeader = acceptHeader.replace(
71
- /(,\s+)?msw\/passthrough/,
72
- ""
73
- );
74
- if (nextAcceptHeader) {
75
- request2.headers.set("accept", nextAcceptHeader);
76
- } else {
77
- request2.headers.delete("accept");
78
- }
79
- }
80
- }
81
- }
82
- );
83
- if (response) {
84
- controller.respondWith(response);
85
- }
32
+ // src/node/setup-server-common.ts
33
+ var import_define_network = require("../core/experimental/define-network");
34
+ var import_interceptor_source = require("../core/experimental/sources/interceptor-source");
35
+ var import_compat = require("../core/experimental/compat");
36
+ function defineSetupServerApi(network) {
37
+ return {
38
+ events: network.events,
39
+ listen(options) {
40
+ network.configure({
41
+ onUnhandledFrame: (0, import_compat.fromLegacyOnUnhandledRequest)(() => {
42
+ return options?.onUnhandledRequest || "warn";
43
+ })
44
+ });
45
+ network.enable();
46
+ },
47
+ use: network.use.bind(network),
48
+ resetHandlers: network.resetHandlers.bind(network),
49
+ restoreHandlers: network.restoreHandlers.bind(network),
50
+ listHandlers: network.listHandlers.bind(network),
51
+ close() {
52
+ if (network.readyState === import_define_network.NetworkReadyState.DISABLED) {
86
53
  return;
87
54
  }
88
- );
89
- this.interceptor.on("unhandledException", ({ error }) => {
90
- if (error instanceof import_devUtils.InternalError) {
91
- throw error;
92
- }
93
- });
94
- this.interceptor.on(
95
- "response",
96
- ({ response, isMockedResponse, request, requestId }) => {
97
- this.emitter.emit(
98
- isMockedResponse ? "response:mocked" : "response:bypass",
99
- {
100
- response,
101
- request,
102
- requestId
103
- }
104
- );
105
- }
106
- );
107
- (0, import_handleWebSocketEvent.handleWebSocketEvent)({
108
- getUnhandledRequestStrategy: () => {
109
- return this.resolvedOptions.onUnhandledRequest;
110
- },
111
- getHandlers: () => {
112
- return this.handlersController.currentHandlers();
113
- },
114
- onMockedConnection: () => {
115
- },
116
- onPassthroughConnection: () => {
117
- }
118
- });
119
- }
120
- listen(options = {}) {
121
- this.resolvedOptions = (0, import_mergeRight.mergeRight)(
122
- DEFAULT_LISTEN_OPTIONS,
123
- options
124
- );
125
- this.interceptor.apply();
126
- this.init();
127
- this.subscriptions.push(() => this.interceptor.dispose());
128
- import_webSocketInterceptor.webSocketInterceptor.apply();
129
- this.subscriptions.push(() => import_webSocketInterceptor.webSocketInterceptor.dispose());
130
- (0, import_outvariant.invariant)(
131
- [import_interceptors.InterceptorReadyState.APPLYING, import_interceptors.InterceptorReadyState.APPLIED].includes(
132
- this.interceptor.readyState
133
- ),
134
- import_devUtils.devUtils.formatMessage(
135
- 'Failed to start "setupServer": the interceptor failed to apply. This is likely an issue with the library and you should report it at "%s".'
136
- ),
137
- "https://github.com/mswjs/msw/issues/new/choose"
138
- );
139
- }
140
- close() {
141
- this.dispose();
142
- }
143
- };
55
+ network.disable();
56
+ }
57
+ };
58
+ }
144
59
 
145
60
  // src/native/index.ts
61
+ var defaultInterceptors = [
62
+ new import_fetch.FetchInterceptor(),
63
+ new import_XMLHttpRequest.XMLHttpRequestInterceptor()
64
+ ];
65
+ var defaultNetworkOptions = {
66
+ sources: [
67
+ new import_interceptor_source2.InterceptorSource({
68
+ interceptors: defaultInterceptors
69
+ })
70
+ ],
71
+ onUnhandledFrame: "warn",
72
+ context: {
73
+ quiet: true
74
+ }
75
+ };
146
76
  function setupServer(...handlers) {
147
- return new SetupServerCommonApi(
148
- [new import_fetch.FetchInterceptor(), new import_XMLHttpRequest.XMLHttpRequestInterceptor()],
77
+ const network = (0, import_define_network2.defineNetwork)({
78
+ ...defaultNetworkOptions,
149
79
  handlers
150
- );
80
+ });
81
+ return defineSetupServerApi(network);
151
82
  }
152
83
  // Annotate the CommonJS export names for ESM import in node:
153
84
  0 && (module.exports = {
85
+ defaultNetworkOptions,
154
86
  setupServer
155
87
  });
156
88
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/native/index.ts","../../src/node/SetupServerCommonApi.ts"],"sourcesContent":["import { FetchInterceptor } from '@mswjs/interceptors/fetch'\nimport { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'\nimport type { RequestHandler } from '~/core/handlers/RequestHandler'\nimport { SetupServerCommonApi } from '../node/SetupServerCommonApi'\n\n/**\n * Sets up a requests interception in React Native with the given request handlers.\n * @param {RequestHandler[]} handlers List of request handlers.\n *\n * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}\n */\nexport function setupServer(\n ...handlers: Array<RequestHandler>\n): SetupServerCommonApi {\n // Provision request interception via patching the `XMLHttpRequest` class only\n // in React Native. There is no `http`/`https` modules in that environment.\n return new SetupServerCommonApi(\n [new FetchInterceptor(), new XMLHttpRequestInterceptor()],\n handlers,\n )\n}\n","/**\n * @note This API is extended by both \"msw/node\" and \"msw/native\"\n * so be minding about the things you import!\n */\nimport type { RequiredDeep } from 'type-fest'\nimport { invariant } from 'outvariant'\nimport {\n BatchInterceptor,\n InterceptorReadyState,\n type HttpRequestEventMap,\n type Interceptor,\n} from '@mswjs/interceptors'\nimport type { LifeCycleEventsMap, SharedOptions } from '~/core/sharedOptions'\nimport { SetupApi } from '~/core/SetupApi'\nimport { handleRequest } from '~/core/utils/handleRequest'\nimport type { RequestHandler } from '~/core/handlers/RequestHandler'\nimport type { WebSocketHandler } from '~/core/handlers/WebSocketHandler'\nimport { mergeRight } from '~/core/utils/internal/mergeRight'\nimport { InternalError, devUtils } from '~/core/utils/internal/devUtils'\nimport type { SetupServerCommon } from './glossary'\nimport { handleWebSocketEvent } from '~/core/ws/handleWebSocketEvent'\nimport { webSocketInterceptor } from '~/core/ws/webSocketInterceptor'\nimport { isHandlerKind } from '~/core/utils/internal/isHandlerKind'\n\nconst DEFAULT_LISTEN_OPTIONS: RequiredDeep<SharedOptions> = {\n onUnhandledRequest: 'warn',\n}\n\nexport class SetupServerCommonApi\n extends SetupApi<LifeCycleEventsMap>\n implements SetupServerCommon\n{\n protected readonly interceptor: BatchInterceptor<\n Array<Interceptor<HttpRequestEventMap>>,\n HttpRequestEventMap\n >\n private resolvedOptions: RequiredDeep<SharedOptions>\n\n constructor(\n interceptors: Array<Interceptor<HttpRequestEventMap>>,\n handlers: Array<RequestHandler | WebSocketHandler>,\n ) {\n super(...handlers)\n\n this.interceptor = new BatchInterceptor({\n name: 'setup-server',\n interceptors,\n })\n\n this.resolvedOptions = {} as RequiredDeep<SharedOptions>\n }\n\n /**\n * Subscribe to all requests that are using the interceptor object\n */\n private init(): void {\n this.interceptor.on(\n 'request',\n async ({ request, requestId, controller }) => {\n const response = await handleRequest(\n request,\n requestId,\n this.handlersController\n .currentHandlers()\n .filter(isHandlerKind('RequestHandler')),\n this.resolvedOptions,\n this.emitter,\n {\n onPassthroughResponse(request) {\n const acceptHeader = request.headers.get('accept')\n\n /**\n * @note Remove the internal bypass request header.\n * In the browser, this is done by the worker script.\n * In Node.js, it has to be done here.\n */\n if (acceptHeader) {\n const nextAcceptHeader = acceptHeader.replace(\n /(,\\s+)?msw\\/passthrough/,\n '',\n )\n\n if (nextAcceptHeader) {\n request.headers.set('accept', nextAcceptHeader)\n } else {\n request.headers.delete('accept')\n }\n }\n },\n },\n )\n\n if (response) {\n controller.respondWith(response)\n }\n\n return\n },\n )\n\n this.interceptor.on('unhandledException', ({ error }) => {\n if (error instanceof InternalError) {\n throw error\n }\n })\n\n this.interceptor.on(\n 'response',\n ({ response, isMockedResponse, request, requestId }) => {\n this.emitter.emit(\n isMockedResponse ? 'response:mocked' : 'response:bypass',\n {\n response,\n request,\n requestId,\n },\n )\n },\n )\n\n // Preconfigure the WebSocket interception but don't enable it just yet.\n // It will be enabled when the server starts.\n handleWebSocketEvent({\n getUnhandledRequestStrategy: () => {\n return this.resolvedOptions.onUnhandledRequest\n },\n getHandlers: () => {\n return this.handlersController.currentHandlers()\n },\n onMockedConnection: () => {},\n onPassthroughConnection: () => {},\n })\n }\n\n public listen(options: Partial<SharedOptions> = {}): void {\n this.resolvedOptions = mergeRight(\n DEFAULT_LISTEN_OPTIONS,\n options,\n ) as RequiredDeep<SharedOptions>\n\n // Apply the interceptor when starting the server.\n // Attach the event listeners to the interceptor here\n // so they get re-attached whenever `.listen()` is called.\n this.interceptor.apply()\n this.init()\n this.subscriptions.push(() => this.interceptor.dispose())\n\n // Apply the WebSocket interception.\n webSocketInterceptor.apply()\n this.subscriptions.push(() => webSocketInterceptor.dispose())\n\n // Assert that the interceptor has been applied successfully.\n // Also guards us from forgetting to call \"interceptor.apply()\"\n // as a part of the \"listen\" method.\n invariant(\n [InterceptorReadyState.APPLYING, InterceptorReadyState.APPLIED].includes(\n this.interceptor.readyState,\n ),\n devUtils.formatMessage(\n 'Failed to start \"setupServer\": the interceptor failed to apply. This is likely an issue with the library and you should report it at \"%s\".',\n ),\n 'https://github.com/mswjs/msw/issues/new/choose',\n )\n }\n\n public close(): void {\n this.dispose()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiC;AACjC,4BAA0C;;;ACI1C,wBAA0B;AAC1B,0BAKO;AAEP,sBAAyB;AACzB,2BAA8B;AAG9B,wBAA2B;AAC3B,sBAAwC;AAExC,kCAAqC;AACrC,kCAAqC;AACrC,2BAA8B;AAE9B,IAAM,yBAAsD;AAAA,EAC1D,oBAAoB;AACtB;AAEO,IAAM,uBAAN,cACG,yBAEV;AAAA,EACqB;AAAA,EAIX;AAAA,EAER,YACE,cACA,UACA;AACA,UAAM,GAAG,QAAQ;AAEjB,SAAK,cAAc,IAAI,qCAAiB;AAAA,MACtC,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AAED,SAAK,kBAAkB,CAAC;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKQ,OAAa;AACnB,SAAK,YAAY;AAAA,MACf;AAAA,MACA,OAAO,EAAE,SAAS,WAAW,WAAW,MAAM;AAC5C,cAAM,WAAW,UAAM;AAAA,UACrB;AAAA,UACA;AAAA,UACA,KAAK,mBACF,gBAAgB,EAChB,WAAO,oCAAc,gBAAgB,CAAC;AAAA,UACzC,KAAK;AAAA,UACL,KAAK;AAAA,UACL;AAAA,YACE,sBAAsBA,UAAS;AAC7B,oBAAM,eAAeA,SAAQ,QAAQ,IAAI,QAAQ;AAOjD,kBAAI,cAAc;AAChB,sBAAM,mBAAmB,aAAa;AAAA,kBACpC;AAAA,kBACA;AAAA,gBACF;AAEA,oBAAI,kBAAkB;AACpB,kBAAAA,SAAQ,QAAQ,IAAI,UAAU,gBAAgB;AAAA,gBAChD,OAAO;AACL,kBAAAA,SAAQ,QAAQ,OAAO,QAAQ;AAAA,gBACjC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,UAAU;AACZ,qBAAW,YAAY,QAAQ;AAAA,QACjC;AAEA;AAAA,MACF;AAAA,IACF;AAEA,SAAK,YAAY,GAAG,sBAAsB,CAAC,EAAE,MAAM,MAAM;AACvD,UAAI,iBAAiB,+BAAe;AAClC,cAAM;AAAA,MACR;AAAA,IACF,CAAC;AAED,SAAK,YAAY;AAAA,MACf;AAAA,MACA,CAAC,EAAE,UAAU,kBAAkB,SAAS,UAAU,MAAM;AACtD,aAAK,QAAQ;AAAA,UACX,mBAAmB,oBAAoB;AAAA,UACvC;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAIA,0DAAqB;AAAA,MACnB,6BAA6B,MAAM;AACjC,eAAO,KAAK,gBAAgB;AAAA,MAC9B;AAAA,MACA,aAAa,MAAM;AACjB,eAAO,KAAK,mBAAmB,gBAAgB;AAAA,MACjD;AAAA,MACA,oBAAoB,MAAM;AAAA,MAAC;AAAA,MAC3B,yBAAyB,MAAM;AAAA,MAAC;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EAEO,OAAO,UAAkC,CAAC,GAAS;AACxD,SAAK,sBAAkB;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAKA,SAAK,YAAY,MAAM;AACvB,SAAK,KAAK;AACV,SAAK,cAAc,KAAK,MAAM,KAAK,YAAY,QAAQ,CAAC;AAGxD,qDAAqB,MAAM;AAC3B,SAAK,cAAc,KAAK,MAAM,iDAAqB,QAAQ,CAAC;AAK5D;AAAA,MACE,CAAC,0CAAsB,UAAU,0CAAsB,OAAO,EAAE;AAAA,QAC9D,KAAK,YAAY;AAAA,MACnB;AAAA,MACA,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEO,QAAc;AACnB,SAAK,QAAQ;AAAA,EACf;AACF;;;AD7JO,SAAS,eACX,UACmB;AAGtB,SAAO,IAAI;AAAA,IACT,CAAC,IAAI,8BAAiB,GAAG,IAAI,gDAA0B,CAAC;AAAA,IACxD;AAAA,EACF;AACF;","names":["request"]}
1
+ {"version":3,"sources":["../../src/native/index.ts","../../src/node/setup-server-common.ts"],"sourcesContent":["import type { Interceptor } from '@mswjs/interceptors'\nimport { FetchInterceptor } from '@mswjs/interceptors/fetch'\nimport { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'\nimport { type AnyHandler } from '#core/experimental/handlers-controller'\nimport {\n defineNetwork,\n DefineNetworkOptions,\n} from '#core/experimental/define-network'\nimport { InterceptorSource } from '#core/experimental/sources/interceptor-source'\nimport { type SetupServerCommon } from '../node/glossary'\nimport { defineSetupServerApi } from '../node/setup-server-common'\n\nconst defaultInterceptors: Array<Interceptor<any>> = [\n new FetchInterceptor(),\n new XMLHttpRequestInterceptor(),\n]\n\nexport const defaultNetworkOptions: DefineNetworkOptions<[InterceptorSource]> =\n {\n sources: [\n new InterceptorSource({\n interceptors: defaultInterceptors,\n }),\n ],\n onUnhandledFrame: 'warn',\n context: {\n quiet: true,\n },\n }\n\n/**\n * Sets up a requests interception in React Native with the given request handlers.\n * @param {Array<AnyHandler>} handlers List of request handlers.\n *\n * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}\n */\nexport function setupServer(...handlers: Array<AnyHandler>): SetupServerCommon {\n const network = defineNetwork({\n ...defaultNetworkOptions,\n handlers,\n })\n\n return defineSetupServerApi(network)\n}\n","import type { PartialDeep } from 'type-fest'\nimport { Interceptor } from '@mswjs/interceptors'\nimport {\n type NetworkApi,\n NetworkReadyState,\n defineNetwork,\n} from '#core/experimental/define-network'\nimport { type AnyHandler } from '#core/experimental/handlers-controller'\nimport { type HandlersController } from '#core/experimental/handlers-controller'\nimport { InterceptorSource } from '#core/experimental/sources/interceptor-source'\nimport { fromLegacyOnUnhandledRequest } from '#core/experimental/compat'\nimport type { ListenOptions, SetupServerCommon } from './glossary'\n\n/**\n * Define the common `setupServer` API around the given network.\n * This is used by both `msw/node` and `msw/native` to implement the same\n * baseline setup methods, like `.use()`, `.resetHandlers()`, `.close()`, etc.\n */\nexport function defineSetupServerApi(\n network: NetworkApi<any>,\n): SetupServerCommon {\n return {\n events: network.events,\n listen(options) {\n network.configure({\n onUnhandledFrame: fromLegacyOnUnhandledRequest(() => {\n return options?.onUnhandledRequest || 'warn'\n }),\n })\n\n network.enable()\n },\n use: network.use.bind(network),\n resetHandlers: network.resetHandlers.bind(network),\n restoreHandlers: network.restoreHandlers.bind(network),\n listHandlers: network.listHandlers.bind(network),\n close() {\n /**\n * @note Ignore closing after closed for backwards compatibility.\n */\n if (network.readyState === NetworkReadyState.DISABLED) {\n return\n }\n\n network.disable()\n },\n }\n}\n\n/**\n * @deprecated\n * Please use the `defineNetwork` API instead.\n */\nexport class SetupServerCommonApi implements SetupServerCommon {\n protected network: NetworkApi<[InterceptorSource]>\n\n constructor(\n interceptors: Array<Interceptor<any>>,\n handlers: Array<AnyHandler> | HandlersController,\n ) {\n this.network = defineNetwork({\n sources: [new InterceptorSource({ interceptors })],\n handlers,\n })\n }\n\n get events() {\n return this.network.events\n }\n\n public listen(options?: PartialDeep<ListenOptions>): void {\n this.network.configure({\n onUnhandledFrame: fromLegacyOnUnhandledRequest(() => {\n return options?.onUnhandledRequest || 'warn'\n }),\n })\n\n this.network.enable()\n }\n\n public use(...handlers: Array<AnyHandler>): void {\n this.network.use(...handlers)\n }\n\n public resetHandlers(...nextHandlers: Array<AnyHandler>): void {\n return this.network.resetHandlers(...nextHandlers)\n }\n\n public restoreHandlers(): void {\n return this.network.restoreHandlers()\n }\n\n public listHandlers(): ReadonlyArray<AnyHandler> {\n return this.network.listHandlers()\n }\n\n public close(): void {\n this.network.disable()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAiC;AACjC,4BAA0C;AAE1C,IAAAA,yBAGO;AACP,IAAAC,6BAAkC;;;ACNlC,4BAIO;AAGP,gCAAkC;AAClC,oBAA6C;AAQtC,SAAS,qBACd,SACmB;AACnB,SAAO;AAAA,IACL,QAAQ,QAAQ;AAAA,IAChB,OAAO,SAAS;AACd,cAAQ,UAAU;AAAA,QAChB,sBAAkB,4CAA6B,MAAM;AACnD,iBAAO,SAAS,sBAAsB;AAAA,QACxC,CAAC;AAAA,MACH,CAAC;AAED,cAAQ,OAAO;AAAA,IACjB;AAAA,IACA,KAAK,QAAQ,IAAI,KAAK,OAAO;AAAA,IAC7B,eAAe,QAAQ,cAAc,KAAK,OAAO;AAAA,IACjD,iBAAiB,QAAQ,gBAAgB,KAAK,OAAO;AAAA,IACrD,cAAc,QAAQ,aAAa,KAAK,OAAO;AAAA,IAC/C,QAAQ;AAIN,UAAI,QAAQ,eAAe,wCAAkB,UAAU;AACrD;AAAA,MACF;AAEA,cAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AACF;;;ADnCA,IAAM,sBAA+C;AAAA,EACnD,IAAI,8BAAiB;AAAA,EACrB,IAAI,gDAA0B;AAChC;AAEO,IAAM,wBACX;AAAA,EACE,SAAS;AAAA,IACP,IAAI,6CAAkB;AAAA,MACpB,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EACA,kBAAkB;AAAA,EAClB,SAAS;AAAA,IACP,OAAO;AAAA,EACT;AACF;AAQK,SAAS,eAAe,UAAgD;AAC7E,QAAM,cAAU,sCAAc;AAAA,IAC5B,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO,qBAAqB,OAAO;AACrC;","names":["import_define_network","import_interceptor_source"]}
@@ -1,134 +1,67 @@
1
1
  // src/native/index.ts
2
2
  import { FetchInterceptor } from "@mswjs/interceptors/fetch";
3
3
  import { XMLHttpRequestInterceptor } from "@mswjs/interceptors/XMLHttpRequest";
4
+ import {
5
+ defineNetwork as defineNetwork2
6
+ } from '../core/experimental/define-network.mjs';
7
+ import { InterceptorSource as InterceptorSource2 } from '../core/experimental/sources/interceptor-source.mjs';
4
8
 
5
- // src/node/SetupServerCommonApi.ts
6
- import { invariant } from "outvariant";
9
+ // src/node/setup-server-common.ts
7
10
  import {
8
- BatchInterceptor,
9
- InterceptorReadyState
10
- } from "@mswjs/interceptors";
11
- import { SetupApi } from '../core/SetupApi.mjs';
12
- import { handleRequest } from '../core/utils/handleRequest.mjs';
13
- import { mergeRight } from '../core/utils/internal/mergeRight.mjs';
14
- import { InternalError, devUtils } from '../core/utils/internal/devUtils.mjs';
15
- import { handleWebSocketEvent } from '../core/ws/handleWebSocketEvent.mjs';
16
- import { webSocketInterceptor } from '../core/ws/webSocketInterceptor.mjs';
17
- import { isHandlerKind } from '../core/utils/internal/isHandlerKind.mjs';
18
- var DEFAULT_LISTEN_OPTIONS = {
19
- onUnhandledRequest: "warn"
20
- };
21
- var SetupServerCommonApi = class extends SetupApi {
22
- interceptor;
23
- resolvedOptions;
24
- constructor(interceptors, handlers) {
25
- super(...handlers);
26
- this.interceptor = new BatchInterceptor({
27
- name: "setup-server",
28
- interceptors
29
- });
30
- this.resolvedOptions = {};
31
- }
32
- /**
33
- * Subscribe to all requests that are using the interceptor object
34
- */
35
- init() {
36
- this.interceptor.on(
37
- "request",
38
- async ({ request, requestId, controller }) => {
39
- const response = await handleRequest(
40
- request,
41
- requestId,
42
- this.handlersController.currentHandlers().filter(isHandlerKind("RequestHandler")),
43
- this.resolvedOptions,
44
- this.emitter,
45
- {
46
- onPassthroughResponse(request2) {
47
- const acceptHeader = request2.headers.get("accept");
48
- if (acceptHeader) {
49
- const nextAcceptHeader = acceptHeader.replace(
50
- /(,\s+)?msw\/passthrough/,
51
- ""
52
- );
53
- if (nextAcceptHeader) {
54
- request2.headers.set("accept", nextAcceptHeader);
55
- } else {
56
- request2.headers.delete("accept");
57
- }
58
- }
59
- }
60
- }
61
- );
62
- if (response) {
63
- controller.respondWith(response);
64
- }
11
+ NetworkReadyState,
12
+ defineNetwork
13
+ } from '../core/experimental/define-network.mjs';
14
+ import { InterceptorSource } from '../core/experimental/sources/interceptor-source.mjs';
15
+ import { fromLegacyOnUnhandledRequest } from '../core/experimental/compat.mjs';
16
+ function defineSetupServerApi(network) {
17
+ return {
18
+ events: network.events,
19
+ listen(options) {
20
+ network.configure({
21
+ onUnhandledFrame: fromLegacyOnUnhandledRequest(() => {
22
+ return options?.onUnhandledRequest || "warn";
23
+ })
24
+ });
25
+ network.enable();
26
+ },
27
+ use: network.use.bind(network),
28
+ resetHandlers: network.resetHandlers.bind(network),
29
+ restoreHandlers: network.restoreHandlers.bind(network),
30
+ listHandlers: network.listHandlers.bind(network),
31
+ close() {
32
+ if (network.readyState === NetworkReadyState.DISABLED) {
65
33
  return;
66
34
  }
67
- );
68
- this.interceptor.on("unhandledException", ({ error }) => {
69
- if (error instanceof InternalError) {
70
- throw error;
71
- }
72
- });
73
- this.interceptor.on(
74
- "response",
75
- ({ response, isMockedResponse, request, requestId }) => {
76
- this.emitter.emit(
77
- isMockedResponse ? "response:mocked" : "response:bypass",
78
- {
79
- response,
80
- request,
81
- requestId
82
- }
83
- );
84
- }
85
- );
86
- handleWebSocketEvent({
87
- getUnhandledRequestStrategy: () => {
88
- return this.resolvedOptions.onUnhandledRequest;
89
- },
90
- getHandlers: () => {
91
- return this.handlersController.currentHandlers();
92
- },
93
- onMockedConnection: () => {
94
- },
95
- onPassthroughConnection: () => {
96
- }
97
- });
98
- }
99
- listen(options = {}) {
100
- this.resolvedOptions = mergeRight(
101
- DEFAULT_LISTEN_OPTIONS,
102
- options
103
- );
104
- this.interceptor.apply();
105
- this.init();
106
- this.subscriptions.push(() => this.interceptor.dispose());
107
- webSocketInterceptor.apply();
108
- this.subscriptions.push(() => webSocketInterceptor.dispose());
109
- invariant(
110
- [InterceptorReadyState.APPLYING, InterceptorReadyState.APPLIED].includes(
111
- this.interceptor.readyState
112
- ),
113
- devUtils.formatMessage(
114
- 'Failed to start "setupServer": the interceptor failed to apply. This is likely an issue with the library and you should report it at "%s".'
115
- ),
116
- "https://github.com/mswjs/msw/issues/new/choose"
117
- );
118
- }
119
- close() {
120
- this.dispose();
121
- }
122
- };
35
+ network.disable();
36
+ }
37
+ };
38
+ }
123
39
 
124
40
  // src/native/index.ts
41
+ var defaultInterceptors = [
42
+ new FetchInterceptor(),
43
+ new XMLHttpRequestInterceptor()
44
+ ];
45
+ var defaultNetworkOptions = {
46
+ sources: [
47
+ new InterceptorSource2({
48
+ interceptors: defaultInterceptors
49
+ })
50
+ ],
51
+ onUnhandledFrame: "warn",
52
+ context: {
53
+ quiet: true
54
+ }
55
+ };
125
56
  function setupServer(...handlers) {
126
- return new SetupServerCommonApi(
127
- [new FetchInterceptor(), new XMLHttpRequestInterceptor()],
57
+ const network = defineNetwork2({
58
+ ...defaultNetworkOptions,
128
59
  handlers
129
- );
60
+ });
61
+ return defineSetupServerApi(network);
130
62
  }
131
63
  export {
64
+ defaultNetworkOptions,
132
65
  setupServer
133
66
  };
134
67
  //# sourceMappingURL=index.mjs.map