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
@@ -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":"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","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":";AACA,SAAS,wBAAwB;AACjC,SAAS,iCAAiC;AAE1C;AAAA,EACE,iBAAAA;AAAA,OAEK;AACP,SAAS,qBAAAC,0BAAyB;;;ACNlC;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AAGP,SAAS,yBAAyB;AAClC,SAAS,oCAAoC;AAQtC,SAAS,qBACd,SACmB;AACnB,SAAO;AAAA,IACL,QAAQ,QAAQ;AAAA,IAChB,OAAO,SAAS;AACd,cAAQ,UAAU;AAAA,QAChB,kBAAkB,6BAA6B,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,kBAAkB,UAAU;AACrD;AAAA,MACF;AAEA,cAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AACF;;;ADnCA,IAAM,sBAA+C;AAAA,EACnD,IAAI,iBAAiB;AAAA,EACrB,IAAI,0BAA0B;AAChC;AAEO,IAAM,wBACX;AAAA,EACE,SAAS;AAAA,IACP,IAAIC,mBAAkB;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,UAAUC,eAAc;AAAA,IAC5B,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO,qBAAqB,OAAO;AACrC;","names":["defineNetwork","InterceptorSource","InterceptorSource","defineNetwork"]}
@@ -1,54 +1,59 @@
1
1
  import { PartialDeep } from 'type-fest';
