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.
- package/lib/browser/index.d.mts +29 -19
- package/lib/browser/index.d.ts +29 -19
- package/lib/browser/index.js +1763 -1321
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +1769 -1321
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/{HttpResponse-Dj6ibgFJ.d.ts → HttpResponse-CksOMVAa.d.ts} +5 -5
- package/lib/core/{HttpResponse-Be4eT3x6.d.mts → HttpResponse-DlRR1D-f.d.mts} +5 -5
- package/lib/core/HttpResponse.d.mts +1 -1
- package/lib/core/HttpResponse.d.ts +1 -1
- package/lib/core/experimental/compat.d.mts +17 -0
- package/lib/core/experimental/compat.d.ts +17 -0
- package/lib/core/experimental/compat.js +54 -0
- package/lib/core/experimental/compat.js.map +1 -0
- package/lib/core/experimental/compat.mjs +36 -0
- package/lib/core/experimental/compat.mjs.map +1 -0
- package/lib/core/experimental/define-network.d.mts +75 -0
- package/lib/core/experimental/define-network.d.ts +75 -0
- package/lib/core/experimental/define-network.js +124 -0
- package/lib/core/experimental/define-network.js.map +1 -0
- package/lib/core/experimental/define-network.mjs +107 -0
- package/lib/core/experimental/define-network.mjs.map +1 -0
- package/lib/core/experimental/frames/http-frame.d.mts +77 -0
- package/lib/core/experimental/frames/http-frame.d.ts +77 -0
- package/lib/core/experimental/frames/http-frame.js +194 -0
- package/lib/core/experimental/frames/http-frame.js.map +1 -0
- package/lib/core/experimental/frames/http-frame.mjs +176 -0
- package/lib/core/experimental/frames/http-frame.mjs.map +1 -0
- package/lib/core/experimental/frames/network-frame.d.mts +12 -0
- package/lib/core/experimental/frames/network-frame.d.ts +12 -0
- package/lib/core/{handlers/common.js → experimental/frames/network-frame.js} +19 -3
- package/lib/core/experimental/frames/network-frame.js.map +1 -0
- package/lib/core/experimental/frames/network-frame.mjs +13 -0
- package/lib/core/experimental/frames/network-frame.mjs.map +1 -0
- package/lib/core/experimental/frames/websocket-frame.d.mts +55 -0
- package/lib/core/experimental/frames/websocket-frame.d.ts +55 -0
- package/lib/core/experimental/frames/websocket-frame.js +129 -0
- package/lib/core/experimental/frames/websocket-frame.js.map +1 -0
- package/lib/core/experimental/frames/websocket-frame.mjs +116 -0
- package/lib/core/experimental/frames/websocket-frame.mjs.map +1 -0
- package/lib/core/experimental/handlers-controller.d.mts +35 -0
- package/lib/core/experimental/handlers-controller.d.ts +35 -0
- package/lib/core/experimental/handlers-controller.js +121 -0
- package/lib/core/experimental/handlers-controller.js.map +1 -0
- package/lib/core/experimental/handlers-controller.mjs +101 -0
- package/lib/core/experimental/handlers-controller.mjs.map +1 -0
- package/lib/core/experimental/index.d.mts +17 -0
- package/lib/core/experimental/index.d.ts +17 -0
- package/lib/core/experimental/index.js +36 -0
- package/lib/core/experimental/index.js.map +1 -0
- package/lib/core/experimental/index.mjs +20 -0
- package/lib/core/experimental/index.mjs.map +1 -0
- package/lib/core/experimental/on-unhandled-frame.d.mts +12 -0
- package/lib/core/experimental/on-unhandled-frame.d.ts +12 -0
- package/lib/core/experimental/on-unhandled-frame.js +90 -0
- package/lib/core/experimental/on-unhandled-frame.js.map +1 -0
- package/lib/core/experimental/on-unhandled-frame.mjs +70 -0
- package/lib/core/experimental/on-unhandled-frame.mjs.map +1 -0
- package/lib/core/experimental/request-utils.d.mts +12 -0
- package/lib/core/experimental/request-utils.d.ts +12 -0
- package/lib/core/experimental/request-utils.js +50 -0
- package/lib/core/experimental/request-utils.js.map +1 -0
- package/lib/core/experimental/request-utils.mjs +30 -0
- package/lib/core/experimental/request-utils.mjs.map +1 -0
- package/lib/core/experimental/setup-api.d.mts +33 -0
- package/lib/core/experimental/setup-api.d.ts +33 -0
- package/lib/core/experimental/setup-api.js +61 -0
- package/lib/core/experimental/setup-api.js.map +1 -0
- package/lib/core/experimental/setup-api.mjs +43 -0
- package/lib/core/experimental/setup-api.mjs.map +1 -0
- package/lib/core/experimental/sources/interceptor-source.d.mts +28 -0
- package/lib/core/experimental/sources/interceptor-source.d.ts +28 -0
- package/lib/core/experimental/sources/interceptor-source.js +142 -0
- package/lib/core/experimental/sources/interceptor-source.js.map +1 -0
- package/lib/core/experimental/sources/interceptor-source.mjs +124 -0
- package/lib/core/experimental/sources/interceptor-source.mjs.map +1 -0
- package/lib/core/experimental/sources/network-source.d.mts +31 -0
- package/lib/core/experimental/sources/network-source.d.ts +31 -0
- package/lib/core/experimental/sources/network-source.js +50 -0
- package/lib/core/experimental/sources/network-source.js.map +1 -0
- package/lib/core/experimental/sources/network-source.mjs +30 -0
- package/lib/core/experimental/sources/network-source.mjs.map +1 -0
- package/lib/core/getResponse.d.mts +1 -1
- package/lib/core/getResponse.d.ts +1 -1
- package/lib/core/graphql.d.mts +1 -1
- package/lib/core/graphql.d.ts +1 -1
- package/lib/core/handlers/GraphQLHandler.d.mts +1 -1
- package/lib/core/handlers/GraphQLHandler.d.ts +1 -1
- package/lib/core/handlers/HttpHandler.d.mts +1 -1
- package/lib/core/handlers/HttpHandler.d.ts +1 -1
- package/lib/core/handlers/RequestHandler.d.mts +1 -1
- package/lib/core/handlers/RequestHandler.d.ts +1 -1
- package/lib/core/handlers/RequestHandler.js +5 -6
- package/lib/core/handlers/RequestHandler.js.map +1 -1
- package/lib/core/handlers/RequestHandler.mjs +5 -6
- package/lib/core/handlers/RequestHandler.mjs.map +1 -1
- package/lib/core/handlers/WebSocketHandler.d.mts +8 -4
- package/lib/core/handlers/WebSocketHandler.d.ts +8 -4
- package/lib/core/handlers/WebSocketHandler.js +18 -5
- package/lib/core/handlers/WebSocketHandler.js.map +1 -1
- package/lib/core/handlers/WebSocketHandler.mjs +18 -5
- package/lib/core/handlers/WebSocketHandler.mjs.map +1 -1
- package/lib/core/http.d.mts +1 -1
- package/lib/core/http.d.ts +1 -1
- package/lib/core/index.d.mts +7 -12
- package/lib/core/index.d.ts +7 -12
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/index.mjs +1 -1
- package/lib/core/index.mjs.map +1 -1
- package/lib/core/network-frame-B7A0ggXE.d.mts +56 -0
- package/lib/core/network-frame-usYiHS0K.d.ts +56 -0
- package/lib/core/passthrough.d.mts +1 -1
- package/lib/core/passthrough.d.ts +1 -1
- package/lib/core/sharedOptions.d.mts +6 -2
- package/lib/core/sharedOptions.d.ts +6 -2
- package/lib/core/sharedOptions.js.map +1 -1
- package/lib/core/sse.d.mts +1 -1
- package/lib/core/sse.d.ts +1 -1
- package/lib/core/sse.js.map +1 -1
- package/lib/core/sse.mjs.map +1 -1
- package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
- package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
- package/lib/core/utils/cookieStore.js.map +1 -1
- package/lib/core/utils/cookieStore.mjs.map +1 -1
- package/lib/core/utils/executeHandlers.d.mts +1 -1
- package/lib/core/utils/executeHandlers.d.ts +1 -1
- package/lib/core/utils/handleRequest.d.mts +2 -1
- package/lib/core/utils/handleRequest.d.ts +2 -1
- package/lib/core/utils/internal/isHandlerKind.d.mts +3 -3
- package/lib/core/utils/internal/isHandlerKind.d.ts +3 -3
- package/lib/core/utils/internal/isHandlerKind.js +2 -1
- package/lib/core/utils/internal/isHandlerKind.js.map +1 -1
- package/lib/core/utils/internal/isHandlerKind.mjs +2 -1
- package/lib/core/utils/internal/isHandlerKind.mjs.map +1 -1
- package/lib/core/utils/internal/parseGraphQLRequest.d.mts +1 -1
- package/lib/core/utils/internal/parseGraphQLRequest.d.ts +1 -1
- package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
- package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
- package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
- package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
- package/lib/core/utils/matching/matchRequestUrl.js +1 -1
- package/lib/core/utils/matching/matchRequestUrl.js.map +1 -1
- package/lib/core/utils/matching/matchRequestUrl.mjs +1 -1
- package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -1
- package/lib/core/utils/request/onUnhandledRequest.d.mts +2 -2
- package/lib/core/utils/request/onUnhandledRequest.d.ts +2 -2
- package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
- package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
- package/lib/core/ws/handleWebSocketEvent.d.mts +1 -1
- package/lib/core/ws/handleWebSocketEvent.d.ts +1 -1
- package/lib/core/ws/handleWebSocketEvent.js +1 -1
- package/lib/core/ws/handleWebSocketEvent.js.map +1 -1
- package/lib/core/ws/handleWebSocketEvent.mjs +1 -1
- package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -1
- package/lib/core/ws/utils/attachWebSocketLogger.d.mts +1 -1
- package/lib/core/ws/utils/attachWebSocketLogger.d.ts +1 -1
- package/lib/core/ws/utils/attachWebSocketLogger.js +39 -10
- package/lib/core/ws/utils/attachWebSocketLogger.js.map +1 -1
- package/lib/core/ws/utils/attachWebSocketLogger.mjs +39 -10
- package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +1 -1
- package/lib/core/ws.d.mts +3 -3
- package/lib/core/ws.d.ts +3 -3
- package/lib/core/ws.js.map +1 -1
- package/lib/core/ws.mjs.map +1 -1
- package/lib/iife/index.js +2022 -1433
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/lib/native/index.d.mts +21 -29
- package/lib/native/index.d.ts +21 -29
- package/lib/native/index.js +48 -116
- package/lib/native/index.js.map +1 -1
- package/lib/native/index.mjs +51 -118
- package/lib/native/index.mjs.map +1 -1
- package/lib/node/index.d.mts +55 -33
- package/lib/node/index.d.ts +55 -33
- package/lib/node/index.js +152 -154
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +156 -156
- package/lib/node/index.mjs.map +1 -1
- package/package.json +10 -2
- package/src/browser/{setupWorker/glossary.ts → glossary.ts} +16 -33
- package/src/browser/index.ts +2 -3
- package/src/browser/{setupWorker/setupWorker.node.test.ts → setup-worker.node.test.ts} +2 -4
- package/src/browser/setup-worker.ts +148 -0
- package/src/browser/sources/fallback-http-source.ts +56 -0
- package/src/browser/sources/service-worker-source.ts +455 -0
- package/src/browser/tsconfig.browser.json +7 -2
- package/src/browser/utils/deserializeRequest.ts +1 -1
- package/src/browser/{setupWorker/start/utils/getWorkerByRegistration.ts → utils/get-worker-by-registration.ts} +3 -1
- package/src/browser/{setupWorker/start/utils/getWorkerInstance.ts → utils/get-worker-instance.ts} +4 -4
- package/src/browser/utils/pruneGetRequestBody.test.ts +1 -3
- package/src/browser/utils/pruneGetRequestBody.ts +1 -1
- package/src/browser/utils/validate-worker-scope.ts +19 -0
- package/src/browser/utils/workerChannel.ts +2 -2
- package/src/core/experimental/compat.ts +50 -0
- package/src/core/experimental/define-network.test.ts +124 -0
- package/src/core/experimental/define-network.ts +215 -0
- package/src/core/experimental/frames/http-frame.test.ts +360 -0
- package/src/core/experimental/frames/http-frame.ts +271 -0
- package/src/core/experimental/frames/network-frame.ts +64 -0
- package/src/core/experimental/frames/websocket-frame.test.ts +280 -0
- package/src/core/experimental/frames/websocket-frame.ts +188 -0
- package/src/core/experimental/handlers-controller.test.ts +198 -0
- package/src/core/experimental/handlers-controller.ts +145 -0
- package/src/core/experimental/index.ts +16 -0
- package/src/core/experimental/on-unhandled-frame.test.ts +360 -0
- package/src/core/experimental/on-unhandled-frame.ts +110 -0
- package/src/core/experimental/request-utils.test.ts +70 -0
- package/src/core/experimental/request-utils.ts +39 -0
- package/src/core/experimental/setup-api.ts +59 -0
- package/src/core/experimental/sources/interceptor-source.ts +185 -0
- package/src/core/experimental/sources/network-source.test.ts +74 -0
- package/src/core/experimental/sources/network-source.ts +56 -0
- package/src/core/handlers/RequestHandler.ts +9 -10
- package/src/core/handlers/WebSocketHandler.ts +27 -11
- package/src/core/index.ts +3 -7
- package/src/core/sharedOptions.ts +9 -4
- package/src/core/sse.ts +1 -1
- package/src/core/utils/cookieStore.ts +2 -1
- package/src/core/utils/internal/isHandlerKind.test.ts +20 -22
- package/src/core/utils/internal/isHandlerKind.ts +5 -9
- package/src/core/utils/matching/matchRequestUrl.test.ts +87 -3
- package/src/core/utils/matching/matchRequestUrl.ts +2 -2
- package/src/core/utils/request/onUnhandledRequest.ts +2 -2
- package/src/core/ws/WebSocketClientManager.test.ts +2 -10
- package/src/core/ws/handleWebSocketEvent.ts +5 -1
- package/src/core/ws/utils/attachWebSocketLogger.ts +43 -11
- package/src/core/ws.test.ts +1 -3
- package/src/core/ws.ts +6 -6
- package/src/iife/index.ts +1 -1
- package/src/native/index.ts +34 -11
- package/src/node/async-handlers-controller.test.ts +50 -0
- package/src/node/async-handlers-controller.ts +69 -0
- package/src/node/glossary.ts +19 -18
- package/src/node/index.ts +6 -2
- package/src/node/setup-server-common.ts +100 -0
- package/src/node/setup-server.ts +91 -0
- package/src/tsconfig.core.json +8 -0
- package/src/tsconfig.node.json +8 -3
- package/src/tsconfig.src.json +0 -2
- package/src/tsconfig.worker.json +2 -1
- package/lib/core/SetupApi.d.mts +0 -44
- package/lib/core/SetupApi.d.ts +0 -44
- package/lib/core/SetupApi.js +0 -112
- package/lib/core/SetupApi.js.map +0 -1
- package/lib/core/SetupApi.mjs +0 -92
- package/lib/core/SetupApi.mjs.map +0 -1
- package/lib/core/handlers/common.d.mts +0 -3
- package/lib/core/handlers/common.d.ts +0 -3
- package/lib/core/handlers/common.js.map +0 -1
- package/lib/core/handlers/common.mjs +0 -1
- package/lib/core/handlers/common.mjs.map +0 -1
- package/src/browser/setupWorker/setupWorker.ts +0 -184
- package/src/browser/setupWorker/start/createFallbackRequestListener.ts +0 -71
- package/src/browser/setupWorker/start/createRequestListener.ts +0 -138
- package/src/browser/setupWorker/start/createResponseListener.ts +0 -57
- package/src/browser/setupWorker/start/createStartHandler.ts +0 -137
- package/src/browser/setupWorker/start/utils/enableMocking.ts +0 -30
- package/src/browser/setupWorker/start/utils/prepareStartHandler.test.ts +0 -59
- package/src/browser/setupWorker/start/utils/prepareStartHandler.ts +0 -44
- package/src/browser/setupWorker/start/utils/printStartMessage.test.ts +0 -84
- package/src/browser/setupWorker/start/utils/printStartMessage.ts +0 -51
- package/src/browser/setupWorker/start/utils/validateWorkerScope.ts +0 -18
- package/src/browser/setupWorker/stop/utils/printStopMessage.test.ts +0 -26
- package/src/browser/setupWorker/stop/utils/printStopMessage.ts +0 -13
- package/src/browser/utils/checkWorkerIntegrity.ts +0 -42
- package/src/core/SetupApi.ts +0 -127
- package/src/core/handlers/common.ts +0 -1
- package/src/node/SetupServerApi.ts +0 -87
- package/src/node/SetupServerCommonApi.ts +0 -169
- 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 };
|