msw 0.34.0 → 0.36.2
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/esm/RequestHandler-deps.js +391 -66
- package/lib/esm/errors-deps.js +15 -1
- package/lib/esm/fetch-deps.js +9 -5
- package/lib/esm/graphql-deps.js +10 -6
- package/lib/esm/graphql.js +1 -0
- package/lib/esm/index-deps.js +2 -1
- package/lib/esm/index.js +102 -3893
- package/lib/esm/index2.js +1 -1
- package/lib/esm/mockServiceWorker.js +5 -5
- package/lib/esm/rest-deps.js +7 -15
- package/lib/esm/rest.js +1 -0
- package/lib/iife/index.js +3 -3
- package/lib/iife/mockServiceWorker.js +5 -5
- package/lib/types/context/data.d.ts +2 -3
- package/lib/types/context/extensions.d.ts +8 -0
- package/lib/types/context/index.d.ts +1 -0
- package/lib/types/graphql.d.ts +2 -1
- package/lib/types/handlers/GraphQLHandler.d.ts +7 -6
- package/lib/types/handlers/RequestHandler.d.ts +8 -8
- package/lib/types/handlers/RestHandler.d.ts +10 -12
- package/lib/types/index.d.ts +17 -7
- package/lib/types/native/index.d.ts +1 -1
- package/lib/types/node/glossary.d.ts +4 -14
- package/lib/types/node/index.d.ts +1 -1
- package/lib/types/node/setupServer.d.ts +1 -1
- package/lib/types/rest.d.ts +10 -9
- package/lib/types/setupWorker/glossary.d.ts +16 -26
- package/lib/types/setupWorker/start/utils/prepareStartHandler.d.ts +3 -3
- package/lib/types/sharedOptions.d.ts +12 -1
- package/lib/types/typeUtils.d.ts +5 -3
- package/lib/types/utils/getResponse.d.ts +1 -1
- package/lib/types/utils/handleRequest.d.ts +4 -4
- package/lib/types/utils/internal/getCallFrame.d.ts +1 -1
- package/lib/types/utils/internal/jsonParse.d.ts +2 -2
- package/lib/types/utils/internal/pipeEvents.d.ts +6 -0
- package/lib/types/utils/internal/requestHandlerUtils.d.ts +1 -1
- package/lib/types/utils/logging/prepareResponse.d.ts +1 -1
- package/lib/types/utils/matching/matchRequestUrl.d.ts +12 -2
- package/lib/types/utils/matching/normalizePath.d.ts +1 -1
- package/lib/types/utils/request/onUnhandledRequest.d.ts +1 -2
- package/lib/types/utils/request/parseBody.d.ts +2 -2
- package/lib/types/utils/request/parseWorkerRequest.d.ts +2 -2
- package/lib/types/utils/worker/createFallbackRequestListener.d.ts +2 -1
- package/lib/types/utils/worker/createRequestListener.d.ts +2 -1
- package/lib/umd/index.js +1070 -243
- package/lib/umd/mockServiceWorker.js +5 -5
- package/native/lib/index.js +501 -501
- package/node/lib/index.js +503 -503
- package/package.json +19 -19
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
/* tslint:disable */
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Mock Service Worker (0.
|
|
5
|
+
* Mock Service Worker (0.36.2).
|
|
6
6
|
* @see https://github.com/mswjs/msw
|
|
7
7
|
* - Please do NOT modify this file.
|
|
8
8
|
* - Please do NOT serve this file on production.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
const INTEGRITY_CHECKSUM = '
|
|
11
|
+
const INTEGRITY_CHECKSUM = '02f4ad4a2797f85668baf196e553d929'
|
|
12
12
|
const bypassHeaderName = 'x-msw-bypass'
|
|
13
13
|
const activeClientIds = new Set()
|
|
14
14
|
|
|
@@ -83,11 +83,11 @@ self.addEventListener('message', async function (event) {
|
|
|
83
83
|
}
|
|
84
84
|
})
|
|
85
85
|
|
|
86
|
-
// Resolve the "
|
|
86
|
+
// Resolve the "main" client for the given event.
|
|
87
87
|
// Client that issues a request doesn't necessarily equal the client
|
|
88
88
|
// that registered the worker. It's with the latter the worker should
|
|
89
89
|
// communicate with during the response resolving phase.
|
|
90
|
-
async function
|
|
90
|
+
async function resolveMainClient(event) {
|
|
91
91
|
const client = await self.clients.get(event.clientId)
|
|
92
92
|
|
|
93
93
|
if (client.frameType === 'top-level') {
|
|
@@ -109,7 +109,7 @@ async function resolveMasterClient(event) {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
async function handleRequest(event, requestId) {
|
|
112
|
-
const client = await
|
|
112
|
+
const client = await resolveMainClient(event)
|
|
113
113
|
const response = await getResponse(event, client, requestId)
|
|
114
114
|
|
|
115
115
|
// Send back the response clone for the "response:*" life-cycle events.
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare type DataContext<T> = (payload: T) => ResponseTransformer;
|
|
1
|
+
import { GraphQLPayloadContext } from '../typeUtils';
|
|
3
2
|
/**
|
|
4
3
|
* Sets a given payload as a GraphQL response body.
|
|
5
4
|
* @example
|
|
6
5
|
* res(ctx.data({ user: { firstName: 'John' }}))
|
|
7
6
|
* @see {@link https://mswjs.io/docs/api/context/data `ctx.data()`}
|
|
8
7
|
*/
|
|
9
|
-
export declare const data:
|
|
8
|
+
export declare const data: GraphQLPayloadContext<Record<string, unknown>>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GraphQLPayloadContext } from '../typeUtils';
|
|
2
|
+
/**
|
|
3
|
+
* Sets the GraphQL extensions on a given response.
|
|
4
|
+
* @example
|
|
5
|
+
* res(ctx.extensions({ tracing: { version: 1 }}))
|
|
6
|
+
* @see {@link https://mswjs.io/docs/api/context/extensions `ctx.extensions()`}
|
|
7
|
+
*/
|
|
8
|
+
export declare const extensions: GraphQLPayloadContext<Record<string, unknown>>;
|
|
@@ -3,6 +3,7 @@ export { set } from './set';
|
|
|
3
3
|
export { cookie } from './cookie';
|
|
4
4
|
export { body } from './body';
|
|
5
5
|
export { data } from './data';
|
|
6
|
+
export { extensions } from './extensions';
|
|
6
7
|
export { delay } from './delay';
|
|
7
8
|
export { errors } from './errors';
|
|
8
9
|
export { fetch } from './fetch';
|
package/lib/types/graphql.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { DocumentNode } from 'graphql';
|
|
2
|
-
import { Path } from 'node-match-path';
|
|
3
2
|
import { ResponseResolver } from './handlers/RequestHandler';
|
|
4
3
|
import { GraphQLHandler, GraphQLContext, GraphQLRequest, GraphQLVariables, GraphQLHandlerNameSelector } from './handlers/GraphQLHandler';
|
|
4
|
+
import { Path } from './utils/matching/matchRequestUrl';
|
|
5
5
|
export interface TypedDocumentNode<Result = {
|
|
6
6
|
[key: string]: any;
|
|
7
7
|
}, Variables = {
|
|
8
8
|
[key: string]: any;
|
|
9
9
|
}> extends DocumentNode {
|
|
10
|
+
__apiType?: (variables: Variables) => Result;
|
|
10
11
|
__resultType?: Result;
|
|
11
12
|
__variablesType?: Variables;
|
|
12
13
|
}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import { DocumentNode, OperationTypeNode } from 'graphql';
|
|
2
|
-
import { Path } from 'node-match-path';
|
|
3
2
|
import { SerializedResponse } from '../setupWorker/glossary';
|
|
4
3
|
import { set } from '../context/set';
|
|
5
4
|
import { status } from '../context/status';
|
|
6
5
|
import { delay } from '../context/delay';
|
|
7
6
|
import { fetch } from '../context/fetch';
|
|
8
|
-
import { DataContext } from '../context/data';
|
|
9
7
|
import { errors } from '../context/errors';
|
|
8
|
+
import { GraphQLPayloadContext } from '../typeUtils';
|
|
10
9
|
import { cookie } from '../context/cookie';
|
|
11
|
-
import { MockedRequest, RequestHandler, ResponseResolver } from './RequestHandler';
|
|
10
|
+
import { MockedRequest, RequestHandler, RequestHandlerDefaultInfo, ResponseResolver } from './RequestHandler';
|
|
11
|
+
import { Path } from '../utils/matching/matchRequestUrl';
|
|
12
12
|
import { ParsedGraphQLRequest, GraphQLMultipartRequestBody } from '../utils/internal/parseGraphQLRequest';
|
|
13
13
|
export declare type ExpectedOperationTypeNode = OperationTypeNode | 'all';
|
|
14
14
|
export declare type GraphQLHandlerNameSelector = DocumentNode | RegExp | string;
|
|
15
|
-
export declare type GraphQLContext<QueryType
|
|
15
|
+
export declare type GraphQLContext<QueryType extends Record<string, unknown>> = {
|
|
16
16
|
set: typeof set;
|
|
17
17
|
status: typeof status;
|
|
18
18
|
delay: typeof delay;
|
|
19
19
|
fetch: typeof fetch;
|
|
20
|
-
data:
|
|
20
|
+
data: GraphQLPayloadContext<QueryType>;
|
|
21
|
+
extensions: GraphQLPayloadContext<QueryType>;
|
|
21
22
|
errors: typeof errors;
|
|
22
23
|
cookie: typeof cookie;
|
|
23
24
|
};
|
|
24
25
|
export declare const graphqlContext: GraphQLContext<any>;
|
|
25
26
|
export declare type GraphQLVariables = Record<string, any>;
|
|
26
|
-
export interface GraphQLHandlerInfo {
|
|
27
|
+
export interface GraphQLHandlerInfo extends RequestHandlerDefaultInfo {
|
|
27
28
|
operationType: ExpectedOperationTypeNode;
|
|
28
29
|
operationName: GraphQLHandlerNameSelector;
|
|
29
30
|
}
|
|
@@ -10,7 +10,7 @@ export declare const defaultContext: {
|
|
|
10
10
|
fetch: (input: string | MockedRequest<DefaultRequestBody>, requestInit?: RequestInit) => Promise<Response>;
|
|
11
11
|
};
|
|
12
12
|
export declare type DefaultRequestMultipartBody = Record<string, string | File | (string | File)[]>;
|
|
13
|
-
export declare type DefaultRequestBody = Record<string, any> | DefaultRequestMultipartBody | string | undefined;
|
|
13
|
+
export declare type DefaultRequestBody = Record<string, any> | DefaultRequestMultipartBody | string | number | undefined;
|
|
14
14
|
export interface MockedRequest<Body = DefaultRequestBody> {
|
|
15
15
|
id: string;
|
|
16
16
|
url: URL;
|
|
@@ -29,19 +29,19 @@ export interface MockedRequest<Body = DefaultRequestBody> {
|
|
|
29
29
|
body: Body;
|
|
30
30
|
bodyUsed: Request['bodyUsed'];
|
|
31
31
|
}
|
|
32
|
-
interface RequestHandlerDefaultInfo {
|
|
32
|
+
export interface RequestHandlerDefaultInfo {
|
|
33
|
+
header: string;
|
|
34
|
+
}
|
|
35
|
+
export interface RequestHandlerInternalInfo {
|
|
33
36
|
callFrame?: string;
|
|
34
37
|
}
|
|
35
|
-
declare type RequestHandlerInfo<ExtraInfo extends Record<string, any>> = {
|
|
36
|
-
header: string;
|
|
37
|
-
} & ExtraInfo;
|
|
38
38
|
declare type ContextMap = Record<string, (...args: any[]) => any>;
|
|
39
39
|
export declare type ResponseResolverReturnType<ReturnType> = ReturnType | undefined | void;
|
|
40
40
|
export declare type MaybeAsyncResponseResolverReturnType<ReturnType> = ResponseResolverReturnType<ReturnType> | Promise<ResponseResolverReturnType<ReturnType>>;
|
|
41
41
|
export declare type AsyncResponseResolverReturnType<ReturnType> = MaybeAsyncResponseResolverReturnType<ReturnType> | Generator<MaybeAsyncResponseResolverReturnType<ReturnType>, MaybeAsyncResponseResolverReturnType<ReturnType>, MaybeAsyncResponseResolverReturnType<ReturnType>>;
|
|
42
42
|
export declare type ResponseResolver<RequestType = MockedRequest, ContextType = typeof defaultContext, BodyType = any> = (req: RequestType, res: ResponseComposition<BodyType>, context: ContextType) => AsyncResponseResolverReturnType<MockedResponse<BodyType>>;
|
|
43
43
|
export interface RequestHandlerOptions<HandlerInfo> {
|
|
44
|
-
info:
|
|
44
|
+
info: HandlerInfo;
|
|
45
45
|
resolver: ResponseResolver<any, any>;
|
|
46
46
|
ctx?: ContextMap;
|
|
47
47
|
}
|
|
@@ -51,8 +51,8 @@ export interface RequestHandlerExecutionResult<PublicRequestType> {
|
|
|
51
51
|
request: PublicRequestType;
|
|
52
52
|
response?: MockedResponse;
|
|
53
53
|
}
|
|
54
|
-
export declare abstract class RequestHandler<HandlerInfo extends
|
|
55
|
-
info:
|
|
54
|
+
export declare abstract class RequestHandler<HandlerInfo extends RequestHandlerDefaultInfo = RequestHandlerDefaultInfo, Request extends MockedRequest = MockedRequest, ParsedResult = any, PublicRequest extends MockedRequest = Request> {
|
|
55
|
+
info: HandlerInfo & RequestHandlerInternalInfo;
|
|
56
56
|
shouldSkip: boolean;
|
|
57
57
|
private ctx;
|
|
58
58
|
private resolverGenerator?;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Match, Path } from 'node-match-path';
|
|
2
1
|
import { body, cookie, delay, fetch, json, set, status, text, xml } from '../context';
|
|
3
2
|
import { SerializedResponse } from '../setupWorker/glossary';
|
|
4
3
|
import { ResponseResolutionContext } from '../utils/getResponse';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
import { Match, Path, PathParams } from '../utils/matching/matchRequestUrl';
|
|
5
|
+
import { DefaultRequestBody, MockedRequest, RequestHandler, RequestHandlerDefaultInfo, ResponseResolver } from './RequestHandler';
|
|
6
|
+
declare type RestHandlerMethod = string | RegExp;
|
|
7
|
+
export interface RestHandlerInfo extends RequestHandlerDefaultInfo {
|
|
8
|
+
method: RestHandlerMethod;
|
|
8
9
|
path: Path;
|
|
9
10
|
}
|
|
10
11
|
export declare enum RESTMethods {
|
|
@@ -28,13 +29,10 @@ export declare type RestContext = {
|
|
|
28
29
|
fetch: typeof fetch;
|
|
29
30
|
};
|
|
30
31
|
export declare const restContext: RestContext;
|
|
31
|
-
export declare type RequestParams = {
|
|
32
|
-
[paramName: string]: any;
|
|
33
|
-
};
|
|
34
32
|
export declare type RequestQuery = {
|
|
35
|
-
[queryName: string]:
|
|
33
|
+
[queryName: string]: string;
|
|
36
34
|
};
|
|
37
|
-
export interface RestRequest<BodyType extends DefaultRequestBody = DefaultRequestBody, ParamsType extends
|
|
35
|
+
export interface RestRequest<BodyType extends DefaultRequestBody = DefaultRequestBody, ParamsType extends PathParams = PathParams> extends MockedRequest<BodyType> {
|
|
38
36
|
params: ParamsType;
|
|
39
37
|
}
|
|
40
38
|
export declare type ParsedRestRequest = Match;
|
|
@@ -42,11 +40,11 @@ export declare type ParsedRestRequest = Match;
|
|
|
42
40
|
* Request handler for REST API requests.
|
|
43
41
|
* Provides request matching based on method and URL.
|
|
44
42
|
*/
|
|
45
|
-
export declare class RestHandler<RequestType extends MockedRequest<DefaultRequestBody> = MockedRequest<DefaultRequestBody>> extends RequestHandler<RestHandlerInfo, RequestType, ParsedRestRequest, RestRequest<
|
|
46
|
-
constructor(method:
|
|
43
|
+
export declare class RestHandler<RequestType extends MockedRequest<DefaultRequestBody> = MockedRequest<DefaultRequestBody>> extends RequestHandler<RestHandlerInfo, RequestType, ParsedRestRequest, RestRequest<RequestType extends MockedRequest<infer RequestBodyType> ? RequestBodyType : any, PathParams>> {
|
|
44
|
+
constructor(method: RestHandlerMethod, path: Path, resolver: ResponseResolver<any, any>);
|
|
47
45
|
private checkRedundantQueryParameters;
|
|
48
46
|
parse(request: RequestType, resolutionContext?: ResponseResolutionContext): Match;
|
|
49
|
-
protected getPublicRequest(request: RequestType, parsedResult: ParsedRestRequest): RestRequest<any,
|
|
47
|
+
protected getPublicRequest(request: RequestType, parsedResult: ParsedRestRequest): RestRequest<any, PathParams>;
|
|
50
48
|
predicate(request: RequestType, parsedResult: ParsedRestRequest): boolean;
|
|
51
49
|
log(request: RequestType, response: SerializedResponse): void;
|
|
52
50
|
}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import * as context from './context';
|
|
2
2
|
export { context };
|
|
3
3
|
export { setupWorker } from './setupWorker/setupWorker';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export { RequestHandler, MockedRequest, ResponseResolver, ResponseResolverReturnType, AsyncResponseResolverReturnType, DefaultRequestBody, DefaultRequestMultipartBody, defaultContext, } from './handlers/RequestHandler';
|
|
4
|
+
export { response, defaultResponse, createResponseComposition, } from './response';
|
|
5
|
+
export { RequestHandler, defaultContext } from './handlers/RequestHandler';
|
|
7
6
|
export { rest } from './rest';
|
|
8
|
-
export { RestHandler, RESTMethods,
|
|
7
|
+
export { RestHandler, RESTMethods, restContext } from './handlers/RestHandler';
|
|
9
8
|
export { graphql } from './graphql';
|
|
10
|
-
export { GraphQLHandler,
|
|
9
|
+
export { GraphQLHandler, graphqlContext } from './handlers/GraphQLHandler';
|
|
11
10
|
export { matchRequestUrl } from './utils/matching/matchRequestUrl';
|
|
12
11
|
export { compose } from './utils/internal/compose';
|
|
13
|
-
export { DelayMode } from './context/delay';
|
|
14
|
-
export { ParsedGraphQLRequest } from './utils/internal/parseGraphQLRequest';
|
|
15
12
|
export * from './utils/handleRequest';
|
|
16
13
|
export * from './utils/request/parseIsomorphicRequest';
|
|
14
|
+
export { cleanUrl } from './utils/url/cleanUrl';
|
|
15
|
+
/**
|
|
16
|
+
* Type definitions.
|
|
17
|
+
*/
|
|
18
|
+
export type { SetupWorkerApi, StartOptions } from './setupWorker/glossary';
|
|
19
|
+
export type { SharedOptions } from './sharedOptions';
|
|
20
|
+
export type { MockedRequest, ResponseResolver, ResponseResolverReturnType, AsyncResponseResolverReturnType, DefaultRequestBody, DefaultRequestMultipartBody, } from './handlers/RequestHandler';
|
|
21
|
+
export type { MockedResponse, ResponseTransformer, ResponseComposition, ResponseCompositionOptions, ResponseFunction, } from './response';
|
|
22
|
+
export type { RestContext, RequestQuery, RestRequest, ParsedRestRequest, } from './handlers/RestHandler';
|
|
23
|
+
export type { GraphQLContext, GraphQLVariables, GraphQLRequest, GraphQLRequestBody, GraphQLJsonRequestBody, } from './handlers/GraphQLHandler';
|
|
24
|
+
export type { Path, PathParams, Match } from './utils/matching/matchRequestUrl';
|
|
25
|
+
export type { DelayMode } from './context/delay';
|
|
26
|
+
export { ParsedGraphQLRequest } from './utils/internal/parseGraphQLRequest';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const setupServer: (...requestHandlers: import("..").RequestHandler<
|
|
1
|
+
export declare const setupServer: (...requestHandlers: import("..").RequestHandler<import("../handlers/RequestHandler").RequestHandlerDefaultInfo, import("..").MockedRequest<import("..").DefaultRequestBody>, any, import("..").MockedRequest<import("..").DefaultRequestBody>>[]) => import("../node").SetupServerApi;
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { PartialDeep } from 'type-fest';
|
|
2
2
|
import { IsomorphicResponse } from '@mswjs/interceptors';
|
|
3
|
-
import {
|
|
4
|
-
import { SharedOptions } from '../sharedOptions';
|
|
5
|
-
export
|
|
6
|
-
'request:start': (request: MockedRequest) => void;
|
|
7
|
-
'request:match': (request: MockedRequest) => void;
|
|
8
|
-
'request:unhandled': (request: MockedRequest) => void;
|
|
9
|
-
'request:end': (request: MockedRequest) => void;
|
|
10
|
-
'response:mocked': (response: IsomorphicResponse, requestId: string) => void;
|
|
11
|
-
'response:bypass': (response: IsomorphicResponse, requestId: string) => void;
|
|
12
|
-
}
|
|
3
|
+
import { RequestHandler } from '../handlers/RequestHandler';
|
|
4
|
+
import { LifeCycleEventEmitter, LifeCycleEventsMap, SharedOptions } from '../sharedOptions';
|
|
5
|
+
export declare type ServerLifecycleEventsMap = LifeCycleEventsMap<IsomorphicResponse>;
|
|
13
6
|
export interface SetupServerApi {
|
|
14
7
|
/**
|
|
15
8
|
* Starts requests interception based on the previously provided request handlers.
|
|
@@ -41,8 +34,5 @@ export interface SetupServerApi {
|
|
|
41
34
|
* @see {@link https://mswjs.io/docs/api/setup-server/print-handlers `server.print-handlers()`}
|
|
42
35
|
*/
|
|
43
36
|
printHandlers(): void;
|
|
44
|
-
|
|
45
|
-
* Attaches a listener to one of the life-cycle events.
|
|
46
|
-
*/
|
|
47
|
-
on<EventType extends keyof ServerLifecycleEventsMap>(eventType: EventType, listener: ServerLifecycleEventsMap[EventType]): void;
|
|
37
|
+
events: LifeCycleEventEmitter<ServerLifecycleEventsMap>;
|
|
48
38
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { setupServer } from './setupServer';
|
|
2
|
-
export { SetupServerApi } from './glossary';
|
|
2
|
+
export type { SetupServerApi } from './glossary';
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* @param {RequestHandler[]} requestHandlers List of request handlers.
|
|
4
4
|
* @see {@link https://mswjs.io/docs/api/setup-server `setupServer`}
|
|
5
5
|
*/
|
|
6
|
-
export declare const setupServer: (...requestHandlers: import("..").RequestHandler<
|
|
6
|
+
export declare const setupServer: (...requestHandlers: import("..").RequestHandler<import("../handlers/RequestHandler").RequestHandlerDefaultInfo, import("..").MockedRequest<import("..").DefaultRequestBody>, any, import("..").MockedRequest<import("..").DefaultRequestBody>>[]) => import("./glossary").SetupServerApi;
|
package/lib/types/rest.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { Path } from 'node-match-path';
|
|
2
1
|
import { DefaultRequestBody, ResponseResolver } from './handlers/RequestHandler';
|
|
3
|
-
import { RestContext, RestHandler, RestRequest
|
|
2
|
+
import { RestContext, RestHandler, RestRequest } from './handlers/RestHandler';
|
|
3
|
+
import { Path, PathParams } from './utils/matching/matchRequestUrl';
|
|
4
4
|
export declare const rest: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
all: <RequestBodyType extends DefaultRequestBody = DefaultRequestBody, Params extends PathParams = PathParams, ResponseBody extends DefaultRequestBody = DefaultRequestBody>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType, Params>, RestContext, ResponseBody>) => RestHandler<import("./handlers/RequestHandler").MockedRequest<DefaultRequestBody>>;
|
|
6
|
+
head: <RequestBodyType_1 extends DefaultRequestBody = DefaultRequestBody, Params_1 extends PathParams = PathParams, ResponseBody_1 extends DefaultRequestBody = DefaultRequestBody>(path: Path, resolver: ResponseResolver<RestRequest<never, Params_1>, RestContext, ResponseBody_1>) => RestHandler<import("./handlers/RequestHandler").MockedRequest<DefaultRequestBody>>;
|
|
7
|
+
get: <RequestBodyType_2 extends DefaultRequestBody = DefaultRequestBody, Params_2 extends PathParams = PathParams, ResponseBody_2 extends DefaultRequestBody = DefaultRequestBody>(path: Path, resolver: ResponseResolver<RestRequest<never, Params_2>, RestContext, ResponseBody_2>) => RestHandler<import("./handlers/RequestHandler").MockedRequest<DefaultRequestBody>>;
|
|
8
|
+
post: <RequestBodyType_3 extends DefaultRequestBody = DefaultRequestBody, Params_3 extends PathParams = PathParams, ResponseBody_3 extends DefaultRequestBody = DefaultRequestBody>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_3, Params_3>, RestContext, ResponseBody_3>) => RestHandler<import("./handlers/RequestHandler").MockedRequest<DefaultRequestBody>>;
|
|
9
|
+
put: <RequestBodyType_4 extends DefaultRequestBody = DefaultRequestBody, Params_4 extends PathParams = PathParams, ResponseBody_4 extends DefaultRequestBody = DefaultRequestBody>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_4, Params_4>, RestContext, ResponseBody_4>) => RestHandler<import("./handlers/RequestHandler").MockedRequest<DefaultRequestBody>>;
|
|
10
|
+
delete: <RequestBodyType_5 extends DefaultRequestBody = DefaultRequestBody, Params_5 extends PathParams = PathParams, ResponseBody_5 extends DefaultRequestBody = DefaultRequestBody>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_5, Params_5>, RestContext, ResponseBody_5>) => RestHandler<import("./handlers/RequestHandler").MockedRequest<DefaultRequestBody>>;
|
|
11
|
+
patch: <RequestBodyType_6 extends DefaultRequestBody = DefaultRequestBody, Params_6 extends PathParams = PathParams, ResponseBody_6 extends DefaultRequestBody = DefaultRequestBody>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_6, Params_6>, RestContext, ResponseBody_6>) => RestHandler<import("./handlers/RequestHandler").MockedRequest<DefaultRequestBody>>;
|
|
12
|
+
options: <RequestBodyType_7 extends DefaultRequestBody = DefaultRequestBody, Params_7 extends PathParams = PathParams, ResponseBody_7 extends DefaultRequestBody = DefaultRequestBody>(path: Path, resolver: ResponseResolver<RestRequest<RequestBodyType_7, Params_7>, RestContext, ResponseBody_7>) => RestHandler<import("./handlers/RequestHandler").MockedRequest<DefaultRequestBody>>;
|
|
12
13
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Path } from 'node-match-path';
|
|
2
|
-
import { PartialDeep } from 'type-fest';
|
|
3
1
|
import { FlatHeadersObject } from 'headers-utils';
|
|
4
2
|
import { StrictEventEmitter } from 'strict-event-emitter';
|
|
5
|
-
import { SharedOptions } from '../sharedOptions';
|
|
3
|
+
import { LifeCycleEventEmitter, LifeCycleEventsMap, SharedOptions } from '../sharedOptions';
|
|
6
4
|
import { ServiceWorkerMessage } from '../utils/createBroadcastChannel';
|
|
7
|
-
import {
|
|
5
|
+
import { RequestHandler } from '../handlers/RequestHandler';
|
|
8
6
|
import { InterceptorApi } from '@mswjs/interceptors';
|
|
7
|
+
import { Path } from '../utils/matching/matchRequestUrl';
|
|
8
|
+
import { RequiredDeep } from '../typeUtils';
|
|
9
9
|
export declare type ResolvedPath = Path | URL;
|
|
10
10
|
declare type RequestWithoutMethods = Omit<Request, 'text' | 'body' | 'json' | 'blob' | 'arrayBuffer' | 'formData' | 'clone' | 'signal' | 'isHistoryNavigation' | 'isReloadNavigation'>;
|
|
11
11
|
/**
|
|
@@ -45,16 +45,9 @@ export declare type ServiceWorkerOutgoingEventTypes = 'MOCK_ACTIVATE' | 'MOCK_DE
|
|
|
45
45
|
* only as a part of a single `fetch` event handler.
|
|
46
46
|
*/
|
|
47
47
|
export declare type ServiceWorkerFetchEventTypes = 'MOCK_SUCCESS' | 'MOCK_NOT_FOUND' | 'NETWORK_ERROR' | 'INTERNAL_ERROR';
|
|
48
|
-
export
|
|
49
|
-
'request:start': (request: MockedRequest) => void;
|
|
50
|
-
'request:match': (request: MockedRequest) => void;
|
|
51
|
-
'request:unhandled': (request: MockedRequest) => void;
|
|
52
|
-
'request:end': (request: MockedRequest) => void;
|
|
53
|
-
'response:mocked': (response: Response, requestId: string) => void;
|
|
54
|
-
'response:bypass': (response: Response, requestId: string) => void;
|
|
55
|
-
}
|
|
48
|
+
export declare type WorkerLifecycleEventsMap = LifeCycleEventsMap<Response>;
|
|
56
49
|
export interface SetupWorkerInternalContext {
|
|
57
|
-
startOptions?: StartOptions
|
|
50
|
+
startOptions?: RequiredDeep<StartOptions>;
|
|
58
51
|
worker: ServiceWorker | null;
|
|
59
52
|
registration: ServiceWorkerRegistration | null;
|
|
60
53
|
requestHandlers: RequestHandler[];
|
|
@@ -72,7 +65,7 @@ export interface SetupWorkerInternalContext {
|
|
|
72
65
|
* Adds an event listener on the given target.
|
|
73
66
|
* Returns a clean-up function that removes that listener.
|
|
74
67
|
*/
|
|
75
|
-
addListener<
|
|
68
|
+
addListener<EventType extends Event = Event>(target: EventTarget, eventType: string, listener: (event: EventType) => void): () => void;
|
|
76
69
|
/**
|
|
77
70
|
* Removes all currently attached listeners.
|
|
78
71
|
*/
|
|
@@ -94,25 +87,25 @@ export interface StartOptions extends SharedOptions {
|
|
|
94
87
|
/**
|
|
95
88
|
* Service Worker instance options.
|
|
96
89
|
*/
|
|
97
|
-
serviceWorker
|
|
98
|
-
url
|
|
99
|
-
options
|
|
90
|
+
serviceWorker?: {
|
|
91
|
+
url?: string;
|
|
92
|
+
options?: RegistrationOptions;
|
|
100
93
|
};
|
|
101
94
|
/**
|
|
102
95
|
* Disables the logging of captured requests
|
|
103
96
|
* into browser's console.
|
|
104
97
|
*/
|
|
105
|
-
quiet
|
|
98
|
+
quiet?: boolean;
|
|
106
99
|
/**
|
|
107
100
|
* Defers any network requests until the Service Worker
|
|
108
101
|
* instance is ready. Defaults to `true`.
|
|
109
102
|
*/
|
|
110
|
-
waitUntilReady
|
|
103
|
+
waitUntilReady?: boolean;
|
|
111
104
|
/**
|
|
112
105
|
* A custom lookup function to find a Mock Service Worker in the list
|
|
113
106
|
* of all registered Service Workers on the page.
|
|
114
107
|
*/
|
|
115
|
-
findWorker
|
|
108
|
+
findWorker?: FindWorker;
|
|
116
109
|
}
|
|
117
110
|
export interface SerializedResponse<BodyType = any> {
|
|
118
111
|
status: number;
|
|
@@ -121,14 +114,14 @@ export interface SerializedResponse<BodyType = any> {
|
|
|
121
114
|
body: BodyType;
|
|
122
115
|
}
|
|
123
116
|
export declare type StartReturnType = Promise<ServiceWorkerRegistration | undefined>;
|
|
124
|
-
export declare type StartHandler = (options: StartOptions
|
|
117
|
+
export declare type StartHandler = (options: RequiredDeep<StartOptions>, initialOptions: StartOptions) => StartReturnType;
|
|
125
118
|
export declare type StopHandler = () => void;
|
|
126
119
|
export interface SetupWorkerApi {
|
|
127
120
|
/**
|
|
128
121
|
* Registers and activates the mock Service Worker.
|
|
129
122
|
* @see {@link https://mswjs.io/docs/api/setup-worker/start `worker.start()`}
|
|
130
123
|
*/
|
|
131
|
-
start: (options?:
|
|
124
|
+
start: (options?: StartOptions) => StartReturnType;
|
|
132
125
|
/**
|
|
133
126
|
* Stops requests interception for the current client.
|
|
134
127
|
* @see {@link https://mswjs.io/docs/api/setup-worker/stop `worker.stop()`}
|
|
@@ -156,9 +149,6 @@ export interface SetupWorkerApi {
|
|
|
156
149
|
* @see {@link https://mswjs.io/docs/api/setup-worker/print-handlers `worker.printHandlers()`}
|
|
157
150
|
*/
|
|
158
151
|
printHandlers: () => void;
|
|
159
|
-
|
|
160
|
-
* Attaches a listener to one of the life-cycle events.
|
|
161
|
-
*/
|
|
162
|
-
on<EventType extends keyof WorkerLifecycleEventsMap>(eventType: EventType, listener: WorkerLifecycleEventsMap[EventType]): void;
|
|
152
|
+
events: LifeCycleEventEmitter<WorkerLifecycleEventsMap>;
|
|
163
153
|
}
|
|
164
154
|
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RequiredDeep } from '../../../typeUtils';
|
|
2
2
|
import { SetupWorkerApi, SetupWorkerInternalContext, StartHandler, StartOptions } from '../../glossary';
|
|
3
|
-
export declare const DEFAULT_START_OPTIONS: StartOptions
|
|
3
|
+
export declare const DEFAULT_START_OPTIONS: RequiredDeep<StartOptions>;
|
|
4
4
|
/**
|
|
5
5
|
* Returns resolved worker start options, merging the default options
|
|
6
6
|
* with the given custom options.
|
|
7
7
|
*/
|
|
8
|
-
export declare function resolveStartOptions(initialOptions?:
|
|
8
|
+
export declare function resolveStartOptions(initialOptions?: StartOptions): RequiredDeep<StartOptions>;
|
|
9
9
|
export declare function prepareStartHandler(handler: StartHandler, context: SetupWorkerInternalContext): SetupWorkerApi['start'];
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { StrictEventEmitter } from 'strict-event-emitter';
|
|
2
|
+
import { MockedRequest } from './handlers/RequestHandler';
|
|
1
3
|
import { UnhandledRequestStrategy } from './utils/request/onUnhandledRequest';
|
|
2
4
|
export interface SharedOptions {
|
|
3
5
|
/**
|
|
@@ -8,5 +10,14 @@ export interface SharedOptions {
|
|
|
8
10
|
* @example worker.start({ onUnhandledRequest: 'warn' })
|
|
9
11
|
* @example server.listen({ onUnhandledRequest: 'error' })
|
|
10
12
|
*/
|
|
11
|
-
onUnhandledRequest
|
|
13
|
+
onUnhandledRequest?: UnhandledRequestStrategy;
|
|
12
14
|
}
|
|
15
|
+
export interface LifeCycleEventsMap<ResponseType> {
|
|
16
|
+
'request:start': (request: MockedRequest) => void;
|
|
17
|
+
'request:match': (request: MockedRequest) => void;
|
|
18
|
+
'request:unhandled': (request: MockedRequest) => void;
|
|
19
|
+
'request:end': (request: MockedRequest) => void;
|
|
20
|
+
'response:mocked': (response: ResponseType, requestId: string) => void;
|
|
21
|
+
'response:bypass': (response: ResponseType, requestId: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare type LifeCycleEventEmitter<ResponseType> = Pick<StrictEventEmitter<ResponseType>, 'on' | 'removeListener' | 'removeAllListeners'>;
|
package/lib/types/typeUtils.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { ResponseTransformer } from './response';
|
|
1
2
|
declare type Fn = (...arg: any[]) => any;
|
|
2
|
-
export declare type
|
|
3
|
-
[
|
|
4
|
-
} :
|
|
3
|
+
export declare type RequiredDeep<Type, U extends Record<string, unknown> | Fn | undefined = undefined> = Type extends Fn ? Type : Type extends Record<string, any> ? {
|
|
4
|
+
[Key in keyof Type]-?: NonNullable<Type[Key]> extends NonNullable<U> ? NonNullable<Type[Key]> : RequiredDeep<NonNullable<Type[Key]>, U>;
|
|
5
|
+
} : Type;
|
|
6
|
+
export declare type GraphQLPayloadContext<QueryType extends Record<string, unknown>> = (payload: QueryType) => ResponseTransformer;
|
|
5
7
|
export {};
|
|
@@ -12,4 +12,4 @@ export interface ResponseResolutionContext {
|
|
|
12
12
|
/**
|
|
13
13
|
* Returns a mocked response for a given request using following request handlers.
|
|
14
14
|
*/
|
|
15
|
-
export declare const getResponse: <Request_1 extends MockedRequest<import("../handlers/RequestHandler").DefaultRequestBody>, Handler extends RequestHandler<
|
|
15
|
+
export declare const getResponse: <Request_1 extends MockedRequest<import("../handlers/RequestHandler").DefaultRequestBody>, Handler extends RequestHandler<import("../handlers/RequestHandler").RequestHandlerDefaultInfo, MockedRequest<import("../handlers/RequestHandler").DefaultRequestBody>, any, MockedRequest<import("../handlers/RequestHandler").DefaultRequestBody>>[]>(request: Request_1, handlers: Handler, resolutionContext?: ResponseResolutionContext | undefined) => Promise<ResponseLookupResult>;
|
|
@@ -3,7 +3,7 @@ import { MockedRequest, RequestHandler } from '../handlers/RequestHandler';
|
|
|
3
3
|
import { ServerLifecycleEventsMap } from '../node/glossary';
|
|
4
4
|
import { MockedResponse } from '../response';
|
|
5
5
|
import { SharedOptions } from '../sharedOptions';
|
|
6
|
-
import {
|
|
6
|
+
import { RequiredDeep } from '../typeUtils';
|
|
7
7
|
import { ResponseLookupResult } from './getResponse';
|
|
8
8
|
export interface HandleRequestOptions<ResponseType> {
|
|
9
9
|
/**
|
|
@@ -24,11 +24,11 @@ export interface HandleRequestOptions<ResponseType> {
|
|
|
24
24
|
/**
|
|
25
25
|
* Invoked when the mocked response is ready to be sent.
|
|
26
26
|
*/
|
|
27
|
-
onMockedResponse?(response: ResponseType, handler:
|
|
27
|
+
onMockedResponse?(response: ResponseType, handler: RequiredDeep<ResponseLookupResult>): void;
|
|
28
28
|
/**
|
|
29
29
|
* Invoked when the mocked response is sent.
|
|
30
30
|
* Respects the response delay duration.
|
|
31
31
|
*/
|
|
32
|
-
onMockedResponseSent?(response: ResponseType, handler:
|
|
32
|
+
onMockedResponseSent?(response: ResponseType, handler: RequiredDeep<ResponseLookupResult>): void;
|
|
33
33
|
}
|
|
34
|
-
export declare function handleRequest<ResponseType extends Record<string, any> = MockedResponse<string>>(request: MockedRequest, handlers: RequestHandler[], options: SharedOptions
|
|
34
|
+
export declare function handleRequest<ResponseType extends Record<string, any> = MockedResponse<string>>(request: MockedRequest, handlers: RequestHandler[], options: RequiredDeep<SharedOptions>, emitter: StrictEventEmitter<ServerLifecycleEventsMap>, handleRequestOptions?: HandleRequestOptions<ResponseType>): Promise<ResponseType | undefined>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Parses a given
|
|
2
|
+
* Parses a given value into a JSON.
|
|
3
3
|
* Does not throw an exception on an invalid JSON string.
|
|
4
4
|
*/
|
|
5
|
-
export declare function jsonParse<
|
|
5
|
+
export declare function jsonParse<ValueType extends Record<string, any>>(value: any): ValueType | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { RequestHandler } from '../../handlers/RequestHandler';
|
|
2
2
|
export declare function use(currentHandlers: RequestHandler[], ...handlers: RequestHandler[]): void;
|
|
3
3
|
export declare function restoreHandlers(handlers: RequestHandler[]): void;
|
|
4
|
-
export declare function resetHandlers(initialHandlers: RequestHandler[], ...nextHandlers: RequestHandler[]): RequestHandler<
|
|
4
|
+
export declare function resetHandlers(initialHandlers: RequestHandler[], ...nextHandlers: RequestHandler[]): RequestHandler<import("../../handlers/RequestHandler").RequestHandlerDefaultInfo, import("../../handlers/RequestHandler").MockedRequest<import("../../handlers/RequestHandler").DefaultRequestBody>, any, import("../../handlers/RequestHandler").MockedRequest<import("../../handlers/RequestHandler").DefaultRequestBody>>[];
|
|
@@ -3,7 +3,7 @@ import { SerializedResponse } from '../../setupWorker/glossary';
|
|
|
3
3
|
* Formats a mocked response for introspection in the browser's console.
|
|
4
4
|
*/
|
|
5
5
|
export declare function prepareResponse(res: SerializedResponse<any>): {
|
|
6
|
-
body: string | Record<string, any> | undefined;
|
|
6
|
+
body: string | number | Record<string, any> | undefined;
|
|
7
7
|
status: number;
|
|
8
8
|
statusText: string;
|
|
9
9
|
headers: import("headers-utils").FlatHeadersObject;
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
export declare type Path = string | RegExp;
|
|
2
|
+
export declare type PathParams = Record<string, string | string[]>;
|
|
3
|
+
export interface Match {
|
|
4
|
+
matches: boolean;
|
|
5
|
+
params?: PathParams;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Coerce a path supported by MSW into a path
|
|
9
|
+
* supported by "path-to-regexp".
|
|
10
|
+
*/
|
|
11
|
+
export declare function coercePath(path: string): string;
|
|
2
12
|
/**
|
|
3
13
|
* Returns the result of matching given request URL against a mask.
|
|
4
14
|
*/
|
|
5
|
-
export declare function matchRequestUrl(url: URL, path: Path, baseUrl?: string):
|
|
15
|
+
export declare function matchRequestUrl(url: URL, path: Path, baseUrl?: string): Match;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { MockedRequest, RequestHandler } from '../../handlers/RequestHandler';
|
|
2
|
-
declare type UnhandledRequestCallback = (request: MockedRequest) => void;
|
|
2
|
+
export declare type UnhandledRequestCallback = (request: MockedRequest) => void;
|
|
3
3
|
export declare type UnhandledRequestStrategy = 'bypass' | 'warn' | 'error' | UnhandledRequestCallback;
|
|
4
4
|
export declare function onUnhandledRequest(request: MockedRequest, handlers: RequestHandler[], strategy?: UnhandledRequestStrategy): void;
|
|
5
|
-
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MockedRequest } from '../../handlers/RequestHandler';
|
|
2
2
|
/**
|
|
3
|
-
* Parses a given request/response body based on the
|
|
3
|
+
* Parses a given request/response body based on the "Content-Type" header.
|
|
4
4
|
*/
|
|
5
|
-
export declare function parseBody(body?: MockedRequest['body'], headers?: Headers): string | Record<string, any> | undefined;
|
|
5
|
+
export declare function parseBody(body?: MockedRequest['body'], headers?: Headers): string | number | Record<string, any> | undefined;
|