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
@@ -0,0 +1,101 @@
1
+ import { invariant } from "outvariant";
2
+ import { devUtils } from '../utils/internal/devUtils.mjs';
3
+ function groupHandlersByKind(handlers) {
4
+ const groups = {};
5
+ for (const handler of handlers) {
6
+ ;
7
+ (groups[handler.kind] ||= []).push(handler);
8
+ }
9
+ return groups;
10
+ }
11
+ class HandlersController {
12
+ getInitialState(initialHandlers) {
13
+ invariant(
14
+ this.#validateHandlers(initialHandlers),
15
+ devUtils.formatMessage(
16
+ "[MSW] Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?"
17
+ )
18
+ );
19
+ const normalizedInitialHandlers = groupHandlersByKind(initialHandlers);
20
+ return {
21
+ initialHandlers: normalizedInitialHandlers,
22
+ handlers: { ...normalizedInitialHandlers }
23
+ };
24
+ }
25
+ currentHandlers() {
26
+ return Object.values(this.getState().handlers).flat().filter((handler) => handler != null);
27
+ }
28
+ getHandlersByKind(kind) {
29
+ return this.getState().handlers[kind] || [];
30
+ }
31
+ use(nextHandlers) {
32
+ invariant(
33
+ this.#validateHandlers(nextHandlers),
34
+ devUtils.formatMessage(
35
+ '[MSW] Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?'
36
+ )
37
+ );
38
+ if (nextHandlers.length === 0) {
39
+ return;
40
+ }
41
+ const { handlers } = this.getState();
42
+ for (let i = nextHandlers.length - 1; i >= 0; i--) {
43
+ const handler = nextHandlers[i];
44
+ handlers[handler.kind] = handlers[handler.kind] ? [handler, ...handlers[handler.kind]] : [handler];
45
+ }
46
+ this.setState({ handlers });
47
+ }
48
+ reset(nextHandlers) {
49
+ invariant(
50
+ nextHandlers.length > 0 ? this.#validateHandlers(nextHandlers) : true,
51
+ devUtils.formatMessage(
52
+ "Failed to replace initial handlers during reset: invalid handlers. Did you forget to spread the handlers array?"
53
+ )
54
+ );
55
+ const { initialHandlers } = this.getState();
56
+ if (nextHandlers.length === 0) {
57
+ this.setState({
58
+ handlers: { ...initialHandlers }
59
+ });
60
+ return;
61
+ }
62
+ const normalizedNextHandlers = groupHandlersByKind(nextHandlers);
63
+ this.setState({
64
+ initialHandlers: normalizedNextHandlers,
65
+ handlers: { ...normalizedNextHandlers }
66
+ });
67
+ }
68
+ #validateHandlers(handlers) {
69
+ return handlers.every((handler) => !Array.isArray(handler));
70
+ }
71
+ }
72
+ class InMemoryHandlersController extends HandlersController {
73
+ #handlers;
74
+ #initialHandlers;
75
+ constructor(initialHandlers) {
76
+ super();
77
+ const initialState = this.getInitialState(initialHandlers);
78
+ this.#initialHandlers = initialState.initialHandlers;
79
+ this.#handlers = initialState.handlers;
80
+ }
81
+ getState() {
82
+ return {
83
+ initialHandlers: this.#initialHandlers,
84
+ handlers: this.#handlers
85
+ };
86
+ }
87
+ setState(nextState) {
88
+ if (nextState.initialHandlers) {
89
+ this.#initialHandlers = nextState.initialHandlers;
90
+ }
91
+ if (nextState.handlers) {
92
+ this.#handlers = nextState.handlers;
93
+ }
94
+ }
95
+ }
96
+ export {
97
+ HandlersController,
98
+ InMemoryHandlersController,
99
+ groupHandlersByKind
100
+ };
101
+ //# sourceMappingURL=handlers-controller.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/experimental/handlers-controller.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { type RequestHandler } from '../handlers/RequestHandler'\nimport { type WebSocketHandler } from '../handlers/WebSocketHandler'\nimport { devUtils } from '../utils/internal/devUtils'\n\nexport type AnyHandler = RequestHandler | WebSocketHandler\nexport type HandlersMap = Partial<Record<AnyHandler['kind'], Array<AnyHandler>>>\n\nexport function groupHandlersByKind(handlers: Array<AnyHandler>): HandlersMap {\n const groups: HandlersMap = {}\n\n /**\n * @note `Object.groupBy` is not implemented in Node.js v20.\n */\n for (const handler of handlers) {\n ;(groups[handler.kind] ||= []).push(handler)\n }\n\n return groups\n}\n\nexport interface HandlersControllerState {\n initialHandlers: HandlersMap\n handlers: HandlersMap\n}\n\nexport abstract class HandlersController {\n protected getInitialState(\n initialHandlers: Array<AnyHandler>,\n ): HandlersControllerState {\n invariant(\n this.#validateHandlers(initialHandlers),\n devUtils.formatMessage(\n '[MSW] Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?',\n ),\n )\n\n const normalizedInitialHandlers = groupHandlersByKind(initialHandlers)\n\n return {\n initialHandlers: normalizedInitialHandlers,\n handlers: { ...normalizedInitialHandlers },\n }\n }\n\n protected abstract getState(): HandlersControllerState\n protected abstract setState(nextState: Partial<HandlersControllerState>): void\n\n public currentHandlers(): Array<AnyHandler> {\n return Object.values(this.getState().handlers)\n .flat()\n .filter((handler) => handler != null)\n }\n\n public getHandlersByKind(kind: AnyHandler['kind']): Array<AnyHandler> {\n return this.getState().handlers[kind] || []\n }\n\n public use(nextHandlers: Array<AnyHandler>): void {\n invariant(\n this.#validateHandlers(nextHandlers),\n devUtils.formatMessage(\n '[MSW] 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 if (nextHandlers.length === 0) {\n return\n }\n\n const { handlers } = this.getState()\n\n // Iterate over next handlers and prepend them to their respective lists.\n // Iterate in a reverse order to the keep the order of the runtime handlers as provided.\n for (let i = nextHandlers.length - 1; i >= 0; i--) {\n const handler = nextHandlers[i]\n handlers[handler.kind] = handlers[handler.kind]\n ? [handler, ...handlers[handler.kind]!]\n : [handler]\n }\n\n this.setState({ handlers })\n }\n\n public reset(nextHandlers: Array<AnyHandler>): void {\n invariant(\n nextHandlers.length > 0 ? this.#validateHandlers(nextHandlers) : true,\n devUtils.formatMessage(\n 'Failed to replace initial handlers during reset: invalid handlers. Did you forget to spread the handlers array?',\n ),\n )\n\n const { initialHandlers } = this.getState()\n\n if (nextHandlers.length === 0) {\n this.setState({\n handlers: { ...initialHandlers },\n })\n\n return\n }\n\n const normalizedNextHandlers = groupHandlersByKind(nextHandlers)\n\n this.setState({\n initialHandlers: normalizedNextHandlers,\n handlers: { ...normalizedNextHandlers },\n })\n }\n\n #validateHandlers(handlers: Array<AnyHandler>): boolean {\n return handlers.every((handler) => !Array.isArray(handler))\n }\n}\n\nexport class InMemoryHandlersController extends HandlersController {\n #handlers: HandlersMap\n #initialHandlers: HandlersMap\n\n constructor(initialHandlers: Array<AnyHandler>) {\n super()\n\n const initialState = this.getInitialState(initialHandlers)\n\n this.#initialHandlers = initialState.initialHandlers\n this.#handlers = initialState.handlers\n }\n\n protected getState(): HandlersControllerState {\n return {\n initialHandlers: this.#initialHandlers,\n handlers: this.#handlers,\n }\n }\n\n protected setState(nextState: Partial<HandlersControllerState>): void {\n if (nextState.initialHandlers) {\n this.#initialHandlers = nextState.initialHandlers\n }\n\n if (nextState.handlers) {\n this.#handlers = nextState.handlers\n }\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAG1B,SAAS,gBAAgB;AAKlB,SAAS,oBAAoB,UAA0C;AAC5E,QAAM,SAAsB,CAAC;AAK7B,aAAW,WAAW,UAAU;AAC9B;AAAC,KAAC,OAAO,QAAQ,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO;AAAA,EAC7C;AAEA,SAAO;AACT;AAOO,MAAe,mBAAmB;AAAA,EAC7B,gBACR,iBACyB;AACzB;AAAA,MACE,KAAK,kBAAkB,eAAe;AAAA,MACtC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,UAAM,4BAA4B,oBAAoB,eAAe;AAErE,WAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,UAAU,EAAE,GAAG,0BAA0B;AAAA,IAC3C;AAAA,EACF;AAAA,EAKO,kBAAqC;AAC1C,WAAO,OAAO,OAAO,KAAK,SAAS,EAAE,QAAQ,EAC1C,KAAK,EACL,OAAO,CAAC,YAAY,WAAW,IAAI;AAAA,EACxC;AAAA,EAEO,kBAAkB,MAA6C;AACpE,WAAO,KAAK,SAAS,EAAE,SAAS,IAAI,KAAK,CAAC;AAAA,EAC5C;AAAA,EAEO,IAAI,cAAuC;AAChD;AAAA,MACE,KAAK,kBAAkB,YAAY;AAAA,MACnC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,QAAI,aAAa,WAAW,GAAG;AAC7B;AAAA,IACF;AAEA,UAAM,EAAE,SAAS,IAAI,KAAK,SAAS;AAInC,aAAS,IAAI,aAAa,SAAS,GAAG,KAAK,GAAG,KAAK;AACjD,YAAM,UAAU,aAAa,CAAC;AAC9B,eAAS,QAAQ,IAAI,IAAI,SAAS,QAAQ,IAAI,IAC1C,CAAC,SAAS,GAAG,SAAS,QAAQ,IAAI,CAAE,IACpC,CAAC,OAAO;AAAA,IACd;AAEA,SAAK,SAAS,EAAE,SAAS,CAAC;AAAA,EAC5B;AAAA,EAEO,MAAM,cAAuC;AAClD;AAAA,MACE,aAAa,SAAS,IAAI,KAAK,kBAAkB,YAAY,IAAI;AAAA,MACjE,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,UAAM,EAAE,gBAAgB,IAAI,KAAK,SAAS;AAE1C,QAAI,aAAa,WAAW,GAAG;AAC7B,WAAK,SAAS;AAAA,QACZ,UAAU,EAAE,GAAG,gBAAgB;AAAA,MACjC,CAAC;AAED;AAAA,IACF;AAEA,UAAM,yBAAyB,oBAAoB,YAAY;AAE/D,SAAK,SAAS;AAAA,MACZ,iBAAiB;AAAA,MACjB,UAAU,EAAE,GAAG,uBAAuB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEA,kBAAkB,UAAsC;AACtD,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AACF;AAEO,MAAM,mCAAmC,mBAAmB;AAAA,EACjE;AAAA,EACA;AAAA,EAEA,YAAY,iBAAoC;AAC9C,UAAM;AAEN,UAAM,eAAe,KAAK,gBAAgB,eAAe;AAEzD,SAAK,mBAAmB,aAAa;AACrC,SAAK,YAAY,aAAa;AAAA,EAChC;AAAA,EAEU,WAAoC;AAC5C,WAAO;AAAA,MACL,iBAAiB,KAAK;AAAA,MACtB,UAAU,KAAK;AAAA,IACjB;AAAA,EACF;AAAA,EAEU,SAAS,WAAmD;AACpE,QAAI,UAAU,iBAAiB;AAC7B,WAAK,mBAAmB,UAAU;AAAA,IACpC;AAEA,QAAI,UAAU,UAAU;AACtB,WAAK,YAAY,UAAU;AAAA,IAC7B;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,17 @@
1
+ export { DefineNetworkOptions, defineNetwork } from './define-network.mjs';
2
+ export { NetworkSource } from './sources/network-source.mjs';
3
+ export { InterceptorSource } from './sources/interceptor-source.mjs';
4
+ export { N as NetworkFrame } from '../network-frame-B7A0ggXE.mjs';
5
+ export { HttpNetworkFrame, HttpNetworkFrameEventMap } from './frames/http-frame.mjs';
6
+ export { WebSocketNetworkFrame, WebSocketNetworkFrameEventMap } from './frames/websocket-frame.mjs';
7
+ import 'rettime';
8
+ import './handlers-controller.mjs';
9
+ import '../HttpResponse-DlRR1D-f.mjs';
10
+ import '@mswjs/interceptors';
11
+ import '../utils/internal/isIterable.mjs';
12
+ import '../typeUtils.mjs';
13
+ import 'graphql';
14
+ import '../utils/matching/matchRequestUrl.mjs';
15
+ import '../handlers/WebSocketHandler.mjs';
16
+ import 'strict-event-emitter';
17
+ import '@mswjs/interceptors/WebSocket';
@@ -0,0 +1,17 @@
1
+ export { DefineNetworkOptions, defineNetwork } from './define-network.js';
2
+ export { NetworkSource } from './sources/network-source.js';
3
+ export { InterceptorSource } from './sources/interceptor-source.js';
4
+ export { N as NetworkFrame } from '../network-frame-usYiHS0K.js';
5
+ export { HttpNetworkFrame, HttpNetworkFrameEventMap } from './frames/http-frame.js';
6
+ export { WebSocketNetworkFrame, WebSocketNetworkFrameEventMap } from './frames/websocket-frame.js';
7
+ import 'rettime';
8
+ import './handlers-controller.js';
9
+ import '../HttpResponse-CksOMVAa.js';
10
+ import '@mswjs/interceptors';
11
+ import '../utils/internal/isIterable.js';
12
+ import '../typeUtils.js';
13
+ import 'graphql';
14
+ import '../utils/matching/matchRequestUrl.js';
15
+ import '../handlers/WebSocketHandler.js';
16
+ import 'strict-event-emitter';
17
+ import '@mswjs/interceptors/WebSocket';
@@ -0,0 +1,36 @@
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 experimental_exports = {};
20
+ __export(experimental_exports, {
21
+ DefineNetworkOptions: () => import_define_network.DefineNetworkOptions,
22
+ HttpNetworkFrame: () => import_http_frame.HttpNetworkFrame,
23
+ InterceptorSource: () => import_interceptor_source.InterceptorSource,
24
+ NetworkFrame: () => import_network_frame.NetworkFrame,
25
+ NetworkSource: () => import_network_source.NetworkSource,
26
+ WebSocketNetworkFrame: () => import_websocket_frame.WebSocketNetworkFrame,
27
+ defineNetwork: () => import_define_network.defineNetwork
28
+ });
29
+ module.exports = __toCommonJS(experimental_exports);
30
+ var import_define_network = require("./define-network");
31
+ var import_network_source = require("./sources/network-source");
32
+ var import_interceptor_source = require("./sources/interceptor-source");
33
+ var import_network_frame = require("./frames/network-frame");
34
+ var import_http_frame = require("./frames/http-frame");
35
+ var import_websocket_frame = require("./frames/websocket-frame");
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/experimental/index.ts"],"sourcesContent":["export { defineNetwork, DefineNetworkOptions } from './define-network'\n\n/* Network sources */\nexport { NetworkSource } from './sources/network-source'\nexport { InterceptorSource } from './sources/interceptor-source'\n\n/* Frames */\nexport { NetworkFrame } from './frames/network-frame'\nexport {\n HttpNetworkFrame,\n type HttpNetworkFrameEventMap,\n} from './frames/http-frame'\nexport {\n WebSocketNetworkFrame,\n type WebSocketNetworkFrameEventMap,\n} from './frames/websocket-frame'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAoD;AAGpD,4BAA8B;AAC9B,gCAAkC;AAGlC,2BAA6B;AAC7B,wBAGO;AACP,6BAGO;","names":[]}
@@ -0,0 +1,20 @@
1
+ import { defineNetwork, DefineNetworkOptions } from './define-network.mjs';
2
+ import { NetworkSource } from './sources/network-source.mjs';
3
+ import { InterceptorSource } from './sources/interceptor-source.mjs';
4
+ import { NetworkFrame } from './frames/network-frame.mjs';
5
+ import {
6
+ HttpNetworkFrame
7
+ } from './frames/http-frame.mjs';
8
+ import {
9
+ WebSocketNetworkFrame
10
+ } from './frames/websocket-frame.mjs';
11
+ export {
12
+ DefineNetworkOptions,
13
+ HttpNetworkFrame,
14
+ InterceptorSource,
15
+ NetworkFrame,
16
+ NetworkSource,
17
+ WebSocketNetworkFrame,
18
+ defineNetwork
19
+ };
20
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/experimental/index.ts"],"sourcesContent":["export { defineNetwork, DefineNetworkOptions } from './define-network'\n\n/* Network sources */\nexport { NetworkSource } from './sources/network-source'\nexport { InterceptorSource } from './sources/interceptor-source'\n\n/* Frames */\nexport { NetworkFrame } from './frames/network-frame'\nexport {\n HttpNetworkFrame,\n type HttpNetworkFrameEventMap,\n} from './frames/http-frame'\nexport {\n WebSocketNetworkFrame,\n type WebSocketNetworkFrameEventMap,\n} from './frames/websocket-frame'\n"],"mappings":"AAAA,SAAS,eAAe,4BAA4B;AAGpD,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB;AAGlC,SAAS,oBAAoB;AAC7B;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,OAEK;","names":[]}
@@ -0,0 +1,12 @@
1
+ export { U as UnhandledFrameCallback, d as UnhandledFrameDefaults, b as UnhandledFrameHandle, c as UnhandledFrameStrategy, e as executeUnhandledFrameHandle } from '../network-frame-B7A0ggXE.mjs';
2
+ import 'rettime';
3
+ import './handlers-controller.mjs';
4
+ import '../HttpResponse-DlRR1D-f.mjs';
5
+ import '@mswjs/interceptors';
6
+ import '../utils/internal/isIterable.mjs';
7
+ import '../typeUtils.mjs';
8
+ import 'graphql';
9
+ import '../utils/matching/matchRequestUrl.mjs';
10
+ import '../handlers/WebSocketHandler.mjs';
11
+ import 'strict-event-emitter';
12
+ import '@mswjs/interceptors/WebSocket';
@@ -0,0 +1,12 @@
1
+ export { U as UnhandledFrameCallback, d as UnhandledFrameDefaults, b as UnhandledFrameHandle, c as UnhandledFrameStrategy, e as executeUnhandledFrameHandle } from '../network-frame-usYiHS0K.js';
2
+ import 'rettime';
3
+ import './handlers-controller.js';
4
+ import '../HttpResponse-CksOMVAa.js';
5
+ import '@mswjs/interceptors';
6
+ import '../utils/internal/isIterable.js';
7
+ import '../typeUtils.js';
8
+ import 'graphql';
9
+ import '../utils/matching/matchRequestUrl.js';
10
+ import '../handlers/WebSocketHandler.js';
11
+ import 'strict-event-emitter';
12
+ import '@mswjs/interceptors/WebSocket';
@@ -0,0 +1,90 @@
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 on_unhandled_frame_exports = {};
20
+ __export(on_unhandled_frame_exports, {
21
+ executeUnhandledFrameHandle: () => executeUnhandledFrameHandle
22
+ });
23
+ module.exports = __toCommonJS(on_unhandled_frame_exports);
24
+ var import_outvariant = require("outvariant");
25
+ var import_isCommonAssetRequest = require("../isCommonAssetRequest");
26
+ var import_devUtils = require("../utils/internal/devUtils");
27
+ var import_http_frame = require("./frames/http-frame");
28
+ async function executeUnhandledFrameHandle(frame, handle) {
29
+ const printStrategyMessage = async (strategy) => {
30
+ if (strategy === "bypass") {
31
+ return;
32
+ }
33
+ const message = await frame.getUnhandledMessage();
34
+ switch (strategy) {
35
+ case "warn": {
36
+ return import_devUtils.devUtils.warn("Warning: %s", message);
37
+ }
38
+ case "error": {
39
+ return import_devUtils.devUtils.error("Error: %s", message);
40
+ }
41
+ }
42
+ };
43
+ const applyStrategy = async (strategy) => {
44
+ import_outvariant.invariant.as(
45
+ import_devUtils.InternalError,
46
+ strategy === "bypass" || strategy === "warn" || strategy === "error",
47
+ /**
48
+ * @fixme Rename "onUnhandledRequest" to "onUnhandledFrame" in the error message
49
+ * with the next major release.
50
+ */
51
+ import_devUtils.devUtils.formatMessage(
52
+ 'Failed to react to an unhandled network frame: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',
53
+ strategy
54
+ )
55
+ );
56
+ if (strategy === "bypass") {
57
+ return;
58
+ }
59
+ await printStrategyMessage(strategy);
60
+ if (strategy === "error") {
61
+ return Promise.reject(
62
+ new import_devUtils.InternalError(
63
+ import_devUtils.devUtils.formatMessage(
64
+ 'Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'
65
+ )
66
+ )
67
+ );
68
+ }
69
+ };
70
+ if (typeof handle === "function") {
71
+ return handle({
72
+ frame,
73
+ defaults: {
74
+ warn: printStrategyMessage.bind(null, "warn"),
75
+ /**
76
+ * @note The defaults only print the corresponding messages now.
77
+ * They do not affect the frame resolution (e.g. do not error the frame).
78
+ * That is only for backward compatibility reasons. In the future, these should
79
+ * be an alias to `applyStrategy.bind(null, 'error')` instead.
80
+ */
81
+ error: printStrategyMessage.bind(null, "error")
82
+ }
83
+ });
84
+ }
85
+ if (frame instanceof import_http_frame.HttpNetworkFrame && (0, import_isCommonAssetRequest.isCommonAssetRequest)(frame.data.request)) {
86
+ return;
87
+ }
88
+ return applyStrategy(handle);
89
+ }
90
+ //# sourceMappingURL=on-unhandled-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/experimental/on-unhandled-frame.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { isCommonAssetRequest } from '../isCommonAssetRequest'\nimport { devUtils, InternalError } from '../utils/internal/devUtils'\nimport { HttpNetworkFrame } from './frames/http-frame'\nimport { type AnyNetworkFrame } from './frames/network-frame'\n\nexport type UnhandledFrameHandle =\n | UnhandledFrameStrategy\n | UnhandledFrameCallback\n\nexport type UnhandledFrameStrategy = 'bypass' | 'warn' | 'error'\n\nexport type UnhandledFrameCallback = (args: {\n frame: AnyNetworkFrame\n defaults: UnhandledFrameDefaults\n}) => Promise<void> | void\n\nexport type UnhandledFrameDefaults = {\n warn: () => void\n error: () => void\n}\n\nexport async function executeUnhandledFrameHandle(\n frame: AnyNetworkFrame,\n handle: UnhandledFrameHandle,\n): Promise<void> {\n const printStrategyMessage = async (\n strategy: UnhandledFrameStrategy,\n ): Promise<void> => {\n if (strategy === 'bypass') {\n return\n }\n\n const message = await frame.getUnhandledMessage()\n\n switch (strategy) {\n case 'warn': {\n return devUtils.warn('Warning: %s', message)\n }\n\n case 'error': {\n return devUtils.error('Error: %s', message)\n }\n }\n }\n\n const applyStrategy = async (\n strategy: UnhandledFrameStrategy,\n ): Promise<void> => {\n invariant.as(\n InternalError,\n strategy === 'bypass' || strategy === 'warn' || strategy === 'error',\n /**\n * @fixme Rename \"onUnhandledRequest\" to \"onUnhandledFrame\" in the error message\n * with the next major release.\n */\n devUtils.formatMessage(\n 'Failed to react to an unhandled network frame: unknown strategy \"%s\". Please provide one of the supported strategies (\"bypass\", \"warn\", \"error\") or a custom callback function as the value of the \"onUnhandledRequest\" option.',\n strategy,\n ),\n )\n\n if (strategy === 'bypass') {\n return\n }\n\n await printStrategyMessage(strategy)\n\n if (strategy === 'error') {\n return Promise.reject(\n new InternalError(\n devUtils.formatMessage(\n 'Cannot bypass a request when using the \"error\" strategy for the \"onUnhandledRequest\" option.',\n ),\n ),\n )\n }\n }\n\n if (typeof handle === 'function') {\n return handle({\n frame,\n defaults: {\n warn: printStrategyMessage.bind(null, 'warn'),\n /**\n * @note The defaults only print the corresponding messages now.\n * They do not affect the frame resolution (e.g. do not error the frame).\n * That is only for backward compatibility reasons. In the future, these should\n * be an alias to `applyStrategy.bind(null, 'error')` instead.\n */\n error: printStrategyMessage.bind(null, 'error'),\n },\n })\n }\n\n /**\n * Ignore unhandled common HTTP assets.\n * @note Calling this here applies the common assets check\n * only to the scenarios when `onUnhandledFrame` was set to a predefined strategy.\n * When using a custom function, you need to check for common assets manually.\n */\n if (\n frame instanceof HttpNetworkFrame &&\n isCommonAssetRequest(frame.data.request)\n ) {\n return\n }\n\n return applyStrategy(handle)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0B;AAC1B,kCAAqC;AACrC,sBAAwC;AACxC,wBAAiC;AAmBjC,eAAsB,4BACpB,OACA,QACe;AACf,QAAM,uBAAuB,OAC3B,aACkB;AAClB,QAAI,aAAa,UAAU;AACzB;AAAA,IACF;AAEA,UAAM,UAAU,MAAM,MAAM,oBAAoB;AAEhD,YAAQ,UAAU;AAAA,MAChB,KAAK,QAAQ;AACX,eAAO,yBAAS,KAAK,eAAe,OAAO;AAAA,MAC7C;AAAA,MAEA,KAAK,SAAS;AACZ,eAAO,yBAAS,MAAM,aAAa,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAEA,QAAM,gBAAgB,OACpB,aACkB;AAClB,gCAAU;AAAA,MACR;AAAA,MACA,aAAa,YAAY,aAAa,UAAU,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAK7D,yBAAS;AAAA,QACP;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,aAAa,UAAU;AACzB;AAAA,IACF;AAEA,UAAM,qBAAqB,QAAQ;AAEnC,QAAI,aAAa,SAAS;AACxB,aAAO,QAAQ;AAAA,QACb,IAAI;AAAA,UACF,yBAAS;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,WAAW,YAAY;AAChC,WAAO,OAAO;AAAA,MACZ;AAAA,MACA,UAAU;AAAA,QACR,MAAM,qBAAqB,KAAK,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAO5C,OAAO,qBAAqB,KAAK,MAAM,OAAO;AAAA,MAChD;AAAA,IACF,CAAC;AAAA,EACH;AAQA,MACE,iBAAiB,0CACjB,kDAAqB,MAAM,KAAK,OAAO,GACvC;AACA;AAAA,EACF;AAEA,SAAO,cAAc,MAAM;AAC7B;","names":[]}
@@ -0,0 +1,70 @@
1
+ import { invariant } from "outvariant";
2
+ import { isCommonAssetRequest } from '../isCommonAssetRequest.mjs';
3
+ import { devUtils, InternalError } from '../utils/internal/devUtils.mjs';
4
+ import { HttpNetworkFrame } from './frames/http-frame.mjs';
5
+ async function executeUnhandledFrameHandle(frame, handle) {
6
+ const printStrategyMessage = async (strategy) => {
7
+ if (strategy === "bypass") {
8
+ return;
9
+ }
10
+ const message = await frame.getUnhandledMessage();
11
+ switch (strategy) {
12
+ case "warn": {
13
+ return devUtils.warn("Warning: %s", message);
14
+ }
15
+ case "error": {
16
+ return devUtils.error("Error: %s", message);
17
+ }
18
+ }
19
+ };
20
+ const applyStrategy = async (strategy) => {
21
+ invariant.as(
22
+ InternalError,
23
+ strategy === "bypass" || strategy === "warn" || strategy === "error",
24
+ /**
25
+ * @fixme Rename "onUnhandledRequest" to "onUnhandledFrame" in the error message
26
+ * with the next major release.
27
+ */
28
+ devUtils.formatMessage(
29
+ 'Failed to react to an unhandled network frame: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',
30
+ strategy
31
+ )
32
+ );
33
+ if (strategy === "bypass") {
34
+ return;
35
+ }
36
+ await printStrategyMessage(strategy);
37
+ if (strategy === "error") {
38
+ return Promise.reject(
39
+ new InternalError(
40
+ devUtils.formatMessage(
41
+ 'Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'
42
+ )
43
+ )
44
+ );
45
+ }
46
+ };
47
+ if (typeof handle === "function") {
48
+ return handle({
49
+ frame,
50
+ defaults: {
51
+ warn: printStrategyMessage.bind(null, "warn"),
52
+ /**
53
+ * @note The defaults only print the corresponding messages now.
54
+ * They do not affect the frame resolution (e.g. do not error the frame).
55
+ * That is only for backward compatibility reasons. In the future, these should
56
+ * be an alias to `applyStrategy.bind(null, 'error')` instead.
57
+ */
58
+ error: printStrategyMessage.bind(null, "error")
59
+ }
60
+ });
61
+ }
62
+ if (frame instanceof HttpNetworkFrame && isCommonAssetRequest(frame.data.request)) {
63
+ return;
64
+ }
65
+ return applyStrategy(handle);
66
+ }
67
+ export {
68
+ executeUnhandledFrameHandle
69
+ };
70
+ //# sourceMappingURL=on-unhandled-frame.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/experimental/on-unhandled-frame.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { isCommonAssetRequest } from '../isCommonAssetRequest'\nimport { devUtils, InternalError } from '../utils/internal/devUtils'\nimport { HttpNetworkFrame } from './frames/http-frame'\nimport { type AnyNetworkFrame } from './frames/network-frame'\n\nexport type UnhandledFrameHandle =\n | UnhandledFrameStrategy\n | UnhandledFrameCallback\n\nexport type UnhandledFrameStrategy = 'bypass' | 'warn' | 'error'\n\nexport type UnhandledFrameCallback = (args: {\n frame: AnyNetworkFrame\n defaults: UnhandledFrameDefaults\n}) => Promise<void> | void\n\nexport type UnhandledFrameDefaults = {\n warn: () => void\n error: () => void\n}\n\nexport async function executeUnhandledFrameHandle(\n frame: AnyNetworkFrame,\n handle: UnhandledFrameHandle,\n): Promise<void> {\n const printStrategyMessage = async (\n strategy: UnhandledFrameStrategy,\n ): Promise<void> => {\n if (strategy === 'bypass') {\n return\n }\n\n const message = await frame.getUnhandledMessage()\n\n switch (strategy) {\n case 'warn': {\n return devUtils.warn('Warning: %s', message)\n }\n\n case 'error': {\n return devUtils.error('Error: %s', message)\n }\n }\n }\n\n const applyStrategy = async (\n strategy: UnhandledFrameStrategy,\n ): Promise<void> => {\n invariant.as(\n InternalError,\n strategy === 'bypass' || strategy === 'warn' || strategy === 'error',\n /**\n * @fixme Rename \"onUnhandledRequest\" to \"onUnhandledFrame\" in the error message\n * with the next major release.\n */\n devUtils.formatMessage(\n 'Failed to react to an unhandled network frame: unknown strategy \"%s\". Please provide one of the supported strategies (\"bypass\", \"warn\", \"error\") or a custom callback function as the value of the \"onUnhandledRequest\" option.',\n strategy,\n ),\n )\n\n if (strategy === 'bypass') {\n return\n }\n\n await printStrategyMessage(strategy)\n\n if (strategy === 'error') {\n return Promise.reject(\n new InternalError(\n devUtils.formatMessage(\n 'Cannot bypass a request when using the \"error\" strategy for the \"onUnhandledRequest\" option.',\n ),\n ),\n )\n }\n }\n\n if (typeof handle === 'function') {\n return handle({\n frame,\n defaults: {\n warn: printStrategyMessage.bind(null, 'warn'),\n /**\n * @note The defaults only print the corresponding messages now.\n * They do not affect the frame resolution (e.g. do not error the frame).\n * That is only for backward compatibility reasons. In the future, these should\n * be an alias to `applyStrategy.bind(null, 'error')` instead.\n */\n error: printStrategyMessage.bind(null, 'error'),\n },\n })\n }\n\n /**\n * Ignore unhandled common HTTP assets.\n * @note Calling this here applies the common assets check\n * only to the scenarios when `onUnhandledFrame` was set to a predefined strategy.\n * When using a custom function, you need to check for common assets manually.\n */\n if (\n frame instanceof HttpNetworkFrame &&\n isCommonAssetRequest(frame.data.request)\n ) {\n return\n }\n\n return applyStrategy(handle)\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;AACrC,SAAS,UAAU,qBAAqB;AACxC,SAAS,wBAAwB;AAmBjC,eAAsB,4BACpB,OACA,QACe;AACf,QAAM,uBAAuB,OAC3B,aACkB;AAClB,QAAI,aAAa,UAAU;AACzB;AAAA,IACF;AAEA,UAAM,UAAU,MAAM,MAAM,oBAAoB;AAEhD,YAAQ,UAAU;AAAA,MAChB,KAAK,QAAQ;AACX,eAAO,SAAS,KAAK,eAAe,OAAO;AAAA,MAC7C;AAAA,MAEA,KAAK,SAAS;AACZ,eAAO,SAAS,MAAM,aAAa,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAEA,QAAM,gBAAgB,OACpB,aACkB;AAClB,cAAU;AAAA,MACR;AAAA,MACA,aAAa,YAAY,aAAa,UAAU,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAK7D,SAAS;AAAA,QACP;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,aAAa,UAAU;AACzB;AAAA,IACF;AAEA,UAAM,qBAAqB,QAAQ;AAEnC,QAAI,aAAa,SAAS;AACxB,aAAO,QAAQ;AAAA,QACb,IAAI;AAAA,UACF,SAAS;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,WAAW,YAAY;AAChC,WAAO,OAAO;AAAA,MACZ;AAAA,MACA,UAAU;AAAA,QACR,MAAM,qBAAqB,KAAK,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAO5C,OAAO,qBAAqB,KAAK,MAAM,OAAO;AAAA,MAChD;AAAA,IACF,CAAC;AAAA,EACH;AAQA,MACE,iBAAiB,oBACjB,qBAAqB,MAAM,KAAK,OAAO,GACvC;AACA;AAAA,EACF;AAEA,SAAO,cAAc,MAAM;AAC7B;","names":[]}
@@ -0,0 +1,12 @@
1
+ declare const REQUEST_INTENTION_HEADER_NAME = "x-msw-intention";
2
+ declare enum RequestIntention {
3
+ passthrough = "passthrough"
4
+ }
5
+ declare function shouldBypassRequest(request: Request): boolean;
6
+ declare function isPassthroughResponse(response: Response): boolean;
7
+ /**
8
+ * Remove the internal passthrough instruction from the request's `Accept` header.
9
+ */
10
+ declare function deleteRequestPassthroughHeader(request: Request): void;
11
+
12
+ export { REQUEST_INTENTION_HEADER_NAME, RequestIntention, deleteRequestPassthroughHeader, isPassthroughResponse, shouldBypassRequest };
@@ -0,0 +1,12 @@
1
+ declare const REQUEST_INTENTION_HEADER_NAME = "x-msw-intention";
2
+ declare enum RequestIntention {
3
+ passthrough = "passthrough"
4
+ }
5
+ declare function shouldBypassRequest(request: Request): boolean;
6
+ declare function isPassthroughResponse(response: Response): boolean;
7
+ /**
8
+ * Remove the internal passthrough instruction from the request's `Accept` header.
9
+ */
10
+ declare function deleteRequestPassthroughHeader(request: Request): void;
11
+
12
+ export { REQUEST_INTENTION_HEADER_NAME, RequestIntention, deleteRequestPassthroughHeader, isPassthroughResponse, shouldBypassRequest };
@@ -0,0 +1,50 @@
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 request_utils_exports = {};
20
+ __export(request_utils_exports, {
21
+ REQUEST_INTENTION_HEADER_NAME: () => REQUEST_INTENTION_HEADER_NAME,
22
+ RequestIntention: () => RequestIntention,
23
+ deleteRequestPassthroughHeader: () => deleteRequestPassthroughHeader,
24
+ isPassthroughResponse: () => isPassthroughResponse,
25
+ shouldBypassRequest: () => shouldBypassRequest
26
+ });
27
+ module.exports = __toCommonJS(request_utils_exports);
28
+ const REQUEST_INTENTION_HEADER_NAME = "x-msw-intention";
29
+ var RequestIntention = /* @__PURE__ */ ((RequestIntention2) => {
30
+ RequestIntention2["passthrough"] = "passthrough";
31
+ return RequestIntention2;
32
+ })(RequestIntention || {});
33
+ function shouldBypassRequest(request) {
34
+ return !!request.headers.get("accept")?.includes("msw/passthrough");
35
+ }
36
+ function isPassthroughResponse(response) {
37
+ return response.status === 302 && response.headers.get(REQUEST_INTENTION_HEADER_NAME) === "passthrough" /* passthrough */;
38
+ }
39
+ function deleteRequestPassthroughHeader(request) {
40
+ const acceptHeader = request.headers.get("accept");
41
+ if (acceptHeader) {
42
+ const nextAcceptHeader = acceptHeader.replace(/(,\s+)?msw\/passthrough/, "");
43
+ if (nextAcceptHeader) {
44
+ request.headers.set("accept", nextAcceptHeader);
45
+ } else {
46
+ request.headers.delete("accept");
47
+ }
48
+ }
49
+ }
50
+ //# sourceMappingURL=request-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/experimental/request-utils.ts"],"sourcesContent":["export const REQUEST_INTENTION_HEADER_NAME = 'x-msw-intention'\n\nexport enum RequestIntention {\n passthrough = 'passthrough',\n}\n\nexport function shouldBypassRequest(request: Request): boolean {\n return !!request.headers.get('accept')?.includes('msw/passthrough')\n}\n\nexport function isPassthroughResponse(response: Response): boolean {\n return (\n response.status === 302 &&\n response.headers.get(REQUEST_INTENTION_HEADER_NAME) ===\n RequestIntention.passthrough\n )\n}\n\n/**\n * Remove the internal passthrough instruction from the request's `Accept` header.\n */\nexport function deleteRequestPassthroughHeader(request: Request): void {\n const acceptHeader = request.headers.get('accept')\n\n /**\n * @note Remove the internal bypass request header.\n * In the browser, this is done by the worker script.\n * In Node.js, it has to be done here.\n */\n if (acceptHeader) {\n const nextAcceptHeader = acceptHeader.replace(/(,\\s+)?msw\\/passthrough/, '')\n\n if (nextAcceptHeader) {\n request.headers.set('accept', nextAcceptHeader)\n } else {\n request.headers.delete('accept')\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,gCAAgC;AAEtC,IAAK,mBAAL,kBAAKA,sBAAL;AACL,EAAAA,kBAAA,iBAAc;AADJ,SAAAA;AAAA,GAAA;AAIL,SAAS,oBAAoB,SAA2B;AAC7D,SAAO,CAAC,CAAC,QAAQ,QAAQ,IAAI,QAAQ,GAAG,SAAS,iBAAiB;AACpE;AAEO,SAAS,sBAAsB,UAA6B;AACjE,SACE,SAAS,WAAW,OACpB,SAAS,QAAQ,IAAI,6BAA6B,MAChD;AAEN;AAKO,SAAS,+BAA+B,SAAwB;AACrE,QAAM,eAAe,QAAQ,QAAQ,IAAI,QAAQ;AAOjD,MAAI,cAAc;AAChB,UAAM,mBAAmB,aAAa,QAAQ,2BAA2B,EAAE;AAE3E,QAAI,kBAAkB;AACpB,cAAQ,QAAQ,IAAI,UAAU,gBAAgB;AAAA,IAChD,OAAO;AACL,cAAQ,QAAQ,OAAO,QAAQ;AAAA,IACjC;AAAA,EACF;AACF;","names":["RequestIntention"]}
@@ -0,0 +1,30 @@
1
+ const REQUEST_INTENTION_HEADER_NAME = "x-msw-intention";
2
+ var RequestIntention = /* @__PURE__ */ ((RequestIntention2) => {
3
+ RequestIntention2["passthrough"] = "passthrough";
4
+ return RequestIntention2;
5
+ })(RequestIntention || {});
6
+ function shouldBypassRequest(request) {
7
+ return !!request.headers.get("accept")?.includes("msw/passthrough");
8
+ }
9
+ function isPassthroughResponse(response) {
10
+ return response.status === 302 && response.headers.get(REQUEST_INTENTION_HEADER_NAME) === "passthrough" /* passthrough */;
11
+ }
12
+ function deleteRequestPassthroughHeader(request) {
13
+ const acceptHeader = request.headers.get("accept");
14
+ if (acceptHeader) {
15
+ const nextAcceptHeader = acceptHeader.replace(/(,\s+)?msw\/passthrough/, "");
16
+ if (nextAcceptHeader) {
17
+ request.headers.set("accept", nextAcceptHeader);
18
+ } else {
19
+ request.headers.delete("accept");
20
+ }
21
+ }
22
+ }
23
+ export {
24
+ REQUEST_INTENTION_HEADER_NAME,
25
+ RequestIntention,
26
+ deleteRequestPassthroughHeader,
27
+ isPassthroughResponse,
28
+ shouldBypassRequest
29
+ };
30
+ //# sourceMappingURL=request-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/experimental/request-utils.ts"],"sourcesContent":["export const REQUEST_INTENTION_HEADER_NAME = 'x-msw-intention'\n\nexport enum RequestIntention {\n passthrough = 'passthrough',\n}\n\nexport function shouldBypassRequest(request: Request): boolean {\n return !!request.headers.get('accept')?.includes('msw/passthrough')\n}\n\nexport function isPassthroughResponse(response: Response): boolean {\n return (\n response.status === 302 &&\n response.headers.get(REQUEST_INTENTION_HEADER_NAME) ===\n RequestIntention.passthrough\n )\n}\n\n/**\n * Remove the internal passthrough instruction from the request's `Accept` header.\n */\nexport function deleteRequestPassthroughHeader(request: Request): void {\n const acceptHeader = request.headers.get('accept')\n\n /**\n * @note Remove the internal bypass request header.\n * In the browser, this is done by the worker script.\n * In Node.js, it has to be done here.\n */\n if (acceptHeader) {\n const nextAcceptHeader = acceptHeader.replace(/(,\\s+)?msw\\/passthrough/, '')\n\n if (nextAcceptHeader) {\n request.headers.set('accept', nextAcceptHeader)\n } else {\n request.headers.delete('accept')\n }\n }\n}\n"],"mappings":"AAAO,MAAM,gCAAgC;AAEtC,IAAK,mBAAL,kBAAKA,sBAAL;AACL,EAAAA,kBAAA,iBAAc;AADJ,SAAAA;AAAA,GAAA;AAIL,SAAS,oBAAoB,SAA2B;AAC7D,SAAO,CAAC,CAAC,QAAQ,QAAQ,IAAI,QAAQ,GAAG,SAAS,iBAAiB;AACpE;AAEO,SAAS,sBAAsB,UAA6B;AACjE,SACE,SAAS,WAAW,OACpB,SAAS,QAAQ,IAAI,6BAA6B,MAChD;AAEN;AAKO,SAAS,+BAA+B,SAAwB;AACrE,QAAM,eAAe,QAAQ,QAAQ,IAAI,QAAQ;AAOjD,MAAI,cAAc;AAChB,UAAM,mBAAmB,aAAa,QAAQ,2BAA2B,EAAE;AAE3E,QAAI,kBAAkB;AACpB,cAAQ,QAAQ,IAAI,UAAU,gBAAgB;AAAA,IAChD,OAAO;AACL,cAAQ,QAAQ,OAAO,QAAQ;AAAA,IACjC;AAAA,EACF;AACF;","names":["RequestIntention"]}
@@ -0,0 +1,33 @@
1
+ import { DefaultEventMap, Emitter } from 'rettime';
2
+ import { LifeCycleEventEmitter } from '../sharedOptions.mjs';
3
+ import { HandlersController, AnyHandler } from './handlers-controller.mjs';
4
+ import { Disposable } from '../utils/internal/Disposable.mjs';
5
+ import '../utils/request/onUnhandledRequest.mjs';
6
+ import '../HttpResponse-DlRR1D-f.mjs';
7
+ import '@mswjs/interceptors';
8
+ import '../utils/internal/isIterable.mjs';
9
+ import '../typeUtils.mjs';
10
+ import 'graphql';
11
+ import '../utils/matching/matchRequestUrl.mjs';
12
+ import '../handlers/WebSocketHandler.mjs';
13
+ import 'strict-event-emitter';
14
+ import '@mswjs/interceptors/WebSocket';
15
+
16
+ /**
17
+ * Generic class for the mock API setup.
18
+ * Preserved only for backward compatibility.
19
+ * @deprecated
20
+ */
21
+ declare abstract class SetupApi<EventMap extends DefaultEventMap> extends Disposable {
22
+ protected handlersController: HandlersController;
23
+ protected emitter: Emitter<EventMap>;
24
+ protected publicEmitter: Emitter<EventMap>;
25
+ readonly events: LifeCycleEventEmitter<EventMap>;
26
+ constructor(...initialHandlers: Array<AnyHandler>);
27
+ use(...runtimeHandlers: Array<AnyHandler>): void;
28
+ restoreHandlers(): void;
29
+ resetHandlers(...nextHandlers: Array<AnyHandler>): void;
30
+ listHandlers(): ReadonlyArray<AnyHandler>;
31
+ }
32
+
33
+ export { SetupApi };
@@ -0,0 +1,33 @@
1
+ import { DefaultEventMap, Emitter } from 'rettime';
2
+ import { LifeCycleEventEmitter } from '../sharedOptions.js';
3
+ import { HandlersController, AnyHandler } from './handlers-controller.js';
4
+ import { Disposable } from '../utils/internal/Disposable.js';
5
+ import '../utils/request/onUnhandledRequest.js';
6
+ import '../HttpResponse-CksOMVAa.js';
7
+ import '@mswjs/interceptors';
8
+ import '../utils/internal/isIterable.js';
9
+ import '../typeUtils.js';
10
+ import 'graphql';
11
+ import '../utils/matching/matchRequestUrl.js';
12
+ import '../handlers/WebSocketHandler.js';
13
+ import 'strict-event-emitter';
14
+ import '@mswjs/interceptors/WebSocket';
15
+
16
+ /**
17
+ * Generic class for the mock API setup.
18
+ * Preserved only for backward compatibility.
19
+ * @deprecated
20
+ */
21
+ declare abstract class SetupApi<EventMap extends DefaultEventMap> extends Disposable {
22
+ protected handlersController: HandlersController;
23
+ protected emitter: Emitter<EventMap>;
24
+ protected publicEmitter: Emitter<EventMap>;
25
+ readonly events: LifeCycleEventEmitter<EventMap>;
26
+ constructor(...initialHandlers: Array<AnyHandler>);
27
+ use(...runtimeHandlers: Array<AnyHandler>): void;
28
+ restoreHandlers(): void;
29
+ resetHandlers(...nextHandlers: Array<AnyHandler>): void;
30
+ listHandlers(): ReadonlyArray<AnyHandler>;
31
+ }
32
+
33
+ export { SetupApi };