msw 0.40.2 → 0.42.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/config/constants.js +1 -3
- package/config/scripts/postinstall.js +32 -25
- package/lib/glossary-58eca5a8.d.ts +332 -0
- package/lib/iife/index.js +10911 -21
- package/lib/iife/index.js.map +1 -0
- package/lib/index.d.ts +353 -0
- package/lib/index.js +1875 -0
- package/lib/index.js.map +1 -0
- package/lib/{esm/mockServiceWorker.js → mockServiceWorker.js} +1 -1
- package/lib/native/index.d.ts +9 -0
- package/lib/native/index.js +1304 -0
- package/lib/native/index.mjs +1291 -0
- package/lib/node/index.d.ts +15 -0
- package/lib/node/index.js +1312 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/index.mjs +1297 -0
- package/lib/node/index.mjs.map +1 -0
- package/native/package.json +3 -2
- package/node/package.json +3 -2
- package/package.json +14 -24
- package/lib/esm/errors-deps.js +0 -74
- package/lib/esm/fetch-deps.js +0 -1005
- package/lib/esm/graphql-deps.js +0 -3545
- package/lib/esm/graphql.js +0 -5
- package/lib/esm/index-deps.js +0 -21
- package/lib/esm/index.js +0 -1731
- package/lib/esm/index2.js +0 -3
- package/lib/esm/matchRequestUrl-deps.js +0 -992
- package/lib/esm/rest-deps.js +0 -103
- package/lib/esm/rest.js +0 -5
- package/lib/esm/xml-deps.js +0 -44
- package/lib/iife/mockServiceWorker.js +0 -338
- package/lib/types/context/body.d.ts +0 -9
- package/lib/types/context/cookie.d.ts +0 -7
- package/lib/types/context/data.d.ts +0 -8
- package/lib/types/context/delay.d.ts +0 -15
- package/lib/types/context/errors.d.ts +0 -8
- package/lib/types/context/extensions.d.ts +0 -8
- package/lib/types/context/fetch.d.ts +0 -9
- package/lib/types/context/index.d.ts +0 -12
- package/lib/types/context/json.d.ts +0 -12
- package/lib/types/context/set.d.ts +0 -18
- package/lib/types/context/status.d.ts +0 -9
- package/lib/types/context/text.d.ts +0 -8
- package/lib/types/context/xml.d.ts +0 -9
- package/lib/types/graphql.d.ts +0 -74
- package/lib/types/handlers/GraphQLHandler.d.ts +0 -39
- package/lib/types/handlers/RequestHandler.d.ts +0 -103
- package/lib/types/handlers/RestHandler.d.ts +0 -47
- package/lib/types/index.d.ts +0 -26
- package/lib/types/native/index.d.ts +0 -1
- package/lib/types/node/createSetupServer.d.ts +0 -8
- package/lib/types/node/glossary.d.ts +0 -38
- package/lib/types/node/index.d.ts +0 -2
- package/lib/types/node/setupServer.d.ts +0 -6
- package/lib/types/response.d.ts +0 -35
- package/lib/types/rest.d.ts +0 -13
- package/lib/types/setupWorker/glossary.d.ts +0 -161
- package/lib/types/setupWorker/setupWorker.d.ts +0 -9
- package/lib/types/setupWorker/start/createFallbackStart.d.ts +0 -2
- package/lib/types/setupWorker/start/createStartHandler.d.ts +0 -2
- package/lib/types/setupWorker/start/utils/enableMocking.d.ts +0 -5
- package/lib/types/setupWorker/start/utils/getWorkerByRegistration.d.ts +0 -6
- package/lib/types/setupWorker/start/utils/getWorkerInstance.d.ts +0 -6
- package/lib/types/setupWorker/start/utils/prepareStartHandler.d.ts +0 -9
- package/lib/types/setupWorker/start/utils/printStartMessage.d.ts +0 -10
- package/lib/types/setupWorker/start/utils/validateWorkerScope.d.ts +0 -2
- package/lib/types/setupWorker/stop/createFallbackStop.d.ts +0 -2
- package/lib/types/setupWorker/stop/createStop.d.ts +0 -2
- package/lib/types/setupWorker/stop/utils/printStopMessage.d.ts +0 -3
- package/lib/types/sharedOptions.d.ts +0 -24
- package/lib/types/typeUtils.d.ts +0 -7
- package/lib/types/utils/NetworkError.d.ts +0 -3
- package/lib/types/utils/createBroadcastChannel.d.ts +0 -18
- package/lib/types/utils/deferNetworkRequestsUntil.d.ts +0 -6
- package/lib/types/utils/getResponse.d.ts +0 -15
- package/lib/types/utils/handleRequest.d.ts +0 -34
- package/lib/types/utils/internal/compose.d.ts +0 -14
- package/lib/types/utils/internal/devUtils.d.ts +0 -18
- package/lib/types/utils/internal/getCallFrame.d.ts +0 -4
- package/lib/types/utils/internal/isIterable.d.ts +0 -4
- package/lib/types/utils/internal/isObject.d.ts +0 -4
- package/lib/types/utils/internal/isStringEqual.d.ts +0 -4
- package/lib/types/utils/internal/jsonParse.d.ts +0 -5
- package/lib/types/utils/internal/mergeRight.d.ts +0 -5
- package/lib/types/utils/internal/parseGraphQLRequest.d.ts +0 -23
- package/lib/types/utils/internal/parseMultipartData.d.ts +0 -6
- package/lib/types/utils/internal/pipeEvents.d.ts +0 -6
- package/lib/types/utils/internal/requestHandlerUtils.d.ts +0 -4
- package/lib/types/utils/internal/requestIntegrityCheck.d.ts +0 -2
- package/lib/types/utils/internal/tryCatch.d.ts +0 -1
- package/lib/types/utils/internal/uuidv4.d.ts +0 -1
- package/lib/types/utils/logging/getStatusCodeColor.d.ts +0 -9
- package/lib/types/utils/logging/getTimestamp.d.ts +0 -4
- package/lib/types/utils/logging/prepareRequest.d.ts +0 -23
- package/lib/types/utils/logging/prepareResponse.d.ts +0 -10
- package/lib/types/utils/matching/matchRequestUrl.d.ts +0 -17
- package/lib/types/utils/matching/normalizePath.d.ts +0 -9
- package/lib/types/utils/request/getPublicUrlFromRequest.d.ts +0 -6
- package/lib/types/utils/request/getRequestCookies.d.ts +0 -7
- package/lib/types/utils/request/onUnhandledRequest.d.ts +0 -8
- package/lib/types/utils/request/parseBody.d.ts +0 -5
- package/lib/types/utils/request/parseIsomorphicRequest.d.ts +0 -6
- package/lib/types/utils/request/parseWorkerRequest.d.ts +0 -7
- package/lib/types/utils/request/pruneGetRequestBody.d.ts +0 -7
- package/lib/types/utils/request/readResponseCookies.d.ts +0 -3
- package/lib/types/utils/request/setRequestCookies.d.ts +0 -9
- package/lib/types/utils/url/cleanUrl.d.ts +0 -5
- package/lib/types/utils/url/getAbsoluteUrl.d.ts +0 -4
- package/lib/types/utils/url/getAbsoluteWorkerUrl.d.ts +0 -5
- package/lib/types/utils/url/isAbsoluteUrl.d.ts +0 -4
- package/lib/types/utils/worker/createFallbackRequestListener.d.ts +0 -4
- package/lib/types/utils/worker/createRequestListener.d.ts +0 -4
- package/lib/types/utils/worker/createResponseListener.d.ts +0 -3
- package/lib/umd/index.js +0 -31617
- package/lib/umd/mockServiceWorker.js +0 -338
- package/native/lib/index.js +0 -6384
- package/node/lib/index.js +0 -8276
package/config/constants.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const path = require('path')
|
|
2
|
-
const packageJson = require('../package.json')
|
|
3
2
|
|
|
4
3
|
const SERVICE_WORKER_SOURCE_PATH = path.resolve(
|
|
5
4
|
__dirname,
|
|
@@ -9,8 +8,7 @@ const SERVICE_WORKER_SOURCE_PATH = path.resolve(
|
|
|
9
8
|
|
|
10
9
|
const SERVICE_WORKER_BUILD_PATH = path.resolve(
|
|
11
10
|
__dirname,
|
|
12
|
-
'../',
|
|
13
|
-
path.dirname(packageJson.module),
|
|
11
|
+
'../lib',
|
|
14
12
|
path.basename(SERVICE_WORKER_SOURCE_PATH),
|
|
15
13
|
)
|
|
16
14
|
|
|
@@ -7,35 +7,42 @@ const { execSync } = require('child_process')
|
|
|
7
7
|
// NPM stores the parent project directory in the "INIT_CWD" env variable.
|
|
8
8
|
const parentPackageCwd = process.env.INIT_CWD
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
if (!packageJson.msw || !packageJson.msw.workerDirectory) {
|
|
16
|
-
return
|
|
17
|
-
}
|
|
10
|
+
function postinstall() {
|
|
11
|
+
// 1. Check if "package.json" has "msw.workerDirectory" property set.
|
|
12
|
+
const packageJson = JSON.parse(
|
|
13
|
+
fs.readFileSync(path.resolve(parentPackageCwd, 'package.json'), 'utf8'),
|
|
14
|
+
)
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
if (!packageJson.msw || !packageJson.msw.workerDirectory) {
|
|
17
|
+
return
|
|
18
|
+
}
|
|
22
19
|
|
|
23
|
-
if
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
// 2. Check if the worker directory is an existing path.
|
|
21
|
+
const { workerDirectory } = packageJson.msw
|
|
22
|
+
const absoluteWorkerDirectory = path.resolve(
|
|
23
|
+
parentPackageCwd,
|
|
26
24
|
workerDirectory,
|
|
27
25
|
)
|
|
28
|
-
}
|
|
29
26
|
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
if (!fs.existsSync(absoluteWorkerDirectory)) {
|
|
28
|
+
return console.error(
|
|
29
|
+
`[MSW] Failed to automatically update the worker script at "%s": given path does not exist.`,
|
|
30
|
+
workerDirectory,
|
|
31
|
+
)
|
|
32
|
+
}
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
)
|
|
34
|
+
// 3. Update the worker script.
|
|
35
|
+
const cliExecutable = path.resolve(process.cwd(), 'cli/index.js')
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
execSync(`node ${cliExecutable} init ${absoluteWorkerDirectory}`, {
|
|
39
|
+
cwd: parentPackageCwd,
|
|
40
|
+
})
|
|
41
|
+
} catch (error) {
|
|
42
|
+
console.error(
|
|
43
|
+
`[MSW] Failed to automatically update the worker script:\n${error}`,
|
|
44
|
+
)
|
|
45
|
+
}
|
|
41
46
|
}
|
|
47
|
+
|
|
48
|
+
postinstall()
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { PartialDeep } from 'type-fest';
|
|
2
|
+
import { IsomorphicResponse } from '@mswjs/interceptors';
|
|
3
|
+
import { FlatHeadersObject, Headers } from 'headers-polyfill';
|
|
4
|
+
import { StrictEventEmitter } from 'strict-event-emitter';
|
|
5
|
+
|
|
6
|
+
declare type HeadersObject<KeyType extends string = string> = Record<KeyType, string | string[]>;
|
|
7
|
+
/**
|
|
8
|
+
* @see https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name
|
|
9
|
+
*/
|
|
10
|
+
declare type ForbiddenHeaderNames = 'cookie' | 'cookie2' | 'set-cookie' | 'set-cookie2';
|
|
11
|
+
declare type ForbiddenHeaderError<HeaderName extends string> = `SafeResponseHeader: the '${HeaderName}' header cannot be set on the response. Please use the 'ctx.cookie()' function instead.`;
|
|
12
|
+
/**
|
|
13
|
+
* Sets one or multiple response headers.
|
|
14
|
+
* @example
|
|
15
|
+
* ctx.set('Content-Type', 'text/plain')
|
|
16
|
+
* ctx.set({
|
|
17
|
+
* 'Accept': 'application/javascript',
|
|
18
|
+
* 'Content-Type': "text/plain"
|
|
19
|
+
* })
|
|
20
|
+
* @see {@link https://mswjs.io/docs/api/context/set `ctx.set()`}
|
|
21
|
+
*/
|
|
22
|
+
declare function set<N extends string | HeadersObject>(...args: N extends string ? Lowercase<N> extends ForbiddenHeaderNames ? ForbiddenHeaderError<N> : [N, string] : N extends HeadersObject<infer CookieName> ? Lowercase<CookieName> extends ForbiddenHeaderNames ? ForbiddenHeaderError<CookieName> : [N] : [N]): ResponseTransformer;
|
|
23
|
+
|
|
24
|
+
declare type DelayMode = 'real' | 'infinite';
|
|
25
|
+
/**
|
|
26
|
+
* Delays the response by the given duration (ms).
|
|
27
|
+
* @example
|
|
28
|
+
* res(ctx.delay(1200)) // delay response by 1200ms
|
|
29
|
+
* res(ctx.delay()) // emulate realistic server response time
|
|
30
|
+
* res(ctx.delay('infinite')) // delay response infinitely
|
|
31
|
+
* @see {@link https://mswjs.io/docs/api/context/delay `ctx.delay()`}
|
|
32
|
+
*/
|
|
33
|
+
declare const delay: (durationOrMode?: DelayMode | number) => ResponseTransformer;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Performs a bypassed request inside a request handler.
|
|
37
|
+
* @example
|
|
38
|
+
* const originalResponse = await ctx.fetch(req)
|
|
39
|
+
* @see {@link https://mswjs.io/docs/api/context/fetch `ctx.fetch()`}
|
|
40
|
+
*/
|
|
41
|
+
declare const fetch: (input: string | MockedRequest, requestInit?: RequestInit) => Promise<Response>;
|
|
42
|
+
|
|
43
|
+
interface ResponseLookupResult {
|
|
44
|
+
handler?: RequestHandler;
|
|
45
|
+
publicRequest?: any;
|
|
46
|
+
parsedRequest?: any;
|
|
47
|
+
response?: MockedResponse;
|
|
48
|
+
}
|
|
49
|
+
interface ResponseResolutionContext {
|
|
50
|
+
baseUrl?: string;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface UnhandledRequestPrint {
|
|
54
|
+
warning(): void;
|
|
55
|
+
error(): void;
|
|
56
|
+
}
|
|
57
|
+
declare type UnhandledRequestCallback = (request: MockedRequest, print: UnhandledRequestPrint) => void;
|
|
58
|
+
declare type UnhandledRequestStrategy = 'bypass' | 'warn' | 'error' | UnhandledRequestCallback;
|
|
59
|
+
|
|
60
|
+
interface SharedOptions {
|
|
61
|
+
/**
|
|
62
|
+
* Specifies how to react to a request that has no corresponding
|
|
63
|
+
* request handler. Warns on unhandled requests by default.
|
|
64
|
+
*
|
|
65
|
+
* @example worker.start({ onUnhandledRequest: 'bypass' })
|
|
66
|
+
* @example worker.start({ onUnhandledRequest: 'warn' })
|
|
67
|
+
* @example server.listen({ onUnhandledRequest: 'error' })
|
|
68
|
+
*/
|
|
69
|
+
onUnhandledRequest?: UnhandledRequestStrategy;
|
|
70
|
+
}
|
|
71
|
+
interface LifeCycleEventsMap<ResponseType> {
|
|
72
|
+
'request:start': (request: MockedRequest) => void;
|
|
73
|
+
'request:match': (request: MockedRequest) => void;
|
|
74
|
+
'request:unhandled': (request: MockedRequest) => void;
|
|
75
|
+
'request:end': (request: MockedRequest) => void;
|
|
76
|
+
'response:mocked': (response: ResponseType, requestId: string) => void;
|
|
77
|
+
'response:bypass': (response: ResponseType, requestId: string) => void;
|
|
78
|
+
unhandledException: (error: Error, request: MockedRequest) => void;
|
|
79
|
+
}
|
|
80
|
+
declare type LifeCycleEventEmitter<ResponseType> = Pick<StrictEventEmitter<ResponseType>, 'on' | 'removeListener' | 'removeAllListeners'>;
|
|
81
|
+
|
|
82
|
+
declare type WorkerLifecycleEventsMap = LifeCycleEventsMap<Response>;
|
|
83
|
+
declare type FindWorker = (scriptUrl: string, mockServiceWorkerUrl: string) => boolean;
|
|
84
|
+
interface StartOptions extends SharedOptions {
|
|
85
|
+
/**
|
|
86
|
+
* Service Worker registration options.
|
|
87
|
+
*/
|
|
88
|
+
serviceWorker?: {
|
|
89
|
+
/**
|
|
90
|
+
* Custom url to the worker script.
|
|
91
|
+
* @default "./mockServiceWorker.js"
|
|
92
|
+
*/
|
|
93
|
+
url?: string;
|
|
94
|
+
options?: RegistrationOptions;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Disables the logging of captured requests
|
|
98
|
+
* into browser's console.
|
|
99
|
+
* @default false
|
|
100
|
+
*/
|
|
101
|
+
quiet?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Defers any network requests until the Service Worker
|
|
104
|
+
* instance is activated.
|
|
105
|
+
* @default true
|
|
106
|
+
*/
|
|
107
|
+
waitUntilReady?: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* A custom lookup function to find a Mock Service Worker in the list
|
|
110
|
+
* of all registered Service Workers on the page.
|
|
111
|
+
*/
|
|
112
|
+
findWorker?: FindWorker;
|
|
113
|
+
}
|
|
114
|
+
interface SerializedResponse<BodyType extends DefaultBodyType = any> {
|
|
115
|
+
status: number;
|
|
116
|
+
statusText: string;
|
|
117
|
+
headers: FlatHeadersObject;
|
|
118
|
+
body: BodyType;
|
|
119
|
+
delay?: number;
|
|
120
|
+
}
|
|
121
|
+
declare type StartReturnType = Promise<ServiceWorkerRegistration | undefined>;
|
|
122
|
+
declare type StopHandler = () => void;
|
|
123
|
+
interface SetupWorkerApi {
|
|
124
|
+
/**
|
|
125
|
+
* Registers and activates the mock Service Worker.
|
|
126
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/start `worker.start()`}
|
|
127
|
+
*/
|
|
128
|
+
start: (options?: StartOptions) => StartReturnType;
|
|
129
|
+
/**
|
|
130
|
+
* Stops requests interception for the current client.
|
|
131
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/stop `worker.stop()`}
|
|
132
|
+
*/
|
|
133
|
+
stop: StopHandler;
|
|
134
|
+
/**
|
|
135
|
+
* Prepends given request handlers to the list of existing handlers.
|
|
136
|
+
* @param {RequestHandler[]} handlers List of runtime request handlers.
|
|
137
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/use `worker.use()`}
|
|
138
|
+
*/
|
|
139
|
+
use: (...handlers: RequestHandler[]) => void;
|
|
140
|
+
/**
|
|
141
|
+
* Marks all request handlers that respond using `res.once()` as unused.
|
|
142
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/restore-handlers `worker.restoreHandlers()`}
|
|
143
|
+
*/
|
|
144
|
+
restoreHandlers: () => void;
|
|
145
|
+
/**
|
|
146
|
+
* Resets request handlers to the initial list given to the `setupWorker` call, or to the explicit next request handlers list, if given.
|
|
147
|
+
* @param {RequestHandler[]} nextHandlers List of the new initial request handlers.
|
|
148
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/reset-handlers `worker.resetHandlers()`}
|
|
149
|
+
*/
|
|
150
|
+
resetHandlers: (...nextHandlers: RequestHandler[]) => void;
|
|
151
|
+
/**
|
|
152
|
+
* Lists all active request handlers.
|
|
153
|
+
* @see {@link https://mswjs.io/docs/api/setup-worker/print-handlers `worker.printHandlers()`}
|
|
154
|
+
*/
|
|
155
|
+
printHandlers: () => void;
|
|
156
|
+
events: LifeCycleEventEmitter<WorkerLifecycleEventsMap>;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
declare type DefaultContext = {
|
|
160
|
+
status: typeof status;
|
|
161
|
+
set: typeof set;
|
|
162
|
+
delay: typeof delay;
|
|
163
|
+
fetch: typeof fetch;
|
|
164
|
+
};
|
|
165
|
+
declare const defaultContext: DefaultContext;
|
|
166
|
+
declare type DefaultRequestMultipartBody = Record<string, string | File | (string | File)[]>;
|
|
167
|
+
declare type DefaultBodyType = Record<string, any> | DefaultRequestMultipartBody | string | number | boolean | null | undefined;
|
|
168
|
+
interface MockedRequest<Body = DefaultBodyType> {
|
|
169
|
+
id: string;
|
|
170
|
+
url: URL;
|
|
171
|
+
method: Request['method'];
|
|
172
|
+
headers: Headers;
|
|
173
|
+
cookies: Record<string, string>;
|
|
174
|
+
mode: Request['mode'];
|
|
175
|
+
keepalive: Request['keepalive'];
|
|
176
|
+
cache: Request['cache'];
|
|
177
|
+
destination: Request['destination'];
|
|
178
|
+
integrity: Request['integrity'];
|
|
179
|
+
credentials: Request['credentials'];
|
|
180
|
+
redirect: Request['redirect'];
|
|
181
|
+
referrer: Request['referrer'];
|
|
182
|
+
referrerPolicy: Request['referrerPolicy'];
|
|
183
|
+
body: Body;
|
|
184
|
+
bodyUsed: Request['bodyUsed'];
|
|
185
|
+
passthrough: typeof passthrough;
|
|
186
|
+
}
|
|
187
|
+
interface RequestHandlerDefaultInfo {
|
|
188
|
+
header: string;
|
|
189
|
+
}
|
|
190
|
+
interface RequestHandlerInternalInfo {
|
|
191
|
+
callFrame?: string;
|
|
192
|
+
}
|
|
193
|
+
declare type ContextMap = Record<string, (...args: any[]) => any>;
|
|
194
|
+
declare type ResponseResolverReturnType<ReturnType> = ReturnType | undefined | void;
|
|
195
|
+
declare type MaybeAsyncResponseResolverReturnType<ReturnType> = MaybePromise<ResponseResolverReturnType<ReturnType>>;
|
|
196
|
+
declare type AsyncResponseResolverReturnType<ReturnType> = MaybeAsyncResponseResolverReturnType<ReturnType> | Generator<MaybeAsyncResponseResolverReturnType<ReturnType>, MaybeAsyncResponseResolverReturnType<ReturnType>, MaybeAsyncResponseResolverReturnType<ReturnType>>;
|
|
197
|
+
declare type ResponseResolver<RequestType = MockedRequest, ContextType = typeof defaultContext, BodyType = any> = (req: RequestType, res: ResponseComposition<BodyType>, context: ContextType) => AsyncResponseResolverReturnType<MockedResponse<BodyType>>;
|
|
198
|
+
interface RequestHandlerOptions<HandlerInfo> {
|
|
199
|
+
info: HandlerInfo;
|
|
200
|
+
resolver: ResponseResolver<any, any>;
|
|
201
|
+
ctx?: ContextMap;
|
|
202
|
+
}
|
|
203
|
+
interface RequestHandlerExecutionResult<PublicRequestType> {
|
|
204
|
+
handler: RequestHandler;
|
|
205
|
+
parsedResult: any;
|
|
206
|
+
request: PublicRequestType;
|
|
207
|
+
response?: MockedResponse;
|
|
208
|
+
}
|
|
209
|
+
declare abstract class RequestHandler<HandlerInfo extends RequestHandlerDefaultInfo = RequestHandlerDefaultInfo, Request extends MockedRequest = MockedRequest, ParsedResult = any, PublicRequest extends MockedRequest = Request> {
|
|
210
|
+
info: HandlerInfo & RequestHandlerInternalInfo;
|
|
211
|
+
shouldSkip: boolean;
|
|
212
|
+
private ctx;
|
|
213
|
+
private resolverGenerator?;
|
|
214
|
+
private resolverGeneratorResult?;
|
|
215
|
+
protected resolver: ResponseResolver<any, any>;
|
|
216
|
+
constructor(options: RequestHandlerOptions<HandlerInfo>);
|
|
217
|
+
/**
|
|
218
|
+
* Determine if the captured request should be mocked.
|
|
219
|
+
*/
|
|
220
|
+
abstract predicate(request: MockedRequest, parsedResult: ParsedResult, resolutionContext?: ResponseResolutionContext): boolean;
|
|
221
|
+
/**
|
|
222
|
+
* Print out the successfully handled request.
|
|
223
|
+
*/
|
|
224
|
+
abstract log(request: Request, response: SerializedResponse<any>, handler: this, parsedResult: ParsedResult): void;
|
|
225
|
+
/**
|
|
226
|
+
* Parse the captured request to extract additional information from it.
|
|
227
|
+
* Parsed result is then exposed to other methods of this request handler.
|
|
228
|
+
*/
|
|
229
|
+
parse(_request: MockedRequest, _resolutionContext?: ResponseResolutionContext): ParsedResult;
|
|
230
|
+
/**
|
|
231
|
+
* Test if this handler matches the given request.
|
|
232
|
+
*/
|
|
233
|
+
test(request: MockedRequest, resolutionContext?: ResponseResolutionContext): boolean;
|
|
234
|
+
/**
|
|
235
|
+
* Derive the publicly exposed request (`req`) instance of the response resolver
|
|
236
|
+
* from the captured request and its parsed result.
|
|
237
|
+
*/
|
|
238
|
+
protected getPublicRequest(request: MockedRequest, _parsedResult: ParsedResult): PublicRequest;
|
|
239
|
+
markAsSkipped(shouldSkip?: boolean): void;
|
|
240
|
+
/**
|
|
241
|
+
* Execute this request handler and produce a mocked response
|
|
242
|
+
* using the given resolver function.
|
|
243
|
+
*/
|
|
244
|
+
run(request: MockedRequest, resolutionContext?: ResponseResolutionContext): Promise<RequestHandlerExecutionResult<PublicRequest> | null>;
|
|
245
|
+
private wrapResolver;
|
|
246
|
+
private createExecutionResult;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Bypass this intercepted request.
|
|
250
|
+
* This will make a call to the actual endpoint requested.
|
|
251
|
+
*/
|
|
252
|
+
declare function passthrough(): MockedResponse<null>;
|
|
253
|
+
|
|
254
|
+
declare type MaybePromise<ValueType = any> = ValueType | Promise<ValueType>;
|
|
255
|
+
/**
|
|
256
|
+
* Internal representation of a mocked response instance.
|
|
257
|
+
*/
|
|
258
|
+
interface MockedResponse<BodyType extends DefaultBodyType = any> {
|
|
259
|
+
body: BodyType;
|
|
260
|
+
status: number;
|
|
261
|
+
statusText: string;
|
|
262
|
+
headers: Headers;
|
|
263
|
+
once: boolean;
|
|
264
|
+
passthrough: boolean;
|
|
265
|
+
delay?: number;
|
|
266
|
+
}
|
|
267
|
+
declare type ResponseTransformer<BodyType extends TransformerBodyType = any, TransformerBodyType = any> = (res: MockedResponse<TransformerBodyType>) => MaybePromise<MockedResponse<BodyType>>;
|
|
268
|
+
declare type ResponseFunction<BodyType = any> = (...transformers: ResponseTransformer<BodyType>[]) => MaybePromise<MockedResponse<BodyType>>;
|
|
269
|
+
declare type ResponseComposition<BodyType = any> = ResponseFunction<BodyType> & {
|
|
270
|
+
/**
|
|
271
|
+
* Respond using a given mocked response to the first captured request.
|
|
272
|
+
* Does not affect any subsequent captured requests.
|
|
273
|
+
*/
|
|
274
|
+
once: ResponseFunction<BodyType>;
|
|
275
|
+
networkError: (message: string) => void;
|
|
276
|
+
};
|
|
277
|
+
declare const defaultResponse: Omit<MockedResponse, 'headers'>;
|
|
278
|
+
declare type ResponseCompositionOptions<BodyType> = {
|
|
279
|
+
defaultTransformers?: ResponseTransformer<BodyType>[];
|
|
280
|
+
mockedResponseOverrides?: Partial<MockedResponse>;
|
|
281
|
+
};
|
|
282
|
+
declare function createResponseComposition<BodyType>(responseOverrides?: Partial<MockedResponse<BodyType>>, defaultTransformers?: ResponseTransformer<BodyType>[]): ResponseFunction;
|
|
283
|
+
declare const response: ResponseFunction<any> & {
|
|
284
|
+
once: ResponseFunction<any>;
|
|
285
|
+
networkError(message: string): never;
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Sets a response status code and text.
|
|
290
|
+
* @example
|
|
291
|
+
* res(ctx.status(301))
|
|
292
|
+
* res(ctx.status(400, 'Custom status text'))
|
|
293
|
+
* @see {@link https://mswjs.io/docs/api/context/status `ctx.status()`}
|
|
294
|
+
*/
|
|
295
|
+
declare const status: (statusCode: number, statusText?: string) => ResponseTransformer;
|
|
296
|
+
|
|
297
|
+
declare type ServerLifecycleEventsMap = LifeCycleEventsMap<IsomorphicResponse>;
|
|
298
|
+
interface SetupServerApi {
|
|
299
|
+
/**
|
|
300
|
+
* Starts requests interception based on the previously provided request handlers.
|
|
301
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()`}
|
|
302
|
+
*/
|
|
303
|
+
listen(options?: PartialDeep<SharedOptions>): void;
|
|
304
|
+
/**
|
|
305
|
+
* Stops requests interception by restoring all augmented modules.
|
|
306
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()`}
|
|
307
|
+
*/
|
|
308
|
+
close(): void;
|
|
309
|
+
/**
|
|
310
|
+
* Prepends given request handlers to the list of existing handlers.
|
|
311
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()`}
|
|
312
|
+
*/
|
|
313
|
+
use(...handlers: RequestHandler[]): void;
|
|
314
|
+
/**
|
|
315
|
+
* Marks all request handlers that respond using `res.once()` as unused.
|
|
316
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()`}
|
|
317
|
+
*/
|
|
318
|
+
restoreHandlers(): void;
|
|
319
|
+
/**
|
|
320
|
+
* Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
|
|
321
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()`}
|
|
322
|
+
*/
|
|
323
|
+
resetHandlers(...nextHandlers: RequestHandler[]): void;
|
|
324
|
+
/**
|
|
325
|
+
* Lists all active request handlers.
|
|
326
|
+
* @see {@link https://mswjs.io/docs/api/setup-server/print-handlers `server.print-handlers()`}
|
|
327
|
+
*/
|
|
328
|
+
printHandlers(): void;
|
|
329
|
+
events: LifeCycleEventEmitter<ServerLifecycleEventsMap>;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export { AsyncResponseResolverReturnType as A, DefaultContext as D, MockedRequest as M, ResponseTransformer as R, SetupWorkerApi as S, set as a, RequestHandler as b, DefaultBodyType as c, delay as d, ResponseResolver as e, fetch as f, ResponseResolutionContext as g, SerializedResponse as h, RequestHandlerDefaultInfo as i, MockedResponse as j, ResponseLookupResult as k, SharedOptions as l, ServerLifecycleEventsMap as m, defaultResponse as n, createResponseComposition as o, defaultContext as p, StartOptions as q, response as r, status as s, ResponseResolverReturnType as t, DefaultRequestMultipartBody as u, ResponseComposition as v, ResponseCompositionOptions as w, ResponseFunction as x, DelayMode as y, SetupServerApi as z };
|