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
package/src/node/glossary.ts
CHANGED
|
@@ -1,54 +1,53 @@
|
|
|
1
1
|
import type { PartialDeep } from 'type-fest'
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from '~/core/sharedOptions'
|
|
2
|
+
import type { HttpNetworkFrameEventMap } from '#core/experimental/frames/http-frame'
|
|
3
|
+
import type { WebSocketNetworkFrameEventMap } from '#core/experimental/frames/websocket-frame'
|
|
4
|
+
import type { AnyHandler } from '#core/experimental/handlers-controller'
|
|
5
|
+
import type { LifeCycleEventEmitter, SharedOptions } from '#core/sharedOptions'
|
|
6
|
+
|
|
7
|
+
export interface ListenOptions extends SharedOptions {}
|
|
9
8
|
|
|
10
9
|
export interface SetupServerCommon {
|
|
11
10
|
/**
|
|
12
|
-
* Starts
|
|
11
|
+
* Starts the request interception based on the previously provided request handlers.
|
|
13
12
|
*
|
|
14
13
|
* @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
|
|
15
14
|
*/
|
|
16
|
-
listen(options?: PartialDeep<
|
|
15
|
+
listen: (options?: PartialDeep<ListenOptions>) => void
|
|
17
16
|
|
|
18
17
|
/**
|
|
19
|
-
* Stops
|
|
18
|
+
* Stops the request interception by restoring all augmented modules.
|
|
20
19
|
*
|
|
21
20
|
* @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
|
|
22
21
|
*/
|
|
23
|
-
close()
|
|
22
|
+
close: () => void
|
|
24
23
|
|
|
25
24
|
/**
|
|
26
25
|
* Prepends given request handlers to the list of existing handlers.
|
|
27
26
|
*
|
|
28
27
|
* @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
|
|
29
28
|
*/
|
|
30
|
-
use(...handlers: Array<
|
|
29
|
+
use: (...handlers: Array<AnyHandler>) => void
|
|
31
30
|
|
|
32
31
|
/**
|
|
33
32
|
* Marks all request handlers that respond using `res.once()` as unused.
|
|
34
33
|
*
|
|
35
34
|
* @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
|
|
36
35
|
*/
|
|
37
|
-
restoreHandlers()
|
|
36
|
+
restoreHandlers: () => void
|
|
38
37
|
|
|
39
38
|
/**
|
|
40
39
|
* Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
|
|
41
40
|
*
|
|
42
41
|
* @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
|
|
43
42
|
*/
|
|
44
|
-
resetHandlers(...nextHandlers: Array<
|
|
43
|
+
resetHandlers: (...nextHandlers: Array<AnyHandler>) => void
|
|
45
44
|
|
|
46
45
|
/**
|
|
47
46
|
* Returns a readonly list of currently active request handlers.
|
|
48
47
|
*
|
|
49
48
|
* @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
|
|
50
49
|
*/
|
|
51
|
-
listHandlers()
|
|
50
|
+
listHandlers: () => ReadonlyArray<AnyHandler>
|
|
52
51
|
|
|
53
52
|
/**
|
|
54
53
|
* Life-cycle events.
|
|
@@ -56,7 +55,9 @@ export interface SetupServerCommon {
|
|
|
56
55
|
*
|
|
57
56
|
* @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
|
|
58
57
|
*/
|
|
59
|
-
events: LifeCycleEventEmitter<
|
|
58
|
+
events: LifeCycleEventEmitter<
|
|
59
|
+
HttpNetworkFrameEventMap | WebSocketNetworkFrameEventMap
|
|
60
|
+
>
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
export interface SetupServer extends SetupServerCommon {
|
|
@@ -68,7 +69,7 @@ export interface SetupServer extends SetupServerCommon {
|
|
|
68
69
|
*
|
|
69
70
|
* @see {@link https://mswjs.io/docs/api/setup-server/boundary `server.boundary()` API reference}
|
|
70
71
|
*/
|
|
71
|
-
boundary<Args extends Array<any>, R>(
|
|
72
|
+
boundary: <Args extends Array<any>, R>(
|
|
72
73
|
callback: (...args: Args) => R,
|
|
73
|
-
)
|
|
74
|
+
) => (...args: Args) => R
|
|
74
75
|
}
|
package/src/node/index.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export type { SetupServer } from './glossary'
|
|
2
|
-
export {
|
|
3
|
-
|
|
2
|
+
export {
|
|
3
|
+
setupServer,
|
|
4
|
+
SetupServerApi,
|
|
5
|
+
defaultNetworkOptions,
|
|
6
|
+
} from './setup-server'
|
|
7
|
+
export { SetupServerCommonApi } from './setup-server-common'
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { PartialDeep } from 'type-fest'
|
|
2
|
+
import { Interceptor } from '@mswjs/interceptors'
|
|
3
|
+
import {
|
|
4
|
+
type NetworkApi,
|
|
5
|
+
NetworkReadyState,
|
|
6
|
+
defineNetwork,
|
|
7
|
+
} from '#core/experimental/define-network'
|
|
8
|
+
import { type AnyHandler } from '#core/experimental/handlers-controller'
|
|
9
|
+
import { type HandlersController } from '#core/experimental/handlers-controller'
|
|
10
|
+
import { InterceptorSource } from '#core/experimental/sources/interceptor-source'
|
|
11
|
+
import { fromLegacyOnUnhandledRequest } from '#core/experimental/compat'
|
|
12
|
+
import type { ListenOptions, SetupServerCommon } from './glossary'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Define the common `setupServer` API around the given network.
|
|
16
|
+
* This is used by both `msw/node` and `msw/native` to implement the same
|
|
17
|
+
* baseline setup methods, like `.use()`, `.resetHandlers()`, `.close()`, etc.
|
|
18
|
+
*/
|
|
19
|
+
export function defineSetupServerApi(
|
|
20
|
+
network: NetworkApi<any>,
|
|
21
|
+
): SetupServerCommon {
|
|
22
|
+
return {
|
|
23
|
+
events: network.events,
|
|
24
|
+
listen(options) {
|
|
25
|
+
network.configure({
|
|
26
|
+
onUnhandledFrame: fromLegacyOnUnhandledRequest(() => {
|
|
27
|
+
return options?.onUnhandledRequest || 'warn'
|
|
28
|
+
}),
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
network.enable()
|
|
32
|
+
},
|
|
33
|
+
use: network.use.bind(network),
|
|
34
|
+
resetHandlers: network.resetHandlers.bind(network),
|
|
35
|
+
restoreHandlers: network.restoreHandlers.bind(network),
|
|
36
|
+
listHandlers: network.listHandlers.bind(network),
|
|
37
|
+
close() {
|
|
38
|
+
/**
|
|
39
|
+
* @note Ignore closing after closed for backwards compatibility.
|
|
40
|
+
*/
|
|
41
|
+
if (network.readyState === NetworkReadyState.DISABLED) {
|
|
42
|
+
return
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
network.disable()
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @deprecated
|
|
52
|
+
* Please use the `defineNetwork` API instead.
|
|
53
|
+
*/
|
|
54
|
+
export class SetupServerCommonApi implements SetupServerCommon {
|
|
55
|
+
protected network: NetworkApi<[InterceptorSource]>
|
|
56
|
+
|
|
57
|
+
constructor(
|
|
58
|
+
interceptors: Array<Interceptor<any>>,
|
|
59
|
+
handlers: Array<AnyHandler> | HandlersController,
|
|
60
|
+
) {
|
|
61
|
+
this.network = defineNetwork({
|
|
62
|
+
sources: [new InterceptorSource({ interceptors })],
|
|
63
|
+
handlers,
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
get events() {
|
|
68
|
+
return this.network.events
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public listen(options?: PartialDeep<ListenOptions>): void {
|
|
72
|
+
this.network.configure({
|
|
73
|
+
onUnhandledFrame: fromLegacyOnUnhandledRequest(() => {
|
|
74
|
+
return options?.onUnhandledRequest || 'warn'
|
|
75
|
+
}),
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
this.network.enable()
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
public use(...handlers: Array<AnyHandler>): void {
|
|
82
|
+
this.network.use(...handlers)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public resetHandlers(...nextHandlers: Array<AnyHandler>): void {
|
|
86
|
+
return this.network.resetHandlers(...nextHandlers)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
public restoreHandlers(): void {
|
|
90
|
+
return this.network.restoreHandlers()
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public listHandlers(): ReadonlyArray<AnyHandler> {
|
|
94
|
+
return this.network.listHandlers()
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public close(): void {
|
|
98
|
+
this.network.disable()
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Interceptor } from '@mswjs/interceptors'
|
|
2
|
+
import { ClientRequestInterceptor } from '@mswjs/interceptors/ClientRequest'
|
|
3
|
+
import { XMLHttpRequestInterceptor } from '@mswjs/interceptors/XMLHttpRequest'
|
|
4
|
+
import { FetchInterceptor } from '@mswjs/interceptors/fetch'
|
|
5
|
+
import { WebSocketInterceptor } from '@mswjs/interceptors/WebSocket'
|
|
6
|
+
import {
|
|
7
|
+
defineNetwork,
|
|
8
|
+
type DefineNetworkOptions,
|
|
9
|
+
} from '#core/experimental/define-network'
|
|
10
|
+
import { type AnyHandler } from '#core/experimental/handlers-controller'
|
|
11
|
+
import { InterceptorSource } from '#core/experimental/sources/interceptor-source'
|
|
12
|
+
import { SetupServer } from './glossary'
|
|
13
|
+
import { AsyncHandlersController } from './async-handlers-controller'
|
|
14
|
+
import {
|
|
15
|
+
defineSetupServerApi,
|
|
16
|
+
SetupServerCommonApi,
|
|
17
|
+
} from './setup-server-common'
|
|
18
|
+
|
|
19
|
+
const defaultInterceptors: Array<Interceptor<any>> = [
|
|
20
|
+
new ClientRequestInterceptor(),
|
|
21
|
+
new XMLHttpRequestInterceptor(),
|
|
22
|
+
new FetchInterceptor(),
|
|
23
|
+
/**
|
|
24
|
+
* @fixme WebSocketInterceptor is in a browser-only export of Interceptors
|
|
25
|
+
* while the Interceptor class imported from the root module points to `lib/node`.
|
|
26
|
+
* An absolute madness to solve as it requires to duplicate the build config we have
|
|
27
|
+
* in MSW: shared core, CJS/ESM patching, .d.ts patching...
|
|
28
|
+
*/
|
|
29
|
+
new WebSocketInterceptor() as any,
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
export const defaultNetworkOptions: DefineNetworkOptions<[InterceptorSource]> =
|
|
33
|
+
{
|
|
34
|
+
sources: [
|
|
35
|
+
new InterceptorSource({
|
|
36
|
+
interceptors: defaultInterceptors,
|
|
37
|
+
}),
|
|
38
|
+
],
|
|
39
|
+
onUnhandledFrame: 'warn',
|
|
40
|
+
context: {
|
|
41
|
+
quiet: true,
|
|
42
|
+
},
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Enables request interception in Node.js with the given request handlers.
|
|
47
|
+
* @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
|
|
48
|
+
*/
|
|
49
|
+
export function setupServer(...handlers: Array<AnyHandler>): SetupServer {
|
|
50
|
+
const handlersController = new AsyncHandlersController(handlers)
|
|
51
|
+
const network = defineNetwork({
|
|
52
|
+
...defaultNetworkOptions,
|
|
53
|
+
handlers: handlersController,
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
const commonApi = defineSetupServerApi(network)
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
...commonApi,
|
|
60
|
+
boundary: handlersController.boundary.bind(handlersController),
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @deprecated
|
|
66
|
+
* Please use the `defineNetwork` API instead.
|
|
67
|
+
*/
|
|
68
|
+
export class SetupServerApi
|
|
69
|
+
extends SetupServerCommonApi
|
|
70
|
+
implements SetupServer
|
|
71
|
+
{
|
|
72
|
+
#handlersController: AsyncHandlersController
|
|
73
|
+
|
|
74
|
+
public boundary: AsyncHandlersController['boundary']
|
|
75
|
+
|
|
76
|
+
constructor(
|
|
77
|
+
handlers: Array<AnyHandler>,
|
|
78
|
+
interceptors: Array<Interceptor<any>>,
|
|
79
|
+
) {
|
|
80
|
+
const controller = new AsyncHandlersController(handlers)
|
|
81
|
+
super(interceptors, controller)
|
|
82
|
+
|
|
83
|
+
const { sources: _, ...networkOptions } = defaultNetworkOptions
|
|
84
|
+
this.network.configure(networkOptions)
|
|
85
|
+
|
|
86
|
+
this.#handlersController = controller
|
|
87
|
+
this.boundary = this.#handlersController.boundary.bind(
|
|
88
|
+
this.#handlersController,
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
}
|
package/src/tsconfig.node.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": "./tsconfig.src.json",
|
|
3
|
+
"include": ["./node", "./native"],
|
|
4
|
+
"exclude": ["**/*.test.ts"],
|
|
5
|
+
"references": [
|
|
6
|
+
{
|
|
7
|
+
"path": "./tsconfig.src.json"
|
|
8
|
+
}
|
|
9
|
+
],
|
|
3
10
|
"compilerOptions": {
|
|
4
11
|
"types": ["node"]
|
|
5
|
-
}
|
|
6
|
-
"include": ["./node", "./native"],
|
|
7
|
-
"exclude": ["**/*.test.ts"]
|
|
12
|
+
}
|
|
8
13
|
}
|
package/src/tsconfig.src.json
CHANGED
package/src/tsconfig.worker.json
CHANGED
package/lib/core/SetupApi.d.mts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { EventMap, Emitter } from 'strict-event-emitter';
|
|
2
|
-
import { R as RequestHandler } from './HttpResponse-Be4eT3x6.mjs';
|
|
3
|
-
import { LifeCycleEventEmitter } from './sharedOptions.mjs';
|
|
4
|
-
import { Disposable } from './utils/internal/Disposable.mjs';
|
|
5
|
-
import { WebSocketHandler } from './handlers/WebSocketHandler.mjs';
|
|
6
|
-
import '@mswjs/interceptors';
|
|
7
|
-
import './utils/internal/isIterable.mjs';
|
|
8
|
-
import './typeUtils.mjs';
|
|
9
|
-
import 'graphql';
|
|
10
|
-
import './utils/matching/matchRequestUrl.mjs';
|
|
11
|
-
import './utils/request/onUnhandledRequest.mjs';
|
|
12
|
-
import '@mswjs/interceptors/WebSocket';
|
|
13
|
-
|
|
14
|
-
declare abstract class HandlersController {
|
|
15
|
-
abstract prepend(runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
|
|
16
|
-
abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void;
|
|
17
|
-
abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>;
|
|
18
|
-
}
|
|
19
|
-
declare class InMemoryHandlersController implements HandlersController {
|
|
20
|
-
private initialHandlers;
|
|
21
|
-
private handlers;
|
|
22
|
-
constructor(initialHandlers: Array<RequestHandler | WebSocketHandler>);
|
|
23
|
-
prepend(runtimeHandles: Array<RequestHandler | WebSocketHandler>): void;
|
|
24
|
-
reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
|
|
25
|
-
currentHandlers(): Array<RequestHandler | WebSocketHandler>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Generic class for the mock API setup.
|
|
29
|
-
*/
|
|
30
|
-
declare abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
|
|
31
|
-
protected handlersController: HandlersController;
|
|
32
|
-
protected readonly emitter: Emitter<EventsMap>;
|
|
33
|
-
protected readonly publicEmitter: Emitter<EventsMap>;
|
|
34
|
-
readonly events: LifeCycleEventEmitter<EventsMap>;
|
|
35
|
-
constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>);
|
|
36
|
-
private validateHandlers;
|
|
37
|
-
use(...runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
|
|
38
|
-
restoreHandlers(): void;
|
|
39
|
-
resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
|
|
40
|
-
listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
|
|
41
|
-
private createLifeCycleEvents;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export { HandlersController, InMemoryHandlersController, SetupApi };
|
package/lib/core/SetupApi.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { EventMap, Emitter } from 'strict-event-emitter';
|
|
2
|
-
import { R as RequestHandler } from './HttpResponse-Dj6ibgFJ.js';
|
|
3
|
-
import { LifeCycleEventEmitter } from './sharedOptions.js';
|
|
4
|
-
import { Disposable } from './utils/internal/Disposable.js';
|
|
5
|
-
import { WebSocketHandler } from './handlers/WebSocketHandler.js';
|
|
6
|
-
import '@mswjs/interceptors';
|
|
7
|
-
import './utils/internal/isIterable.js';
|
|
8
|
-
import './typeUtils.js';
|
|
9
|
-
import 'graphql';
|
|
10
|
-
import './utils/matching/matchRequestUrl.js';
|
|
11
|
-
import './utils/request/onUnhandledRequest.js';
|
|
12
|
-
import '@mswjs/interceptors/WebSocket';
|
|
13
|
-
|
|
14
|
-
declare abstract class HandlersController {
|
|
15
|
-
abstract prepend(runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
|
|
16
|
-
abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void;
|
|
17
|
-
abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>;
|
|
18
|
-
}
|
|
19
|
-
declare class InMemoryHandlersController implements HandlersController {
|
|
20
|
-
private initialHandlers;
|
|
21
|
-
private handlers;
|
|
22
|
-
constructor(initialHandlers: Array<RequestHandler | WebSocketHandler>);
|
|
23
|
-
prepend(runtimeHandles: Array<RequestHandler | WebSocketHandler>): void;
|
|
24
|
-
reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
|
|
25
|
-
currentHandlers(): Array<RequestHandler | WebSocketHandler>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Generic class for the mock API setup.
|
|
29
|
-
*/
|
|
30
|
-
declare abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
|
|
31
|
-
protected handlersController: HandlersController;
|
|
32
|
-
protected readonly emitter: Emitter<EventsMap>;
|
|
33
|
-
protected readonly publicEmitter: Emitter<EventsMap>;
|
|
34
|
-
readonly events: LifeCycleEventEmitter<EventsMap>;
|
|
35
|
-
constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>);
|
|
36
|
-
private validateHandlers;
|
|
37
|
-
use(...runtimeHandlers: Array<RequestHandler | WebSocketHandler>): void;
|
|
38
|
-
restoreHandlers(): void;
|
|
39
|
-
resetHandlers(...nextHandlers: Array<RequestHandler | WebSocketHandler>): void;
|
|
40
|
-
listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler>;
|
|
41
|
-
private createLifeCycleEvents;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export { HandlersController, InMemoryHandlersController, SetupApi };
|
package/lib/core/SetupApi.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var SetupApi_exports = {};
|
|
20
|
-
__export(SetupApi_exports, {
|
|
21
|
-
HandlersController: () => HandlersController,
|
|
22
|
-
InMemoryHandlersController: () => InMemoryHandlersController,
|
|
23
|
-
SetupApi: () => SetupApi
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(SetupApi_exports);
|
|
26
|
-
var import_outvariant = require("outvariant");
|
|
27
|
-
var import_strict_event_emitter = require("strict-event-emitter");
|
|
28
|
-
var import_devUtils = require("./utils/internal/devUtils");
|
|
29
|
-
var import_pipeEvents = require("./utils/internal/pipeEvents");
|
|
30
|
-
var import_toReadonlyArray = require("./utils/internal/toReadonlyArray");
|
|
31
|
-
var import_Disposable = require("./utils/internal/Disposable");
|
|
32
|
-
class HandlersController {
|
|
33
|
-
}
|
|
34
|
-
class InMemoryHandlersController {
|
|
35
|
-
constructor(initialHandlers) {
|
|
36
|
-
this.initialHandlers = initialHandlers;
|
|
37
|
-
this.handlers = [...initialHandlers];
|
|
38
|
-
}
|
|
39
|
-
handlers;
|
|
40
|
-
prepend(runtimeHandles) {
|
|
41
|
-
this.handlers.unshift(...runtimeHandles);
|
|
42
|
-
}
|
|
43
|
-
reset(nextHandlers) {
|
|
44
|
-
this.handlers = nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers];
|
|
45
|
-
}
|
|
46
|
-
currentHandlers() {
|
|
47
|
-
return this.handlers;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
class SetupApi extends import_Disposable.Disposable {
|
|
51
|
-
handlersController;
|
|
52
|
-
emitter;
|
|
53
|
-
publicEmitter;
|
|
54
|
-
events;
|
|
55
|
-
constructor(...initialHandlers) {
|
|
56
|
-
super();
|
|
57
|
-
(0, import_outvariant.invariant)(
|
|
58
|
-
this.validateHandlers(initialHandlers),
|
|
59
|
-
import_devUtils.devUtils.formatMessage(
|
|
60
|
-
`Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`
|
|
61
|
-
)
|
|
62
|
-
);
|
|
63
|
-
this.handlersController = new InMemoryHandlersController(initialHandlers);
|
|
64
|
-
this.emitter = new import_strict_event_emitter.Emitter();
|
|
65
|
-
this.publicEmitter = new import_strict_event_emitter.Emitter();
|
|
66
|
-
(0, import_pipeEvents.pipeEvents)(this.emitter, this.publicEmitter);
|
|
67
|
-
this.events = this.createLifeCycleEvents();
|
|
68
|
-
this.subscriptions.push(() => {
|
|
69
|
-
this.emitter.removeAllListeners();
|
|
70
|
-
this.publicEmitter.removeAllListeners();
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
validateHandlers(handlers) {
|
|
74
|
-
return handlers.every((handler) => !Array.isArray(handler));
|
|
75
|
-
}
|
|
76
|
-
use(...runtimeHandlers) {
|
|
77
|
-
(0, import_outvariant.invariant)(
|
|
78
|
-
this.validateHandlers(runtimeHandlers),
|
|
79
|
-
import_devUtils.devUtils.formatMessage(
|
|
80
|
-
`Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`
|
|
81
|
-
)
|
|
82
|
-
);
|
|
83
|
-
this.handlersController.prepend(runtimeHandlers);
|
|
84
|
-
}
|
|
85
|
-
restoreHandlers() {
|
|
86
|
-
this.handlersController.currentHandlers().forEach((handler) => {
|
|
87
|
-
if ("isUsed" in handler) {
|
|
88
|
-
handler.isUsed = false;
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
resetHandlers(...nextHandlers) {
|
|
93
|
-
this.handlersController.reset(nextHandlers);
|
|
94
|
-
}
|
|
95
|
-
listHandlers() {
|
|
96
|
-
return (0, import_toReadonlyArray.toReadonlyArray)(this.handlersController.currentHandlers());
|
|
97
|
-
}
|
|
98
|
-
createLifeCycleEvents() {
|
|
99
|
-
return {
|
|
100
|
-
on: (...args) => {
|
|
101
|
-
return this.publicEmitter.on(...args);
|
|
102
|
-
},
|
|
103
|
-
removeListener: (...args) => {
|
|
104
|
-
return this.publicEmitter.removeListener(...args);
|
|
105
|
-
},
|
|
106
|
-
removeAllListeners: (...args) => {
|
|
107
|
-
return this.publicEmitter.removeAllListeners(...args);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=SetupApi.js.map
|
package/lib/core/SetupApi.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/SetupApi.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport { RequestHandler } from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { Disposable } from './utils/internal/Disposable'\nimport type { WebSocketHandler } from './handlers/WebSocketHandler'\n\nexport abstract class HandlersController {\n abstract prepend(\n runtimeHandlers: Array<RequestHandler | WebSocketHandler>,\n ): void\n abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void\n abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>\n}\n\nexport class InMemoryHandlersController implements HandlersController {\n private handlers: Array<RequestHandler | WebSocketHandler>\n\n constructor(\n private initialHandlers: Array<RequestHandler | WebSocketHandler>,\n ) {\n this.handlers = [...initialHandlers]\n }\n\n public prepend(\n runtimeHandles: Array<RequestHandler | WebSocketHandler>,\n ): void {\n this.handlers.unshift(...runtimeHandles)\n }\n\n public reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void {\n this.handlers =\n nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n }\n\n public currentHandlers(): Array<RequestHandler | WebSocketHandler> {\n return this.handlers\n }\n}\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> extends Disposable {\n protected handlersController: HandlersController\n protected readonly emitter: Emitter<EventsMap>\n protected readonly publicEmitter: Emitter<EventsMap>\n\n public readonly events: LifeCycleEventEmitter<EventsMap>\n\n constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>) {\n super()\n\n invariant(\n this.validateHandlers(initialHandlers),\n devUtils.formatMessage(\n `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,\n ),\n )\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter<EventsMap>()\n this.publicEmitter = new Emitter<EventsMap>()\n pipeEvents(this.emitter, this.publicEmitter)\n\n this.events = this.createLifeCycleEvents()\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n private validateHandlers(handlers: ReadonlyArray<unknown>): boolean {\n // Guard against incorrect call signature of the setup API.\n return handlers.every((handler) => !Array.isArray(handler))\n }\n\n public use(\n ...runtimeHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n invariant(\n this.validateHandlers(runtimeHandlers),\n devUtils.formatMessage(\n `Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,\n ),\n )\n\n this.handlersController.prepend(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n })\n }\n\n public resetHandlers(\n ...nextHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler> {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n\n private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n return {\n on: (...args: any[]) => {\n return (this.publicEmitter.on as any)(...args)\n },\n removeListener: (...args: any[]) => {\n return (this.publicEmitter.removeListener as any)(...args)\n },\n removeAllListeners: (...args: any[]) => {\n return this.publicEmitter.removeAllListeners(...args)\n },\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAA0B;AAC1B,kCAAkC;AAGlC,sBAAyB;AACzB,wBAA2B;AAC3B,6BAAgC;AAChC,wBAA2B;AAGpB,MAAe,mBAAmB;AAMzC;AAEO,MAAM,2BAAyD;AAAA,EAGpE,YACU,iBACR;AADQ;AAER,SAAK,WAAW,CAAC,GAAG,eAAe;AAAA,EACrC;AAAA,EANQ;AAAA,EAQD,QACL,gBACM;AACN,SAAK,SAAS,QAAQ,GAAG,cAAc;AAAA,EACzC;AAAA,EAEO,MAAM,cAA8D;AACzE,SAAK,WACH,aAAa,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,EAC1E;AAAA,EAEO,kBAA4D;AACjE,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,iBAA6C,6BAAW;AAAA,EAClE;AAAA,EACS;AAAA,EACA;AAAA,EAEH;AAAA,EAEhB,eAAe,iBAA2D;AACxE,UAAM;AAEN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,oCAAmB;AACtC,SAAK,gBAAgB,IAAI,oCAAmB;AAC5C,sCAAW,KAAK,SAAS,KAAK,aAAa;AAE3C,SAAK,SAAS,KAAK,sBAAsB;AAEzC,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB,UAA2C;AAElE,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEO,OACF,iBACG;AACN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,yBAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,mBAAmB,QAAQ,eAAe;AAAA,EACjD;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,UAAI,YAAY,SAAS;AACvB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,iBACF,cACG;AACN,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAAiE;AACtE,eAAO,wCAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AAAA,EAEQ,wBAA0D;AAChE,WAAO;AAAA,MACL,IAAI,IAAI,SAAgB;AACtB,eAAQ,KAAK,cAAc,GAAW,GAAG,IAAI;AAAA,MAC/C;AAAA,MACA,gBAAgB,IAAI,SAAgB;AAClC,eAAQ,KAAK,cAAc,eAAuB,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,oBAAoB,IAAI,SAAgB;AACtC,eAAO,KAAK,cAAc,mBAAmB,GAAG,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
package/lib/core/SetupApi.mjs
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { invariant } from "outvariant";
|
|
2
|
-
import { Emitter } from "strict-event-emitter";
|
|
3
|
-
import { devUtils } from './utils/internal/devUtils.mjs';
|
|
4
|
-
import { pipeEvents } from './utils/internal/pipeEvents.mjs';
|
|
5
|
-
import { toReadonlyArray } from './utils/internal/toReadonlyArray.mjs';
|
|
6
|
-
import { Disposable } from './utils/internal/Disposable.mjs';
|
|
7
|
-
class HandlersController {
|
|
8
|
-
}
|
|
9
|
-
class InMemoryHandlersController {
|
|
10
|
-
constructor(initialHandlers) {
|
|
11
|
-
this.initialHandlers = initialHandlers;
|
|
12
|
-
this.handlers = [...initialHandlers];
|
|
13
|
-
}
|
|
14
|
-
handlers;
|
|
15
|
-
prepend(runtimeHandles) {
|
|
16
|
-
this.handlers.unshift(...runtimeHandles);
|
|
17
|
-
}
|
|
18
|
-
reset(nextHandlers) {
|
|
19
|
-
this.handlers = nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers];
|
|
20
|
-
}
|
|
21
|
-
currentHandlers() {
|
|
22
|
-
return this.handlers;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
class SetupApi extends Disposable {
|
|
26
|
-
handlersController;
|
|
27
|
-
emitter;
|
|
28
|
-
publicEmitter;
|
|
29
|
-
events;
|
|
30
|
-
constructor(...initialHandlers) {
|
|
31
|
-
super();
|
|
32
|
-
invariant(
|
|
33
|
-
this.validateHandlers(initialHandlers),
|
|
34
|
-
devUtils.formatMessage(
|
|
35
|
-
`Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`
|
|
36
|
-
)
|
|
37
|
-
);
|
|
38
|
-
this.handlersController = new InMemoryHandlersController(initialHandlers);
|
|
39
|
-
this.emitter = new Emitter();
|
|
40
|
-
this.publicEmitter = new Emitter();
|
|
41
|
-
pipeEvents(this.emitter, this.publicEmitter);
|
|
42
|
-
this.events = this.createLifeCycleEvents();
|
|
43
|
-
this.subscriptions.push(() => {
|
|
44
|
-
this.emitter.removeAllListeners();
|
|
45
|
-
this.publicEmitter.removeAllListeners();
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
validateHandlers(handlers) {
|
|
49
|
-
return handlers.every((handler) => !Array.isArray(handler));
|
|
50
|
-
}
|
|
51
|
-
use(...runtimeHandlers) {
|
|
52
|
-
invariant(
|
|
53
|
-
this.validateHandlers(runtimeHandlers),
|
|
54
|
-
devUtils.formatMessage(
|
|
55
|
-
`Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`
|
|
56
|
-
)
|
|
57
|
-
);
|
|
58
|
-
this.handlersController.prepend(runtimeHandlers);
|
|
59
|
-
}
|
|
60
|
-
restoreHandlers() {
|
|
61
|
-
this.handlersController.currentHandlers().forEach((handler) => {
|
|
62
|
-
if ("isUsed" in handler) {
|
|
63
|
-
handler.isUsed = false;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
resetHandlers(...nextHandlers) {
|
|
68
|
-
this.handlersController.reset(nextHandlers);
|
|
69
|
-
}
|
|
70
|
-
listHandlers() {
|
|
71
|
-
return toReadonlyArray(this.handlersController.currentHandlers());
|
|
72
|
-
}
|
|
73
|
-
createLifeCycleEvents() {
|
|
74
|
-
return {
|
|
75
|
-
on: (...args) => {
|
|
76
|
-
return this.publicEmitter.on(...args);
|
|
77
|
-
},
|
|
78
|
-
removeListener: (...args) => {
|
|
79
|
-
return this.publicEmitter.removeListener(...args);
|
|
80
|
-
},
|
|
81
|
-
removeAllListeners: (...args) => {
|
|
82
|
-
return this.publicEmitter.removeAllListeners(...args);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
export {
|
|
88
|
-
HandlersController,
|
|
89
|
-
InMemoryHandlersController,
|
|
90
|
-
SetupApi
|
|
91
|
-
};
|
|
92
|
-
//# sourceMappingURL=SetupApi.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/SetupApi.ts"],"sourcesContent":["import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport { RequestHandler } from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { Disposable } from './utils/internal/Disposable'\nimport type { WebSocketHandler } from './handlers/WebSocketHandler'\n\nexport abstract class HandlersController {\n abstract prepend(\n runtimeHandlers: Array<RequestHandler | WebSocketHandler>,\n ): void\n abstract reset(nextHandles: Array<RequestHandler | WebSocketHandler>): void\n abstract currentHandlers(): Array<RequestHandler | WebSocketHandler>\n}\n\nexport class InMemoryHandlersController implements HandlersController {\n private handlers: Array<RequestHandler | WebSocketHandler>\n\n constructor(\n private initialHandlers: Array<RequestHandler | WebSocketHandler>,\n ) {\n this.handlers = [...initialHandlers]\n }\n\n public prepend(\n runtimeHandles: Array<RequestHandler | WebSocketHandler>,\n ): void {\n this.handlers.unshift(...runtimeHandles)\n }\n\n public reset(nextHandlers: Array<RequestHandler | WebSocketHandler>): void {\n this.handlers =\n nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n }\n\n public currentHandlers(): Array<RequestHandler | WebSocketHandler> {\n return this.handlers\n }\n}\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> extends Disposable {\n protected handlersController: HandlersController\n protected readonly emitter: Emitter<EventsMap>\n protected readonly publicEmitter: Emitter<EventsMap>\n\n public readonly events: LifeCycleEventEmitter<EventsMap>\n\n constructor(...initialHandlers: Array<RequestHandler | WebSocketHandler>) {\n super()\n\n invariant(\n this.validateHandlers(initialHandlers),\n devUtils.formatMessage(\n `Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`,\n ),\n )\n\n this.handlersController = new InMemoryHandlersController(initialHandlers)\n\n this.emitter = new Emitter<EventsMap>()\n this.publicEmitter = new Emitter<EventsMap>()\n pipeEvents(this.emitter, this.publicEmitter)\n\n this.events = this.createLifeCycleEvents()\n\n this.subscriptions.push(() => {\n this.emitter.removeAllListeners()\n this.publicEmitter.removeAllListeners()\n })\n }\n\n private validateHandlers(handlers: ReadonlyArray<unknown>): boolean {\n // Guard against incorrect call signature of the setup API.\n return handlers.every((handler) => !Array.isArray(handler))\n }\n\n public use(\n ...runtimeHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n invariant(\n this.validateHandlers(runtimeHandlers),\n devUtils.formatMessage(\n `Failed to call \"use()\" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`,\n ),\n )\n\n this.handlersController.prepend(runtimeHandlers)\n }\n\n public restoreHandlers(): void {\n this.handlersController.currentHandlers().forEach((handler) => {\n if ('isUsed' in handler) {\n handler.isUsed = false\n }\n })\n }\n\n public resetHandlers(\n ...nextHandlers: Array<RequestHandler | WebSocketHandler>\n ): void {\n this.handlersController.reset(nextHandlers)\n }\n\n public listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler> {\n return toReadonlyArray(this.handlersController.currentHandlers())\n }\n\n private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n return {\n on: (...args: any[]) => {\n return (this.publicEmitter.on as any)(...args)\n },\n removeListener: (...args: any[]) => {\n return (this.publicEmitter.removeListener as any)(...args)\n },\n removeAllListeners: (...args: any[]) => {\n return this.publicEmitter.removeAllListeners(...args)\n },\n }\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAmB,eAAe;AAGlC,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAGpB,MAAe,mBAAmB;AAMzC;AAEO,MAAM,2BAAyD;AAAA,EAGpE,YACU,iBACR;AADQ;AAER,SAAK,WAAW,CAAC,GAAG,eAAe;AAAA,EACrC;AAAA,EANQ;AAAA,EAQD,QACL,gBACM;AACN,SAAK,SAAS,QAAQ,GAAG,cAAc;AAAA,EACzC;AAAA,EAEO,MAAM,cAA8D;AACzE,SAAK,WACH,aAAa,SAAS,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,EAC1E;AAAA,EAEO,kBAA4D;AACjE,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,iBAA6C,WAAW;AAAA,EAClE;AAAA,EACS;AAAA,EACA;AAAA,EAEH;AAAA,EAEhB,eAAe,iBAA2D;AACxE,UAAM;AAEN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,qBAAqB,IAAI,2BAA2B,eAAe;AAExE,SAAK,UAAU,IAAI,QAAmB;AACtC,SAAK,gBAAgB,IAAI,QAAmB;AAC5C,eAAW,KAAK,SAAS,KAAK,aAAa;AAE3C,SAAK,SAAS,KAAK,sBAAsB;AAEzC,SAAK,cAAc,KAAK,MAAM;AAC5B,WAAK,QAAQ,mBAAmB;AAChC,WAAK,cAAc,mBAAmB;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB,UAA2C;AAElE,WAAO,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEO,OACF,iBACG;AACN;AAAA,MACE,KAAK,iBAAiB,eAAe;AAAA,MACrC,SAAS;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,SAAK,mBAAmB,QAAQ,eAAe;AAAA,EACjD;AAAA,EAEO,kBAAwB;AAC7B,SAAK,mBAAmB,gBAAgB,EAAE,QAAQ,CAAC,YAAY;AAC7D,UAAI,YAAY,SAAS;AACvB,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,iBACF,cACG;AACN,SAAK,mBAAmB,MAAM,YAAY;AAAA,EAC5C;AAAA,EAEO,eAAiE;AACtE,WAAO,gBAAgB,KAAK,mBAAmB,gBAAgB,CAAC;AAAA,EAClE;AAAA,EAEQ,wBAA0D;AAChE,WAAO;AAAA,MACL,IAAI,IAAI,SAAgB;AACtB,eAAQ,KAAK,cAAc,GAAW,GAAG,IAAI;AAAA,MAC/C;AAAA,MACA,gBAAgB,IAAI,SAAgB;AAClC,eAAQ,KAAK,cAAc,eAAuB,GAAG,IAAI;AAAA,MAC3D;AAAA,MACA,oBAAoB,IAAI,SAAgB;AACtC,eAAO,KAAK,cAAc,mBAAmB,GAAG,IAAI;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|