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
|
@@ -188,17 +188,17 @@ interface RequestHandlerExecutionResult<ParsedResult extends object | undefined>
|
|
|
188
188
|
}
|
|
189
189
|
declare abstract class RequestHandler<HandlerInfo extends RequestHandlerDefaultInfo = RequestHandlerDefaultInfo, ParsedResult extends Record<string, any> | undefined = any, ResolverExtras extends Record<string, unknown> = any, HandlerOptions extends RequestHandlerOptions = RequestHandlerOptions> {
|
|
190
190
|
static cache: WeakMap<StrictRequest<DefaultBodyType>, StrictRequest<DefaultBodyType>>;
|
|
191
|
-
|
|
191
|
+
readonly kind: "request";
|
|
192
|
+
protected resolver: ResponseResolver<ResolverExtras, any, any>;
|
|
193
|
+
private resolverIterator?;
|
|
194
|
+
private resolverIteratorResult?;
|
|
195
|
+
private options?;
|
|
192
196
|
info: HandlerInfo & RequestHandlerInternalInfo;
|
|
193
197
|
/**
|
|
194
198
|
* Indicates whether this request handler has been used
|
|
195
199
|
* (its resolver has successfully executed).
|
|
196
200
|
*/
|
|
197
201
|
isUsed: boolean;
|
|
198
|
-
protected resolver: ResponseResolver<ResolverExtras, any, any>;
|
|
199
|
-
private resolverIterator?;
|
|
200
|
-
private resolverIteratorResult?;
|
|
201
|
-
private options?;
|
|
202
202
|
constructor(args: RequestHandlerArgs<HandlerInfo, HandlerOptions>);
|
|
203
203
|
/**
|
|
204
204
|
* Determine if the intercepted request should be mocked.
|
|
@@ -188,17 +188,17 @@ interface RequestHandlerExecutionResult<ParsedResult extends object | undefined>
|
|
|
188
188
|
}
|
|
189
189
|
declare abstract class RequestHandler<HandlerInfo extends RequestHandlerDefaultInfo = RequestHandlerDefaultInfo, ParsedResult extends Record<string, any> | undefined = any, ResolverExtras extends Record<string, unknown> = any, HandlerOptions extends RequestHandlerOptions = RequestHandlerOptions> {
|
|
190
190
|
static cache: WeakMap<StrictRequest<DefaultBodyType>, StrictRequest<DefaultBodyType>>;
|
|
191
|
-
|
|
191
|
+
readonly kind: "request";
|
|
192
|
+
protected resolver: ResponseResolver<ResolverExtras, any, any>;
|
|
193
|
+
private resolverIterator?;
|
|
194
|
+
private resolverIteratorResult?;
|
|
195
|
+
private options?;
|
|
192
196
|
info: HandlerInfo & RequestHandlerInternalInfo;
|
|
193
197
|
/**
|
|
194
198
|
* Indicates whether this request handler has been used
|
|
195
199
|
* (its resolver has successfully executed).
|
|
196
200
|
*/
|
|
197
201
|
isUsed: boolean;
|
|
198
|
-
protected resolver: ResponseResolver<ResolverExtras, any, any>;
|
|
199
|
-
private resolverIterator?;
|
|
200
|
-
private resolverIteratorResult?;
|
|
201
|
-
private options?;
|
|
202
202
|
constructor(args: RequestHandlerArgs<HandlerInfo, HandlerOptions>);
|
|
203
203
|
/**
|
|
204
204
|
* Determine if the intercepted request should be mocked.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '@mswjs/interceptors';
|
|
2
|
-
export { Q as DefaultUnsafeFetchResponse, H as HttpResponse, n as HttpResponseInit, S as StrictRequest, o as StrictResponse, O as bodyType, T as kDefaultContentType } from './HttpResponse-
|
|
2
|
+
export { Q as DefaultUnsafeFetchResponse, H as HttpResponse, n as HttpResponseInit, S as StrictRequest, o as StrictResponse, O as bodyType, T as kDefaultContentType } from './HttpResponse-DlRR1D-f.mjs';
|
|
3
3
|
import './typeUtils.mjs';
|
|
4
4
|
import './utils/internal/isIterable.mjs';
|
|
5
5
|
import 'graphql';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '@mswjs/interceptors';
|
|
2
|
-
export { Q as DefaultUnsafeFetchResponse, H as HttpResponse, n as HttpResponseInit, S as StrictRequest, o as StrictResponse, O as bodyType, T as kDefaultContentType } from './HttpResponse-
|
|
2
|
+
export { Q as DefaultUnsafeFetchResponse, H as HttpResponse, n as HttpResponseInit, S as StrictRequest, o as StrictResponse, O as bodyType, T as kDefaultContentType } from './HttpResponse-CksOMVAa.js';
|
|
3
3
|
import './typeUtils.js';
|
|
4
4
|
import './utils/internal/isIterable.js';
|
|
5
5
|
import 'graphql';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UnhandledRequestStrategy } from '../utils/request/onUnhandledRequest.mjs';
|
|
2
|
+
import { U as UnhandledFrameCallback } from '../network-frame-B7A0ggXE.mjs';
|
|
3
|
+
import 'rettime';
|
|
4
|
+
import './handlers-controller.mjs';
|
|
5
|
+
import '../HttpResponse-DlRR1D-f.mjs';
|
|
6
|
+
import '@mswjs/interceptors';
|
|
7
|
+
import '../utils/internal/isIterable.mjs';
|
|
8
|
+
import '../typeUtils.mjs';
|
|
9
|
+
import 'graphql';
|
|
10
|
+
import '../utils/matching/matchRequestUrl.mjs';
|
|
11
|
+
import '../handlers/WebSocketHandler.mjs';
|
|
12
|
+
import 'strict-event-emitter';
|
|
13
|
+
import '@mswjs/interceptors/WebSocket';
|
|
14
|
+
|
|
15
|
+
declare function fromLegacyOnUnhandledRequest(getLegacyValue: () => UnhandledRequestStrategy | undefined): UnhandledFrameCallback;
|
|
16
|
+
|
|
17
|
+
export { fromLegacyOnUnhandledRequest };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UnhandledRequestStrategy } from '../utils/request/onUnhandledRequest.js';
|
|
2
|
+
import { U as UnhandledFrameCallback } from '../network-frame-usYiHS0K.js';
|
|
3
|
+
import 'rettime';
|
|
4
|
+
import './handlers-controller.js';
|
|
5
|
+
import '../HttpResponse-CksOMVAa.js';
|
|
6
|
+
import '@mswjs/interceptors';
|
|
7
|
+
import '../utils/internal/isIterable.js';
|
|
8
|
+
import '../typeUtils.js';
|
|
9
|
+
import 'graphql';
|
|
10
|
+
import '../utils/matching/matchRequestUrl.js';
|
|
11
|
+
import '../handlers/WebSocketHandler.js';
|
|
12
|
+
import 'strict-event-emitter';
|
|
13
|
+
import '@mswjs/interceptors/WebSocket';
|
|
14
|
+
|
|
15
|
+
declare function fromLegacyOnUnhandledRequest(getLegacyValue: () => UnhandledRequestStrategy | undefined): UnhandledFrameCallback;
|
|
16
|
+
|
|
17
|
+
export { fromLegacyOnUnhandledRequest };
|
|
@@ -0,0 +1,54 @@
|
|
|
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 compat_exports = {};
|
|
20
|
+
__export(compat_exports, {
|
|
21
|
+
fromLegacyOnUnhandledRequest: () => fromLegacyOnUnhandledRequest
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(compat_exports);
|
|
24
|
+
var import_outvariant = require("outvariant");
|
|
25
|
+
var import_on_unhandled_frame = require("./on-unhandled-frame");
|
|
26
|
+
var import_http_frame = require("./frames/http-frame");
|
|
27
|
+
var import_websocket_frame = require("./frames/websocket-frame");
|
|
28
|
+
function fromLegacyOnUnhandledRequest(getLegacyValue) {
|
|
29
|
+
return ({ frame, defaults }) => {
|
|
30
|
+
const legacyOnUnhandledRequestStrategy = getLegacyValue();
|
|
31
|
+
if (legacyOnUnhandledRequestStrategy == null) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (typeof legacyOnUnhandledRequestStrategy === "function") {
|
|
35
|
+
const request = frame instanceof import_http_frame.HttpNetworkFrame ? frame.data.request : frame instanceof import_websocket_frame.WebSocketNetworkFrame ? new Request(frame.data.connection.client.url, {
|
|
36
|
+
headers: {
|
|
37
|
+
connection: "upgrade",
|
|
38
|
+
upgrade: "websocket"
|
|
39
|
+
}
|
|
40
|
+
}) : null;
|
|
41
|
+
(0, import_outvariant.invariant)(
|
|
42
|
+
request != null,
|
|
43
|
+
'Failed to coerce a network frame to a legacy `onUnhandledRequest` strategy: unknown frame protocol "%s"',
|
|
44
|
+
frame.protocol
|
|
45
|
+
);
|
|
46
|
+
return legacyOnUnhandledRequestStrategy(request, {
|
|
47
|
+
warning: defaults.warn,
|
|
48
|
+
error: defaults.error
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return (0, import_on_unhandled_frame.executeUnhandledFrameHandle)(frame, legacyOnUnhandledRequestStrategy);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/experimental/compat.ts"],"sourcesContent":["/**\n * Collection of helpers for bridging the compatibility between the old and the new APIs.\n */\nimport { invariant } from 'outvariant'\nimport { type UnhandledRequestStrategy } from '../utils/request/onUnhandledRequest'\nimport {\n executeUnhandledFrameHandle,\n type UnhandledFrameCallback,\n} from './on-unhandled-frame'\nimport { HttpNetworkFrame } from './frames/http-frame'\nimport { WebSocketNetworkFrame } from './frames/websocket-frame'\n\nexport function fromLegacyOnUnhandledRequest(\n getLegacyValue: () => UnhandledRequestStrategy | undefined,\n): UnhandledFrameCallback {\n return ({ frame, defaults }) => {\n const legacyOnUnhandledRequestStrategy = getLegacyValue()\n\n if (legacyOnUnhandledRequestStrategy == null) {\n return\n }\n\n if (typeof legacyOnUnhandledRequestStrategy === 'function') {\n const request =\n frame instanceof HttpNetworkFrame\n ? frame.data.request\n : frame instanceof WebSocketNetworkFrame\n ? new Request(frame.data.connection.client.url, {\n headers: {\n connection: 'upgrade',\n upgrade: 'websocket',\n },\n })\n : null\n\n invariant(\n request != null,\n 'Failed to coerce a network frame to a legacy `onUnhandledRequest` strategy: unknown frame protocol \"%s\"',\n frame.protocol,\n )\n\n return legacyOnUnhandledRequestStrategy(request, {\n warning: defaults.warn,\n error: defaults.error,\n })\n }\n\n return executeUnhandledFrameHandle(frame, legacyOnUnhandledRequestStrategy)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA0B;AAE1B,gCAGO;AACP,wBAAiC;AACjC,6BAAsC;AAE/B,SAAS,6BACd,gBACwB;AACxB,SAAO,CAAC,EAAE,OAAO,SAAS,MAAM;AAC9B,UAAM,mCAAmC,eAAe;AAExD,QAAI,oCAAoC,MAAM;AAC5C;AAAA,IACF;AAEA,QAAI,OAAO,qCAAqC,YAAY;AAC1D,YAAM,UACJ,iBAAiB,qCACb,MAAM,KAAK,UACX,iBAAiB,+CACf,IAAI,QAAQ,MAAM,KAAK,WAAW,OAAO,KAAK;AAAA,QAC5C,SAAS;AAAA,UACP,YAAY;AAAA,UACZ,SAAS;AAAA,QACX;AAAA,MACF,CAAC,IACD;AAER;AAAA,QACE,WAAW;AAAA,QACX;AAAA,QACA,MAAM;AAAA,MACR;AAEA,aAAO,iCAAiC,SAAS;AAAA,QAC/C,SAAS,SAAS;AAAA,QAClB,OAAO,SAAS;AAAA,MAClB,CAAC;AAAA,IACH;AAEA,eAAO,uDAA4B,OAAO,gCAAgC;AAAA,EAC5E;AACF;","names":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { invariant } from "outvariant";
|
|
2
|
+
import {
|
|
3
|
+
executeUnhandledFrameHandle
|
|
4
|
+
} from './on-unhandled-frame.mjs';
|
|
5
|
+
import { HttpNetworkFrame } from './frames/http-frame.mjs';
|
|
6
|
+
import { WebSocketNetworkFrame } from './frames/websocket-frame.mjs';
|
|
7
|
+
function fromLegacyOnUnhandledRequest(getLegacyValue) {
|
|
8
|
+
return ({ frame, defaults }) => {
|
|
9
|
+
const legacyOnUnhandledRequestStrategy = getLegacyValue();
|
|
10
|
+
if (legacyOnUnhandledRequestStrategy == null) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (typeof legacyOnUnhandledRequestStrategy === "function") {
|
|
14
|
+
const request = frame instanceof HttpNetworkFrame ? frame.data.request : frame instanceof WebSocketNetworkFrame ? new Request(frame.data.connection.client.url, {
|
|
15
|
+
headers: {
|
|
16
|
+
connection: "upgrade",
|
|
17
|
+
upgrade: "websocket"
|
|
18
|
+
}
|
|
19
|
+
}) : null;
|
|
20
|
+
invariant(
|
|
21
|
+
request != null,
|
|
22
|
+
'Failed to coerce a network frame to a legacy `onUnhandledRequest` strategy: unknown frame protocol "%s"',
|
|
23
|
+
frame.protocol
|
|
24
|
+
);
|
|
25
|
+
return legacyOnUnhandledRequestStrategy(request, {
|
|
26
|
+
warning: defaults.warn,
|
|
27
|
+
error: defaults.error
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return executeUnhandledFrameHandle(frame, legacyOnUnhandledRequestStrategy);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
fromLegacyOnUnhandledRequest
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=compat.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/experimental/compat.ts"],"sourcesContent":["/**\n * Collection of helpers for bridging the compatibility between the old and the new APIs.\n */\nimport { invariant } from 'outvariant'\nimport { type UnhandledRequestStrategy } from '../utils/request/onUnhandledRequest'\nimport {\n executeUnhandledFrameHandle,\n type UnhandledFrameCallback,\n} from './on-unhandled-frame'\nimport { HttpNetworkFrame } from './frames/http-frame'\nimport { WebSocketNetworkFrame } from './frames/websocket-frame'\n\nexport function fromLegacyOnUnhandledRequest(\n getLegacyValue: () => UnhandledRequestStrategy | undefined,\n): UnhandledFrameCallback {\n return ({ frame, defaults }) => {\n const legacyOnUnhandledRequestStrategy = getLegacyValue()\n\n if (legacyOnUnhandledRequestStrategy == null) {\n return\n }\n\n if (typeof legacyOnUnhandledRequestStrategy === 'function') {\n const request =\n frame instanceof HttpNetworkFrame\n ? frame.data.request\n : frame instanceof WebSocketNetworkFrame\n ? new Request(frame.data.connection.client.url, {\n headers: {\n connection: 'upgrade',\n upgrade: 'websocket',\n },\n })\n : null\n\n invariant(\n request != null,\n 'Failed to coerce a network frame to a legacy `onUnhandledRequest` strategy: unknown frame protocol \"%s\"',\n frame.protocol,\n )\n\n return legacyOnUnhandledRequestStrategy(request, {\n warning: defaults.warn,\n error: defaults.error,\n })\n }\n\n return executeUnhandledFrameHandle(frame, legacyOnUnhandledRequestStrategy)\n }\n}\n"],"mappings":"AAGA,SAAS,iBAAiB;AAE1B;AAAA,EACE;AAAA,OAEK;AACP,SAAS,wBAAwB;AACjC,SAAS,6BAA6B;AAE/B,SAAS,6BACd,gBACwB;AACxB,SAAO,CAAC,EAAE,OAAO,SAAS,MAAM;AAC9B,UAAM,mCAAmC,eAAe;AAExD,QAAI,oCAAoC,MAAM;AAC5C;AAAA,IACF;AAEA,QAAI,OAAO,qCAAqC,YAAY;AAC1D,YAAM,UACJ,iBAAiB,mBACb,MAAM,KAAK,UACX,iBAAiB,wBACf,IAAI,QAAQ,MAAM,KAAK,WAAW,OAAO,KAAK;AAAA,QAC5C,SAAS;AAAA,UACP,YAAY;AAAA,UACZ,SAAS;AAAA,QACX;AAAA,MACF,CAAC,IACD;AAER;AAAA,QACE,WAAW;AAAA,QACX;AAAA,QACA,MAAM;AAAA,MACR;AAEA,aAAO,iCAAiC,SAAS;AAAA,QAC/C,SAAS,SAAS;AAAA,QAClB,OAAO,SAAS;AAAA,MAClB,CAAC;AAAA,IACH;AAEA,WAAO,4BAA4B,OAAO,gCAAgC;AAAA,EAC5E;AACF;","names":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Emitter, DefaultEventMap } from 'rettime';
|
|
2
|
+
import { NetworkSource, ExtractSourceEvents } from './sources/network-source.mjs';
|
|
3
|
+
import { a as NetworkFrameResolutionContext, b as UnhandledFrameHandle } from '../network-frame-B7A0ggXE.mjs';
|
|
4
|
+
import { AnyHandler, HandlersController } from './handlers-controller.mjs';
|
|
5
|
+
import '../HttpResponse-DlRR1D-f.mjs';
|
|
6
|
+
import '@mswjs/interceptors';
|
|
7
|
+
import '../utils/internal/isIterable.mjs';
|
|
8
|
+
import '../typeUtils.mjs';
|
|
9
|
+
import 'graphql';
|
|
10
|
+
import '../utils/matching/matchRequestUrl.mjs';
|
|
11
|
+
import '../handlers/WebSocketHandler.mjs';
|
|
12
|
+
import 'strict-event-emitter';
|
|
13
|
+
import '@mswjs/interceptors/WebSocket';
|
|
14
|
+
|
|
15
|
+
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
16
|
+
type MergeEventMaps<Sources extends Array<NetworkSource<any>>> = UnionToIntersection<ExtractSourceEvents<Sources[number]>> extends infer R ? R extends Record<string, any> ? R : DefaultEventMap : DefaultEventMap;
|
|
17
|
+
type MaybePromise<T> = Extract<T, Promise<unknown>> extends never ? void : Promise<void>;
|
|
18
|
+
interface DefineNetworkOptions<Sources extends Array<NetworkSource<any>>> {
|
|
19
|
+
/**
|
|
20
|
+
* List of the network sources.
|
|
21
|
+
* Every network source emits frames, and every frame describes how
|
|
22
|
+
* to handle the various network scenarios, like mocking a response,
|
|
23
|
+
* erroring the request, or performing it as-is.
|
|
24
|
+
*/
|
|
25
|
+
sources: Sources;
|
|
26
|
+
/**
|
|
27
|
+
* List of handlers to describe the network.
|
|
28
|
+
*/
|
|
29
|
+
handlers?: Array<AnyHandler> | HandlersController;
|
|
30
|
+
context?: NetworkFrameResolutionContext;
|
|
31
|
+
onUnhandledFrame?: UnhandledFrameHandle;
|
|
32
|
+
}
|
|
33
|
+
interface NetworkApi<Sources extends Array<NetworkSource<any>>> extends NetworkHandlersApi {
|
|
34
|
+
readyState: NetworkReadyState;
|
|
35
|
+
/**
|
|
36
|
+
* Enable the network interception and handling.
|
|
37
|
+
*/
|
|
38
|
+
enable: () => MaybePromise<ReturnType<Sources[number]['enable']>>;
|
|
39
|
+
/**
|
|
40
|
+
* Disable the network interception and handling.
|
|
41
|
+
*/
|
|
42
|
+
disable: () => MaybePromise<ReturnType<Sources[number]['disable']>>;
|
|
43
|
+
/**
|
|
44
|
+
* Configure the network instance with additional options.
|
|
45
|
+
* The options provided in the `.configure()` call will override the same
|
|
46
|
+
* options in the `defineNetwork()` call.
|
|
47
|
+
*/
|
|
48
|
+
configure: (options: Partial<DefineNetworkOptions<Sources>>) => void;
|
|
49
|
+
events: Emitter<MergeEventMaps<Sources>>;
|
|
50
|
+
}
|
|
51
|
+
interface NetworkHandlersApi {
|
|
52
|
+
use: (...handlers: Array<AnyHandler>) => void;
|
|
53
|
+
resetHandlers: (...handlers: Array<AnyHandler>) => void;
|
|
54
|
+
restoreHandlers: () => void;
|
|
55
|
+
listHandlers: () => ReadonlyArray<AnyHandler>;
|
|
56
|
+
}
|
|
57
|
+
declare enum NetworkReadyState {
|
|
58
|
+
DISABLED = 0,
|
|
59
|
+
ENABLED = 1
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Define a network instance with the given configuration.
|
|
63
|
+
* @example
|
|
64
|
+
* import { InterceptorSource } from 'msw/experimental'
|
|
65
|
+
* import { handlers } from './handlers'
|
|
66
|
+
*
|
|
67
|
+
* const network = defineNetwork({
|
|
68
|
+
* sources: [new InterceptorSource({ interceptors })],
|
|
69
|
+
* handlers,
|
|
70
|
+
* })
|
|
71
|
+
* await network.enable()
|
|
72
|
+
*/
|
|
73
|
+
declare function defineNetwork<Sources extends Array<NetworkSource<any>>>(options: DefineNetworkOptions<Sources>): NetworkApi<Sources>;
|
|
74
|
+
|
|
75
|
+
export { type DefineNetworkOptions, type NetworkApi, type NetworkHandlersApi, NetworkReadyState, defineNetwork };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Emitter, DefaultEventMap } from 'rettime';
|
|
2
|
+
import { NetworkSource, ExtractSourceEvents } from './sources/network-source.js';
|
|
3
|
+
import { a as NetworkFrameResolutionContext, b as UnhandledFrameHandle } from '../network-frame-usYiHS0K.js';
|
|
4
|
+
import { AnyHandler, HandlersController } from './handlers-controller.js';
|
|
5
|
+
import '../HttpResponse-CksOMVAa.js';
|
|
6
|
+
import '@mswjs/interceptors';
|
|
7
|
+
import '../utils/internal/isIterable.js';
|
|
8
|
+
import '../typeUtils.js';
|
|
9
|
+
import 'graphql';
|
|
10
|
+
import '../utils/matching/matchRequestUrl.js';
|
|
11
|
+
import '../handlers/WebSocketHandler.js';
|
|
12
|
+
import 'strict-event-emitter';
|
|
13
|
+
import '@mswjs/interceptors/WebSocket';
|
|
14
|
+
|
|
15
|
+
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
16
|
+
type MergeEventMaps<Sources extends Array<NetworkSource<any>>> = UnionToIntersection<ExtractSourceEvents<Sources[number]>> extends infer R ? R extends Record<string, any> ? R : DefaultEventMap : DefaultEventMap;
|
|
17
|
+
type MaybePromise<T> = Extract<T, Promise<unknown>> extends never ? void : Promise<void>;
|
|
18
|
+
interface DefineNetworkOptions<Sources extends Array<NetworkSource<any>>> {
|
|
19
|
+
/**
|
|
20
|
+
* List of the network sources.
|
|
21
|
+
* Every network source emits frames, and every frame describes how
|
|
22
|
+
* to handle the various network scenarios, like mocking a response,
|
|
23
|
+
* erroring the request, or performing it as-is.
|
|
24
|
+
*/
|
|
25
|
+
sources: Sources;
|
|
26
|
+
/**
|
|
27
|
+
* List of handlers to describe the network.
|
|
28
|
+
*/
|
|
29
|
+
handlers?: Array<AnyHandler> | HandlersController;
|
|
30
|
+
context?: NetworkFrameResolutionContext;
|
|
31
|
+
onUnhandledFrame?: UnhandledFrameHandle;
|
|
32
|
+
}
|
|
33
|
+
interface NetworkApi<Sources extends Array<NetworkSource<any>>> extends NetworkHandlersApi {
|
|
34
|
+
readyState: NetworkReadyState;
|
|
35
|
+
/**
|
|
36
|
+
* Enable the network interception and handling.
|
|
37
|
+
*/
|
|
38
|
+
enable: () => MaybePromise<ReturnType<Sources[number]['enable']>>;
|
|
39
|
+
/**
|
|
40
|
+
* Disable the network interception and handling.
|
|
41
|
+
*/
|
|
42
|
+
disable: () => MaybePromise<ReturnType<Sources[number]['disable']>>;
|
|
43
|
+
/**
|
|
44
|
+
* Configure the network instance with additional options.
|
|
45
|
+
* The options provided in the `.configure()` call will override the same
|
|
46
|
+
* options in the `defineNetwork()` call.
|
|
47
|
+
*/
|
|
48
|
+
configure: (options: Partial<DefineNetworkOptions<Sources>>) => void;
|
|
49
|
+
events: Emitter<MergeEventMaps<Sources>>;
|
|
50
|
+
}
|
|
51
|
+
interface NetworkHandlersApi {
|
|
52
|
+
use: (...handlers: Array<AnyHandler>) => void;
|
|
53
|
+
resetHandlers: (...handlers: Array<AnyHandler>) => void;
|
|
54
|
+
restoreHandlers: () => void;
|
|
55
|
+
listHandlers: () => ReadonlyArray<AnyHandler>;
|
|
56
|
+
}
|
|
57
|
+
declare enum NetworkReadyState {
|
|
58
|
+
DISABLED = 0,
|
|
59
|
+
ENABLED = 1
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Define a network instance with the given configuration.
|
|
63
|
+
* @example
|
|
64
|
+
* import { InterceptorSource } from 'msw/experimental'
|
|
65
|
+
* import { handlers } from './handlers'
|
|
66
|
+
*
|
|
67
|
+
* const network = defineNetwork({
|
|
68
|
+
* sources: [new InterceptorSource({ interceptors })],
|
|
69
|
+
* handlers,
|
|
70
|
+
* })
|
|
71
|
+
* await network.enable()
|
|
72
|
+
*/
|
|
73
|
+
declare function defineNetwork<Sources extends Array<NetworkSource<any>>>(options: DefineNetworkOptions<Sources>): NetworkApi<Sources>;
|
|
74
|
+
|
|
75
|
+
export { type DefineNetworkOptions, type NetworkApi, type NetworkHandlersApi, NetworkReadyState, defineNetwork };
|
|
@@ -0,0 +1,124 @@
|
|
|
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 define_network_exports = {};
|
|
20
|
+
__export(define_network_exports, {
|
|
21
|
+
NetworkReadyState: () => NetworkReadyState,
|
|
22
|
+
defineNetwork: () => defineNetwork
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(define_network_exports);
|
|
25
|
+
var import_outvariant = require("outvariant");
|
|
26
|
+
var import_rettime = require("rettime");
|
|
27
|
+
var import_handlers_controller = require("./handlers-controller");
|
|
28
|
+
var import_toReadonlyArray = require("../utils/internal/toReadonlyArray");
|
|
29
|
+
function colorlessPromiseAll(values) {
|
|
30
|
+
const promises = [];
|
|
31
|
+
for (const value of values) {
|
|
32
|
+
if (value instanceof Promise) {
|
|
33
|
+
promises.push(value);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (promises.length > 0) {
|
|
37
|
+
return Promise.all(promises).then(() => {
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
var NetworkReadyState = /* @__PURE__ */ ((NetworkReadyState2) => {
|
|
42
|
+
NetworkReadyState2[NetworkReadyState2["DISABLED"] = 0] = "DISABLED";
|
|
43
|
+
NetworkReadyState2[NetworkReadyState2["ENABLED"] = 1] = "ENABLED";
|
|
44
|
+
return NetworkReadyState2;
|
|
45
|
+
})(NetworkReadyState || {});
|
|
46
|
+
function defineNetwork(options) {
|
|
47
|
+
let readyState = 0 /* DISABLED */;
|
|
48
|
+
const events = new import_rettime.Emitter();
|
|
49
|
+
const deriveHandlersController = (handlers) => {
|
|
50
|
+
return handlers instanceof import_handlers_controller.HandlersController ? handlers : new import_handlers_controller.InMemoryHandlersController(handlers || []);
|
|
51
|
+
};
|
|
52
|
+
let resolvedOptions = {
|
|
53
|
+
...options
|
|
54
|
+
};
|
|
55
|
+
let handlersController = deriveHandlersController(resolvedOptions.handlers);
|
|
56
|
+
let listenersController;
|
|
57
|
+
return {
|
|
58
|
+
get readyState() {
|
|
59
|
+
return readyState;
|
|
60
|
+
},
|
|
61
|
+
events,
|
|
62
|
+
configure(options2) {
|
|
63
|
+
(0, import_outvariant.invariant)(readyState === 0 /* DISABLED */, "");
|
|
64
|
+
if (options2.handlers && !Object.is(options2.handlers, resolvedOptions.handlers)) {
|
|
65
|
+
handlersController = deriveHandlersController(options2.handlers);
|
|
66
|
+
}
|
|
67
|
+
resolvedOptions = {
|
|
68
|
+
...resolvedOptions,
|
|
69
|
+
...options2
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
enable() {
|
|
73
|
+
(0, import_outvariant.invariant)(
|
|
74
|
+
readyState === 0 /* DISABLED */,
|
|
75
|
+
'Failed to call "enable" on the network: already enabled'
|
|
76
|
+
);
|
|
77
|
+
listenersController = new AbortController();
|
|
78
|
+
readyState = 1 /* ENABLED */;
|
|
79
|
+
const result = resolvedOptions.sources.map((source) => {
|
|
80
|
+
source.on("frame", async ({ frame }) => {
|
|
81
|
+
frame.events.on("*", (event) => events.emit(event), {
|
|
82
|
+
signal: listenersController.signal
|
|
83
|
+
});
|
|
84
|
+
const handlers = frame.getHandlers(handlersController);
|
|
85
|
+
await frame.resolve(
|
|
86
|
+
handlers,
|
|
87
|
+
resolvedOptions.onUnhandledFrame || "warn",
|
|
88
|
+
resolvedOptions.context
|
|
89
|
+
);
|
|
90
|
+
});
|
|
91
|
+
return source.enable();
|
|
92
|
+
});
|
|
93
|
+
return colorlessPromiseAll(result);
|
|
94
|
+
},
|
|
95
|
+
disable() {
|
|
96
|
+
(0, import_outvariant.invariant)(
|
|
97
|
+
readyState === 1 /* ENABLED */,
|
|
98
|
+
'Failed to call "disable" on the network: already disabled'
|
|
99
|
+
);
|
|
100
|
+
listenersController.abort();
|
|
101
|
+
readyState = 0 /* DISABLED */;
|
|
102
|
+
return colorlessPromiseAll(
|
|
103
|
+
resolvedOptions.sources.map((source) => source.disable())
|
|
104
|
+
);
|
|
105
|
+
},
|
|
106
|
+
use(...handlers) {
|
|
107
|
+
handlersController.use(handlers);
|
|
108
|
+
},
|
|
109
|
+
resetHandlers(...handlers) {
|
|
110
|
+
handlersController.reset(handlers);
|
|
111
|
+
},
|
|
112
|
+
restoreHandlers() {
|
|
113
|
+
for (const handler of handlersController.currentHandlers()) {
|
|
114
|
+
if ("isUsed" in handler) {
|
|
115
|
+
handler.isUsed = false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
listHandlers() {
|
|
120
|
+
return (0, import_toReadonlyArray.toReadonlyArray)(handlersController.currentHandlers());
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=define-network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/experimental/define-network.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { Emitter, type DefaultEventMap } from 'rettime'\nimport {\n type NetworkSource,\n type ExtractSourceEvents,\n} from './sources/network-source'\nimport { type NetworkFrameResolutionContext } from './frames/network-frame'\nimport { type UnhandledFrameHandle } from './on-unhandled-frame'\nimport {\n AnyHandler,\n HandlersController,\n InMemoryHandlersController,\n} from './handlers-controller'\nimport { toReadonlyArray } from '../utils/internal/toReadonlyArray'\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never\n\ntype MergeEventMaps<Sources extends Array<NetworkSource<any>>> =\n UnionToIntersection<ExtractSourceEvents<Sources[number]>> extends infer R\n ? R extends Record<string, any>\n ? R\n : DefaultEventMap\n : DefaultEventMap\n\ntype MaybePromise<T> =\n Extract<T, Promise<unknown>> extends never ? void : Promise<void>\n\nexport interface DefineNetworkOptions<\n Sources extends Array<NetworkSource<any>>,\n> {\n /**\n * List of the network sources.\n * Every network source emits frames, and every frame describes how\n * to handle the various network scenarios, like mocking a response,\n * erroring the request, or performing it as-is.\n */\n sources: Sources\n /**\n * List of handlers to describe the network.\n */\n handlers?: Array<AnyHandler> | HandlersController\n context?: NetworkFrameResolutionContext\n onUnhandledFrame?: UnhandledFrameHandle\n}\n\nexport interface NetworkApi<Sources extends Array<NetworkSource<any>>>\n extends NetworkHandlersApi {\n readyState: NetworkReadyState\n /**\n * Enable the network interception and handling.\n */\n enable: () => MaybePromise<ReturnType<Sources[number]['enable']>>\n /**\n * Disable the network interception and handling.\n */\n disable: () => MaybePromise<ReturnType<Sources[number]['disable']>>\n /**\n * Configure the network instance with additional options.\n * The options provided in the `.configure()` call will override the same\n * options in the `defineNetwork()` call.\n */\n configure: (options: Partial<DefineNetworkOptions<Sources>>) => void\n events: Emitter<MergeEventMaps<Sources>>\n}\n\nexport interface NetworkHandlersApi {\n use: (...handlers: Array<AnyHandler>) => void\n resetHandlers: (...handlers: Array<AnyHandler>) => void\n restoreHandlers: () => void\n listHandlers: () => ReadonlyArray<AnyHandler>\n}\n\nfunction colorlessPromiseAll<T>(values: Array<T>): MaybePromise<T>\nfunction colorlessPromiseAll(values: Array<unknown>): Promise<void> | void {\n const promises: Array<Promise<void>> = []\n\n for (const value of values) {\n if (value instanceof Promise) {\n promises.push(value)\n }\n }\n\n if (promises.length > 0) {\n return Promise.all(promises).then(() => {})\n }\n}\n\nexport enum NetworkReadyState {\n DISABLED,\n ENABLED,\n}\n\n/**\n * Define a network instance with the given configuration.\n * @example\n * import { InterceptorSource } from 'msw/experimental'\n * import { handlers } from './handlers'\n *\n * const network = defineNetwork({\n * sources: [new InterceptorSource({ interceptors })],\n * handlers,\n * })\n * await network.enable()\n */\nexport function defineNetwork<Sources extends Array<NetworkSource<any>>>(\n options: DefineNetworkOptions<Sources>,\n): NetworkApi<Sources> {\n let readyState: NetworkReadyState = NetworkReadyState.DISABLED\n const events = new Emitter<MergeEventMaps<Sources>>()\n\n const deriveHandlersController = (\n handlers: DefineNetworkOptions<Sources>['handlers'],\n ) => {\n return handlers instanceof HandlersController\n ? handlers\n : new InMemoryHandlersController(handlers || [])\n }\n\n let resolvedOptions: DefineNetworkOptions<Sources> = {\n ...options,\n }\n\n /**\n * @note Create the handlers controller immediately because\n * certain setup APIs, like `setupServer`, don't await `.enable` (`.listen`).\n */\n let handlersController = deriveHandlersController(resolvedOptions.handlers)\n let listenersController: AbortController\n\n return {\n get readyState() {\n return readyState\n },\n events,\n configure(options) {\n invariant(readyState === NetworkReadyState.DISABLED, '')\n\n if (\n options.handlers &&\n !Object.is(options.handlers, resolvedOptions.handlers)\n ) {\n handlersController = deriveHandlersController(options.handlers)\n }\n\n resolvedOptions = {\n ...resolvedOptions,\n ...options,\n }\n },\n enable() {\n invariant(\n readyState === NetworkReadyState.DISABLED,\n 'Failed to call \"enable\" on the network: already enabled',\n )\n\n listenersController = new AbortController()\n readyState = NetworkReadyState.ENABLED\n\n const result = resolvedOptions.sources.map((source) => {\n source.on('frame', async ({ frame }) => {\n frame.events.on('*', (event) => events.emit(event), {\n signal: listenersController.signal,\n })\n\n const handlers = frame.getHandlers(handlersController)\n\n await frame.resolve(\n handlers,\n resolvedOptions.onUnhandledFrame || 'warn',\n resolvedOptions.context,\n )\n })\n\n return source.enable()\n })\n\n return colorlessPromiseAll(result) as MaybePromise<\n ReturnType<Sources[number]['enable']>\n >\n },\n disable() {\n invariant(\n readyState === NetworkReadyState.ENABLED,\n 'Failed to call \"disable\" on the network: already disabled',\n )\n\n listenersController.abort()\n readyState = NetworkReadyState.DISABLED\n\n return colorlessPromiseAll(\n resolvedOptions.sources.map((source) => source.disable()),\n ) as MaybePromise<ReturnType<Sources[number]['disable']>>\n },\n use(...handlers) {\n handlersController.use(handlers)\n },\n resetHandlers(...handlers) {\n handlersController.reset(handlers)\n },\n restoreHandlers() {\n for (const handler of handlersController.currentHandlers()) {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n }\n },\n listHandlers() {\n return toReadonlyArray(handlersController.currentHandlers())\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0B;AAC1B,qBAA8C;AAO9C,iCAIO;AACP,6BAAgC;AAgEhC,SAAS,oBAAoB,QAA8C;AACzE,QAAM,WAAiC,CAAC;AAExC,aAAW,SAAS,QAAQ;AAC1B,QAAI,iBAAiB,SAAS;AAC5B,eAAS,KAAK,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,MAAI,SAAS,SAAS,GAAG;AACvB,WAAO,QAAQ,IAAI,QAAQ,EAAE,KAAK,MAAM;AAAA,IAAC,CAAC;AAAA,EAC5C;AACF;AAEO,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,sCAAA;AACA,EAAAA,sCAAA;AAFU,SAAAA;AAAA,GAAA;AAiBL,SAAS,cACd,SACqB;AACrB,MAAI,aAAgC;AACpC,QAAM,SAAS,IAAI,uBAAiC;AAEpD,QAAM,2BAA2B,CAC/B,aACG;AACH,WAAO,oBAAoB,gDACvB,WACA,IAAI,sDAA2B,YAAY,CAAC,CAAC;AAAA,EACnD;AAEA,MAAI,kBAAiD;AAAA,IACnD,GAAG;AAAA,EACL;AAMA,MAAI,qBAAqB,yBAAyB,gBAAgB,QAAQ;AAC1E,MAAI;AAEJ,SAAO;AAAA,IACL,IAAI,aAAa;AACf,aAAO;AAAA,IACT;AAAA,IACA;AAAA,IACA,UAAUC,UAAS;AACjB,uCAAU,eAAe,kBAA4B,EAAE;AAEvD,UACEA,SAAQ,YACR,CAAC,OAAO,GAAGA,SAAQ,UAAU,gBAAgB,QAAQ,GACrD;AACA,6BAAqB,yBAAyBA,SAAQ,QAAQ;AAAA,MAChE;AAEA,wBAAkB;AAAA,QAChB,GAAG;AAAA,QACH,GAAGA;AAAA,MACL;AAAA,IACF;AAAA,IACA,SAAS;AACP;AAAA,QACE,eAAe;AAAA,QACf;AAAA,MACF;AAEA,4BAAsB,IAAI,gBAAgB;AAC1C,mBAAa;AAEb,YAAM,SAAS,gBAAgB,QAAQ,IAAI,CAAC,WAAW;AACrD,eAAO,GAAG,SAAS,OAAO,EAAE,MAAM,MAAM;AACtC,gBAAM,OAAO,GAAG,KAAK,CAAC,UAAU,OAAO,KAAK,KAAK,GAAG;AAAA,YAClD,QAAQ,oBAAoB;AAAA,UAC9B,CAAC;AAED,gBAAM,WAAW,MAAM,YAAY,kBAAkB;AAErD,gBAAM,MAAM;AAAA,YACV;AAAA,YACA,gBAAgB,oBAAoB;AAAA,YACpC,gBAAgB;AAAA,UAClB;AAAA,QACF,CAAC;AAED,eAAO,OAAO,OAAO;AAAA,MACvB,CAAC;AAED,aAAO,oBAAoB,MAAM;AAAA,IAGnC;AAAA,IACA,UAAU;AACR;AAAA,QACE,eAAe;AAAA,QACf;AAAA,MACF;AAEA,0BAAoB,MAAM;AAC1B,mBAAa;AAEb,aAAO;AAAA,QACL,gBAAgB,QAAQ,IAAI,CAAC,WAAW,OAAO,QAAQ,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,OAAO,UAAU;AACf,yBAAmB,IAAI,QAAQ;AAAA,IACjC;AAAA,IACA,iBAAiB,UAAU;AACzB,yBAAmB,MAAM,QAAQ;AAAA,IACnC;AAAA,IACA,kBAAkB;AAChB,iBAAW,WAAW,mBAAmB,gBAAgB,GAAG;AAC1D,YAAI,YAAY,SAAS;AACvB,kBAAQ,SAAS;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe;AACb,iBAAO,wCAAgB,mBAAmB,gBAAgB,CAAC;AAAA,IAC7D;AAAA,EACF;AACF;","names":["NetworkReadyState","options"]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { invariant } from "outvariant";
|
|
2
|
+
import { Emitter } from "rettime";
|
|
3
|
+
import {
|
|
4
|
+
HandlersController,
|
|
5
|
+
InMemoryHandlersController
|
|
6
|
+
} from './handlers-controller.mjs';
|
|
7
|
+
import { toReadonlyArray } from '../utils/internal/toReadonlyArray.mjs';
|
|
8
|
+
function colorlessPromiseAll(values) {
|
|
9
|
+
const promises = [];
|
|
10
|
+
for (const value of values) {
|
|
11
|
+
if (value instanceof Promise) {
|
|
12
|
+
promises.push(value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (promises.length > 0) {
|
|
16
|
+
return Promise.all(promises).then(() => {
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
var NetworkReadyState = /* @__PURE__ */ ((NetworkReadyState2) => {
|
|
21
|
+
NetworkReadyState2[NetworkReadyState2["DISABLED"] = 0] = "DISABLED";
|
|
22
|
+
NetworkReadyState2[NetworkReadyState2["ENABLED"] = 1] = "ENABLED";
|
|
23
|
+
return NetworkReadyState2;
|
|
24
|
+
})(NetworkReadyState || {});
|
|
25
|
+
function defineNetwork(options) {
|
|
26
|
+
let readyState = 0 /* DISABLED */;
|
|
27
|
+
const events = new Emitter();
|
|
28
|
+
const deriveHandlersController = (handlers) => {
|
|
29
|
+
return handlers instanceof HandlersController ? handlers : new InMemoryHandlersController(handlers || []);
|
|
30
|
+
};
|
|
31
|
+
let resolvedOptions = {
|
|
32
|
+
...options
|
|
33
|
+
};
|
|
34
|
+
let handlersController = deriveHandlersController(resolvedOptions.handlers);
|
|
35
|
+
let listenersController;
|
|
36
|
+
return {
|
|
37
|
+
get readyState() {
|
|
38
|
+
return readyState;
|
|
39
|
+
},
|
|
40
|
+
events,
|
|
41
|
+
configure(options2) {
|
|
42
|
+
invariant(readyState === 0 /* DISABLED */, "");
|
|
43
|
+
if (options2.handlers && !Object.is(options2.handlers, resolvedOptions.handlers)) {
|
|
44
|
+
handlersController = deriveHandlersController(options2.handlers);
|
|
45
|
+
}
|
|
46
|
+
resolvedOptions = {
|
|
47
|
+
...resolvedOptions,
|
|
48
|
+
...options2
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
enable() {
|
|
52
|
+
invariant(
|
|
53
|
+
readyState === 0 /* DISABLED */,
|
|
54
|
+
'Failed to call "enable" on the network: already enabled'
|
|
55
|
+
);
|
|
56
|
+
listenersController = new AbortController();
|
|
57
|
+
readyState = 1 /* ENABLED */;
|
|
58
|
+
const result = resolvedOptions.sources.map((source) => {
|
|
59
|
+
source.on("frame", async ({ frame }) => {
|
|
60
|
+
frame.events.on("*", (event) => events.emit(event), {
|
|
61
|
+
signal: listenersController.signal
|
|
62
|
+
});
|
|
63
|
+
const handlers = frame.getHandlers(handlersController);
|
|
64
|
+
await frame.resolve(
|
|
65
|
+
handlers,
|
|
66
|
+
resolvedOptions.onUnhandledFrame || "warn",
|
|
67
|
+
resolvedOptions.context
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
return source.enable();
|
|
71
|
+
});
|
|
72
|
+
return colorlessPromiseAll(result);
|
|
73
|
+
},
|
|
74
|
+
disable() {
|
|
75
|
+
invariant(
|
|
76
|
+
readyState === 1 /* ENABLED */,
|
|
77
|
+
'Failed to call "disable" on the network: already disabled'
|
|
78
|
+
);
|
|
79
|
+
listenersController.abort();
|
|
80
|
+
readyState = 0 /* DISABLED */;
|
|
81
|
+
return colorlessPromiseAll(
|
|
82
|
+
resolvedOptions.sources.map((source) => source.disable())
|
|
83
|
+
);
|
|
84
|
+
},
|
|
85
|
+
use(...handlers) {
|
|
86
|
+
handlersController.use(handlers);
|
|
87
|
+
},
|
|
88
|
+
resetHandlers(...handlers) {
|
|
89
|
+
handlersController.reset(handlers);
|
|
90
|
+
},
|
|
91
|
+
restoreHandlers() {
|
|
92
|
+
for (const handler of handlersController.currentHandlers()) {
|
|
93
|
+
if ("isUsed" in handler) {
|
|
94
|
+
handler.isUsed = false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
listHandlers() {
|
|
99
|
+
return toReadonlyArray(handlersController.currentHandlers());
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
NetworkReadyState,
|
|
105
|
+
defineNetwork
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=define-network.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/experimental/define-network.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { Emitter, type DefaultEventMap } from 'rettime'\nimport {\n type NetworkSource,\n type ExtractSourceEvents,\n} from './sources/network-source'\nimport { type NetworkFrameResolutionContext } from './frames/network-frame'\nimport { type UnhandledFrameHandle } from './on-unhandled-frame'\nimport {\n AnyHandler,\n HandlersController,\n InMemoryHandlersController,\n} from './handlers-controller'\nimport { toReadonlyArray } from '../utils/internal/toReadonlyArray'\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never\n\ntype MergeEventMaps<Sources extends Array<NetworkSource<any>>> =\n UnionToIntersection<ExtractSourceEvents<Sources[number]>> extends infer R\n ? R extends Record<string, any>\n ? R\n : DefaultEventMap\n : DefaultEventMap\n\ntype MaybePromise<T> =\n Extract<T, Promise<unknown>> extends never ? void : Promise<void>\n\nexport interface DefineNetworkOptions<\n Sources extends Array<NetworkSource<any>>,\n> {\n /**\n * List of the network sources.\n * Every network source emits frames, and every frame describes how\n * to handle the various network scenarios, like mocking a response,\n * erroring the request, or performing it as-is.\n */\n sources: Sources\n /**\n * List of handlers to describe the network.\n */\n handlers?: Array<AnyHandler> | HandlersController\n context?: NetworkFrameResolutionContext\n onUnhandledFrame?: UnhandledFrameHandle\n}\n\nexport interface NetworkApi<Sources extends Array<NetworkSource<any>>>\n extends NetworkHandlersApi {\n readyState: NetworkReadyState\n /**\n * Enable the network interception and handling.\n */\n enable: () => MaybePromise<ReturnType<Sources[number]['enable']>>\n /**\n * Disable the network interception and handling.\n */\n disable: () => MaybePromise<ReturnType<Sources[number]['disable']>>\n /**\n * Configure the network instance with additional options.\n * The options provided in the `.configure()` call will override the same\n * options in the `defineNetwork()` call.\n */\n configure: (options: Partial<DefineNetworkOptions<Sources>>) => void\n events: Emitter<MergeEventMaps<Sources>>\n}\n\nexport interface NetworkHandlersApi {\n use: (...handlers: Array<AnyHandler>) => void\n resetHandlers: (...handlers: Array<AnyHandler>) => void\n restoreHandlers: () => void\n listHandlers: () => ReadonlyArray<AnyHandler>\n}\n\nfunction colorlessPromiseAll<T>(values: Array<T>): MaybePromise<T>\nfunction colorlessPromiseAll(values: Array<unknown>): Promise<void> | void {\n const promises: Array<Promise<void>> = []\n\n for (const value of values) {\n if (value instanceof Promise) {\n promises.push(value)\n }\n }\n\n if (promises.length > 0) {\n return Promise.all(promises).then(() => {})\n }\n}\n\nexport enum NetworkReadyState {\n DISABLED,\n ENABLED,\n}\n\n/**\n * Define a network instance with the given configuration.\n * @example\n * import { InterceptorSource } from 'msw/experimental'\n * import { handlers } from './handlers'\n *\n * const network = defineNetwork({\n * sources: [new InterceptorSource({ interceptors })],\n * handlers,\n * })\n * await network.enable()\n */\nexport function defineNetwork<Sources extends Array<NetworkSource<any>>>(\n options: DefineNetworkOptions<Sources>,\n): NetworkApi<Sources> {\n let readyState: NetworkReadyState = NetworkReadyState.DISABLED\n const events = new Emitter<MergeEventMaps<Sources>>()\n\n const deriveHandlersController = (\n handlers: DefineNetworkOptions<Sources>['handlers'],\n ) => {\n return handlers instanceof HandlersController\n ? handlers\n : new InMemoryHandlersController(handlers || [])\n }\n\n let resolvedOptions: DefineNetworkOptions<Sources> = {\n ...options,\n }\n\n /**\n * @note Create the handlers controller immediately because\n * certain setup APIs, like `setupServer`, don't await `.enable` (`.listen`).\n */\n let handlersController = deriveHandlersController(resolvedOptions.handlers)\n let listenersController: AbortController\n\n return {\n get readyState() {\n return readyState\n },\n events,\n configure(options) {\n invariant(readyState === NetworkReadyState.DISABLED, '')\n\n if (\n options.handlers &&\n !Object.is(options.handlers, resolvedOptions.handlers)\n ) {\n handlersController = deriveHandlersController(options.handlers)\n }\n\n resolvedOptions = {\n ...resolvedOptions,\n ...options,\n }\n },\n enable() {\n invariant(\n readyState === NetworkReadyState.DISABLED,\n 'Failed to call \"enable\" on the network: already enabled',\n )\n\n listenersController = new AbortController()\n readyState = NetworkReadyState.ENABLED\n\n const result = resolvedOptions.sources.map((source) => {\n source.on('frame', async ({ frame }) => {\n frame.events.on('*', (event) => events.emit(event), {\n signal: listenersController.signal,\n })\n\n const handlers = frame.getHandlers(handlersController)\n\n await frame.resolve(\n handlers,\n resolvedOptions.onUnhandledFrame || 'warn',\n resolvedOptions.context,\n )\n })\n\n return source.enable()\n })\n\n return colorlessPromiseAll(result) as MaybePromise<\n ReturnType<Sources[number]['enable']>\n >\n },\n disable() {\n invariant(\n readyState === NetworkReadyState.ENABLED,\n 'Failed to call \"disable\" on the network: already disabled',\n )\n\n listenersController.abort()\n readyState = NetworkReadyState.DISABLED\n\n return colorlessPromiseAll(\n resolvedOptions.sources.map((source) => source.disable()),\n ) as MaybePromise<ReturnType<Sources[number]['disable']>>\n },\n use(...handlers) {\n handlersController.use(handlers)\n },\n resetHandlers(...handlers) {\n handlersController.reset(handlers)\n },\n restoreHandlers() {\n for (const handler of handlersController.currentHandlers()) {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n }\n },\n listHandlers() {\n return toReadonlyArray(handlersController.currentHandlers())\n },\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAS,eAAqC;AAO9C;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAAuB;AAgEhC,SAAS,oBAAoB,QAA8C;AACzE,QAAM,WAAiC,CAAC;AAExC,aAAW,SAAS,QAAQ;AAC1B,QAAI,iBAAiB,SAAS;AAC5B,eAAS,KAAK,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,MAAI,SAAS,SAAS,GAAG;AACvB,WAAO,QAAQ,IAAI,QAAQ,EAAE,KAAK,MAAM;AAAA,IAAC,CAAC;AAAA,EAC5C;AACF;AAEO,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,sCAAA;AACA,EAAAA,sCAAA;AAFU,SAAAA;AAAA,GAAA;AAiBL,SAAS,cACd,SACqB;AACrB,MAAI,aAAgC;AACpC,QAAM,SAAS,IAAI,QAAiC;AAEpD,QAAM,2BAA2B,CAC/B,aACG;AACH,WAAO,oBAAoB,qBACvB,WACA,IAAI,2BAA2B,YAAY,CAAC,CAAC;AAAA,EACnD;AAEA,MAAI,kBAAiD;AAAA,IACnD,GAAG;AAAA,EACL;AAMA,MAAI,qBAAqB,yBAAyB,gBAAgB,QAAQ;AAC1E,MAAI;AAEJ,SAAO;AAAA,IACL,IAAI,aAAa;AACf,aAAO;AAAA,IACT;AAAA,IACA;AAAA,IACA,UAAUC,UAAS;AACjB,gBAAU,eAAe,kBAA4B,EAAE;AAEvD,UACEA,SAAQ,YACR,CAAC,OAAO,GAAGA,SAAQ,UAAU,gBAAgB,QAAQ,GACrD;AACA,6BAAqB,yBAAyBA,SAAQ,QAAQ;AAAA,MAChE;AAEA,wBAAkB;AAAA,QAChB,GAAG;AAAA,QACH,GAAGA;AAAA,MACL;AAAA,IACF;AAAA,IACA,SAAS;AACP;AAAA,QACE,eAAe;AAAA,QACf;AAAA,MACF;AAEA,4BAAsB,IAAI,gBAAgB;AAC1C,mBAAa;AAEb,YAAM,SAAS,gBAAgB,QAAQ,IAAI,CAAC,WAAW;AACrD,eAAO,GAAG,SAAS,OAAO,EAAE,MAAM,MAAM;AACtC,gBAAM,OAAO,GAAG,KAAK,CAAC,UAAU,OAAO,KAAK,KAAK,GAAG;AAAA,YAClD,QAAQ,oBAAoB;AAAA,UAC9B,CAAC;AAED,gBAAM,WAAW,MAAM,YAAY,kBAAkB;AAErD,gBAAM,MAAM;AAAA,YACV;AAAA,YACA,gBAAgB,oBAAoB;AAAA,YACpC,gBAAgB;AAAA,UAClB;AAAA,QACF,CAAC;AAED,eAAO,OAAO,OAAO;AAAA,MACvB,CAAC;AAED,aAAO,oBAAoB,MAAM;AAAA,IAGnC;AAAA,IACA,UAAU;AACR;AAAA,QACE,eAAe;AAAA,QACf;AAAA,MACF;AAEA,0BAAoB,MAAM;AAC1B,mBAAa;AAEb,aAAO;AAAA,QACL,gBAAgB,QAAQ,IAAI,CAAC,WAAW,OAAO,QAAQ,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,OAAO,UAAU;AACf,yBAAmB,IAAI,QAAQ;AAAA,IACjC;AAAA,IACA,iBAAiB,UAAU;AACzB,yBAAmB,MAAM,QAAQ;AAAA,IACnC;AAAA,IACA,kBAAkB;AAChB,iBAAW,WAAW,mBAAmB,gBAAgB,GAAG;AAC1D,YAAI,YAAY,SAAS;AACvB,kBAAQ,SAAS;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe;AACb,aAAO,gBAAgB,mBAAmB,gBAAgB,CAAC;AAAA,IAC7D;AAAA,EACF;AACF;","names":["NetworkReadyState","options"]}
|