msw 2.12.14 → 2.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) 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/request/onUnhandledRequest.d.mts +2 -2
  143. package/lib/core/utils/request/onUnhandledRequest.d.ts +2 -2
  144. package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
  145. package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
  146. package/lib/core/ws/handleWebSocketEvent.d.mts +1 -1
  147. package/lib/core/ws/handleWebSocketEvent.d.ts +1 -1
  148. package/lib/core/ws/handleWebSocketEvent.js +1 -1
  149. package/lib/core/ws/handleWebSocketEvent.js.map +1 -1
  150. package/lib/core/ws/handleWebSocketEvent.mjs +1 -1
  151. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -1
  152. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +1 -1
  153. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +1 -1
  154. package/lib/core/ws/utils/attachWebSocketLogger.js +39 -10
  155. package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -1
  156. package/lib/core/ws/utils/attachWebSocketLogger.mjs +39 -10
  157. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -1
  158. package/lib/core/ws.d.mts +3 -3
  159. package/lib/core/ws.d.ts +3 -3
  160. package/lib/core/ws.js.map +1 -1
  161. package/lib/core/ws.mjs.map +1 -1
  162. package/lib/iife/index.js +2021 -1432
  163. package/lib/iife/index.js.map +1 -1
  164. package/lib/mockServiceWorker.js +1 -1
  165. package/lib/native/index.d.mts +21 -29
  166. package/lib/native/index.d.ts +21 -29
  167. package/lib/native/index.js +48 -116
  168. package/lib/native/index.js.map +1 -1
  169. package/lib/native/index.mjs +51 -118
  170. package/lib/native/index.mjs.map +1 -1
  171. package/lib/node/index.d.mts +55 -33
  172. package/lib/node/index.d.ts +55 -33
  173. package/lib/node/index.js +152 -154
  174. package/lib/node/index.js.map +1 -1
  175. package/lib/node/index.mjs +156 -156
  176. package/lib/node/index.mjs.map +1 -1
  177. package/package.json +10 -2
  178. package/src/browser/{setupWorker/glossary.ts → glossary.ts} +16 -33
  179. package/src/browser/index.ts +2 -3
  180. package/src/browser/{setupWorker/setupWorker.node.test.ts → setup-worker.node.test.ts} +2 -4
  181. package/src/browser/setup-worker.ts +148 -0
  182. package/src/browser/sources/fallback-http-source.ts +56 -0
  183. package/src/browser/sources/service-worker-source.ts +455 -0
  184. package/src/browser/tsconfig.browser.json +7 -2
  185. package/src/browser/utils/deserializeRequest.ts +1 -1
  186. package/src/browser/{setupWorker/start/utils/getWorkerByRegistration.ts → utils/get-worker-by-registration.ts} +3 -1
  187. package/src/browser/{setupWorker/start/utils/getWorkerInstance.ts → utils/get-worker-instance.ts} +4 -4
  188. package/src/browser/utils/pruneGetRequestBody.test.ts +1 -3
  189. package/src/browser/utils/pruneGetRequestBody.ts +1 -1
  190. package/src/browser/utils/validate-worker-scope.ts +19 -0
  191. package/src/browser/utils/workerChannel.ts +2 -2
  192. package/src/core/experimental/compat.ts +50 -0
  193. package/src/core/experimental/define-network.test.ts +124 -0
  194. package/src/core/experimental/define-network.ts +215 -0
  195. package/src/core/experimental/frames/http-frame.test.ts +360 -0
  196. package/src/core/experimental/frames/http-frame.ts +271 -0
  197. package/src/core/experimental/frames/network-frame.ts +64 -0
  198. package/src/core/experimental/frames/websocket-frame.test.ts +280 -0
  199. package/src/core/experimental/frames/websocket-frame.ts +188 -0
  200. package/src/core/experimental/handlers-controller.test.ts +198 -0
  201. package/src/core/experimental/handlers-controller.ts +145 -0
  202. package/src/core/experimental/index.ts +16 -0
  203. package/src/core/experimental/on-unhandled-frame.test.ts +360 -0
  204. package/src/core/experimental/on-unhandled-frame.ts +110 -0
  205. package/src/core/experimental/request-utils.test.ts +70 -0
  206. package/src/core/experimental/request-utils.ts +39 -0
  207. package/src/core/experimental/setup-api.ts +59 -0
  208. package/src/core/experimental/sources/interceptor-source.ts +185 -0
  209. package/src/core/experimental/sources/network-source.test.ts +74 -0
  210. package/src/core/experimental/sources/network-source.ts +56 -0
  211. package/src/core/handlers/RequestHandler.ts +9 -10
  212. package/src/core/handlers/WebSocketHandler.ts +27 -11
  213. package/src/core/index.ts +3 -7
  214. package/src/core/sharedOptions.ts +9 -4
  215. package/src/core/sse.ts +1 -1
  216. package/src/core/utils/cookieStore.ts +2 -1
  217. package/src/core/utils/internal/isHandlerKind.test.ts +20 -22
  218. package/src/core/utils/internal/isHandlerKind.ts +5 -9
  219. package/src/core/utils/request/onUnhandledRequest.ts +2 -2
  220. package/src/core/ws/WebSocketClientManager.test.ts +2 -10
  221. package/src/core/ws/handleWebSocketEvent.ts +5 -1
  222. package/src/core/ws/utils/attachWebSocketLogger.ts +43 -11
  223. package/src/core/ws.test.ts +1 -3
  224. package/src/core/ws.ts +6 -6
  225. package/src/iife/index.ts +1 -1
  226. package/src/native/index.ts +34 -11
  227. package/src/node/async-handlers-controller.test.ts +50 -0
  228. package/src/node/async-handlers-controller.ts +69 -0
  229. package/src/node/glossary.ts +19 -18
  230. package/src/node/index.ts +6 -2
  231. package/src/node/setup-server-common.ts +100 -0
  232. package/src/node/setup-server.ts +91 -0
  233. package/src/tsconfig.core.json +8 -0
  234. package/src/tsconfig.node.json +8 -3
  235. package/src/tsconfig.src.json +0 -2
  236. package/src/tsconfig.worker.json +2 -1
  237. package/lib/core/SetupApi.d.mts +0 -44
  238. package/lib/core/SetupApi.d.ts +0 -44
  239. package/lib/core/SetupApi.js +0 -112
  240. package/lib/core/SetupApi.js.map +0 -1
  241. package/lib/core/SetupApi.mjs +0 -92
  242. package/lib/core/SetupApi.mjs.map +0 -1
  243. package/lib/core/handlers/common.d.mts +0 -3
  244. package/lib/core/handlers/common.d.ts +0 -3
  245. package/lib/core/handlers/common.js.map +0 -1
  246. package/lib/core/handlers/common.mjs +0 -1
  247. package/lib/core/handlers/common.mjs.map +0 -1
  248. package/src/browser/setupWorker/setupWorker.ts +0 -184
  249. package/src/browser/setupWorker/start/createFallbackRequestListener.ts +0 -71
  250. package/src/browser/setupWorker/start/createRequestListener.ts +0 -138
  251. package/src/browser/setupWorker/start/createResponseListener.ts +0 -57
  252. package/src/browser/setupWorker/start/createStartHandler.ts +0 -137
  253. package/src/browser/setupWorker/start/utils/enableMocking.ts +0 -30
  254. package/src/browser/setupWorker/start/utils/prepareStartHandler.test.ts +0 -59
  255. package/src/browser/setupWorker/start/utils/prepareStartHandler.ts +0 -44
  256. package/src/browser/setupWorker/start/utils/printStartMessage.test.ts +0 -84
  257. package/src/browser/setupWorker/start/utils/printStartMessage.ts +0 -51
  258. package/src/browser/setupWorker/start/utils/validateWorkerScope.ts +0 -18
  259. package/src/browser/setupWorker/stop/utils/printStopMessage.test.ts +0 -26
  260. package/src/browser/setupWorker/stop/utils/printStopMessage.ts +0 -13
  261. package/src/browser/utils/checkWorkerIntegrity.ts +0 -42
  262. package/src/core/SetupApi.ts +0 -127
  263. package/src/core/handlers/common.ts +0 -1
  264. package/src/node/SetupServerApi.ts +0 -87
  265. package/src/node/SetupServerCommonApi.ts +0 -169
  266. package/src/node/setupServer.ts +0 -15
@@ -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 };
@@ -1,3 +0,0 @@
1
- type HandlerKind = 'RequestHandler' | 'EventHandler';
2
-
3
- export type { HandlerKind };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/handlers/common.ts"],"sourcesContent":["export type HandlerKind = 'RequestHandler' | 'EventHandler'\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=common.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}