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,61 @@
|
|
|
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 setup_api_exports = {};
|
|
20
|
+
__export(setup_api_exports, {
|
|
21
|
+
SetupApi: () => SetupApi
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(setup_api_exports);
|
|
24
|
+
var import_rettime = require("rettime");
|
|
25
|
+
var import_handlers_controller = require("./handlers-controller");
|
|
26
|
+
var import_Disposable = require("../utils/internal/Disposable");
|
|
27
|
+
var import_toReadonlyArray = require("../utils/internal/toReadonlyArray");
|
|
28
|
+
class SetupApi extends import_Disposable.Disposable {
|
|
29
|
+
handlersController;
|
|
30
|
+
emitter;
|
|
31
|
+
publicEmitter;
|
|
32
|
+
events;
|
|
33
|
+
constructor(...initialHandlers) {
|
|
34
|
+
super();
|
|
35
|
+
this.handlersController = new import_handlers_controller.InMemoryHandlersController(initialHandlers);
|
|
36
|
+
this.emitter = new import_rettime.Emitter();
|
|
37
|
+
this.publicEmitter = new import_rettime.Emitter();
|
|
38
|
+
this.events = this.emitter;
|
|
39
|
+
this.subscriptions.push(() => {
|
|
40
|
+
this.emitter.removeAllListeners();
|
|
41
|
+
this.publicEmitter.removeAllListeners();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
use(...runtimeHandlers) {
|
|
45
|
+
this.handlersController.use(runtimeHandlers);
|
|
46
|
+
}
|
|
47
|
+
restoreHandlers() {
|
|
48
|
+
this.handlersController.currentHandlers().forEach((handler) => {
|
|
49
|
+
if ("isUsed" in handler) {
|
|
50
|
+
handler.isUsed = false;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
resetHandlers(...nextHandlers) {
|
|
55
|
+
this.handlersController.reset(nextHandlers);
|
|
56
|
+
}
|
|
57
|
+
listHandlers() {
|
|
58
|
+
return (0, import_toReadonlyArray.toReadonlyArray)(this.handlersController.currentHandlers());
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=setup-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/experimental/setup-api.ts"],"sourcesContent":["import { type DefaultEventMap, Emitter } from 'rettime'\nimport { LifeCycleEventEmitter } from '../sharedOptions'\nimport {\n AnyHandler,\n HandlersController,\n InMemoryHandlersController,\n} from './handlers-controller'\nimport { Disposable } from '../utils/internal/Disposable'\nimport { toReadonlyArray } from '../utils/internal/toReadonlyArray'\n\n/**\n * Generic class for the mock API setup.\n * Preserved only for backward compatibility.\n * @deprecated\n */\nexport abstract class SetupApi<\n EventMap extends DefaultEventMap,\n> extends Disposable {\n protected handlersController: HandlersController\n protected emitter: Emitter<EventMap>\n protected publicEmitter: Emitter<EventMap>\n\n public readonly events: LifeCycleEventEmitter<EventMap>\n\n constructor(...initialHandlers: Array<AnyHandler>) {\n super()\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter()\n this.publicEmitter = new Emitter()\n this.events = this.emitter\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n public use(...runtimeHandlers: Array<AnyHandler>): void {\n this.handlersController.use(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n })\n }\n\n public resetHandlers(...nextHandlers: Array<AnyHandler>): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<AnyHandler> {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA8C;AAE9C,iCAIO;AACP,wBAA2B;AAC3B,6BAAgC;AAOzB,MAAe,iBAEZ,6BAAW;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EAEM;AAAA,EAEhB,eAAe,iBAAoC;AACjD,UAAM;AAEN,SAAK,qBAAqB,IAAI,sDAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,uBAAQ;AAC3B,SAAK,gBAAgB,IAAI,uBAAQ;AACjC,SAAK,SAAS,KAAK;AAEnB,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEO,OAAO,iBAA0C;AACtD,SAAK,mBAAmB,IAAI,eAAe;AAAA,EAC7C;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,UAAI,YAAY,SAAS;AACvB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,iBAAiB,cAAuC;AAC7D,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAA0C;AAC/C,eAAO,wCAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AACF;","names":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Emitter } from "rettime";
|
|
2
|
+
import {
|
|
3
|
+
InMemoryHandlersController
|
|
4
|
+
} from './handlers-controller.mjs';
|
|
5
|
+
import { Disposable } from '../utils/internal/Disposable.mjs';
|
|
6
|
+
import { toReadonlyArray } from '../utils/internal/toReadonlyArray.mjs';
|
|
7
|
+
class SetupApi extends Disposable {
|
|
8
|
+
handlersController;
|
|
9
|
+
emitter;
|
|
10
|
+
publicEmitter;
|
|
11
|
+
events;
|
|
12
|
+
constructor(...initialHandlers) {
|
|
13
|
+
super();
|
|
14
|
+
this.handlersController = new InMemoryHandlersController(initialHandlers);
|
|
15
|
+
this.emitter = new Emitter();
|
|
16
|
+
this.publicEmitter = new Emitter();
|
|
17
|
+
this.events = this.emitter;
|
|
18
|
+
this.subscriptions.push(() => {
|
|
19
|
+
this.emitter.removeAllListeners();
|
|
20
|
+
this.publicEmitter.removeAllListeners();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
use(...runtimeHandlers) {
|
|
24
|
+
this.handlersController.use(runtimeHandlers);
|
|
25
|
+
}
|
|
26
|
+
restoreHandlers() {
|
|
27
|
+
this.handlersController.currentHandlers().forEach((handler) => {
|
|
28
|
+
if ("isUsed" in handler) {
|
|
29
|
+
handler.isUsed = false;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
resetHandlers(...nextHandlers) {
|
|
34
|
+
this.handlersController.reset(nextHandlers);
|
|
35
|
+
}
|
|
36
|
+
listHandlers() {
|
|
37
|
+
return toReadonlyArray(this.handlersController.currentHandlers());
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export {
|
|
41
|
+
SetupApi
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=setup-api.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/experimental/setup-api.ts"],"sourcesContent":["import { type DefaultEventMap, Emitter } from 'rettime'\nimport { LifeCycleEventEmitter } from '../sharedOptions'\nimport {\n AnyHandler,\n HandlersController,\n InMemoryHandlersController,\n} from './handlers-controller'\nimport { Disposable } from '../utils/internal/Disposable'\nimport { toReadonlyArray } from '../utils/internal/toReadonlyArray'\n\n/**\n * Generic class for the mock API setup.\n * Preserved only for backward compatibility.\n * @deprecated\n */\nexport abstract class SetupApi<\n EventMap extends DefaultEventMap,\n> extends Disposable {\n protected handlersController: HandlersController\n protected emitter: Emitter<EventMap>\n protected publicEmitter: Emitter<EventMap>\n\n public readonly events: LifeCycleEventEmitter<EventMap>\n\n constructor(...initialHandlers: Array<AnyHandler>) {\n super()\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter()\n this.publicEmitter = new Emitter()\n this.events = this.emitter\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n public use(...runtimeHandlers: Array<AnyHandler>): void {\n this.handlersController.use(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n })\n }\n\n public resetHandlers(...nextHandlers: Array<AnyHandler>): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<AnyHandler> {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n}\n"],"mappings":"AAAA,SAA+B,eAAe;AAE9C;AAAA,EAGE;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAOzB,MAAe,iBAEZ,WAAW;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EAEM;AAAA,EAEhB,eAAe,iBAAoC;AACjD,UAAM;AAEN,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,QAAQ;AAC3B,SAAK,gBAAgB,IAAI,QAAQ;AACjC,SAAK,SAAS,KAAK;AAEnB,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEO,OAAO,iBAA0C;AACtD,SAAK,mBAAmB,IAAI,eAAe;AAAA,EAC7C;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,UAAI,YAAY,SAAS;AACvB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,iBAAiB,cAAuC;AAC7D,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAA0C;AAC/C,WAAO,gBAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AACF;","names":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
|
|
2
|
+
import { WebSocketEventMap } from '@mswjs/interceptors/WebSocket';
|
|
3
|
+
import { NetworkSource } from './network-source.mjs';
|
|
4
|
+
import 'rettime';
|
|
5
|
+
import '../../network-frame-B7A0ggXE.mjs';
|
|
6
|
+
import '../handlers-controller.mjs';
|
|
7
|
+
import '../../HttpResponse-DlRR1D-f.mjs';
|
|
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
|
+
|
|
15
|
+
interface InterceptorSourceOptions {
|
|
16
|
+
interceptors: Array<Interceptor<HttpRequestEventMap | WebSocketEventMap>>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a network source from the given list of interceptors.
|
|
20
|
+
*/
|
|
21
|
+
declare class InterceptorSource extends NetworkSource {
|
|
22
|
+
#private;
|
|
23
|
+
constructor(options: InterceptorSourceOptions);
|
|
24
|
+
enable(): void;
|
|
25
|
+
disable(): void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { InterceptorSource, type InterceptorSourceOptions };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
|
|
2
|
+
import { WebSocketEventMap } from '@mswjs/interceptors/WebSocket';
|
|
3
|
+
import { NetworkSource } from './network-source.js';
|
|
4
|
+
import 'rettime';
|
|
5
|
+
import '../../network-frame-usYiHS0K.js';
|
|
6
|
+
import '../handlers-controller.js';
|
|
7
|
+
import '../../HttpResponse-CksOMVAa.js';
|
|
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
|
+
|
|
15
|
+
interface InterceptorSourceOptions {
|
|
16
|
+
interceptors: Array<Interceptor<HttpRequestEventMap | WebSocketEventMap>>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a network source from the given list of interceptors.
|
|
20
|
+
*/
|
|
21
|
+
declare class InterceptorSource extends NetworkSource {
|
|
22
|
+
#private;
|
|
23
|
+
constructor(options: InterceptorSourceOptions);
|
|
24
|
+
enable(): void;
|
|
25
|
+
disable(): void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { InterceptorSource, type InterceptorSourceOptions };
|
|
@@ -0,0 +1,142 @@
|
|
|
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 interceptor_source_exports = {};
|
|
20
|
+
__export(interceptor_source_exports, {
|
|
21
|
+
InterceptorSource: () => InterceptorSource
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(interceptor_source_exports);
|
|
24
|
+
var import_interceptors = require("@mswjs/interceptors");
|
|
25
|
+
var import_network_source = require("./network-source");
|
|
26
|
+
var import_devUtils = require("../../utils/internal/devUtils");
|
|
27
|
+
var import_http_frame = require("../frames/http-frame");
|
|
28
|
+
var import_websocket_frame = require("../frames/websocket-frame");
|
|
29
|
+
var import_request_utils = require("../request-utils");
|
|
30
|
+
class InterceptorSource extends import_network_source.NetworkSource {
|
|
31
|
+
#interceptor;
|
|
32
|
+
#frames;
|
|
33
|
+
constructor(options) {
|
|
34
|
+
super();
|
|
35
|
+
this.#interceptor = new import_interceptors.BatchInterceptor({
|
|
36
|
+
name: "interceptor-source",
|
|
37
|
+
interceptors: options.interceptors
|
|
38
|
+
});
|
|
39
|
+
this.#frames = /* @__PURE__ */ new Map();
|
|
40
|
+
}
|
|
41
|
+
enable() {
|
|
42
|
+
this.#interceptor.apply();
|
|
43
|
+
this.#interceptor.on("request", this.#handleRequest.bind(this)).on("response", this.#handleResponse.bind(this)).on("connection", this.#handleWebSocketConnection.bind(this));
|
|
44
|
+
}
|
|
45
|
+
disable() {
|
|
46
|
+
super.disable();
|
|
47
|
+
this.#interceptor.dispose();
|
|
48
|
+
this.#frames.clear();
|
|
49
|
+
}
|
|
50
|
+
async #handleRequest({
|
|
51
|
+
requestId,
|
|
52
|
+
request,
|
|
53
|
+
controller
|
|
54
|
+
}) {
|
|
55
|
+
const httpFrame = new InterceptorHttpNetworkFrame({
|
|
56
|
+
id: requestId,
|
|
57
|
+
request,
|
|
58
|
+
controller
|
|
59
|
+
});
|
|
60
|
+
this.#frames.set(requestId, httpFrame);
|
|
61
|
+
await this.queue(httpFrame);
|
|
62
|
+
}
|
|
63
|
+
async #handleResponse({
|
|
64
|
+
requestId,
|
|
65
|
+
request,
|
|
66
|
+
response,
|
|
67
|
+
isMockedResponse
|
|
68
|
+
}) {
|
|
69
|
+
const httpFrame = this.#frames.get(requestId);
|
|
70
|
+
this.#frames.delete(requestId);
|
|
71
|
+
if (httpFrame == null) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
queueMicrotask(() => {
|
|
75
|
+
httpFrame.events.emit(
|
|
76
|
+
new import_http_frame.ResponseEvent(
|
|
77
|
+
isMockedResponse ? "response:mocked" : "response:bypass",
|
|
78
|
+
{
|
|
79
|
+
requestId,
|
|
80
|
+
request,
|
|
81
|
+
response
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async #handleWebSocketConnection(connection) {
|
|
88
|
+
await this.queue(
|
|
89
|
+
new InterceptorWebSocketNetworkFrame({
|
|
90
|
+
connection
|
|
91
|
+
})
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
class InterceptorHttpNetworkFrame extends import_http_frame.HttpNetworkFrame {
|
|
96
|
+
#controller;
|
|
97
|
+
constructor(options) {
|
|
98
|
+
super({
|
|
99
|
+
id: options.id,
|
|
100
|
+
request: options.request
|
|
101
|
+
});
|
|
102
|
+
this.#controller = options.controller;
|
|
103
|
+
}
|
|
104
|
+
passthrough() {
|
|
105
|
+
(0, import_request_utils.deleteRequestPassthroughHeader)(this.data.request);
|
|
106
|
+
}
|
|
107
|
+
respondWith(response) {
|
|
108
|
+
if (response) {
|
|
109
|
+
this.#controller.respondWith(response);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
errorWith(reason) {
|
|
113
|
+
if (reason instanceof Response) {
|
|
114
|
+
return this.respondWith(reason);
|
|
115
|
+
}
|
|
116
|
+
if (reason instanceof import_devUtils.InternalError) {
|
|
117
|
+
this.#controller.errorWith(reason);
|
|
118
|
+
}
|
|
119
|
+
throw reason;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
class InterceptorWebSocketNetworkFrame extends import_websocket_frame.WebSocketNetworkFrame {
|
|
123
|
+
constructor(args) {
|
|
124
|
+
super({ connection: args.connection });
|
|
125
|
+
}
|
|
126
|
+
errorWith(reason) {
|
|
127
|
+
if (reason instanceof Error) {
|
|
128
|
+
const { client } = this.data.connection;
|
|
129
|
+
const errorEvent = new Event("error");
|
|
130
|
+
Object.defineProperty(errorEvent, "cause", {
|
|
131
|
+
enumerable: true,
|
|
132
|
+
configurable: false,
|
|
133
|
+
value: reason
|
|
134
|
+
});
|
|
135
|
+
client.socket.dispatchEvent(errorEvent);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
passthrough() {
|
|
139
|
+
this.data.connection.server.connect();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=interceptor-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/experimental/sources/interceptor-source.ts"],"sourcesContent":["import {\n BatchInterceptor,\n Interceptor,\n RequestController,\n type HttpRequestEventMap,\n} from '@mswjs/interceptors'\nimport type {\n WebSocketConnectionData,\n WebSocketEventMap,\n} from '@mswjs/interceptors/WebSocket'\nimport { NetworkSource } from './network-source'\nimport { InternalError } from '../../utils/internal/devUtils'\nimport { HttpNetworkFrame, ResponseEvent } from '../frames/http-frame'\nimport { WebSocketNetworkFrame } from '../frames/websocket-frame'\nimport { deleteRequestPassthroughHeader } from '../request-utils'\n\nexport interface InterceptorSourceOptions {\n interceptors: Array<Interceptor<HttpRequestEventMap | WebSocketEventMap>>\n}\n\n/**\n * Create a network source from the given list of interceptors.\n */\nexport class InterceptorSource extends NetworkSource {\n #interceptor: BatchInterceptor<\n InterceptorSourceOptions['interceptors'],\n HttpRequestEventMap | WebSocketEventMap\n >\n\n #frames: Map<string, HttpNetworkFrame>\n\n constructor(options: InterceptorSourceOptions) {\n super()\n\n this.#interceptor = new BatchInterceptor({\n name: 'interceptor-source',\n interceptors: options.interceptors,\n })\n this.#frames = new Map()\n }\n\n public enable(): void {\n this.#interceptor.apply()\n\n /**\n * @todo @fixme BatchInterceptor infers event types but not listener types.\n */\n this.#interceptor\n .on('request', this.#handleRequest.bind(this) as any)\n .on('response', this.#handleResponse.bind(this) as any)\n .on('connection', this.#handleWebSocketConnection.bind(this) as any)\n }\n\n public disable(): void {\n super.disable()\n this.#interceptor.dispose()\n\n /**\n * @todo We can also abort any pending frames here, given we implement\n * the `NetworkFrame.abort()` method.\n */\n this.#frames.clear()\n }\n\n async #handleRequest({\n requestId,\n request,\n controller,\n }: HttpRequestEventMap['request'][0]): Promise<void> {\n const httpFrame = new InterceptorHttpNetworkFrame({\n id: requestId,\n request,\n controller,\n })\n\n this.#frames.set(requestId, httpFrame)\n await this.queue(httpFrame)\n }\n\n async #handleResponse({\n requestId,\n request,\n response,\n isMockedResponse,\n }: HttpRequestEventMap['response'][0]): Promise<void> {\n const httpFrame = this.#frames.get(requestId)\n this.#frames.delete(requestId)\n\n if (httpFrame == null) {\n return\n }\n\n queueMicrotask(() => {\n httpFrame.events.emit(\n new ResponseEvent(\n isMockedResponse ? 'response:mocked' : 'response:bypass',\n {\n requestId,\n request,\n response,\n },\n ),\n )\n })\n }\n\n async #handleWebSocketConnection(\n connection: WebSocketEventMap['connection'][0],\n ): Promise<void> {\n await this.queue(\n new InterceptorWebSocketNetworkFrame({\n connection,\n }),\n )\n }\n}\n\nclass InterceptorHttpNetworkFrame extends HttpNetworkFrame {\n #controller: RequestController\n\n constructor(options: {\n id: string\n request: Request\n controller: RequestController\n }) {\n super({\n id: options.id,\n request: options.request,\n })\n\n this.#controller = options.controller\n }\n\n public passthrough(): void {\n deleteRequestPassthroughHeader(this.data.request)\n }\n\n public respondWith(response?: Response): void {\n if (response) {\n this.#controller.respondWith(response)\n }\n }\n\n public errorWith(reason?: unknown): void {\n if (reason instanceof Response) {\n return this.respondWith(reason)\n }\n\n if (reason instanceof InternalError) {\n this.#controller.errorWith(reason)\n }\n\n throw reason\n }\n}\n\nclass InterceptorWebSocketNetworkFrame extends WebSocketNetworkFrame {\n constructor(args: { connection: WebSocketConnectionData }) {\n super({ connection: args.connection })\n }\n\n public errorWith(reason?: unknown): void {\n if (reason instanceof Error) {\n const { client } = this.data.connection\n\n /**\n * Use `client.errorWith(reason)` in the future.\n * @see https://github.com/mswjs/interceptors/issues/747\n */\n const errorEvent = new Event('error')\n\n Object.defineProperty(errorEvent, 'cause', {\n enumerable: true,\n configurable: false,\n value: reason,\n })\n\n client.socket.dispatchEvent(errorEvent)\n }\n }\n\n public passthrough() {\n this.data.connection.server.connect()\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BatchInterceptor
|
|
3
|
+
} from "@mswjs/interceptors";
|
|
4
|
+
import { NetworkSource } from './network-source.mjs';
|
|
5
|
+
import { InternalError } from '../../utils/internal/devUtils.mjs';
|
|
6
|
+
import { HttpNetworkFrame, ResponseEvent } from '../frames/http-frame.mjs';
|
|
7
|
+
import { WebSocketNetworkFrame } from '../frames/websocket-frame.mjs';
|
|
8
|
+
import { deleteRequestPassthroughHeader } from '../request-utils.mjs';
|
|
9
|
+
class InterceptorSource extends NetworkSource {
|
|
10
|
+
#interceptor;
|
|
11
|
+
#frames;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super();
|
|
14
|
+
this.#interceptor = new BatchInterceptor({
|
|
15
|
+
name: "interceptor-source",
|
|
16
|
+
interceptors: options.interceptors
|
|
17
|
+
});
|
|
18
|
+
this.#frames = /* @__PURE__ */ new Map();
|
|
19
|
+
}
|
|
20
|
+
enable() {
|
|
21
|
+
this.#interceptor.apply();
|
|
22
|
+
this.#interceptor.on("request", this.#handleRequest.bind(this)).on("response", this.#handleResponse.bind(this)).on("connection", this.#handleWebSocketConnection.bind(this));
|
|
23
|
+
}
|
|
24
|
+
disable() {
|
|
25
|
+
super.disable();
|
|
26
|
+
this.#interceptor.dispose();
|
|
27
|
+
this.#frames.clear();
|
|
28
|
+
}
|
|
29
|
+
async #handleRequest({
|
|
30
|
+
requestId,
|
|
31
|
+
request,
|
|
32
|
+
controller
|
|
33
|
+
}) {
|
|
34
|
+
const httpFrame = new InterceptorHttpNetworkFrame({
|
|
35
|
+
id: requestId,
|
|
36
|
+
request,
|
|
37
|
+
controller
|
|
38
|
+
});
|
|
39
|
+
this.#frames.set(requestId, httpFrame);
|
|
40
|
+
await this.queue(httpFrame);
|
|
41
|
+
}
|
|
42
|
+
async #handleResponse({
|
|
43
|
+
requestId,
|
|
44
|
+
request,
|
|
45
|
+
response,
|
|
46
|
+
isMockedResponse
|
|
47
|
+
}) {
|
|
48
|
+
const httpFrame = this.#frames.get(requestId);
|
|
49
|
+
this.#frames.delete(requestId);
|
|
50
|
+
if (httpFrame == null) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
queueMicrotask(() => {
|
|
54
|
+
httpFrame.events.emit(
|
|
55
|
+
new ResponseEvent(
|
|
56
|
+
isMockedResponse ? "response:mocked" : "response:bypass",
|
|
57
|
+
{
|
|
58
|
+
requestId,
|
|
59
|
+
request,
|
|
60
|
+
response
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async #handleWebSocketConnection(connection) {
|
|
67
|
+
await this.queue(
|
|
68
|
+
new InterceptorWebSocketNetworkFrame({
|
|
69
|
+
connection
|
|
70
|
+
})
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
class InterceptorHttpNetworkFrame extends HttpNetworkFrame {
|
|
75
|
+
#controller;
|
|
76
|
+
constructor(options) {
|
|
77
|
+
super({
|
|
78
|
+
id: options.id,
|
|
79
|
+
request: options.request
|
|
80
|
+
});
|
|
81
|
+
this.#controller = options.controller;
|
|
82
|
+
}
|
|
83
|
+
passthrough() {
|
|
84
|
+
deleteRequestPassthroughHeader(this.data.request);
|
|
85
|
+
}
|
|
86
|
+
respondWith(response) {
|
|
87
|
+
if (response) {
|
|
88
|
+
this.#controller.respondWith(response);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
errorWith(reason) {
|
|
92
|
+
if (reason instanceof Response) {
|
|
93
|
+
return this.respondWith(reason);
|
|
94
|
+
}
|
|
95
|
+
if (reason instanceof InternalError) {
|
|
96
|
+
this.#controller.errorWith(reason);
|
|
97
|
+
}
|
|
98
|
+
throw reason;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
class InterceptorWebSocketNetworkFrame extends WebSocketNetworkFrame {
|
|
102
|
+
constructor(args) {
|
|
103
|
+
super({ connection: args.connection });
|
|
104
|
+
}
|
|
105
|
+
errorWith(reason) {
|
|
106
|
+
if (reason instanceof Error) {
|
|
107
|
+
const { client } = this.data.connection;
|
|
108
|
+
const errorEvent = new Event("error");
|
|
109
|
+
Object.defineProperty(errorEvent, "cause", {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
configurable: false,
|
|
112
|
+
value: reason
|
|
113
|
+
});
|
|
114
|
+
client.socket.dispatchEvent(errorEvent);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
passthrough() {
|
|
118
|
+
this.data.connection.server.connect();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export {
|
|
122
|
+
InterceptorSource
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=interceptor-source.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/experimental/sources/interceptor-source.ts"],"sourcesContent":["import {\n BatchInterceptor,\n Interceptor,\n RequestController,\n type HttpRequestEventMap,\n} from '@mswjs/interceptors'\nimport type {\n WebSocketConnectionData,\n WebSocketEventMap,\n} from '@mswjs/interceptors/WebSocket'\nimport { NetworkSource } from './network-source'\nimport { InternalError } from '../../utils/internal/devUtils'\nimport { HttpNetworkFrame, ResponseEvent } from '../frames/http-frame'\nimport { WebSocketNetworkFrame } from '../frames/websocket-frame'\nimport { deleteRequestPassthroughHeader } from '../request-utils'\n\nexport interface InterceptorSourceOptions {\n interceptors: Array<Interceptor<HttpRequestEventMap | WebSocketEventMap>>\n}\n\n/**\n * Create a network source from the given list of interceptors.\n */\nexport class InterceptorSource extends NetworkSource {\n #interceptor: BatchInterceptor<\n InterceptorSourceOptions['interceptors'],\n HttpRequestEventMap | WebSocketEventMap\n >\n\n #frames: Map<string, HttpNetworkFrame>\n\n constructor(options: InterceptorSourceOptions) {\n super()\n\n this.#interceptor = new BatchInterceptor({\n name: 'interceptor-source',\n interceptors: options.interceptors,\n })\n this.#frames = new Map()\n }\n\n public enable(): void {\n this.#interceptor.apply()\n\n /**\n * @todo @fixme BatchInterceptor infers event types but not listener types.\n */\n this.#interceptor\n .on('request', this.#handleRequest.bind(this) as any)\n .on('response', this.#handleResponse.bind(this) as any)\n .on('connection', this.#handleWebSocketConnection.bind(this) as any)\n }\n\n public disable(): void {\n super.disable()\n this.#interceptor.dispose()\n\n /**\n * @todo We can also abort any pending frames here, given we implement\n * the `NetworkFrame.abort()` method.\n */\n this.#frames.clear()\n }\n\n async #handleRequest({\n requestId,\n request,\n controller,\n }: HttpRequestEventMap['request'][0]): Promise<void> {\n const httpFrame = new InterceptorHttpNetworkFrame({\n id: requestId,\n request,\n controller,\n })\n\n this.#frames.set(requestId, httpFrame)\n await this.queue(httpFrame)\n }\n\n async #handleResponse({\n requestId,\n request,\n response,\n isMockedResponse,\n }: HttpRequestEventMap['response'][0]): Promise<void> {\n const httpFrame = this.#frames.get(requestId)\n this.#frames.delete(requestId)\n\n if (httpFrame == null) {\n return\n }\n\n queueMicrotask(() => {\n httpFrame.events.emit(\n new ResponseEvent(\n isMockedResponse ? 'response:mocked' : 'response:bypass',\n {\n requestId,\n request,\n response,\n },\n ),\n )\n })\n }\n\n async #handleWebSocketConnection(\n connection: WebSocketEventMap['connection'][0],\n ): Promise<void> {\n await this.queue(\n new InterceptorWebSocketNetworkFrame({\n connection,\n }),\n )\n }\n}\n\nclass InterceptorHttpNetworkFrame extends HttpNetworkFrame {\n #controller: RequestController\n\n constructor(options: {\n id: string\n request: Request\n controller: RequestController\n }) {\n super({\n id: options.id,\n request: options.request,\n })\n\n this.#controller = options.controller\n }\n\n public passthrough(): void {\n deleteRequestPassthroughHeader(this.data.request)\n }\n\n public respondWith(response?: Response): void {\n if (response) {\n this.#controller.respondWith(response)\n }\n }\n\n public errorWith(reason?: unknown): void {\n if (reason instanceof Response) {\n return this.respondWith(reason)\n }\n\n if (reason instanceof InternalError) {\n this.#controller.errorWith(reason)\n }\n\n throw reason\n }\n}\n\nclass InterceptorWebSocketNetworkFrame extends WebSocketNetworkFrame {\n constructor(args: { connection: WebSocketConnectionData }) {\n super({ connection: args.connection })\n }\n\n public errorWith(reason?: unknown): void {\n if (reason instanceof Error) {\n const { client } = this.data.connection\n\n /**\n * Use `client.errorWith(reason)` in the future.\n * @see https://github.com/mswjs/interceptors/issues/747\n */\n const errorEvent = new Event('error')\n\n Object.defineProperty(errorEvent, 'cause', {\n enumerable: true,\n configurable: false,\n value: reason,\n })\n\n client.socket.dispatchEvent(errorEvent)\n }\n }\n\n public passthrough() {\n this.data.connection.server.connect()\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Emitter, TypedEvent, TypedListenerOptions } from 'rettime';
|
|
2
|
+
import { A as AnyNetworkFrame, E as ExtractFrameEvents } from '../../network-frame-B7A0ggXE.mjs';
|
|
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';
|
|
13
|
+
|
|
14
|
+
declare class NetworkFrameEvent<DataType = void, ReturnType = void, EventType extends string = string> extends TypedEvent<DataType, ReturnType, EventType> {
|
|
15
|
+
frame: AnyNetworkFrame;
|
|
16
|
+
constructor(type: string, frame: AnyNetworkFrame);
|
|
17
|
+
}
|
|
18
|
+
type NetworkSourceEventMap<Frame extends AnyNetworkFrame> = {
|
|
19
|
+
frame: NetworkFrameEvent<Frame>;
|
|
20
|
+
};
|
|
21
|
+
type ExtractSourceEvents<Source> = Source extends NetworkSource<infer Frame> ? ExtractFrameEvents<Frame> : never;
|
|
22
|
+
declare abstract class NetworkSource<Frame extends AnyNetworkFrame = AnyNetworkFrame> {
|
|
23
|
+
protected emitter: Emitter<NetworkSourceEventMap<Frame>>;
|
|
24
|
+
constructor();
|
|
25
|
+
abstract enable(): unknown | Promise<unknown>;
|
|
26
|
+
queue(frame: Frame): Promise<void>;
|
|
27
|
+
on<Type extends keyof NetworkSourceEventMap<Frame>>(type: Type, listener: Emitter.ListenerType<typeof this.emitter, Type>, options?: TypedListenerOptions): void;
|
|
28
|
+
disable(): void | Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { type ExtractSourceEvents, NetworkSource };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Emitter, TypedEvent, TypedListenerOptions } from 'rettime';
|
|
2
|
+
import { A as AnyNetworkFrame, E as ExtractFrameEvents } from '../../network-frame-usYiHS0K.js';
|
|
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';
|
|
13
|
+
|
|
14
|
+
declare class NetworkFrameEvent<DataType = void, ReturnType = void, EventType extends string = string> extends TypedEvent<DataType, ReturnType, EventType> {
|
|
15
|
+
frame: AnyNetworkFrame;
|
|
16
|
+
constructor(type: string, frame: AnyNetworkFrame);
|
|
17
|
+
}
|
|
18
|
+
type NetworkSourceEventMap<Frame extends AnyNetworkFrame> = {
|
|
19
|
+
frame: NetworkFrameEvent<Frame>;
|
|
20
|
+
};
|
|
21
|
+
type ExtractSourceEvents<Source> = Source extends NetworkSource<infer Frame> ? ExtractFrameEvents<Frame> : never;
|
|
22
|
+
declare abstract class NetworkSource<Frame extends AnyNetworkFrame = AnyNetworkFrame> {
|
|
23
|
+
protected emitter: Emitter<NetworkSourceEventMap<Frame>>;
|
|
24
|
+
constructor();
|
|
25
|
+
abstract enable(): unknown | Promise<unknown>;
|
|
26
|
+
queue(frame: Frame): Promise<void>;
|
|
27
|
+
on<Type extends keyof NetworkSourceEventMap<Frame>>(type: Type, listener: Emitter.ListenerType<typeof this.emitter, Type>, options?: TypedListenerOptions): void;
|
|
28
|
+
disable(): void | Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { type ExtractSourceEvents, NetworkSource };
|
|
@@ -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 network_source_exports = {};
|
|
20
|
+
__export(network_source_exports, {
|
|
21
|
+
NetworkSource: () => NetworkSource
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(network_source_exports);
|
|
24
|
+
var import_rettime = require("rettime");
|
|
25
|
+
class NetworkFrameEvent extends import_rettime.TypedEvent {
|
|
26
|
+
frame;
|
|
27
|
+
constructor(type, frame) {
|
|
28
|
+
super(...[type, {}]);
|
|
29
|
+
this.frame = frame;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
class NetworkSource {
|
|
33
|
+
emitter;
|
|
34
|
+
constructor() {
|
|
35
|
+
this.emitter = new import_rettime.Emitter();
|
|
36
|
+
}
|
|
37
|
+
async queue(frame) {
|
|
38
|
+
await this.emitter.emitAsPromise(
|
|
39
|
+
// @ts-expect-error Trouble handling a conditional type parameter.
|
|
40
|
+
new NetworkFrameEvent("frame", frame)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
on(type, listener, options) {
|
|
44
|
+
this.emitter.on(type, listener, options);
|
|
45
|
+
}
|
|
46
|
+
disable() {
|
|
47
|
+
this.emitter.removeAllListeners();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=network-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/experimental/sources/network-source.ts"],"sourcesContent":["import { Emitter, TypedEvent, type TypedListenerOptions } from 'rettime'\nimport {\n type AnyNetworkFrame,\n type ExtractFrameEvents,\n} from '../frames/network-frame'\n\nclass NetworkFrameEvent<\n DataType = void,\n ReturnType = void,\n EventType extends string = string,\n> extends TypedEvent<DataType, ReturnType, EventType> {\n public frame: AnyNetworkFrame\n\n constructor(type: string, frame: AnyNetworkFrame) {\n super(...([type, {}] as any))\n this.frame = frame\n }\n}\n\ntype NetworkSourceEventMap<Frame extends AnyNetworkFrame> = {\n frame: NetworkFrameEvent<Frame>\n}\n\nexport type ExtractSourceEvents<Source> =\n Source extends NetworkSource<infer Frame> ? ExtractFrameEvents<Frame> : never\n\nexport abstract class NetworkSource<\n Frame extends AnyNetworkFrame = AnyNetworkFrame,\n> {\n protected emitter: Emitter<NetworkSourceEventMap<Frame>>\n\n constructor() {\n this.emitter = new Emitter()\n }\n\n public abstract enable(): unknown | Promise<unknown>\n\n public async queue(frame: Frame): Promise<void> {\n await this.emitter.emitAsPromise(\n // @ts-expect-error Trouble handling a conditional type parameter.\n new NetworkFrameEvent('frame', frame),\n )\n }\n\n public on<Type extends keyof NetworkSourceEventMap<Frame>>(\n type: Type,\n listener: Emitter.ListenerType<typeof this.emitter, Type>,\n options?: TypedListenerOptions,\n ): void {\n this.emitter.on(type, listener, options)\n }\n\n public disable(): void | Promise<void> {\n this.emitter.removeAllListeners()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA+D;AAM/D,MAAM,0BAII,0BAA4C;AAAA,EAC7C;AAAA,EAEP,YAAY,MAAc,OAAwB;AAChD,UAAM,GAAI,CAAC,MAAM,CAAC,CAAC,CAAS;AAC5B,SAAK,QAAQ;AAAA,EACf;AACF;AASO,MAAe,cAEpB;AAAA,EACU;AAAA,EAEV,cAAc;AACZ,SAAK,UAAU,IAAI,uBAAQ;AAAA,EAC7B;AAAA,EAIA,MAAa,MAAM,OAA6B;AAC9C,UAAM,KAAK,QAAQ;AAAA;AAAA,MAEjB,IAAI,kBAAkB,SAAS,KAAK;AAAA,IACtC;AAAA,EACF;AAAA,EAEO,GACL,MACA,UACA,SACM;AACN,SAAK,QAAQ,GAAG,MAAM,UAAU,OAAO;AAAA,EACzC;AAAA,EAEO,UAAgC;AACrC,SAAK,QAAQ,mBAAmB;AAAA,EAClC;AACF;","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Emitter, TypedEvent } from "rettime";
|
|
2
|
+
class NetworkFrameEvent extends TypedEvent {
|
|
3
|
+
frame;
|
|
4
|
+
constructor(type, frame) {
|
|
5
|
+
super(...[type, {}]);
|
|
6
|
+
this.frame = frame;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
class NetworkSource {
|
|
10
|
+
emitter;
|
|
11
|
+
constructor() {
|
|
12
|
+
this.emitter = new Emitter();
|
|
13
|
+
}
|
|
14
|
+
async queue(frame) {
|
|
15
|
+
await this.emitter.emitAsPromise(
|
|
16
|
+
// @ts-expect-error Trouble handling a conditional type parameter.
|
|
17
|
+
new NetworkFrameEvent("frame", frame)
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
on(type, listener, options) {
|
|
21
|
+
this.emitter.on(type, listener, options);
|
|
22
|
+
}
|
|
23
|
+
disable() {
|
|
24
|
+
this.emitter.removeAllListeners();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
NetworkSource
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=network-source.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/experimental/sources/network-source.ts"],"sourcesContent":["import { Emitter, TypedEvent, type TypedListenerOptions } from 'rettime'\nimport {\n type AnyNetworkFrame,\n type ExtractFrameEvents,\n} from '../frames/network-frame'\n\nclass NetworkFrameEvent<\n DataType = void,\n ReturnType = void,\n EventType extends string = string,\n> extends TypedEvent<DataType, ReturnType, EventType> {\n public frame: AnyNetworkFrame\n\n constructor(type: string, frame: AnyNetworkFrame) {\n super(...([type, {}] as any))\n this.frame = frame\n }\n}\n\ntype NetworkSourceEventMap<Frame extends AnyNetworkFrame> = {\n frame: NetworkFrameEvent<Frame>\n}\n\nexport type ExtractSourceEvents<Source> =\n Source extends NetworkSource<infer Frame> ? ExtractFrameEvents<Frame> : never\n\nexport abstract class NetworkSource<\n Frame extends AnyNetworkFrame = AnyNetworkFrame,\n> {\n protected emitter: Emitter<NetworkSourceEventMap<Frame>>\n\n constructor() {\n this.emitter = new Emitter()\n }\n\n public abstract enable(): unknown | Promise<unknown>\n\n public async queue(frame: Frame): Promise<void> {\n await this.emitter.emitAsPromise(\n // @ts-expect-error Trouble handling a conditional type parameter.\n new NetworkFrameEvent('frame', frame),\n )\n }\n\n public on<Type extends keyof NetworkSourceEventMap<Frame>>(\n type: Type,\n listener: Emitter.ListenerType<typeof this.emitter, Type>,\n options?: TypedListenerOptions,\n ): void {\n this.emitter.on(type, listener, options)\n }\n\n public disable(): void | Promise<void> {\n this.emitter.removeAllListeners()\n }\n}\n"],"mappings":"AAAA,SAAS,SAAS,kBAA6C;AAM/D,MAAM,0BAII,WAA4C;AAAA,EAC7C;AAAA,EAEP,YAAY,MAAc,OAAwB;AAChD,UAAM,GAAI,CAAC,MAAM,CAAC,CAAC,CAAS;AAC5B,SAAK,QAAQ;AAAA,EACf;AACF;AASO,MAAe,cAEpB;AAAA,EACU;AAAA,EAEV,cAAc;AACZ,SAAK,UAAU,IAAI,QAAQ;AAAA,EAC7B;AAAA,EAIA,MAAa,MAAM,OAA6B;AAC9C,UAAM,KAAK,QAAQ;AAAA;AAAA,MAEjB,IAAI,kBAAkB,SAAS,KAAK;AAAA,IACtC;AAAA,EACF;AAAA,EAEO,GACL,MACA,UACA,SACM;AACN,SAAK,QAAQ,GAAG,MAAM,UAAU,OAAO;AAAA,EACzC;AAAA,EAEO,UAAgC;AACrC,SAAK,QAAQ,mBAAmB;AAAA,EAClC;AACF;","names":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RequestHandler, m as ResponseResolutionContext } from './HttpResponse-
|
|
1
|
+
import { R as RequestHandler, m as ResponseResolutionContext } from './HttpResponse-DlRR1D-f.mjs';
|
|
2
2
|
import '@mswjs/interceptors';
|
|
3
3
|
import './utils/internal/isIterable.mjs';
|
|
4
4
|
import './typeUtils.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RequestHandler, m as ResponseResolutionContext } from './HttpResponse-
|
|
1
|
+
import { R as RequestHandler, m as ResponseResolutionContext } from './HttpResponse-CksOMVAa.js';
|
|
2
2
|
import '@mswjs/interceptors';
|
|
3
3
|
import './utils/internal/isIterable.js';
|
|
4
4
|
import './typeUtils.js';
|
package/lib/core/graphql.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as GraphQLQuery, g as GraphQLVariables, p as GraphQLPredicate, a as ResponseResolver, q as GraphQLResolverExtras, i as GraphQLResponseBody, c as RequestHandlerOptions, G as GraphQLHandler } from './HttpResponse-
|
|
1
|
+
import { f as GraphQLQuery, g as GraphQLVariables, p as GraphQLPredicate, a as ResponseResolver, q as GraphQLResolverExtras, i as GraphQLResponseBody, c as RequestHandlerOptions, G as GraphQLHandler } from './HttpResponse-DlRR1D-f.mjs';
|
|
2
2
|
import { Path } from './utils/matching/matchRequestUrl.mjs';
|
|
3
3
|
import '@mswjs/interceptors';
|
|
4
4
|
import './utils/internal/isIterable.mjs';
|