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,54 +1,53 @@
1
1
  import type { PartialDeep } from 'type-fest'
2
- import type { RequestHandler } from '~/core/handlers/RequestHandler'
3
- import type { WebSocketHandler } from '~/core/handlers/WebSocketHandler'
4
- import type {
5
- LifeCycleEventEmitter,
6
- LifeCycleEventsMap,
7
- SharedOptions,
8
- } from '~/core/sharedOptions'
2
+ import type { HttpNetworkFrameEventMap } from '#core/experimental/frames/http-frame'
3
+ import type { WebSocketNetworkFrameEventMap } from '#core/experimental/frames/websocket-frame'
4
+ import type { AnyHandler } from '#core/experimental/handlers-controller'
5
+ import type { LifeCycleEventEmitter, SharedOptions } from '#core/sharedOptions'
6
+
7
+ export interface ListenOptions extends SharedOptions {}
9
8
 
10
9
  export interface SetupServerCommon {
11
10
  /**
12
- * Starts requests interception based on the previously provided request handlers.
11
+ * Starts the request interception based on the previously provided request handlers.
13
12
  *
14
13
  * @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
15
14
  */
16
- listen(options?: PartialDeep<SharedOptions>): void
15
+ listen: (options?: PartialDeep<ListenOptions>) => void
17
16
 
18
17
  /**
19
- * Stops requests interception by restoring all augmented modules.
18
+ * Stops the request interception by restoring all augmented modules.
20
19
  *
21
20
  * @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
22
21
  */
23
- close(): void
22
+ close: () => void
24
23
 
25
24
  /**
26
25
  * Prepends given request handlers to the list of existing handlers.
27
26
  *
28
27
  * @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
29
28
  */
30
- use(...handlers: Array<RequestHandler | WebSocketHandler>): void
29
+ use: (...handlers: Array<AnyHandler>) => void
31
30
 
32
31
  /**
33
32
  * Marks all request handlers that respond using `res.once()` as unused.
34
33
  *
35
34
  * @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
36
35
  */
37
- restoreHandlers(): void
36
+ restoreHandlers: () => void
38
37
 
39
38
  /**
40
39
  * Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
41
40
  *
42
41
  * @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
43
42
  */
44
- resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void
43
+ resetHandlers: (...nextHandlers: Array<AnyHandler>) => void
45
44
 
46
45
  /**
47
46
  * Returns a readonly list of currently active request handlers.
48
47
  *
49
48
  * @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
50
49
  */
51
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>
50
+ listHandlers: () => ReadonlyArray<AnyHandler>
52
51
 
53
52
  /**
54
53
  * Life-cycle events.
@@ -56,7 +55,9 @@ export interface SetupServerCommon {
56
55
  *
57
56
  * @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
58
57
  */
59
- events: LifeCycleEventEmitter<LifeCycleEventsMap>
58
+ events: LifeCycleEventEmitter<
59
+ HttpNetworkFrameEventMap | WebSocketNetworkFrameEventMap
60
+ >
60
61
  }
61
62
 