2
- import { RequestHandler } from "../core/handlers/RequestHandler.mjs";
3
- import { WebSocketHandler } from "../core/handlers/WebSocketHandler.mjs";
4
- import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from "../core/sharedOptions.mjs";
5
- import { BatchInterceptor, Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
6
- import { SetupApi } from "../core/SetupApi.mjs";
2
+ import { HttpNetworkFrameEventMap } from "../core/experimental/frames/http-frame.mjs";
3
+ import { WebSocketNetworkFrameEventMap } from "../core/experimental/frames/websocket-frame.mjs";
4
+ import { AnyHandler, HandlersController, HandlersControllerState } from "../core/experimental/handlers-controller.mjs";
5
+ import { SharedOptions, LifeCycleEventEmitter } from "../core/sharedOptions.mjs";
6
+ import { Interceptor } from '@mswjs/interceptors';
7
+ import { NetworkApi, DefineNetworkOptions } from "../core/experimental/define-network.mjs";
8
+ import { InterceptorSource } from "../core/experimental/sources/interceptor-source.mjs";
9
+ import * as rettime from 'rettime';
7
10
 
11
+ interface ListenOptions extends SharedOptions {
12
+ }
8
13
  interface SetupServerCommon {
9
14
  /**
10
- * Starts requests interception based on the previously provided request handlers.
15
+ * Starts the request interception based on the previously provided request handlers.
11
16
  *
12
17
  * @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
13
18
  */
14
- listen(options?: PartialDeep<SharedOptions>): void;
19
+ listen: (options?: PartialDeep<ListenOptions>) => void;
15
20
  /**
16
- * Stops requests interception by restoring all augmented modules.
21
+ * Stops the request interception by restoring all augmented modules.
17
22
  *
18
23
  * @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
19
24
  */
20
- close(): void;
25
+ close: () => void;
21
26
  /**
22
27
  * Prepends given request handlers to the list of existing handlers.
23
28
  *
24
29
  * @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
25
30
  */
26
- use(...handlers: Array<RequestHandler | WebSocketHandler>): void;
31
+ use: (...handlers: Array<AnyHandler>) => void;
27
32
  /**
28
33
  * Marks all request handlers that respond using `res.once()` as unused.
29
34
  *
30
35
  * @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
31
36
  */
32
- restoreHandlers(): void;
37
+ restoreHandlers: () => void;
33
38
  /**
34
39
  * Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
35
40
  *
36
41
  * @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
37
42
  */
38
- resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
43
+ resetHandlers: (...nextHandlers: Array<AnyHandler>) => void;
39
44
  /**
40
45
  * Returns a readonly list of currently active request handlers.
41
46
  *
42
47
  * @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
43
48
  */
44
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
49
+ listHandlers: () => ReadonlyArray<AnyHandler>;
45
50
  /**
46
51
  * Life-cycle events.
47
52
  * Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
48
53
  *
49
54
  * @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
50
55
  */
51
- events: LifeCycleEventEmitter<LifeCycleEventsMap>;
56
+ events: LifeCycleEventEmitter<HttpNetworkFrameEventMap | WebSocketNetworkFrameEventMap>;
52
57
  }
53
58
  interface SetupServer extends SetupServerCommon {
54
59
  /**
@@ -59,33 +64,50 @@ interface SetupServer extends SetupServerCommon {
59
64
  *
60
65
  * @see {@link https://mswjs.io/docs/api/setup-server/boundary `server.boundary()` API reference}
61
66
  */
62
- boundary<Args extends Array<any>, R>(callback: (...args: Args) => R): (...args: Args) => R;
67
+ boundary: <Args extends Array<any>, R>(callback: (...args: Args) => R) => (...args: Args) => R;
63
68
  }
64
69
 
65
- declare class SetupServerCommonApi extends SetupApi<LifeCycleEventsMap> implements SetupServerCommon {
66
- protected readonly interceptor: BatchInterceptor<Array<Interceptor<HttpRequestEventMap>>, HttpRequestEventMap>;
67
- private resolvedOptions;
68
- constructor(interceptors: Array<Interceptor<HttpRequestEventMap>>, handlers: Array<RequestHandler | WebSocketHandler>);
69
- /**
70
- * Subscribe to all requests that are using the interceptor object
71
- */
72
- private init;
73
- listen(options?: Partial<SharedOptions>): void;
74
- close(): void;
70
+ declare class AsyncHandlersController extends HandlersController {
71
+ #private;
72
+ constructor(initialHandlers: Array<AnyHandler>);
73
+ protected getState(): {
74
+ initialHandlers: Partial<Record<"request" | "websocket", AnyHandler[]>>;
75
+ handlers: Partial<Record<"request" | "websocket", AnyHandler[]>>;
76
+ };
77
+ protected setState(nextState: HandlersControllerState): void;
78
+ boundary<Args extends Array<any>, R>(callback: (...args: Args) => R): (...args: Args) => R;
75
79
  }
76
80
 
77
- declare class SetupServerApi extends SetupServerCommonApi implements SetupServer {
78
- constructor(handlers: Array<RequestHandler | WebSocketHandler>, interceptors?: Array<Interceptor<HttpRequestEventMap>>);
79
- boundary<Args extends Array<any>, R>(callback: (...args: Args) => R): (...args: Args) => R;
81
+ /**
82
+ * @deprecated
83
+ * Please use the `defineNetwork` API instead.
84
+ */
85
+ declare class SetupServerCommonApi implements SetupServerCommon {
86
+ protected network: NetworkApi<[InterceptorSource]>;
87
+ constructor(interceptors: Array<Interceptor<any>>, handlers: Array<AnyHandler> | HandlersController);
88
+ get events(): rettime.Emitter<any>;
89
+ listen(options?: PartialDeep<ListenOptions>): void;
90
+ use(...handlers: Array<AnyHandler>): void;
91
+ resetHandlers(...nextHandlers: Array<AnyHandler>): void;
92
+ restoreHandlers(): void;
93
+ listHandlers(): ReadonlyArray<AnyHandler>;
80
94
  close(): void;
81
95
  }
82
96
 
97
+ declare const defaultNetworkOptions: DefineNetworkOptions<[InterceptorSource]>;
83
98
  /**
84
- * Sets up a requests interception in Node.js with the given request handlers.
85
- * @param {RequestHandler[]} handlers List of request handlers.
86
- *
99
+ * Enables request interception in Node.js with the given request handlers.
87
100
  * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
88
101
  */
89
- declare const setupServer: (...handlers: Array<RequestHandler | WebSocketHandler>) => SetupServerApi;
102
+ declare function setupServer(...handlers: Array<AnyHandler>): SetupServer;
103
+ /**
104
+ * @deprecated
105
+ * Please use the `defineNetwork` API instead.
106
+ */
107
+ declare class SetupServerApi extends SetupServerCommonApi implements SetupServer {
108
+ #private;
109
+ boundary: AsyncHandlersController['boundary'];
110
+ constructor(handlers: Array<AnyHandler>, interceptors: Array<Interceptor<any>>);
111
+ }
90
112
 
91
- export { type SetupServer, SetupServerApi, setupServer };
113
+ export { type SetupServer, SetupServerApi, SetupServerCommonApi, defaultNetworkOptions, setupServer };
@@ -1,54 +1,59 @@
1
1
  import { PartialDeep } from 'type-fest';
2
- import { RequestHandler } from "../core/handlers/RequestHandler";
3
- import { WebSocketHandler } from "../core/handlers/WebSocketHandler";
4
- import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from "../core/sharedOptions";
5
- import { BatchInterceptor, Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
6
- import { SetupApi } from "../core/SetupApi";
2
+ import { HttpNetworkFrameEventMap } from "../core/experimental/frames/http-frame";
3
+ import { WebSocketNetworkFrameEventMap } from "../core/experimental/frames/websocket-frame";
4
+ import { AnyHandler, HandlersController, HandlersControllerState } from "../core/experimental/handlers-controller";
5
+ import { SharedOptions, LifeCycleEventEmitter } from "../core/sharedOptions";
6
+ import { Interceptor } from '@mswjs/interceptors';
7
+ import { NetworkApi, DefineNetworkOptions } from "../core/experimental/define-network";
8
+ import { InterceptorSource } from "../core/experimental/sources/interceptor-source";
9
+ import * as rettime from 'rettime';
7
10
 
11
+ interface ListenOptions extends SharedOptions {
12
+ }
8
13
  interface SetupServerCommon {
9
14
  /**
10
- * Starts requests interception based on the previously provided request handlers.
15
+ * Starts the request interception based on the previously provided request handlers.
11
16
  *
12
17
  * @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
13
18
  */
14
- listen(options?: PartialDeep<SharedOptions>): void;
19
+ listen: (options?: PartialDeep<ListenOptions>) => void;
15
20
  /**
16
- * Stops requests interception by restoring all augmented modules.
21
+ * Stops the request interception by restoring all augmented modules.
17
22
  *
18
23
  * @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
19
24
  */
20
- close(): void;
25
+ close: () => void;
21
26
  /**
22
27
  * Prepends given request handlers to the list of existing handlers.
23
28
  *
24
29
  * @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
25
30
  */
26
- use(...handlers: Array<RequestHandler | WebSocketHandler>): void;
31
+ use: (...handlers: Array<AnyHandler>) => void;
27
32
  /**
28
33
  * Marks all request handlers that respond using `res.once()` as unused.
29
34
  *
30
35
  * @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
31
36
  */
32
- restoreHandlers(): void;
37
+ restoreHandlers: () => void;
33
38
  /**
34
39
  * Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
35
40
  *
36
41
  * @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
37
42
  */
38
- resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
43
+ resetHandlers: (...nextHandlers: Array<AnyHandler>) => void;
39
44
  /**
40
45
  * Returns a readonly list of currently active request handlers.
41
46
  *
42
47
  * @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
43
48
  */
44
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
49
+ listHandlers: () => ReadonlyArray<AnyHandler>;
45
50
  /**
46
51
  * Life-cycle events.
47
52
  * Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
48
53
  *
49
54
  * @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
50
55
  */
51
- events: LifeCycleEventEmitter<LifeCycleEventsMap>;
56
+ events: LifeCycleEventEmitter<HttpNetworkFrameEventMap | WebSocketNetworkFrameEventMap>;
52
57
  }
53
58
  interface SetupServer extends SetupServerCommon {
54
59
  /**
@@ -59,33 +64,50 @@ interface SetupServer extends SetupServerCommon {
59
64
  *
60
65
  * @see {@link https://mswjs.io/docs/api/setup-server/boundary `server.boundary()` API reference}
61
66
  */
62
- boundary<Args extends Array<any>, R>(callback: (...args: Args) => R): (...args: Args) => R;
67
+ boundary: <Args extends Array<any>, R>(callback: (...args: Args) => R) => (...args: Args) => R;
63
68
  }
64
69
 
65
- declare class SetupServerCommonApi extends SetupApi<LifeCycleEventsMap> implements SetupServerCommon {
66
- protected readonly interceptor: BatchInterceptor<Array<Interceptor<HttpRequestEventMap>>, HttpRequestEventMap>;
67
- private resolvedOptions;
68
- constructor(interceptors: Array<Interceptor<HttpRequestEventMap>>, handlers: Array<RequestHandler | WebSocketHandler>);
69
- /**
70
- * Subscribe to all requests that are using the interceptor object
71
- */
72
- private init;
73
- listen(options?: Partial<SharedOptions>): void;
74
- close(): void;
70
+ declare class AsyncHandlersController extends HandlersController {
71
+ #private;
72
+ constructor(initialHandlers: Array<AnyHandler>);
73
+ protected getState(): {
74
+ initialHandlers: Partial<Record<"request" | "websocket", AnyHandler[]>>;
75
+ handlers: Partial<Record<"request" | "websocket", AnyHandler[]>>;
76
+ };
77
+ protected setState(nextState: HandlersControllerState): void;
78
+ boundary<Args extends Array<any>, R>(callback: (...args: Args) => R): (...args: Args) => R;
75
79
  }
76
80
 
77
- declare class SetupServerApi extends SetupServerCommonApi implements SetupServer {
78
- constructor(handlers: Array<RequestHandler | WebSocketHandler>, interceptors?: Array<Interceptor<HttpRequestEventMap>>);
79
- boundary<Args extends Array<any>, R>(callback: (...args: Args) => R): (...args: Args) => R;
81
+ /**
82
+ * @deprecated
83
+ * Please use the `defineNetwork` API instead.
84
+ */
85
+ declare class SetupServerCommonApi implements SetupServerCommon {
86
+ protected network: NetworkApi<[InterceptorSource]>;
87
+ constructor(interceptors: Array<Interceptor<any>>, handlers: Array<AnyHandler> | HandlersController);
88
+ get events(): rettime.Emitter<any>;
89
+ listen(options?: PartialDeep<ListenOptions>): void;
90
+ use(...handlers: Array<AnyHandler>): void;
91
+ resetHandlers(...nextHandlers: Array<AnyHandler>): void;
92
+ restoreHandlers(): void;
93
+ listHandlers(): ReadonlyArray<AnyHandler>;
80
94
  close(): void;
81
95
  }
82
96
 
97
+ declare const defaultNetworkOptions: DefineNetworkOptions<[InterceptorSource]>;
83
98
  /**
84
- * Sets up a requests interception in Node.js with the given request handlers.
85
- * @param {RequestHandler[]} handlers List of request handlers.
86
- *
99
+ * Enables request interception in Node.js with the given request handlers.
87
100
  * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
88
101
  */
89
- declare const setupServer: (...handlers: Array<RequestHandler | WebSocketHandler>) => SetupServerApi;
102
+ declare function setupServer(...handlers: Array<AnyHandler>): SetupServer;
103
+ /**
104
+ * @deprecated
105
+ * Please use the `defineNetwork` API instead.
106
+ */
107
+ declare class SetupServerApi extends SetupServerCommonApi implements SetupServer {
108
+ #private;
109
+ boundary: AsyncHandlersController['boundary'];
110
+ constructor(handlers: Array<AnyHandler>, interceptors: Array<Interceptor<any>>);
111
+ }
90
112
 
91
- export { type SetupServer, SetupServerApi, setupServer };
113
+ export { type SetupServer, SetupServerApi, SetupServerCommonApi, defaultNetworkOptions, setupServer };