62
63
  export interface SetupServer extends SetupServerCommon {
@@ -68,7 +69,7 @@ export interface SetupServer extends SetupServerCommon {
68
69
  *
69
70
  * @see {@link https://mswjs.io/docs/api/setup-server/boundary `server.boundary()` API reference}
70
71
  */
71
- boundary<Args extends Array<any>, R>(
72
+ boundary: <Args extends Array<any>, R>(
72
73
  callback: (...args: Args) => R,
73
- ): (...args: Args) => R
74
+ ) => (...args: Args) => R
74
75
  }
package/src/node/index.ts CHANGED
@@ -1,3 +1,7 @@
1
1
  export type { SetupServer } from './glossary'
2
- export { SetupServerApi } from './SetupServerApi'
3
- export { setupServer } from './setupServer'
2
+ export {
3
+ setupServer,
4
+ SetupServerApi,
5
+ defaultNetworkOptions,
6
+ } from './setup-server'
7
+ export { SetupServerCommonApi } from './setup-server-common'
@@ -0,0 +1,100 @@
1
+ import type { PartialDeep } from 'type-fest'
2
+ import { Interceptor } from '@mswjs/interceptors'
3
+ import {
4
+ type NetworkApi,
5
+ NetworkReadyState,
6
+ defineNetwork,
7
+ } from '#core/experimental/define-network'
8
+ import { type AnyHandler } from '#core/experimental/handlers-controller'
9
+ import { type HandlersController } from '#core/experimental/handlers-controller'
10
+ import { InterceptorSource } from '#core/experimental/sources/interceptor-source'
11
+ import { fromLegacyOnUnhandledRequest } from '#core/experimental/compat'
12
+ import type { ListenOptions, SetupServerCommon } from './glossary'
13
+
14
+ /**
15
+ * Define the common `setupServer` API around the given network.
16
+ * This is used by both `msw/node` and `msw/native` to implement the same
17
+ * baseline setup methods, like `.use()`, `.resetHandlers()`, `.close()`, etc.
18
+ */
19
+ export function defineSetupServerApi(
20
+ network: NetworkApi<any>,
21
+ ): SetupServerCommon {
22
+ return {
23
+ events: network.events,
24
+ listen(options) {
25
+ network.configure({
26
+ onUnhandledFrame: fromLegacyOnUnhandledRequest(() => {
27
+ return options?.onUnhandledRequest || 'warn'
28
+ }),
29
+ })
30
+
31
+ network.enable()
32
+ },
33
+ use: network.use.bind(network),
34
+ resetHandlers: network.resetHandlers.bind(network),
35
+ restoreHandlers: network.restoreHandlers.bind(network),
36
+ listHandlers: network.listHandlers.bind(network),
37
+ close() {
38
+ /**
39
+ * @note Ignore closing after closed for backwards compatibility.
40
+ */
41
+ if (network.readyState === NetworkReadyState.DISABLED) {
42
+ return
43
+ }
44
+
45
+ network.disable()
46
+ },
47
+ }
48
+ }
49
+
50
+ /**
51
+ * @deprecated
52
+ * Please use the `defineNetwork` API instead.
53
+ */
54
+ export class SetupServerCommonApi implements SetupServerCommon {
55
+ protected network: NetworkApi<[InterceptorSource]>
56
+
57
+ constructor(
58
+ interceptors: Array<Interceptor<any>>,
59
+ handlers: Array<AnyHandler> | HandlersController,
60
+ ) {
61
+ this.network = defineNetwork({
62
+ sources: [new InterceptorSource({ interceptors })],
63
+ handlers,
64
+ })
65
+ }
66
+
67
+ get events() {
68
+ return this.network.events
69
+ }
70
+
71
+ public listen(options?: PartialDeep<ListenOptions>): void {
72
+ this.network.configure({
73
+ onUnhandledFrame: fromLegacyOnUnhandledRequest(() => {
74
+ return options?.onUnhandledRequest || 'warn'
75
+ }),
76
+ })
77
+
78
+ this.network.enable()
79
+ }
80
+
81
+ public use(...handlers: Array<AnyHandler>): void {
82
+ this.network.use(...handlers)
83
+ }
84
+
85
+ public resetHandlers(...nextHandlers: Array<AnyHandler>): void {
86
+ return this.network.resetHandlers(...nextHandlers)
87
+ }
88
+
89
+ public restoreHandlers(): void {
90
+ return this.network.restoreHandlers()
91
+ }
92
+
93
+ public listHandlers(): ReadonlyArray<AnyHandler> {
94
+ return this.network.listHandlers()
95
+ }
96
+
97
+ public close(): void {
98
+ this.network.disable()
99
+ }
100
+ }
@@ -0,0 +1,91 @@
1
+ import type { Interceptor } from '@mswjs/interceptors'
2
+ import { ClientRequestInterceptor } from '@mswjs/interceptors/ClientRequest'
3
+ import { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'
4
+ import { FetchInterceptor } from '@mswjs/interceptors/fetch'
5
+ import { WebSocketInterceptor } from '@mswjs/interceptors/WebSocket'
6
+ import {
7
+ defineNetwork,
8
+ type DefineNetworkOptions,
9
+ } from '#core/experimental/define-network'
10
+ import { type AnyHandler } from '#core/experimental/handlers-controller'
11
+ import { InterceptorSource } from '#core/experimental/sources/interceptor-source'
12
+ import { SetupServer } from './glossary'
13
+ import { AsyncHandlersController } from './async-handlers-controller'
14
+ import {
15
+ defineSetupServerApi,
16
+ SetupServerCommonApi,
17
+ } from './setup-server-common'
18
+
19
+ const defaultInterceptors: Array<Interceptor<any>> = [
20
+ new ClientRequestInterceptor(),
21
+ new XMLHttpRequestInterceptor(),
22
+ new FetchInterceptor(),
23
+ /**
24
+ * @fixme WebSocketInterceptor is in a browser-only export of Interceptors
25
+ * while the Interceptor class imported from the root module points to `lib/node`.
26
+ * An absolute madness to solve as it requires to duplicate the build config we have
27
+ * in MSW: shared core, CJS/ESM patching, .d.ts patching...
28
+ */
29
+ new WebSocketInterceptor() as any,
30
+ ]
31
+
32
+ export const defaultNetworkOptions: DefineNetworkOptions<[InterceptorSource]> =
33
+ {
34
+ sources: [
35
+ new InterceptorSource({
36
+ interceptors: defaultInterceptors,
37
+ }),
38
+ ],
39
+ onUnhandledFrame: 'warn',
40
+ context: {
41
+ quiet: true,
42
+ },
43
+ }
44
+
45
+ /**
46
+ * Enables request interception in Node.js with the given request handlers.
47
+ * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
48
+ */
49
+ export function setupServer(...handlers: Array<AnyHandler>): SetupServer {
50
+ const handlersController = new AsyncHandlersController(handlers)
51
+ const network = defineNetwork({
52
+ ...defaultNetworkOptions,
53
+ handlers: handlersController,
54
+ })
55
+
56
+ const commonApi = defineSetupServerApi(network)
57
+
58
+ return {
59
+ ...commonApi,
60
+ boundary: handlersController.boundary.bind(handlersController),
61
+ }
62
+ }
63
+
64
+ /**
65
+ * @deprecated
66
+ * Please use the `defineNetwork` API instead.
67
+ */
68
+ export class SetupServerApi
69
+ extends SetupServerCommonApi
70
+ implements SetupServer
71
+ {
72
+ #handlersController: AsyncHandlersController
73
+
74
+ public boundary: AsyncHandlersController['boundary']
75
+
76
+ constructor(
77
+ handlers: Array<AnyHandler>,
78
+ interceptors: Array<Interceptor<any>>,
79
+ ) {
80
+ const controller = new AsyncHandlersController(handlers)
81
+ super(interceptors, controller)
82
+
83
+ const { sources: _, ...networkOptions } = defaultNetworkOptions
84
+ this.network.configure(networkOptions)
85
+
86
+ this.#handlersController = controller
87
+ this.boundary = this.#handlersController.boundary.bind(
88
+ this.#handlersController,
89
+ )
90
+ }
91
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.src.json",
3
+ "include": ["./core/**/*.ts"],
4
+ "files": [],
5
+ "compilerOptions": {
6
+ "composite": true
7
+ }
8
+ }
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "extends": "./tsconfig.src.json",
3
+ "include": ["./node", "./native"],
4
+ "exclude": ["**/*.test.ts"],
5
+ "references": [
6
+ {
7
+ "path": "./tsconfig.src.json"
8
+ }
9
+ ],
3
10
  "compilerOptions": {
4
11
  "types": ["node"]
5
- },
6
- "include": ["./node", "./native"],
7
- "exclude": ["**/*.test.ts"]
12
+ }
8
13
  }
@@ -1,6 +1,4 @@
1
1
  {
2
- // Common configuration for everything
3
- // living in the "src" directory.
4
2
  "extends": "../tsconfig.base.json",
5
3
  "compilerOptions": {
6
4
  "composite": true
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "include": ["./mockServiceWorker.js"],
3
+ "files": [],
3
4
  "compilerOptions": {
5
+ "composite": true,
4
6
  "strict": true,
5
7
  "allowJs": true,
6
8
  "checkJs": true,
7
- "noEmit": true,
8
9
  "target": "esnext",
9
10
  "module": "esnext",
10
11
  "lib": ["esnext"],
@@ -1,44 +0,0 @@
1
- import { EventMap, Emitter } from 'strict-event-emitter';
2
- import { R as RequestHandler } from './HttpResponse-Be4eT3x6.mjs';
3
- import { LifeCycleEventEmitter } from './sharedOptions.mjs';
4
- import { Disposable } from './utils/internal/Disposable.mjs';
5
- import { WebSocketHandler } from './handlers/WebSocketHandler.mjs';
6
- import '@mswjs/interceptors';
7
- import './utils/internal/isIterable.mjs';
8
- import './typeUtils.mjs';
9
- import 'graphql';
10
- import './utils/matching/matchRequestUrl.mjs';
11
- import './utils/request/onUnhandledRequest.mjs';
12
- import '@mswjs/interceptors/WebSocket';
13
-
14
- declare abstract class HandlersController {
15
- abstract prepend(runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
16
- abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void;
17
- abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>;
18
- }
19
- declare class InMemoryHandlersController implements HandlersController {
20
- private initialHandlers;
21
- private handlers;
22
- constructor(initialHandlers: Array<RequestHandler | WebSocketHandler>);
23
- prepend(runtimeHandles: Array<RequestHandler | WebSocketHandler>): void;
24
- reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
25
- currentHandlers(): Array<RequestHandler | WebSocketHandler>;
26
- }
27
- /**
28
- * Generic class for the mock API setup.
29
- */
30
- declare abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
31
- protected handlersController: HandlersController;
32
- protected readonly emitter: Emitter<EventsMap>;
33
- protected readonly publicEmitter: Emitter<EventsMap>;
34
- readonly events: LifeCycleEventEmitter<EventsMap>;
35
- constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>);
36
- private validateHandlers;
37
- use(...runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
38
- restoreHandlers(): void;
39
- resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
40
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
41
- private createLifeCycleEvents;
42
- }
43
-
44
- export { HandlersController, InMemoryHandlersController, SetupApi };
@@ -1,44 +0,0 @@
1
- import { EventMap, Emitter } from 'strict-event-emitter';
2
- import { R as RequestHandler } from './HttpResponse-Dj6ibgFJ.js';
3
- import { LifeCycleEventEmitter } from './sharedOptions.js';
4
- import { Disposable } from './utils/internal/Disposable.js';
5
- import { WebSocketHandler } from './handlers/WebSocketHandler.js';
6
- import '@mswjs/interceptors';
7
- import './utils/internal/isIterable.js';
8
- import './typeUtils.js';
9
- import 'graphql';
10
- import './utils/matching/matchRequestUrl.js';
11
- import './utils/request/onUnhandledRequest.js';
12
- import '@mswjs/interceptors/WebSocket';
13
-
14
- declare abstract class HandlersController {
15
- abstract prepend(runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
16
- abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void;
17
- abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>;
18
- }
19
- declare class InMemoryHandlersController implements HandlersController {
20
- private initialHandlers;
21
- private handlers;
22
- constructor(initialHandlers: Array<RequestHandler | WebSocketHandler>);
23
- prepend(runtimeHandles: Array<RequestHandler | WebSocketHandler>): void;
24
- reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
25
- currentHandlers(): Array<RequestHandler | WebSocketHandler>;
26
- }
27
- /**
28
- * Generic class for the mock API setup.
29
- */
30
- declare abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
31
- protected handlersController: HandlersController;
32
- protected readonly emitter: Emitter<EventsMap>;
33
- protected readonly publicEmitter: Emitter<EventsMap>;
34
- readonly events: LifeCycleEventEmitter<EventsMap>;
35
- constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>);
36
- private validateHandlers;
37
- use(...runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
38
- restoreHandlers(): void;
39
- resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
40
- listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
41
- private createLifeCycleEvents;
42
- }
43
-
44
- export { HandlersController, InMemoryHandlersController, SetupApi };
@@ -1,112 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var SetupApi_exports = {};
20
- __export(SetupApi_exports, {
21
- HandlersController: () => HandlersController,
22
- InMemoryHandlersController: () => InMemoryHandlersController,
23
- SetupApi: () => SetupApi
24
- });
25
- module.exports = __toCommonJS(SetupApi_exports);
26
- var import_outvariant = require("outvariant");
27
- var import_strict_event_emitter = require("strict-event-emitter");
28
- var import_devUtils = require("./utils/internal/devUtils");
29
- var import_pipeEvents = require("./utils/internal/pipeEvents");
30
- var import_toReadonlyArray = require("./utils/internal/toReadonlyArray");
31
- var import_Disposable = require("./utils/internal/Disposable");
32
- class HandlersController {
33
- }
34
- class InMemoryHandlersController {
35
- constructor(initialHandlers) {
36
- this.initialHandlers = initialHandlers;
37
- this.handlers = [...initialHandlers];
38
- }
39
- handlers;
40
- prepend(runtimeHandles) {
41
- this.handlers.unshift(...runtimeHandles);
42
- }
43
- reset(nextHandlers) {
44
- this.handlers = nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers];
45
- }
46
- currentHandlers() {
47
- return this.handlers;
48
- }
49
- }
50
- class SetupApi extends import_Disposable.Disposable {
51
- handlersController;
52
- emitter;
53
- publicEmitter;
54
- events;
55
- constructor(...initialHandlers) {
56
- super();
57
- (0, import_outvariant.invariant)(
58
- this.validateHandlers(initialHandlers),
59
- import_devUtils.devUtils.formatMessage(
60
- `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`
61
- )
62
- );
63
- this.handlersController = new InMemoryHandlersController(initialHandlers);
64
- this.emitter = new import_strict_event_emitter.Emitter();
65
- this.publicEmitter = new import_strict_event_emitter.Emitter();
66
- (0, import_pipeEvents.pipeEvents)(this.emitter, this.publicEmitter);
67
- this.events = this.createLifeCycleEvents();
68
- this.subscriptions.push(() => {
69
- this.emitter.removeAllListeners();
70
- this.publicEmitter.removeAllListeners();
71
- });
72
- }
73
- validateHandlers(handlers) {
74
- return handlers.every((handler) => !Array.isArray(handler));
75
- }
76
- use(...runtimeHandlers) {
77
- (0, import_outvariant.invariant)(
78
- this.validateHandlers(runtimeHandlers),
79
- import_devUtils.devUtils.formatMessage(
80
- `Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`
81
- )
82
- );
83
- this.handlersController.prepend(runtimeHandlers);
84
- }
85
- restoreHandlers() {
86
- this.handlersController.currentHandlers().forEach((handler) => {
87
- if ("isUsed" in handler) {
88
- handler.isUsed = false;
89
- }
90
- });
91
- }
92
- resetHandlers(...nextHandlers) {
93
- this.handlersController.reset(nextHandlers);
94
- }
95
- listHandlers() {
96
- return (0, import_toReadonlyArray.toReadonlyArray)(this.handlersController.currentHandlers());
97
- }
98
- createLifeCycleEvents() {
99
- return {
100
- on: (...args) => {
101
- return this.publicEmitter.on(...args);
102
- },
103
- removeListener: (...args) => {
104
- return this.publicEmitter.removeListener(...args);
105
- },
106
- removeAllListeners: (...args) => {
107
- return this.publicEmitter.removeAllListeners(...args);
108
- }
109
- };
110
- }
111
- }
112
- //# sourceMappingURL=SetupApi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/SetupApi.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport { RequestHandler } from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { Disposable } from './utils/internal/Disposable'\nimport type { WebSocketHandler } from './handlers/WebSocketHandler'\n\nexport abstract class HandlersController {\n abstract prepend(\n runtimeHandlers: Array<RequestHandler | WebSocketHandler>,\n ): void\n abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void\n abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>\n}\n\nexport class InMemoryHandlersController implements HandlersController {\n private handlers: Array<RequestHandler | WebSocketHandler>\n\n constructor(\n private initialHandlers: Array<RequestHandler | WebSocketHandler>,\n ) {\n this.handlers = [...initialHandlers]\n }\n\n public prepend(\n runtimeHandles: Array<RequestHandler | WebSocketHandler>,\n ): void {\n this.handlers.unshift(...runtimeHandles)\n }\n\n public reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void {\n this.handlers =\n nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n }\n\n public currentHandlers(): Array<RequestHandler | WebSocketHandler> {\n return this.handlers\n }\n}\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> extends Disposable {\n protected handlersController: HandlersController\n protected readonly emitter: Emitter<EventsMap>\n protected readonly publicEmitter: Emitter<EventsMap>\n\n public readonly events: LifeCycleEventEmitter<EventsMap>\n\n constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>) {\n super()\n\n invariant(\n this.validateHandlers(initialHandlers),\n devUtils.formatMessage(\n `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,\n ),\n )\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter<EventsMap>()\n this.publicEmitter = new Emitter<EventsMap>()\n pipeEvents(this.emitter, this.publicEmitter)\n\n this.events = this.createLifeCycleEvents()\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n private validateHandlers(handlers: ReadonlyArray<unknown>): boolean {\n // Guard against incorrect call signature of the setup API.\n return handlers.every((handler) => !Array.isArray(handler))\n }\n\n public use(\n ...runtimeHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n invariant(\n this.validateHandlers(runtimeHandlers),\n devUtils.formatMessage(\n `Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,\n ),\n )\n\n this.handlersController.prepend(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n })\n }\n\n public resetHandlers(\n ...nextHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler> {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n\n private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n return {\n on: (...args: any[]) => {\n return (this.publicEmitter.on as any)(...args)\n },\n removeListener: (...args: any[]) => {\n return (this.publicEmitter.removeListener as any)(...args)\n },\n removeAllListeners: (...args: any[]) => {\n return this.publicEmitter.removeAllListeners(...args)\n },\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0B;AAC1B,kCAAkC;AAGlC,sBAAyB;AACzB,wBAA2B;AAC3B,6BAAgC;AAChC,wBAA2B;AAGpB,MAAe,mBAAmB;AAMzC;AAEO,MAAM,2BAAyD;AAAA,EAGpE,YACU,iBACR;AADQ;AAER,SAAK,WAAW,CAAC,GAAG,eAAe;AAAA,EACrC;AAAA,EANQ;AAAA,EAQD,QACL,gBACM;AACN,SAAK,SAAS,QAAQ,GAAG,cAAc;AAAA,EACzC;AAAA,EAEO,MAAM,cAA8D;AACzE,SAAK,WACH,aAAa,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,EAC1E;AAAA,EAEO,kBAA4D;AACjE,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,iBAA6C,6BAAW;AAAA,EAClE;AAAA,EACS;AAAA,EACA;AAAA,EAEH;AAAA,EAEhB,eAAe,iBAA2D;AACxE,UAAM;AAEN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,oCAAmB;AACtC,SAAK,gBAAgB,IAAI,oCAAmB;AAC5C,sCAAW,KAAK,SAAS,KAAK,aAAa;AAE3C,SAAK,SAAS,KAAK,sBAAsB;AAEzC,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB,UAA2C;AAElE,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEO,OACF,iBACG;AACN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,mBAAmB,QAAQ,eAAe;AAAA,EACjD;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,UAAI,YAAY,SAAS;AACvB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,iBACF,cACG;AACN,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAAiE;AACtE,eAAO,wCAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AAAA,EAEQ,wBAA0D;AAChE,WAAO;AAAA,MACL,IAAI,IAAI,SAAgB;AACtB,eAAQ,KAAK,cAAc,GAAW,GAAG,IAAI;AAAA,MAC/C;AAAA,MACA,gBAAgB,IAAI,SAAgB;AAClC,eAAQ,KAAK,cAAc,eAAuB,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,oBAAoB,IAAI,SAAgB;AACtC,eAAO,KAAK,cAAc,mBAAmB,GAAG,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,92 +0,0 @@
1
- import { invariant } from "outvariant";
2
- import { Emitter } from "strict-event-emitter";
3
- import { devUtils } from './utils/internal/devUtils.mjs';
4
- import { pipeEvents } from './utils/internal/pipeEvents.mjs';
5
- import { toReadonlyArray } from './utils/internal/toReadonlyArray.mjs';
6
- import { Disposable } from './utils/internal/Disposable.mjs';
7
- class HandlersController {
8
- }
9
- class InMemoryHandlersController {
10
- constructor(initialHandlers) {
11
- this.initialHandlers = initialHandlers;
12
- this.handlers = [...initialHandlers];
13
- }
14
- handlers;
15
- prepend(runtimeHandles) {
16
- this.handlers.unshift(...runtimeHandles);
17
- }
18
- reset(nextHandlers) {
19
- this.handlers = nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers];
20
- }
21
- currentHandlers() {
22
- return this.handlers;
23
- }
24
- }
25
- class SetupApi extends Disposable {
26
- handlersController;
27
- emitter;
28
- publicEmitter;
29
- events;
30
- constructor(...initialHandlers) {
31
- super();
32
- invariant(
33
- this.validateHandlers(initialHandlers),
34
- devUtils.formatMessage(
35
- `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`
36
- )
37
- );
38
- this.handlersController = new InMemoryHandlersController(initialHandlers);
39
- this.emitter = new Emitter();
40
- this.publicEmitter = new Emitter();
41
- pipeEvents(this.emitter, this.publicEmitter);
42
- this.events = this.createLifeCycleEvents();
43
- this.subscriptions.push(() => {
44
- this.emitter.removeAllListeners();
45
- this.publicEmitter.removeAllListeners();
46
- });
47
- }
48
- validateHandlers(handlers) {
49
- return handlers.every((handler) => !Array.isArray(handler));
50
- }
51
- use(...runtimeHandlers) {
52
- invariant(
53
- this.validateHandlers(runtimeHandlers),
54
- devUtils.formatMessage(
55
- `Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`
56
- )
57
- );
58
- this.handlersController.prepend(runtimeHandlers);
59
- }
60
- restoreHandlers() {
61
- this.handlersController.currentHandlers().forEach((handler) => {
62
- if ("isUsed" in handler) {
63
- handler.isUsed = false;
64
- }
65
- });
66
- }
67
- resetHandlers(...nextHandlers) {
68
- this.handlersController.reset(nextHandlers);
69
- }
70
- listHandlers() {
71
- return toReadonlyArray(this.handlersController.currentHandlers());
72
- }
73
- createLifeCycleEvents() {
74
- return {
75
- on: (...args) => {
76
- return this.publicEmitter.on(...args);
77
- },
78
- removeListener: (...args) => {
79
- return this.publicEmitter.removeListener(...args);
80
- },
81
- removeAllListeners: (...args) => {
82
- return this.publicEmitter.removeAllListeners(...args);
83
- }
84
- };
85
- }
86
- }
87
- export {
88
- HandlersController,
89
- InMemoryHandlersController,
90
- SetupApi
91
- };
92
- //# sourceMappingURL=SetupApi.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/SetupApi.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport { RequestHandler } from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { Disposable } from './utils/internal/Disposable'\nimport type { WebSocketHandler } from './handlers/WebSocketHandler'\n\nexport abstract class HandlersController {\n abstract prepend(\n runtimeHandlers: Array<RequestHandler | WebSocketHandler>,\n ): void\n abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void\n abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>\n}\n\nexport class InMemoryHandlersController implements HandlersController {\n private handlers: Array<RequestHandler | WebSocketHandler>\n\n constructor(\n private initialHandlers: Array<RequestHandler | WebSocketHandler>,\n ) {\n this.handlers = [...initialHandlers]\n }\n\n public prepend(\n runtimeHandles: Array<RequestHandler | WebSocketHandler>,\n ): void {\n this.handlers.unshift(...runtimeHandles)\n }\n\n public reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void {\n this.handlers =\n nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n }\n\n public currentHandlers(): Array<RequestHandler | WebSocketHandler> {\n return this.handlers\n }\n}\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> extends Disposable {\n protected handlersController: HandlersController\n protected readonly emitter: Emitter<EventsMap>\n protected readonly publicEmitter: Emitter<EventsMap>\n\n public readonly events: LifeCycleEventEmitter<EventsMap>\n\n constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>) {\n super()\n\n invariant(\n this.validateHandlers(initialHandlers),\n devUtils.formatMessage(\n `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,\n ),\n )\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter<EventsMap>()\n this.publicEmitter = new Emitter<EventsMap>()\n pipeEvents(this.emitter, this.publicEmitter)\n\n this.events = this.createLifeCycleEvents()\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n private validateHandlers(handlers: ReadonlyArray<unknown>): boolean {\n // Guard against incorrect call signature of the setup API.\n return handlers.every((handler) => !Array.isArray(handler))\n }\n\n public use(\n ...runtimeHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n invariant(\n this.validateHandlers(runtimeHandlers),\n devUtils.formatMessage(\n `Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,\n ),\n )\n\n this.handlersController.prepend(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n })\n }\n\n public resetHandlers(\n ...nextHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler> {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n\n private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n return {\n on: (...args: any[]) => {\n return (this.publicEmitter.on as any)(...args)\n },\n removeListener: (...args: any[]) => {\n return (this.publicEmitter.removeListener as any)(...args)\n },\n removeAllListeners: (...args: any[]) => {\n return this.publicEmitter.removeAllListeners(...args)\n },\n }\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAmB,eAAe;AAGlC,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAGpB,MAAe,mBAAmB;AAMzC;AAEO,MAAM,2BAAyD;AAAA,EAGpE,YACU,iBACR;AADQ;AAER,SAAK,WAAW,CAAC,GAAG,eAAe;AAAA,EACrC;AAAA,EANQ;AAAA,EAQD,QACL,gBACM;AACN,SAAK,SAAS,QAAQ,GAAG,cAAc;AAAA,EACzC;AAAA,EAEO,MAAM,cAA8D;AACzE,SAAK,WACH,aAAa,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,EAC1E;AAAA,EAEO,kBAA4D;AACjE,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,iBAA6C,WAAW;AAAA,EAClE;AAAA,EACS;AAAA,EACA;AAAA,EAEH;AAAA,EAEhB,eAAe,iBAA2D;AACxE,UAAM;AAEN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,QAAmB;AACtC,SAAK,gBAAgB,IAAI,QAAmB;AAC5C,eAAW,KAAK,SAAS,KAAK,aAAa;AAE3C,SAAK,SAAS,KAAK,sBAAsB;AAEzC,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB,UAA2C;AAElE,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEO,OACF,iBACG;AACN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,mBAAmB,QAAQ,eAAe;AAAA,EACjD;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,UAAI,YAAY,SAAS;AACvB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,iBACF,cACG;AACN,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAAiE;AACtE,WAAO,gBAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AAAA,EAEQ,wBAA0D;AAChE,WAAO;AAAA,MACL,IAAI,IAAI,SAAgB;AACtB,eAAQ,KAAK,cAAc,GAAW,GAAG,IAAI;AAAA,MAC/C;AAAA,MACA,gBAAgB,IAAI,SAAgB;AAClC,eAAQ,KAAK,cAAc,eAAuB,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,oBAAoB,IAAI,SAAgB;AACtC,eAAO,KAAK,cAAc,mBAAmB,GAAG,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,3 +0,0 @@
1
- type HandlerKind = 'RequestHandler' | 'EventHandler';
2
-
3
- export type { HandlerKind };